├── .gitignore
├── .idea
├── caches
│ ├── build_file_checksums.ser
│ └── gradle_models.ser
├── codeStyles
│ └── Project.xml
├── compiler.xml
├── easycode.ignore
├── gradle.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── jarRepositories.xml
├── misc.xml
└── vcs.xml
├── README.md
├── SrceenShot
├── img_match.png
└── sina_weibo.jpg
├── TV.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── victor
│ │ └── screen
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── victor
│ │ │ └── screen
│ │ │ ├── DeviceUtils.java
│ │ │ ├── MainActivity.java
│ │ │ ├── ResUtils.java
│ │ │ └── app
│ │ │ └── App.java
│ └── res
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── victor
│ └── screen
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── library
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── victor
│ │ └── screen
│ │ └── match
│ │ └── library
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── design_750_120_vp.json
│ │ ├── design_750_180_vp.json
│ │ ├── design_750_240_vp.json
│ │ ├── design_750_360_vp.json
│ │ ├── design_750_480_vp.json
│ │ ├── design_750_750_lpx.json
│ │ └── design_750_90_vp.json
│ ├── java
│ │ └── com
│ │ │ └── victor
│ │ │ └── screen
│ │ │ └── match
│ │ │ └── library
│ │ │ ├── DimenGenerator.java
│ │ │ ├── GenerateValueFiles.java
│ │ │ └── util
│ │ │ ├── DimenTypes.java
│ │ │ ├── HarmoneyMakeUtils.java
│ │ │ ├── MakeUtils.java
│ │ │ └── TvMakeUtils.java
│ └── res
│ │ ├── values-1024x600
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1280x672
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1280x720
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1280x736
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1280x800
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1366x768
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-1920x1080
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-2048x1440
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-2048x1536
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-2560x1440
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-2560x1600
│ │ ├── h_dimens.xml
│ │ └── w_dimens.xml
│ │ ├── values-sw300dp
│ │ └── dimens.xml
│ │ ├── values-sw310dp
│ │ └── dimens.xml
│ │ ├── values-sw320dp
│ │ └── dimens.xml
│ │ ├── values-sw330dp
│ │ └── dimens.xml
│ │ ├── values-sw340dp
│ │ └── dimens.xml
│ │ ├── values-sw350dp
│ │ └── dimens.xml
│ │ ├── values-sw360dp
│ │ └── dimens.xml
│ │ ├── values-sw370dp
│ │ └── dimens.xml
│ │ ├── values-sw380dp
│ │ └── dimens.xml
│ │ ├── values-sw390dp
│ │ └── dimens.xml
│ │ ├── values-sw400dp
│ │ └── dimens.xml
│ │ ├── values-sw410dp
│ │ └── dimens.xml
│ │ ├── values-sw420dp
│ │ └── dimens.xml
│ │ ├── values-sw430dp
│ │ └── dimens.xml
│ │ ├── values-sw440dp
│ │ └── dimens.xml
│ │ ├── values-sw450dp
│ │ └── dimens.xml
│ │ ├── values-sw460dp
│ │ └── dimens.xml
│ │ ├── values-sw470dp
│ │ └── dimens.xml
│ │ ├── values-sw480dp
│ │ └── dimens.xml
│ │ ├── values-sw490dp
│ │ └── dimens.xml
│ │ ├── values-sw500dp
│ │ └── dimens.xml
│ │ ├── values-sw510dp
│ │ └── dimens.xml
│ │ ├── values-sw520dp
│ │ └── dimens.xml
│ │ ├── values-sw530dp
│ │ └── dimens.xml
│ │ ├── values-sw540dp
│ │ └── dimens.xml
│ │ ├── values-sw550dp
│ │ └── dimens.xml
│ │ ├── values-sw560dp
│ │ └── dimens.xml
│ │ ├── values-sw570dp
│ │ └── dimens.xml
│ │ ├── values-sw580dp
│ │ └── dimens.xml
│ │ ├── values-sw590dp
│ │ └── dimens.xml
│ │ ├── values-sw600dp
│ │ └── dimens.xml
│ │ ├── values-sw610dp
│ │ └── dimens.xml
│ │ ├── values-sw620dp
│ │ └── dimens.xml
│ │ ├── values-sw630dp
│ │ └── dimens.xml
│ │ ├── values-sw640dp
│ │ └── dimens.xml
│ │ ├── values-sw650dp
│ │ └── dimens.xml
│ │ ├── values-sw660dp
│ │ └── dimens.xml
│ │ ├── values-sw670dp
│ │ └── dimens.xml
│ │ ├── values-sw680dp
│ │ └── dimens.xml
│ │ ├── values-sw690dp
│ │ └── dimens.xml
│ │ ├── values-sw700dp
│ │ └── dimens.xml
│ │ ├── values-sw710dp
│ │ └── dimens.xml
│ │ ├── values-sw720dp
│ │ └── dimens.xml
│ │ └── values
│ │ ├── dimens.xml
│ │ └── strings.xml
│ └── test
│ └── java
│ └── com
│ └── victor
│ └── screen
│ └── match
│ └── library
│ └── ExampleUnitTest.java
├── screenMatch.properties
├── screenMatch_example_dimens.xml
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 |
--------------------------------------------------------------------------------
/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/.idea/caches/gradle_models.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/.idea/caches/gradle_models.ser
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | xmlns:android
11 |
12 | ^$
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | xmlns:.*
22 |
23 | ^$
24 |
25 |
26 | BY_NAME
27 |
28 |
29 |
30 |
31 |
32 |
33 | .*:id
34 |
35 | http://schemas.android.com/apk/res/android
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | .*:name
45 |
46 | http://schemas.android.com/apk/res/android
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | name
56 |
57 | ^$
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | style
67 |
68 | ^$
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | .*
78 |
79 | ^$
80 |
81 |
82 | BY_NAME
83 |
84 |
85 |
86 |
87 |
88 |
89 | .*
90 |
91 | http://schemas.android.com/apk/res/android
92 |
93 |
94 | ANDROID_ATTRIBUTE_ORDER
95 |
96 |
97 |
98 |
99 |
100 |
101 | .*
102 |
103 | .*
104 |
105 |
106 | BY_NAME
107 |
108 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/easycode.ignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 | vendor/
4 | cache/
5 | .*/
6 | *.min.*
7 | *.test.*
8 | *.spec.*
9 | *.bundle.*
10 | *.bundle-min.*
11 | *.*.js
12 | *.*.ts
13 | *.log
14 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
21 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ScreenMatchLib
2 |
3 | # 一个屏幕适配框架(基本能够适配所有手机,平板,机顶盒,智能电视)
4 |
5 | # 适配效果图
6 |
7 | - 
8 |
9 | Usage
10 |
11 | - Step 1. Add the JitPack repository to your build file
12 |
13 | allprojects {
14 | repositories {
15 | ...
16 | maven { url "https://jitpack.io" }
17 | }
18 | }
19 | - Step 2. Add the dependency
20 |
21 | dependencies {
22 | compile 'com.github.Victor2018:ScreenMatchLib:v1.0'
23 | }
24 |
25 |
26 | # 关注开发者:
27 | - 邮箱: victor423099@gmail.com
28 | - 新浪微博
29 | - 
30 |
31 | ## License
32 |
33 | Copyright (c) 2017 Victor
34 |
35 | Licensed under the Apache License, Version 2.0 (the "License");
36 | you may not use this file except in compliance with the License.
37 | You may obtain a copy of the License at
38 |
39 | http://www.apache.org/licenses/LICENSE-2.0
40 |
41 | Unless required by applicable law or agreed to in writing, software
42 | distributed under the License is distributed on an "AS IS" BASIS,
43 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44 | See the License for the specific language governing permissions and
45 | limitations under the License.
46 |
--------------------------------------------------------------------------------
/SrceenShot/img_match.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/SrceenShot/img_match.png
--------------------------------------------------------------------------------
/SrceenShot/sina_weibo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/SrceenShot/sina_weibo.jpg
--------------------------------------------------------------------------------
/TV.md:
--------------------------------------------------------------------------------
1 | # 概念
2 |
3 | - dp(dip): Density Independent Pixels(密度无关像素)的缩写。以160dpi为基准,1dp=1px
4 |
5 | - px:像素,物理上的绝对单位
6 |
7 | - sp:Scale-Independent Pixels的缩写,可以根据文字大小首选项自动进行缩放。Google推荐我们使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇数和小数。
8 |
9 | - dpi:屏幕像素密度的单位,“dot per inch”的缩写
10 |
11 | - density:每平方英寸像素点数。
12 |
13 |
14 |
15 | px = density * dp;
16 |
17 | density = dpi / 160;
18 |
19 | px = dp * (dpi / 160);
20 |
21 | #### 屏幕尺寸、分辨率、像素密度三者关系
22 |
23 | 一部手机的分辨率是宽x高,屏幕大小是以寸为单位,那么三者的关系是:
24 |
25 | 
26 |
27 | dpi=√(width^2 x height^2)/屏幕尺寸
28 |
29 |
30 |
31 | # 屏幕密度
32 |
33 |
34 |
35 | | 密度类型 | 代表的分辨率(px) | 屏幕像素密度(dpi) |
36 | | :------------------- | :----------------: | :-----------------: |
37 | | 低密度(ldpi) | 240x320 | 120 |
38 | | 中密度(mdpi) | 320x480 | 160 |
39 | | 高密度(hdpi) | 480x800 | 240 |
40 | | 超高密度(xhdpi) | 720x1280 | 320 |
41 | | 超超高密度(xxhdpi) | 1080x1920 | 480 |
42 |
43 |
44 |
45 | # TV
46 |
47 | Name Play Store Size Resolution Density WidthDp
48 |
49 | AndroidTV(720p) 55" 1280*720 tvdpi 1280/(213/160.0) = 961.5dp
50 |
51 | AndroidTV(1080p) 55" 1920*1080 xhdpi 1920/(320/160.0)=960.0dp
52 |
53 |
54 |
55 | # Phone
56 |
57 | Name Play Store Size Resolution Density SmallestWidthDp
58 |
59 | Pixel XL 5.5" 1440*2560 560dpi 1440/(560/160.0) = 411.43dp
60 |
61 | Pixel 3a XL 6.0" 1080*2160 400dpi 1080/(400/160.0) = 432.0dp
62 |
63 | Pixel 3a -- 5.6" 1080*2220 440dpi 1080/(440/160.0) = 392.73dp
64 |
65 | Pixel 3 XL 6.3" 1440*2960 560dpi 1440/(560/160.0) = 411.43dp
66 |
67 | Pixel 3 -- 5.46" 1080*2160 440dpi 1080/(440/160.0) =392.73dp
68 |
69 | Pixel 2 XL 5.99" 1440*2880 560dpi 1440/(560/160.0) = 411.43dp
70 |
71 | Pixel 2 -- 5.0" 1080*1920 420dpi 1080/(420/160.0) =411.43dp
72 |
73 | Pixel -- 5.0" 1080*1920 420dpi 1080/(420/160.0)=411.43dp
74 |
75 | Nexus S 4.0" 480*800 hdpi 480/(240/160.0)=320.0dp
76 |
77 | Nexus One 3.7" 480*800 hdpi 480/(240/160.0)=320.0dp
78 |
79 | Nexus 6P 5.7" 1440*2560 560dpi 1440/(560/160.0)=411.43dp
80 |
81 | Nexus 6 5.96" 1440*2560 560dpi 1440/(560/160.0)=411.43dp
82 |
83 | Nexus 5X -- 5.2" 1080*1920 420dpi 1080/(420/160.0)=411.43dp
84 |
85 | Nexus 5 -- 4.95" 1080*1920 xxhdpi 1080/(480/160.0)=360.0dp
86 |
87 | Nexus 4 4.7" 768*1280 xhdpi 768/(320/160.0)=384.0dp
88 |
89 | Galaxy Nexus 4.65" 720*1280 xhdpi 720/(320/160.0)=360.0dp
90 |
91 | 8" Foldable 8.03" 2200*2480 420dpi 2200/(420/160.0)=838.10dp
92 |
93 | 7.3" Foldable 7.3" 1536*2152 420dpi 1536/(420/160.0)=585.14dp
94 |
95 | 5.4" FWVGA 5.4" 480*854 mdpi 480/(160/160.0)=480.0dp
96 |
97 | 5.1" WVGA 5.1" 480*800 mdpi 480/(160/160.0)=480.0dp
98 |
99 | 4.7" WXGA 4.7" 720*1280 xhdpi 720/(320/160.0)=360.0dp
100 |
101 | 4.65" 720p (Galaxy Nexus) 4.65" 720*1280 xhdpi 720/(320/160.0)=360.0dp
102 |
103 | 4" WVGA (Nexus S) 4.0" 480*800 hdpi 480/(240/160.0)=320.0dp
104 |
105 | 3.7" WVGA (Nexus One) 3.4" 480*800 hdpi 480/(240/160.0)=320.0dp
106 |
107 | 3.7" FWVGA slider 3.7" 480*854 hdpi 480/(240/160.0)=320.0dp
108 |
109 | 3.4" WQVGA 3.4" 240*432 ldpi 240/(120/160.0)=320.0dp
110 |
111 | 3.3" WQVGA 3.3" 240*400 ldpi 240/(120/160.0)=320.0dp
112 |
113 | 3.2" QVGA(ADP2) 3.2" 320*480 mdpi 320/(160/160.0)=320.0dp
114 |
115 | 3.2" HVGA slider (ADP1) 3.2" 320*480 mdpi 320/(160/160.0)=320.0dp
116 |
117 | 2.7" QVGA slider 2.7" 240*320 ldpi 240/(120/160.0)=320.0dp
118 |
119 | 2.78" QVGA 2.7" 240*320 ldpi 240/(120/160.0)=320.0dp
120 |
121 |
122 |
123 | # Wear OS
124 |
125 |
126 |
127 | Name Play Store Size Resolution Density SmallestWidthDp
128 |
129 | Android Wear Square -- 1.65" 280*280 hdpi 280/(240/160.0)=186.67dp
130 |
131 | Android Wear Round Chin -- 1.65" 290*320 tvdpi 290/(213/160.0) = 217.84dp
132 |
133 | Android Wear Round -- 1.65" 320*320 hdpi 320/(240/160.0)=213.33dp
134 |
135 |
136 |
137 | # Tablet
138 |
139 | Name Play Store Size Resolution Density SmallestWidthDp
140 |
141 | Pixel C 9.94" 2560*1800 xhdpi 1800/(320/160.0)=900dp
142 |
143 | Nexus 9 8.86" 2480*1536 xhdpi 1536/(320/160.0)=768.0dp
144 |
145 | Nexus 7 (2012) 7.0" 800*1280 tvdpi 800/(213/160.0)=600.94dp
146 |
147 | Nexus 7 7.02" 1200*1920 xhdpi 1200/(320/160.0)=600.0dp
148 |
149 | Nexus 10 10.05" 2560*1600 xhdpi 1600/(320/160.0)=800.0dp
150 |
151 | 7" WSVGA(Tablet) 7.0" 600*1024 mdpi 600/(160/160.0)=600.0dp
152 |
153 | 10.1" WXGA(Tablet) 10.1" 800*1280 mdpi 800/(160/160.0)=800dp
154 |
155 |
156 |
157 | # Automotive
158 |
159 | Name Play Store Size Resolution Density SmallestWidthDp
160 |
161 | Polestar 2 11.13" 1152*1536 mdpi 1152/(160/160.0) = 1152.0dp
162 |
163 | Automotive (1024p landscape) 8.4" 1024*768 mdpi 768/(160/160.0) = 768.0dp
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 29
5 | buildToolsVersion "29.0.0"
6 | defaultConfig {
7 | applicationId "com.victor.screen"
8 | minSdkVersion 21
9 | targetSdkVersion 29
10 | versionCode 1
11 | versionName "1.0"
12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | }
21 |
22 | dependencies {
23 | implementation fileTree(dir: 'libs', include: ['*.jar'])
24 | androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
25 | exclude group: 'com.android.support', module: 'support-annotations'
26 | })
27 | implementation 'com.android.support:appcompat-v7:25.0.0'
28 | implementation 'com.android.support.constraint:constraint-layout:1.0.2'
29 | testImplementation 'junit:junit:4.12'
30 |
31 | implementation project(':library')
32 | }
33 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\DevelopTools\sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/victor/screen/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.victor.screen", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/victor/screen/DeviceUtils.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen;
2 |
3 | import android.Manifest;
4 | import android.annotation.SuppressLint;
5 | import android.annotation.TargetApi;
6 | import android.content.Context;
7 | import android.content.pm.PackageManager;
8 | import android.graphics.Point;
9 | import android.os.Build;
10 | import android.telephony.TelephonyManager;
11 | import android.text.TextUtils;
12 | import android.util.DisplayMetrics;
13 | import android.view.Display;
14 | import android.view.WindowManager;
15 |
16 | import com.victor.screen.app.App;
17 |
18 | import java.io.BufferedReader;
19 | import java.io.FileReader;
20 | import java.io.IOException;
21 | import java.net.Inet4Address;
22 | import java.net.InetAddress;
23 | import java.net.NetworkInterface;
24 | import java.net.SocketException;
25 | import java.util.Enumeration;
26 | import java.util.Locale;
27 |
28 | /*
29 | * -----------------------------------------------------------------
30 | * Copyright (C) 2020-2030, by Victor, All rights reserved.
31 | * -----------------------------------------------------------------
32 | * File: DeviceUtils
33 | * Author: Victor
34 | * Date: 2020/9/14 11:17
35 | * Description: 获取设备的信息
36 | * -----------------------------------------------------------------
37 | */
38 |
39 | public class DeviceUtils {
40 |
41 | private static DisplayMetrics mDisplayMetrics;
42 |
43 | /**
44 | * 获取设备的宽和高
45 | *
46 | * @return
47 | */
48 | public static DisplayMetrics getDisplayMetrics() {
49 | if (mDisplayMetrics == null) {
50 | mDisplayMetrics = App.get().getResources().getDisplayMetrics();
51 | }
52 | return mDisplayMetrics;
53 | }
54 |
55 | public static int getDisplayWidth() {
56 | if (mDisplayMetrics == null) {
57 | mDisplayMetrics = App.get().getResources().getDisplayMetrics();
58 | }
59 | return mDisplayMetrics.widthPixels;
60 | }
61 |
62 | public static int getDisplayHeight() {
63 | if (mDisplayMetrics == null) {
64 | mDisplayMetrics = App.get().getResources().getDisplayMetrics();
65 | }
66 | return mDisplayMetrics.heightPixels;
67 | }
68 |
69 | @SuppressLint("NewApi")
70 | public static boolean checkPermission(Context context, String permission) {
71 | boolean result = false;
72 | if (Build.VERSION.SDK_INT >= 23) {
73 | if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
74 | result = true;
75 | }
76 | } else {
77 | PackageManager pm = context.getPackageManager();
78 | if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
79 | result = true;
80 | }
81 | }
82 | return result;
83 | }
84 |
85 | /**
86 | * 获取设备的唯一标识 物理地址加device id
87 | *
88 | * @return
89 | */
90 | @SuppressLint("MissingPermission")
91 | public static String getUDID() {
92 | try {
93 | TelephonyManager tm = (TelephonyManager) App.get().getSystemService(Context.TELEPHONY_SERVICE);
94 | String device_id = null;
95 | if (checkPermission(App.get(), Manifest.permission.READ_PHONE_STATE)) {
96 | device_id = tm.getDeviceId();
97 | }
98 | if (TextUtils.isEmpty(device_id)) {
99 | device_id = android.provider.Settings.Secure.getString(App.get().getContentResolver(),
100 | android.provider.Settings.Secure.ANDROID_ID);
101 | }
102 | // return CryptoUtils.MD5(device_id);
103 | return device_id;
104 | } catch (Exception e) {
105 | e.printStackTrace();
106 | }
107 | return null;
108 | }
109 |
110 | public static String getMac() {
111 | String mac_s= "";
112 | try {
113 | byte[] mac;
114 | NetworkInterface ne= NetworkInterface.getByInetAddress(InetAddress.getByName(getLocalIpAddress()));
115 | mac = ne.getHardwareAddress();
116 | mac_s = byte2hex(mac);
117 | } catch (Exception e) {
118 | e.printStackTrace();
119 | }
120 | return mac_s;
121 | }
122 |
123 | public static String getEthernetMac() {
124 | BufferedReader reader = null;
125 | String ethernetMac = "";
126 | try {
127 | reader = new BufferedReader(new FileReader(
128 | "sys/class/net/eth0/address"));
129 | ethernetMac = reader.readLine();
130 | } catch (Exception e) {
131 | e.printStackTrace();
132 | } finally {
133 | try {
134 | if (reader != null)
135 | reader.close();
136 | } catch (IOException e) {
137 | e.printStackTrace();
138 | }
139 | }
140 | return ethernetMac.toUpperCase();
141 | }
142 |
143 | public static String getTVMac() {
144 | StringBuffer tvMac = new StringBuffer();
145 | String mac = getMac().toUpperCase();
146 | try {
147 | for (int i=0;i en = NetworkInterface.getNetworkInterfaces();
178 | en.hasMoreElements();) {
179 | NetworkInterface netInterface = (NetworkInterface) en.nextElement();
180 |
181 | for (Enumeration ipaddr = netInterface.getInetAddresses();
182 | ipaddr.hasMoreElements();) {
183 |
184 | InetAddress inetAddress = (InetAddress) ipaddr.nextElement();
185 |
186 | if (!inetAddress.isLoopbackAddress() && (inetAddress instanceof Inet4Address)) {
187 | sLocalIPAddress = inetAddress.getHostAddress().toString();
188 | }
189 | }
190 | }
191 | } catch (SocketException ex) {
192 | ex.printStackTrace();
193 | }
194 | return sLocalIPAddress;
195 | }
196 |
197 | /**
198 | * 获取手机品牌
199 | *
200 | * @return
201 | */
202 | public static String getPhoneBrand() {
203 | return Build.BRAND;
204 | }
205 |
206 | /**
207 | * 获取系统版本
208 | *
209 | * @return
210 | */
211 | public static String getSysVersion() {
212 | return Build.VERSION.RELEASE;
213 | }
214 | /**
215 | * 获取手机型号
216 | *
217 | * @return
218 | */
219 | public static String getPhoneModel() {
220 | return Build.MODEL;
221 | }
222 |
223 | public static String getSysLanguage () {
224 | Locale locale = Locale.getDefault();
225 | return locale.getLanguage();
226 | }
227 |
228 | /**
229 | * 获取当前手机系统版本号
230 | *
231 | * @return 系统版本号
232 | */
233 | public static String getSystemVersion() {
234 | return android.os.Build.VERSION.RELEASE;
235 | }
236 |
237 | /**
238 | * 获取屏幕尺寸
239 | */
240 | @SuppressWarnings("deprecation")
241 | @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
242 | public static Point getScreenSize(Context context){
243 | WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
244 | Display display = windowManager.getDefaultDisplay();
245 | if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2){
246 | return new Point(display.getWidth(), display.getHeight());
247 | }else{
248 | Point point = new Point();
249 | display.getSize(point);
250 | return point;
251 | }
252 | }
253 |
254 | /**
255 | * 获取手机厂商
256 | *
257 | * @return 手机厂商
258 | */
259 | public static String getDeviceBrand() {
260 | return android.os.Build.BRAND;
261 | }
262 |
263 | }
264 |
265 |
--------------------------------------------------------------------------------
/app/src/main/java/com/victor/screen/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 | import android.util.DisplayMetrics;
6 | import android.widget.TextView;
7 |
8 | import com.victor.screen.app.App;
9 |
10 | public class MainActivity extends AppCompatActivity {
11 |
12 | private TextView mTvMatchData;
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_main);
18 |
19 | initialize();
20 | }
21 |
22 | private void initialize () {
23 | mTvMatchData = (TextView) findViewById(R.id.tv_match_data);
24 |
25 | DisplayMetrics dm = new DisplayMetrics();
26 | getWindowManager().getDefaultDisplay().getMetrics(dm);
27 | int smallestWidth = Math.min(dm.widthPixels,dm.heightPixels);
28 |
29 | StringBuffer sb = new StringBuffer();
30 | sb.append("当前手机: "+ DeviceUtils.getDeviceBrand()+"--->"+DeviceUtils.getPhoneModel()+ " \n");
31 | sb.append("当前系统: "+ DeviceUtils.getSystemVersion()+ " "+ "\n");
32 | sb.append("widthPixels : "+ dm.widthPixels + "\n");
33 | sb.append("heightPixels : "+ dm.heightPixels + "\n");
34 | sb.append("smallest width pixels : "+ smallestWidth + "\n");
35 | sb.append("densityDpi : "+ dm.densityDpi + "\n");
36 | sb.append("scaledDensity : "+ dm.scaledDensity + "\n");
37 |
38 | sb.append("计算smallestWidth公式 : smallestWidth/(densityDpi/160.0)"+ "\n");
39 | sb.append("计算出来的smallestWidth : " + smallestWidth + "/(" + dm.densityDpi + "/160.0) = "
40 | + smallestWidth/(dm.densityDpi/160.0) +"dp" + "\n");
41 |
42 | sb.append("实际使用的smallestWidth : "+ ResUtils.getStringRes(R.string.base_dpi) + "\n");
43 |
44 |
45 | mTvMatchData.setText(sb.toString());
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/victor/screen/ResUtils.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen;
2 |
3 | import android.content.res.Resources;
4 | import android.graphics.drawable.Drawable;
5 | import android.support.annotation.ColorInt;
6 | import android.support.v4.content.ContextCompat;
7 |
8 | import com.victor.screen.app.App;
9 |
10 | import java.lang.reflect.Field;
11 |
12 | public class ResUtils {
13 |
14 | public static String getStringRes(int id) {
15 | try {
16 | return App.get().getResources().getString(id);
17 | } catch (Resources.NotFoundException e) {
18 | e.printStackTrace();
19 | return "";
20 | }
21 | }
22 |
23 | public static String getStringRes(int id, Object... args) {
24 | try {
25 | return App.get().getResources().getString(id, args);
26 | } catch (Resources.NotFoundException e) {
27 | e.printStackTrace();
28 | return "";
29 | }
30 | }
31 |
32 | /**
33 | * 获取 String[] 值. 如果id对应的资源文件不存在, 则返回 null.
34 | *
35 | * @param id
36 | * @return
37 | */
38 | public static String[] getStringArrayRes(int id) {
39 | try {
40 | return App.get().getResources().getStringArray(id);
41 | } catch (Resources.NotFoundException e) {
42 | e.printStackTrace();
43 | return null;
44 | }
45 | }
46 |
47 | /**
48 | * 获取dimension px值. 如果id对应的资源文件不存在, 则返回 -1.
49 | *
50 | * @param id
51 | * @return
52 | */
53 | public static int getDimenPixRes(int id) {
54 | try {
55 | return App.get().getResources().getDimensionPixelOffset(id);
56 | } catch (Resources.NotFoundException e) {
57 | e.printStackTrace();
58 | return -1;
59 | }
60 | }
61 |
62 | /**
63 | * 获取dimension float形式的 px值. 如果id对应的资源文件不存在, 则返回 -1.
64 | *
65 | * @param id
66 | * @return
67 | */
68 | public static float getDimenFloatPixRes(int id) {
69 | try {
70 | return App.get().getResources().getDimension(id);
71 | } catch (Resources.NotFoundException e) {
72 | e.printStackTrace();
73 | return -1;
74 | }
75 | }
76 |
77 | /**
78 | * 获取 color 值. 如果id对应的资源文件不存在, 则返回 -1.
79 | *
80 | * @param id
81 | * @return
82 | */
83 | @ColorInt
84 | public static int getColorRes(int id) {
85 | try {
86 | return ContextCompat.getColor(App.get(), id);
87 | } catch (Resources.NotFoundException e) {
88 | e.printStackTrace();
89 | return -1;
90 | }
91 | }
92 |
93 | /**
94 | * 获取 Drawable 对象. 如果id对应的资源文件不存在, 则返回 null.
95 | *
96 | * @param id
97 | * @return
98 | */
99 | public static Drawable getDrawableRes(int id) {
100 | try {
101 | return ContextCompat.getDrawable(App.get(), id);
102 | } catch (Resources.NotFoundException e) {
103 | e.printStackTrace();
104 | return null;
105 | } catch (OutOfMemoryError e) {
106 | e.printStackTrace();
107 | return null;
108 | }
109 | }
110 |
111 | /**
112 | * 获取资源
113 | *
114 | * @return
115 | */
116 | public static Resources getResources() {
117 | return App.get().getResources();
118 | }
119 |
120 | public static int getDrawableByName(String name) {
121 | return getResources().getIdentifier(name, "drawable", App.get().getPackageName());
122 | }
123 |
124 | /**
125 | * 根据图片名字获取Id
126 | */
127 | public static int getDrawableId(String name) {
128 | try {
129 | Field field = R.drawable.class.getField(name);
130 | int res_ID = field.getInt(field.getName());
131 | return res_ID;
132 | } catch (Exception e) {
133 | e.printStackTrace();
134 | }
135 | return -1;
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/app/src/main/java/com/victor/screen/app/App.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.app;
2 |
3 | import android.app.Application;
4 |
5 |
6 | /*
7 | * -----------------------------------------------------------------
8 | * Copyright (C) 2020-2030, by Victor, All rights reserved.
9 | * -----------------------------------------------------------------
10 | * File: App
11 | * Author: Victor
12 | * Date: 2020/9/14 10:52
13 | * Description:
14 | * -----------------------------------------------------------------
15 | */
16 | public class App extends Application {
17 | private static App instance;
18 |
19 | public App() {
20 | instance = this;
21 | }
22 |
23 | public static App get() {
24 | return instance;
25 | }
26 |
27 | @Override
28 | public void onCreate() {
29 | super.onCreate();
30 | }
31 |
32 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
27 |
28 |
41 |
42 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | ScreenMatchLib
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/test/java/com/victor/screen/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | maven { url 'https://jitpack.io' }
7 | google()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:4.0.0'
11 | // 重点就是下面这一行(上面两行是为了定位这一行的添加位置)
12 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
13 | // NOTE: Do not place your application dependencies here; they belong
14 | // in the individual module build.gradle files
15 | }
16 | }
17 |
18 | allprojects {
19 | repositories {
20 | jcenter()
21 | google()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Nov 03 11:27:16 CST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/library/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | // JitPack Maven
3 | apply plugin: 'com.github.dcendents.android-maven'
4 | // Group
5 | group='com.github.Victor2018'
6 |
7 |
8 | android {
9 | compileSdkVersion 33
10 |
11 | defaultConfig {
12 | minSdkVersion 21
13 | targetSdkVersion 33
14 | versionCode 1
15 | versionName "1.0"
16 |
17 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
18 |
19 | }
20 | buildTypes {
21 | release {
22 | minifyEnabled false
23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
24 | }
25 | }
26 | }
27 |
28 | dependencies {
29 | }
30 |
--------------------------------------------------------------------------------
/library/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\DevelopTools\sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/library/src/androidTest/java/com/victor/screen/match/library/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library;
2 |
3 | import android.content.Context;
4 |
5 |
6 | /**
7 | * Instrumentation test, which will execute on an Android device.
8 | *
9 | * @see Testing documentation
10 | */
11 | public class ExampleInstrumentedTest {
12 | public void useAppContext() throws Exception {
13 | // Context of the app under test.
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/DimenGenerator.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library;
2 |
3 |
4 | import com.victor.screen.match.library.util.DimenTypes;
5 | import com.victor.screen.match.library.util.HarmoneyMakeUtils;
6 | import com.victor.screen.match.library.util.MakeUtils;
7 | import com.victor.screen.match.library.util.TvMakeUtils;
8 |
9 |
10 | public class DimenGenerator {
11 | private static final Boolean isPhone = true;
12 | /**
13 | * 设计稿尺寸宽度
14 | */
15 | private static final int PHONE_DESIGN_WIDTH = 750;//750
16 |
17 | /**
18 | * 设计稿的高度
19 | */
20 | private static final int PHONE_DESIGN_HEIGHT = 1334;//1334
21 |
22 | //适配Android 3.2以上 大部分手机的sw值集中在300-450之间,平板的sw值集中在460-720之间
23 | private static final int DP_PHONE_SW_START = 300;
24 | private static final int DP_PHONE_SW_END = 720;
25 |
26 |
27 | private static int[] HARMONEY_SW = new int[]{
28 | 90,//sdpi 120dpi
29 | 120,//mdpi 160dpi
30 | 180,//ldpi 240dpi
31 | 240,//xhdpi 320dpi
32 | 360,//xxhdpi 480dpi
33 | 480,//xxxhdpi 640dpi
34 | 750,//lpx
35 | };
36 |
37 |
38 | /**
39 | * TV设计稿尺寸宽度
40 | */
41 | private static final int TV_DESIGN_WIDTH = 1920;
42 |
43 | /**
44 | * TV设计稿的高度
45 | */
46 | private static final int TV_DESIGN_HEIGHT = 1080;
47 |
48 |
49 | public static void main(String[] args) {
50 | //求得最小宽度
51 | int smallestWidth = PHONE_DESIGN_WIDTH > PHONE_DESIGN_HEIGHT ? PHONE_DESIGN_HEIGHT : PHONE_DESIGN_WIDTH;
52 | //生成 Phone dimens.xml
53 | for (int i=DP_PHONE_SW_START;i<=DP_PHONE_SW_END;i+=10) {
54 | MakeUtils.makeAll(smallestWidth, i, "./library/src/main/res/");
55 | }
56 |
57 | for (int sw: HARMONEY_SW) {
58 | HarmoneyMakeUtils.makeAll(smallestWidth, sw, "./library/src/main/assets/");
59 | }
60 |
61 | if (!isPhone) {
62 | //生成 TV dimens.xml
63 | DimenTypes[] values = DimenTypes.values();
64 | for (DimenTypes value : values) {
65 | TvMakeUtils.makeTvAll(value.widthPx,value.heightPx,TV_DESIGN_WIDTH,TV_DESIGN_HEIGHT,"./library/src/main/res/");
66 | }
67 |
68 | }
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/GenerateValueFiles.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library;
2 |
3 | import android.content.Context;
4 |
5 | import java.io.File;
6 | import java.io.FileNotFoundException;
7 | import java.io.FileOutputStream;
8 | import java.io.PrintWriter;
9 |
10 | /*
11 | * -----------------------------------------------------------------
12 | * Copyright (C) 2020-2030, by Victor, All rights reserved.
13 | * -----------------------------------------------------------------
14 | * File: GenerateValueFiles
15 | * Author: Victor
16 | * Date: 2020/10/29 16:20
17 | * Description:
18 | * -----------------------------------------------------------------
19 | */
20 | public class GenerateValueFiles {
21 | private int baseW;
22 | private int baseH;
23 |
24 | private String dirStr = "./res";
25 |
26 | private final static String WTemplate = "{1}px\n";
27 | private final static String HTemplate = "{1}px\n";
28 |
29 | /**
30 | * {0}-HEIGHT
31 | */
32 | private final static String VALUE_TEMPLATE = "values-{0}x{1}";
33 |
34 | private static final String SUPPORT_DIMESION = "1024,600;" +
35 | "1280,672;" +
36 | "1280,720;" +
37 | "1280,736;" +
38 | "1280,800;" +
39 | "1366,768;" +
40 | "1920,1080;" +
41 | "2048,1440;" +
42 | "2048,1536;" +
43 | "2560,1440;" +
44 | "2560,1600;";
45 |
46 | private String supportStr = SUPPORT_DIMESION;
47 |
48 | /**
49 | * baseX:width
50 | * baseY:height
51 | */
52 | public GenerateValueFiles(int baseX, int baseY, String supportStr) {
53 | this.baseW = baseX;
54 | this.baseH = baseY;
55 |
56 | if (!this.supportStr.contains(baseX + "," + baseY)) {
57 | //this.supportStr += baseX + "," + baseY + ";";
58 | this.supportStr += baseX + "," + baseY + ";";
59 | }
60 |
61 | this.supportStr += validateInput(supportStr);
62 |
63 | System.out.println(supportStr);
64 |
65 | File dir = new File(dirStr);
66 | if (!dir.exists()) {
67 | dir.mkdir();
68 |
69 | }
70 | System.out.println(dir.getAbsoluteFile());
71 |
72 | }
73 |
74 | /**
75 | * @param supportStr
76 | * w,h_...w,h;
77 | * @return
78 | */
79 | private String validateInput(String supportStr) {
80 | StringBuffer sb = new StringBuffer();
81 | String[] vals = supportStr.split("_");
82 | int w = -1;
83 | int h = -1;
84 | String[] wh;
85 | for (String val : vals) {
86 | try {
87 | if (val == null || val.trim().length() == 0)
88 | continue;
89 |
90 | wh = val.split(",");
91 | w = Integer.parseInt(wh[0]);
92 | h = Integer.parseInt(wh[1]);
93 | } catch (Exception e) {
94 | System.out.println("skip invalidate params : w,h = " + val);
95 | continue;
96 | }
97 | sb.append(w + "," + h + ";");
98 | }
99 |
100 | return sb.toString();
101 | }
102 |
103 | /**
104 | * xml 1
105 | */
106 | public void generate() {
107 | String[] vals = supportStr.split(";");
108 | for (String val : vals) {
109 | String[] wh = val.split(",");
110 | int w = Integer.parseInt(wh[0]);
111 | int h = Integer.parseInt(wh[1]);
112 | System.out.println("正在转换===> to width : " + w + " to height:" + h);
113 | generateXmlFile(w, h);
114 | }
115 |
116 | }
117 |
118 | /**
119 | * xml 2
120 | */
121 | private void generateXmlFile(int w, int h) {
122 |
123 | StringBuffer sbForWidth = new StringBuffer();
124 | sbForWidth.append("\n");
125 | sbForWidth.append("\n");
126 | float cellw = ((w * 1.0f / baseW));
127 |
128 | System.out.println("width : " + w + "," + baseW + "," + cellw);
129 | for (int i = 1; i < baseW; i++) {
130 | sbForWidth.append(WTemplate.replace("{0}", i + "").replace("{1}",
131 | change(cellw * i) + ""));
132 | }
133 | sbForWidth.append(WTemplate.replace("{0}", baseW + "").replace("{1}",
134 | w + ""));
135 | sbForWidth.append("");
136 |
137 |
138 |
139 | StringBuffer sbForHeight = new StringBuffer();
140 | sbForHeight.append("\n");
141 | sbForHeight.append("");
142 | float cellh = h *1.0f/ baseH;
143 | System.out.println("height : "+ h + "," + baseH + "," + cellh);
144 | for (int i = 1; i < baseH; i++) {
145 | sbForHeight.append(HTemplate.replace("{0}", i + "").replace("{1}",
146 | change(cellh * i) + ""));
147 | }
148 | sbForHeight.append(HTemplate.replace("{0}", baseH + "").replace("{1}",
149 | h + ""));
150 | sbForHeight.append("");
151 |
152 | File fileDir = new File(dirStr + File.separator
153 | + VALUE_TEMPLATE.replace("{0}", w + "")//
154 | .replace("{1}", h + ""));
155 | fileDir.mkdir();
156 |
157 | File layxFile = new File(fileDir.getAbsolutePath(), "w_dimens.xml");
158 | File layyFile = new File(fileDir.getAbsolutePath(), "h_dimens.xml");
159 | try {
160 | // width
161 | PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile));
162 | pw.print(sbForWidth.toString());
163 | pw.close();
164 | // height
165 | pw = new PrintWriter(new FileOutputStream(layyFile));
166 | pw.print(sbForHeight.toString());
167 | pw.close();
168 | } catch (FileNotFoundException e) {
169 | e.printStackTrace();
170 | }
171 | }
172 |
173 | public static float change(float a) {
174 | int temp = (int) (a * 100);
175 | return temp / 100f;
176 | }
177 |
178 | public static int px2dip(Context context, float pxValue) {
179 | final float scale = context.getResources().getDisplayMetrics().density;
180 | return (int)(pxValue / scale + 0.5f);
181 | }
182 |
183 | public static void main(String[] args) {
184 | int baseW = 1920;
185 | int baseH = 1080;
186 | String addition = "";
187 | try {
188 | if (args.length >= 3) {
189 | baseW = Integer.parseInt(args[0]);
190 | baseH = Integer.parseInt(args[1]);
191 | addition = args[2];
192 | } else if (args.length >= 2) {
193 | baseW = Integer.parseInt(args[0]);
194 | baseH = Integer.parseInt(args[1]);
195 | System.out.println("main args length:" + args.length + " baseW:" + baseW + " baseH:" + baseH);
196 | } else if (args.length >= 1) {
197 | addition = args[0];
198 | }
199 | } catch (NumberFormatException e) {
200 | System.err
201 | .println("right input params : java -jar xxx.jar width height w,h_w,h_..._w,h;");
202 | e.printStackTrace();
203 | System.exit(-1);
204 | }
205 |
206 | new GenerateValueFiles(baseW, baseH, addition).generate();
207 | }
208 | }
209 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/util/DimenTypes.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library.util;
2 |
3 | /*
4 | * -----------------------------------------------------------------
5 | * Copyright (C) 2020-2030, by Victor, All rights reserved.
6 | * -----------------------------------------------------------------
7 | * File: DimenTypes
8 | * Author: Victor
9 | * Date: 2020/10/30 11:05
10 | * Description:
11 | * -----------------------------------------------------------------
12 | */
13 | public enum DimenTypes {
14 | TV_1024_600(1024,600), // values-1024x600
15 | TV_1280_672(1280,672),
16 | TV_1280_720(1280,720),
17 | TV_1280_736(1280,736),
18 | TV_1280_800(1280,800),
19 | TV_1366_768(1366,768),
20 | TV_1920_1080(1920,1080),
21 | TV_2048_1440(2048,1440),
22 | TV_2048_1536(2048,1536),
23 | TV_2560_1440(2560,1440),
24 | TV_2560_1600(2560,1600);
25 |
26 | /**
27 | * 屏幕最小宽度
28 | */
29 | public int widthPx;//单位px
30 | public int heightPx;//单位px
31 |
32 | DimenTypes(int widthPx,int heightPx) {
33 | this.widthPx = widthPx;
34 | this.heightPx = heightPx;
35 | }
36 |
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/util/HarmoneyMakeUtils.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library.util;
2 |
3 | import java.io.File;
4 | import java.io.FileNotFoundException;
5 | import java.io.FileOutputStream;
6 | import java.io.IOException;
7 | import java.math.BigDecimal;
8 |
9 | public class HarmoneyMakeUtils {
10 | private static final String JSON_START = "{\r\n";
11 | private static final String JSON_END = "}\r\n";
12 | private static final String JSON_ITEM_START = "\t\t{\r\n";
13 | private static final String JSON_ITEM_END = "\t\t},\r\n";
14 | private static final String JSON_ITEM_LAST_END = "\t\t}\r\n";
15 | private static final String ARRAY_START = "\t\"string\": [\r\n";
16 | private static final String ARRAY_END = "\t]\r\n";
17 | private static final String JSON_NAME_VP_TEMPLETE = "\t\t\t\"name\": \"vp_%1$d\",\r\n";
18 | private static final String JSON_NAME_LPX_TEMPLETE = "\t\t\t\"name\": \"lpx_%1$d\",\r\n";
19 | private static final String JSON_NAME_FP_TEMPLETE = "\t\t\t\"name\": \"fp_%1$d\",\r\n";
20 | private static final String JSON_VALUE_VP_TEMPLETE = "\t\t\t\"value\": \"%1$.2fvp\"\r\n";
21 | private static final String JSON_VALUE_LPX_TEMPLETE = "\t\t\t\"value\": \"%1$.2flpx\"\r\n";
22 | private static final String JSON_VALUE_FP_TEMPLETE = "\t\t\t\"value\": \"%1$.2ffp\"\r\n";
23 | private static final int MAX_SIZE = 750;
24 | private static final String BASE_NAME_TEMPLETE = "\t\t\t\"name\": \"%s\",\n";
25 | private static final String BASE_VALUE_TEMPLETE = "\t\t\t\"value\": \"%dvp\"\n";
26 | private static final String BASE_VALUE_TEMPLETE_LPX = "\t\t\t\"value\": \"%dlpx\"\n";
27 |
28 | /**
29 | * 生成的文件名
30 | */
31 | private static final String JSON_NAME = "design_vp.json";
32 |
33 |
34 | public static float px2dip(float pxValue, int sw,int designWidth) {
35 | float dpValue = (pxValue/(float)designWidth) * sw;
36 | BigDecimal bigDecimal = new BigDecimal(dpValue);
37 | float finDp = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
38 | return finDp;
39 | }
40 |
41 | /**
42 | * 生成所有的尺寸数据
43 | *
44 | * @param swWidthDp
45 | * @return
46 | */
47 | private static String makeAllDimens(int swWidthDp, int designWidth) {
48 | float vpValue;
49 | String temp;
50 | StringBuilder sb = new StringBuilder();
51 | try {
52 | sb.append(JSON_START);
53 | sb.append(ARRAY_START);
54 |
55 | //添加base信息
56 | sb.append(JSON_ITEM_START);
57 | sb.append(String.format(BASE_NAME_TEMPLETE,getBaseName(swWidthDp)));
58 | if (swWidthDp == 750) {
59 | sb.append(String.format(BASE_VALUE_TEMPLETE_LPX,swWidthDp));
60 | } else {
61 | sb.append(String.format(BASE_VALUE_TEMPLETE,swWidthDp));
62 | }
63 | sb.append(JSON_ITEM_END);
64 |
65 | for (int i = 1; i <= MAX_SIZE; i++) {
66 | //添加vp
67 | sb.append(JSON_ITEM_START);
68 | if (swWidthDp == 750) {
69 | sb.append(String.format(JSON_NAME_LPX_TEMPLETE,i));
70 | } else {
71 | sb.append(String.format(JSON_NAME_VP_TEMPLETE,i));
72 | }
73 |
74 | vpValue = px2dip((float) i,swWidthDp,designWidth);
75 | System.err.println("vpValue = " + vpValue);
76 | temp = String.format(JSON_VALUE_VP_TEMPLETE, vpValue);
77 | if (swWidthDp == 750) {
78 | temp = String.format(JSON_VALUE_LPX_TEMPLETE, vpValue);
79 | }
80 | sb.append(temp);
81 |
82 | if (swWidthDp != 750) {
83 | sb.append(JSON_ITEM_END);
84 | } else {
85 | if (i == MAX_SIZE) {
86 | sb.append(JSON_ITEM_LAST_END);
87 | } else {
88 | sb.append(JSON_ITEM_END);
89 | }
90 | }
91 |
92 | //添加fp
93 | if (swWidthDp != 750) {
94 | sb.append(JSON_ITEM_START);
95 | sb.append(String.format(JSON_NAME_FP_TEMPLETE,i));
96 | vpValue = px2dip((float) i,swWidthDp,designWidth);
97 | System.err.println("fpValue = " + vpValue);
98 | temp = String.format(JSON_VALUE_FP_TEMPLETE, vpValue);
99 | sb.append(temp);
100 | }
101 |
102 | if (i == MAX_SIZE) {
103 | if (swWidthDp != 750) {
104 | sb.append(JSON_ITEM_LAST_END);
105 | }
106 | } else {
107 | if (swWidthDp != 750) {
108 | sb.append(JSON_ITEM_END);
109 | }
110 | }
111 | }
112 |
113 | sb.append(ARRAY_END);
114 | sb.append(JSON_END);
115 | } catch (Exception e) {
116 | e.printStackTrace();
117 | }
118 | return sb.toString();
119 | }
120 |
121 | /**
122 | * 生成的目标文件夹
123 | * 只需传宽进来就行
124 | *
125 | * @param swWidthDp
126 | * @param buildDir 生成的目标文件夹
127 | */
128 | public static void makeAll(int designWidth, int swWidthDp, String buildDir) {
129 | try {
130 | if (swWidthDp <= 0) return;
131 |
132 | File file = new File(buildDir);
133 | if (file.exists()) {
134 | file.delete();
135 | }
136 | file.mkdirs();
137 |
138 | String jsonFileName = "design_" + designWidth + "_" + swWidthDp + "_vp.json";
139 | if (swWidthDp == 750) {
140 | jsonFileName = "design_" + designWidth + "_" + swWidthDp + "_lpx.json";
141 | }
142 |
143 | FileOutputStream fos = new FileOutputStream(file.getAbsolutePath() + File.separator + jsonFileName);
144 | fos.write(makeAllDimens(swWidthDp,designWidth).getBytes());
145 |
146 | fos.flush();
147 | fos.close();
148 | } catch (FileNotFoundException e) {
149 | e.printStackTrace();
150 | } catch (IOException e) {
151 | e.printStackTrace();
152 | }
153 | }
154 |
155 | private static String getBaseName(int swWidthDp) {
156 | String baseName = null;
157 | switch (swWidthDp) {
158 | case 90: {
159 | baseName = "sdp_120dpi";
160 | break;
161 | }
162 | case 120: {
163 | baseName = "mdp_160dpi";
164 | break;
165 | }
166 | case 180: {
167 | baseName = "ldp_240dpi";
168 | break;
169 | }
170 | case 240: {
171 | baseName = "xhdpi_320dpi";
172 | break;
173 | }
174 | case 360: {
175 | baseName = "xxhdpi_480dpi";
176 | break;
177 | }
178 | case 480: {
179 | baseName = "xxxhdpi_640dpi";
180 | break;
181 | }
182 | case 750: {
183 | baseName = "750lpx";
184 | break;
185 | }
186 | }
187 | return baseName;
188 | }
189 |
190 | }
191 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/util/MakeUtils.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library.util;
2 |
3 | import java.io.File;
4 | import java.io.FileNotFoundException;
5 | import java.io.FileOutputStream;
6 | import java.io.IOException;
7 | import java.math.BigDecimal;
8 |
9 | public class MakeUtils {
10 | private static final String XML_HEADER = "\r\n";
11 | private static final String XML_RESOURCE_START = "\r\n";
12 | private static final String XML_RESOURCE_END = "\r\n";
13 | private static final String XML_DIMEN_TEMPLETE = "%2$.2fdp\r\n";
14 |
15 |
16 | private static final String XML_BASE_DPI = "%ddp\r\n";
17 | private static final int MAX_SIZE = 750;
18 |
19 |
20 | /**
21 | * 生成的文件名
22 | */
23 | private static final String XML_NAME = "dimens.xml";
24 |
25 |
26 | public static float px2dip(float pxValue, int sw,int designWidth) {
27 | float dpValue = (pxValue/(float)designWidth) * sw;
28 | BigDecimal bigDecimal = new BigDecimal(dpValue);
29 | float finDp = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
30 | return finDp;
31 | }
32 |
33 | /**
34 | * 生成所有的尺寸数据
35 | *
36 | * @param swWidthDp
37 | * @return
38 | */
39 | private static String makeAllDimens(int swWidthDp, int designWidth) {
40 | float dpValue;
41 | String temp;
42 | StringBuilder sb = new StringBuilder();
43 | try {
44 | sb.append(XML_HEADER);
45 | sb.append(XML_RESOURCE_START);
46 |
47 | temp = String.format(XML_BASE_DPI, swWidthDp);
48 | sb.append(temp);
49 |
50 | for (int i = 0; i <= MAX_SIZE; i++) {
51 | dpValue = px2dip((float) i,swWidthDp,designWidth);
52 | temp = String.format(XML_DIMEN_TEMPLETE, i, dpValue);
53 | sb.append(temp);
54 | }
55 |
56 | sb.append(XML_RESOURCE_END);
57 | } catch (Exception e) {
58 | e.printStackTrace();
59 | }
60 | return sb.toString();
61 | }
62 |
63 | /**
64 | * 生成的目标文件夹
65 | * 只需传宽进来就行
66 | *
67 | * @param swWidthDp
68 | * @param buildDir 生成的目标文件夹
69 | */
70 | public static void makeAll(int designWidth, int swWidthDp, String buildDir) {
71 | try {
72 | if (swWidthDp <= 0) return;
73 |
74 | String folderName = "values-sw" + swWidthDp + "dp";
75 |
76 | File file = new File(buildDir + File.separator + folderName);
77 | if (file.exists()) {
78 | file.delete();
79 | }
80 | file.mkdirs();
81 |
82 | FileOutputStream fos = new FileOutputStream(file.getAbsolutePath() + File.separator + XML_NAME);
83 | fos.write(makeAllDimens(swWidthDp,designWidth).getBytes());
84 | fos.flush();
85 | fos.close();
86 | } catch (FileNotFoundException e) {
87 | e.printStackTrace();
88 | } catch (IOException e) {
89 | e.printStackTrace();
90 | }
91 | }
92 |
93 | }
94 |
--------------------------------------------------------------------------------
/library/src/main/java/com/victor/screen/match/library/util/TvMakeUtils.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library.util;
2 |
3 | import java.io.File;
4 | import java.io.FileNotFoundException;
5 | import java.io.FileOutputStream;
6 | import java.io.IOException;
7 | import java.math.BigDecimal;
8 |
9 | public class TvMakeUtils {
10 | private static final String XML_HEADER = "\r\n";
11 | private static final String XML_RESOURCE_START = "\r\n";
12 | private static final String XML_RESOURCE_END = "\r\n";
13 | private static final String XML_W_DIMEN_TEMPLETE = "%2$.2fpx\r\n";
14 | private static final String XML_H_DIMEN_TEMPLETE = "%2$.2fpx\r\n";
15 |
16 |
17 | /**
18 | * 生成的文件名
19 | */
20 | private static final String W_XML_NAME = "w_dimens.xml";
21 | private static final String H_XML_NAME = "h_dimens.xml";
22 |
23 |
24 | public static float calcuPx(int px,int designPx, float pxValue) {
25 | float wPx = (pxValue/(float)designPx) * px;
26 | BigDecimal bigDecimal = new BigDecimal(wPx);
27 | float finWpx = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
28 | return finWpx;
29 | }
30 |
31 | /**
32 | * 生成所有的尺寸数据
33 | *
34 | * @param widthPx
35 | * @return
36 | */
37 | private static String makeWDimens(int widthPx, int designWidth) {
38 | String temp;
39 | StringBuilder sb = new StringBuilder();
40 | try {
41 | sb.append(XML_HEADER);
42 | sb.append(XML_RESOURCE_START);
43 |
44 | for (int i = 0; i <= designWidth; i++) {
45 | temp = String.format(XML_W_DIMEN_TEMPLETE, i, calcuPx(widthPx,designWidth,(float)i));
46 | sb.append(temp);
47 | }
48 |
49 | sb.append(XML_RESOURCE_END);
50 | } catch (Exception e) {
51 | e.printStackTrace();
52 | }
53 | return sb.toString();
54 | }
55 | private static String makeHDimens(int heightPx, int designHeight) {
56 | String temp;
57 | StringBuilder sb = new StringBuilder();
58 | try {
59 | sb.append(XML_HEADER);
60 | sb.append(XML_RESOURCE_START);
61 |
62 | for (int i = 0; i <= designHeight; i++) {
63 | temp = String.format(XML_H_DIMEN_TEMPLETE, i, calcuPx(heightPx,designHeight,(float)i));
64 | sb.append(temp);
65 | }
66 |
67 | sb.append(XML_RESOURCE_END);
68 | } catch (Exception e) {
69 | e.printStackTrace();
70 | }
71 | return sb.toString();
72 | }
73 |
74 | /**
75 | * 生成的目标文件夹
76 | * 只需传宽进来就行
77 | *
78 | * @param widthPx
79 | * @param buildDir 生成的目标文件夹
80 | */
81 | public static void makeTvAll(int widthPx,int heightPx,int designWidth, int designHeight,String buildDir) {
82 | try {
83 | if (widthPx <= 0) return;
84 | if (heightPx <= 0) return;
85 |
86 | String folderName = "values-" + widthPx + "x" + heightPx;
87 | File file = new File(buildDir + File.separator + folderName);
88 | if (file.exists()) {
89 | file.delete();
90 | }
91 | file.mkdirs();
92 |
93 |
94 | //width
95 | FileOutputStream fos = new FileOutputStream(file.getAbsolutePath() + File.separator + W_XML_NAME);
96 | fos.write(makeWDimens(widthPx,designWidth).getBytes());
97 | fos.flush();
98 | fos.close();
99 |
100 | //height
101 | fos = new FileOutputStream(file.getAbsolutePath() + File.separator + H_XML_NAME);
102 | fos.write(makeHDimens(heightPx,designHeight).getBytes());
103 | fos.flush();
104 | fos.close();
105 |
106 |
107 | } catch (FileNotFoundException e) {
108 | e.printStackTrace();
109 | } catch (IOException e) {
110 | e.printStackTrace();
111 | }
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/library/src/main/res/values-sw300dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 300dp
4 | 0.00dp
5 | 0.40dp
6 | 0.80dp
7 | 1.20dp
8 | 1.60dp
9 | 2.00dp
10 | 2.40dp
11 | 2.80dp
12 | 3.20dp
13 | 3.60dp
14 | 4.00dp
15 | 4.40dp
16 | 4.80dp
17 | 5.20dp
18 | 5.60dp
19 | 6.00dp
20 | 6.40dp
21 | 6.80dp
22 | 7.20dp
23 | 7.60dp
24 | 8.00dp
25 | 8.40dp
26 | 8.80dp
27 | 9.20dp
28 | 9.60dp
29 | 10.00dp
30 | 10.40dp
31 | 10.80dp
32 | 11.20dp
33 | 11.60dp
34 | 12.00dp
35 | 12.40dp
36 | 12.80dp
37 | 13.20dp
38 | 13.60dp
39 | 14.00dp
40 | 14.40dp
41 | 14.80dp
42 | 15.20dp
43 | 15.60dp
44 | 16.00dp
45 | 16.40dp
46 | 16.80dp
47 | 17.20dp
48 | 17.60dp
49 | 18.00dp
50 | 18.40dp
51 | 18.80dp
52 | 19.20dp
53 | 19.60dp
54 | 20.00dp
55 | 20.40dp
56 | 20.80dp
57 | 21.20dp
58 | 21.60dp
59 | 22.00dp
60 | 22.40dp
61 | 22.80dp
62 | 23.20dp
63 | 23.60dp
64 | 24.00dp
65 | 24.40dp
66 | 24.80dp
67 | 25.20dp
68 | 25.60dp
69 | 26.00dp
70 | 26.40dp
71 | 26.80dp
72 | 27.20dp
73 | 27.60dp
74 | 28.00dp
75 | 28.40dp
76 | 28.80dp
77 | 29.20dp
78 | 29.60dp
79 | 30.00dp
80 | 30.40dp
81 | 30.80dp
82 | 31.20dp
83 | 31.60dp
84 | 32.00dp
85 | 32.40dp
86 | 32.80dp
87 | 33.20dp
88 | 33.60dp
89 | 34.00dp
90 | 34.40dp
91 | 34.80dp
92 | 35.20dp
93 | 35.60dp
94 | 36.00dp
95 | 36.40dp
96 | 36.80dp
97 | 37.20dp
98 | 37.60dp
99 | 38.00dp
100 | 38.40dp
101 | 38.80dp
102 | 39.20dp
103 | 39.60dp
104 | 40.00dp
105 | 40.40dp
106 | 40.80dp
107 | 41.20dp
108 | 41.60dp
109 | 42.00dp
110 | 42.40dp
111 | 42.80dp
112 | 43.20dp
113 | 43.60dp
114 | 44.00dp
115 | 44.40dp
116 | 44.80dp
117 | 45.20dp
118 | 45.60dp
119 | 46.00dp
120 | 46.40dp
121 | 46.80dp
122 | 47.20dp
123 | 47.60dp
124 | 48.00dp
125 | 48.40dp
126 | 48.80dp
127 | 49.20dp
128 | 49.60dp
129 | 50.00dp
130 | 50.40dp
131 | 50.80dp
132 | 51.20dp
133 | 51.60dp
134 | 52.00dp
135 | 52.40dp
136 | 52.80dp
137 | 53.20dp
138 | 53.60dp
139 | 54.00dp
140 | 54.40dp
141 | 54.80dp
142 | 55.20dp
143 | 55.60dp
144 | 56.00dp
145 | 56.40dp
146 | 56.80dp
147 | 57.20dp
148 | 57.60dp
149 | 58.00dp
150 | 58.40dp
151 | 58.80dp
152 | 59.20dp
153 | 59.60dp
154 | 60.00dp
155 | 60.40dp
156 | 60.80dp
157 | 61.20dp
158 | 61.60dp
159 | 62.00dp
160 | 62.40dp
161 | 62.80dp
162 | 63.20dp
163 | 63.60dp
164 | 64.00dp
165 | 64.40dp
166 | 64.80dp
167 | 65.20dp
168 | 65.60dp
169 | 66.00dp
170 | 66.40dp
171 | 66.80dp
172 | 67.20dp
173 | 67.60dp
174 | 68.00dp
175 | 68.40dp
176 | 68.80dp
177 | 69.20dp
178 | 69.60dp
179 | 70.00dp
180 | 70.40dp
181 | 70.80dp
182 | 71.20dp
183 | 71.60dp
184 | 72.00dp
185 | 72.40dp
186 | 72.80dp
187 | 73.20dp
188 | 73.60dp
189 | 74.00dp
190 | 74.40dp
191 | 74.80dp
192 | 75.20dp
193 | 75.60dp
194 | 76.00dp
195 | 76.40dp
196 | 76.80dp
197 | 77.20dp
198 | 77.60dp
199 | 78.00dp
200 | 78.40dp
201 | 78.80dp
202 | 79.20dp
203 | 79.60dp
204 | 80.00dp
205 | 80.40dp
206 | 80.80dp
207 | 81.20dp
208 | 81.60dp
209 | 82.00dp
210 | 82.40dp
211 | 82.80dp
212 | 83.20dp
213 | 83.60dp
214 | 84.00dp
215 | 84.40dp
216 | 84.80dp
217 | 85.20dp
218 | 85.60dp
219 | 86.00dp
220 | 86.40dp
221 | 86.80dp
222 | 87.20dp
223 | 87.60dp
224 | 88.00dp
225 | 88.40dp
226 | 88.80dp
227 | 89.20dp
228 | 89.60dp
229 | 90.00dp
230 | 90.40dp
231 | 90.80dp
232 | 91.20dp
233 | 91.60dp
234 | 92.00dp
235 | 92.40dp
236 | 92.80dp
237 | 93.20dp
238 | 93.60dp
239 | 94.00dp
240 | 94.40dp
241 | 94.80dp
242 | 95.20dp
243 | 95.60dp
244 | 96.00dp
245 | 96.40dp
246 | 96.80dp
247 | 97.20dp
248 | 97.60dp
249 | 98.00dp
250 | 98.40dp
251 | 98.80dp
252 | 99.20dp
253 | 99.60dp
254 | 100.00dp
255 | 100.40dp
256 | 100.80dp
257 | 101.20dp
258 | 101.60dp
259 | 102.00dp
260 | 102.40dp
261 | 102.80dp
262 | 103.20dp
263 | 103.60dp
264 | 104.00dp
265 | 104.40dp
266 | 104.80dp
267 | 105.20dp
268 | 105.60dp
269 | 106.00dp
270 | 106.40dp
271 | 106.80dp
272 | 107.20dp
273 | 107.60dp
274 | 108.00dp
275 | 108.40dp
276 | 108.80dp
277 | 109.20dp
278 | 109.60dp
279 | 110.00dp
280 | 110.40dp
281 | 110.80dp
282 | 111.20dp
283 | 111.60dp
284 | 112.00dp
285 | 112.40dp
286 | 112.80dp
287 | 113.20dp
288 | 113.60dp
289 | 114.00dp
290 | 114.40dp
291 | 114.80dp
292 | 115.20dp
293 | 115.60dp
294 | 116.00dp
295 | 116.40dp
296 | 116.80dp
297 | 117.20dp
298 | 117.60dp
299 | 118.00dp
300 | 118.40dp
301 | 118.80dp
302 | 119.20dp
303 | 119.60dp
304 | 120.00dp
305 | 120.40dp
306 | 120.80dp
307 | 121.20dp
308 | 121.60dp
309 | 122.00dp
310 | 122.40dp
311 | 122.80dp
312 | 123.20dp
313 | 123.60dp
314 | 124.00dp
315 | 124.40dp
316 | 124.80dp
317 | 125.20dp
318 | 125.60dp
319 | 126.00dp
320 | 126.40dp
321 | 126.80dp
322 | 127.20dp
323 | 127.60dp
324 | 128.00dp
325 | 128.40dp
326 | 128.80dp
327 | 129.20dp
328 | 129.60dp
329 | 130.00dp
330 | 130.40dp
331 | 130.80dp
332 | 131.20dp
333 | 131.60dp
334 | 132.00dp
335 | 132.40dp
336 | 132.80dp
337 | 133.20dp
338 | 133.60dp
339 | 134.00dp
340 | 134.40dp
341 | 134.80dp
342 | 135.20dp
343 | 135.60dp
344 | 136.00dp
345 | 136.40dp
346 | 136.80dp
347 | 137.20dp
348 | 137.60dp
349 | 138.00dp
350 | 138.40dp
351 | 138.80dp
352 | 139.20dp
353 | 139.60dp
354 | 140.00dp
355 | 140.40dp
356 | 140.80dp
357 | 141.20dp
358 | 141.60dp
359 | 142.00dp
360 | 142.40dp
361 | 142.80dp
362 | 143.20dp
363 | 143.60dp
364 | 144.00dp
365 | 144.40dp
366 | 144.80dp
367 | 145.20dp
368 | 145.60dp
369 | 146.00dp
370 | 146.40dp
371 | 146.80dp
372 | 147.20dp
373 | 147.60dp
374 | 148.00dp
375 | 148.40dp
376 | 148.80dp
377 | 149.20dp
378 | 149.60dp
379 | 150.00dp
380 | 150.40dp
381 | 150.80dp
382 | 151.20dp
383 | 151.60dp
384 | 152.00dp
385 | 152.40dp
386 | 152.80dp
387 | 153.20dp
388 | 153.60dp
389 | 154.00dp
390 | 154.40dp
391 | 154.80dp
392 | 155.20dp
393 | 155.60dp
394 | 156.00dp
395 | 156.40dp
396 | 156.80dp
397 | 157.20dp
398 | 157.60dp
399 | 158.00dp
400 | 158.40dp
401 | 158.80dp
402 | 159.20dp
403 | 159.60dp
404 | 160.00dp
405 | 160.40dp
406 | 160.80dp
407 | 161.20dp
408 | 161.60dp
409 | 162.00dp
410 | 162.40dp
411 | 162.80dp
412 | 163.20dp
413 | 163.60dp
414 | 164.00dp
415 | 164.40dp
416 | 164.80dp
417 | 165.20dp
418 | 165.60dp
419 | 166.00dp
420 | 166.40dp
421 | 166.80dp
422 | 167.20dp
423 | 167.60dp
424 | 168.00dp
425 | 168.40dp
426 | 168.80dp
427 | 169.20dp
428 | 169.60dp
429 | 170.00dp
430 | 170.40dp
431 | 170.80dp
432 | 171.20dp
433 | 171.60dp
434 | 172.00dp
435 | 172.40dp
436 | 172.80dp
437 | 173.20dp
438 | 173.60dp
439 | 174.00dp
440 | 174.40dp
441 | 174.80dp
442 | 175.20dp
443 | 175.60dp
444 | 176.00dp
445 | 176.40dp
446 | 176.80dp
447 | 177.20dp
448 | 177.60dp
449 | 178.00dp
450 | 178.40dp
451 | 178.80dp
452 | 179.20dp
453 | 179.60dp
454 | 180.00dp
455 | 180.40dp
456 | 180.80dp
457 | 181.20dp
458 | 181.60dp
459 | 182.00dp
460 | 182.40dp
461 | 182.80dp
462 | 183.20dp
463 | 183.60dp
464 | 184.00dp
465 | 184.40dp
466 | 184.80dp
467 | 185.20dp
468 | 185.60dp
469 | 186.00dp
470 | 186.40dp
471 | 186.80dp
472 | 187.20dp
473 | 187.60dp
474 | 188.00dp
475 | 188.40dp
476 | 188.80dp
477 | 189.20dp
478 | 189.60dp
479 | 190.00dp
480 | 190.40dp
481 | 190.80dp
482 | 191.20dp
483 | 191.60dp
484 | 192.00dp
485 | 192.40dp
486 | 192.80dp
487 | 193.20dp
488 | 193.60dp
489 | 194.00dp
490 | 194.40dp
491 | 194.80dp
492 | 195.20dp
493 | 195.60dp
494 | 196.00dp
495 | 196.40dp
496 | 196.80dp
497 | 197.20dp
498 | 197.60dp
499 | 198.00dp
500 | 198.40dp
501 | 198.80dp
502 | 199.20dp
503 | 199.60dp
504 | 200.00dp
505 | 200.40dp
506 | 200.80dp
507 | 201.20dp
508 | 201.60dp
509 | 202.00dp
510 | 202.40dp
511 | 202.80dp
512 | 203.20dp
513 | 203.60dp
514 | 204.00dp
515 | 204.40dp
516 | 204.80dp
517 | 205.20dp
518 | 205.60dp
519 | 206.00dp
520 | 206.40dp
521 | 206.80dp
522 | 207.20dp
523 | 207.60dp
524 | 208.00dp
525 | 208.40dp
526 | 208.80dp
527 | 209.20dp
528 | 209.60dp
529 | 210.00dp
530 | 210.40dp
531 | 210.80dp
532 | 211.20dp
533 | 211.60dp
534 | 212.00dp
535 | 212.40dp
536 | 212.80dp
537 | 213.20dp
538 | 213.60dp
539 | 214.00dp
540 | 214.40dp
541 | 214.80dp
542 | 215.20dp
543 | 215.60dp
544 | 216.00dp
545 | 216.40dp
546 | 216.80dp
547 | 217.20dp
548 | 217.60dp
549 | 218.00dp
550 | 218.40dp
551 | 218.80dp
552 | 219.20dp
553 | 219.60dp
554 | 220.00dp
555 | 220.40dp
556 | 220.80dp
557 | 221.20dp
558 | 221.60dp
559 | 222.00dp
560 | 222.40dp
561 | 222.80dp
562 | 223.20dp
563 | 223.60dp
564 | 224.00dp
565 | 224.40dp
566 | 224.80dp
567 | 225.20dp
568 | 225.60dp
569 | 226.00dp
570 | 226.40dp
571 | 226.80dp
572 | 227.20dp
573 | 227.60dp
574 | 228.00dp
575 | 228.40dp
576 | 228.80dp
577 | 229.20dp
578 | 229.60dp
579 | 230.00dp
580 | 230.40dp
581 | 230.80dp
582 | 231.20dp
583 | 231.60dp
584 | 232.00dp
585 | 232.40dp
586 | 232.80dp
587 | 233.20dp
588 | 233.60dp
589 | 234.00dp
590 | 234.40dp
591 | 234.80dp
592 | 235.20dp
593 | 235.60dp
594 | 236.00dp
595 | 236.40dp
596 | 236.80dp
597 | 237.20dp
598 | 237.60dp
599 | 238.00dp
600 | 238.40dp
601 | 238.80dp
602 | 239.20dp
603 | 239.60dp
604 | 240.00dp
605 | 240.40dp
606 | 240.80dp
607 | 241.20dp
608 | 241.60dp
609 | 242.00dp
610 | 242.40dp
611 | 242.80dp
612 | 243.20dp
613 | 243.60dp
614 | 244.00dp
615 | 244.40dp
616 | 244.80dp
617 | 245.20dp
618 | 245.60dp
619 | 246.00dp
620 | 246.40dp
621 | 246.80dp
622 | 247.20dp
623 | 247.60dp
624 | 248.00dp
625 | 248.40dp
626 | 248.80dp
627 | 249.20dp
628 | 249.60dp
629 | 250.00dp
630 | 250.40dp
631 | 250.80dp
632 | 251.20dp
633 | 251.60dp
634 | 252.00dp
635 | 252.40dp
636 | 252.80dp
637 | 253.20dp
638 | 253.60dp
639 | 254.00dp
640 | 254.40dp
641 | 254.80dp
642 | 255.20dp
643 | 255.60dp
644 | 256.00dp
645 | 256.40dp
646 | 256.80dp
647 | 257.20dp
648 | 257.60dp
649 | 258.00dp
650 | 258.40dp
651 | 258.80dp
652 | 259.20dp
653 | 259.60dp
654 | 260.00dp
655 | 260.40dp
656 | 260.80dp
657 | 261.20dp
658 | 261.60dp
659 | 262.00dp
660 | 262.40dp
661 | 262.80dp
662 | 263.20dp
663 | 263.60dp
664 | 264.00dp
665 | 264.40dp
666 | 264.80dp
667 | 265.20dp
668 | 265.60dp
669 | 266.00dp
670 | 266.40dp
671 | 266.80dp
672 | 267.20dp
673 | 267.60dp
674 | 268.00dp
675 | 268.40dp
676 | 268.80dp
677 | 269.20dp
678 | 269.60dp
679 | 270.00dp
680 | 270.40dp
681 | 270.80dp
682 | 271.20dp
683 | 271.60dp
684 | 272.00dp
685 | 272.40dp
686 | 272.80dp
687 | 273.20dp
688 | 273.60dp
689 | 274.00dp
690 | 274.40dp
691 | 274.80dp
692 | 275.20dp
693 | 275.60dp
694 | 276.00dp
695 | 276.40dp
696 | 276.80dp
697 | 277.20dp
698 | 277.60dp
699 | 278.00dp
700 | 278.40dp
701 | 278.80dp
702 | 279.20dp
703 | 279.60dp
704 | 280.00dp
705 | 280.40dp
706 | 280.80dp
707 | 281.20dp
708 | 281.60dp
709 | 282.00dp
710 | 282.40dp
711 | 282.80dp
712 | 283.20dp
713 | 283.60dp
714 | 284.00dp
715 | 284.40dp
716 | 284.80dp
717 | 285.20dp
718 | 285.60dp
719 | 286.00dp
720 | 286.40dp
721 | 286.80dp
722 | 287.20dp
723 | 287.60dp
724 | 288.00dp
725 | 288.40dp
726 | 288.80dp
727 | 289.20dp
728 | 289.60dp
729 | 290.00dp
730 | 290.40dp
731 | 290.80dp
732 | 291.20dp
733 | 291.60dp
734 | 292.00dp
735 | 292.40dp
736 | 292.80dp
737 | 293.20dp
738 | 293.60dp
739 | 294.00dp
740 | 294.40dp
741 | 294.80dp
742 | 295.20dp
743 | 295.60dp
744 | 296.00dp
745 | 296.40dp
746 | 296.80dp
747 | 297.20dp
748 | 297.60dp
749 | 298.00dp
750 | 298.40dp
751 | 298.80dp
752 | 299.20dp
753 | 299.60dp
754 | 300.00dp
755 |
756 |
--------------------------------------------------------------------------------
/library/src/main/res/values-sw310dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 310dp
4 | 0.00dp
5 | 0.41dp
6 | 0.83dp
7 | 1.24dp
8 | 1.65dp
9 | 2.07dp
10 | 2.48dp
11 | 2.89dp
12 | 3.31dp
13 | 3.72dp
14 | 4.13dp
15 | 4.55dp
16 | 4.96dp
17 | 5.37dp
18 | 5.79dp
19 | 6.20dp
20 | 6.61dp
21 | 7.03dp
22 | 7.44dp
23 | 7.85dp
24 | 8.27dp
25 | 8.68dp
26 | 9.09dp
27 | 9.51dp
28 | 9.92dp
29 | 10.33dp
30 | 10.75dp
31 | 11.16dp
32 | 11.57dp
33 | 11.99dp
34 | 12.40dp
35 | 12.81dp
36 | 13.23dp
37 | 13.64dp
38 | 14.05dp
39 | 14.47dp
40 | 14.88dp
41 | 15.29dp
42 | 15.71dp
43 | 16.12dp
44 | 16.53dp
45 | 16.95dp
46 | 17.36dp
47 | 17.77dp
48 | 18.19dp
49 | 18.60dp
50 | 19.01dp
51 | 19.43dp
52 | 19.84dp
53 | 20.25dp
54 | 20.67dp
55 | 21.08dp
56 | 21.49dp
57 | 21.91dp
58 | 22.32dp
59 | 22.73dp
60 | 23.15dp
61 | 23.56dp
62 | 23.97dp
63 | 24.39dp
64 | 24.80dp
65 | 25.21dp
66 | 25.63dp
67 | 26.04dp
68 | 26.45dp
69 | 26.87dp
70 | 27.28dp
71 | 27.69dp
72 | 28.11dp
73 | 28.52dp
74 | 28.93dp
75 | 29.35dp
76 | 29.76dp
77 | 30.17dp
78 | 30.59dp
79 | 31.00dp
80 | 31.41dp
81 | 31.83dp
82 | 32.24dp
83 | 32.65dp
84 | 33.07dp
85 | 33.48dp
86 | 33.89dp
87 | 34.31dp
88 | 34.72dp
89 | 35.13dp
90 | 35.55dp
91 | 35.96dp
92 | 36.37dp
93 | 36.79dp
94 | 37.20dp
95 | 37.61dp
96 | 38.03dp
97 | 38.44dp
98 | 38.85dp
99 | 39.27dp
100 | 39.68dp
101 | 40.09dp
102 | 40.51dp
103 | 40.92dp
104 | 41.33dp
105 | 41.75dp
106 | 42.16dp
107 | 42.57dp
108 | 42.99dp
109 | 43.40dp
110 | 43.81dp
111 | 44.23dp
112 | 44.64dp
113 | 45.05dp
114 | 45.47dp
115 | 45.88dp
116 | 46.29dp
117 | 46.71dp
118 | 47.12dp
119 | 47.53dp
120 | 47.95dp
121 | 48.36dp
122 | 48.77dp
123 | 49.19dp
124 | 49.60dp
125 | 50.01dp
126 | 50.43dp
127 | 50.84dp
128 | 51.25dp
129 | 51.67dp
130 | 52.08dp
131 | 52.49dp
132 | 52.91dp
133 | 53.32dp
134 | 53.73dp
135 | 54.15dp
136 | 54.56dp
137 | 54.97dp
138 | 55.39dp
139 | 55.80dp
140 | 56.21dp
141 | 56.63dp
142 | 57.04dp
143 | 57.45dp
144 | 57.87dp
145 | 58.28dp
146 | 58.69dp
147 | 59.11dp
148 | 59.52dp
149 | 59.93dp
150 | 60.35dp
151 | 60.76dp
152 | 61.17dp
153 | 61.59dp
154 | 62.00dp
155 | 62.41dp
156 | 62.83dp
157 | 63.24dp
158 | 63.65dp
159 | 64.07dp
160 | 64.48dp
161 | 64.89dp
162 | 65.31dp
163 | 65.72dp
164 | 66.13dp
165 | 66.55dp
166 | 66.96dp
167 | 67.37dp
168 | 67.79dp
169 | 68.20dp
170 | 68.61dp
171 | 69.03dp
172 | 69.44dp
173 | 69.85dp
174 | 70.27dp
175 | 70.68dp
176 | 71.09dp
177 | 71.51dp
178 | 71.92dp
179 | 72.33dp
180 | 72.75dp
181 | 73.16dp
182 | 73.57dp
183 | 73.99dp
184 | 74.40dp
185 | 74.81dp
186 | 75.23dp
187 | 75.64dp
188 | 76.05dp
189 | 76.47dp
190 | 76.88dp
191 | 77.29dp
192 | 77.71dp
193 | 78.12dp
194 | 78.53dp
195 | 78.95dp
196 | 79.36dp
197 | 79.77dp
198 | 80.19dp
199 | 80.60dp
200 | 81.01dp
201 | 81.43dp
202 | 81.84dp
203 | 82.25dp
204 | 82.67dp
205 | 83.08dp
206 | 83.49dp
207 | 83.91dp
208 | 84.32dp
209 | 84.73dp
210 | 85.15dp
211 | 85.56dp
212 | 85.97dp
213 | 86.39dp
214 | 86.80dp
215 | 87.21dp
216 | 87.63dp
217 | 88.04dp
218 | 88.45dp
219 | 88.87dp
220 | 89.28dp
221 | 89.69dp
222 | 90.11dp
223 | 90.52dp
224 | 90.93dp
225 | 91.35dp
226 | 91.76dp
227 | 92.17dp
228 | 92.59dp
229 | 93.00dp
230 | 93.41dp
231 | 93.83dp
232 | 94.24dp
233 | 94.65dp
234 | 95.07dp
235 | 95.48dp
236 | 95.89dp
237 | 96.31dp
238 | 96.72dp
239 | 97.13dp
240 | 97.55dp
241 | 97.96dp
242 | 98.37dp
243 | 98.79dp
244 | 99.20dp
245 | 99.61dp
246 | 100.03dp
247 | 100.44dp
248 | 100.85dp
249 | 101.27dp
250 | 101.68dp
251 | 102.09dp
252 | 102.51dp
253 | 102.92dp
254 | 103.33dp
255 | 103.75dp
256 | 104.16dp
257 | 104.57dp
258 | 104.99dp
259 | 105.40dp
260 | 105.81dp
261 | 106.23dp
262 | 106.64dp
263 | 107.05dp
264 | 107.47dp
265 | 107.88dp
266 | 108.29dp
267 | 108.71dp
268 | 109.12dp
269 | 109.53dp
270 | 109.95dp
271 | 110.36dp
272 | 110.77dp
273 | 111.19dp
274 | 111.60dp
275 | 112.01dp
276 | 112.43dp
277 | 112.84dp
278 | 113.25dp
279 | 113.67dp
280 | 114.08dp
281 | 114.49dp
282 | 114.91dp
283 | 115.32dp
284 | 115.73dp
285 | 116.15dp
286 | 116.56dp
287 | 116.97dp
288 | 117.39dp
289 | 117.80dp
290 | 118.21dp
291 | 118.63dp
292 | 119.04dp
293 | 119.45dp
294 | 119.87dp
295 | 120.28dp
296 | 120.69dp
297 | 121.11dp
298 | 121.52dp
299 | 121.93dp
300 | 122.35dp
301 | 122.76dp
302 | 123.17dp
303 | 123.59dp
304 | 124.00dp
305 | 124.41dp
306 | 124.83dp
307 | 125.24dp
308 | 125.65dp
309 | 126.07dp
310 | 126.48dp
311 | 126.89dp
312 | 127.31dp
313 | 127.72dp
314 | 128.13dp
315 | 128.55dp
316 | 128.96dp
317 | 129.37dp
318 | 129.79dp
319 | 130.20dp
320 | 130.61dp
321 | 131.03dp
322 | 131.44dp
323 | 131.85dp
324 | 132.27dp
325 | 132.68dp
326 | 133.09dp
327 | 133.51dp
328 | 133.92dp
329 | 134.33dp
330 | 134.75dp
331 | 135.16dp
332 | 135.57dp
333 | 135.99dp
334 | 136.40dp
335 | 136.81dp
336 | 137.23dp
337 | 137.64dp
338 | 138.05dp
339 | 138.47dp
340 | 138.88dp
341 | 139.29dp
342 | 139.71dp
343 | 140.12dp
344 | 140.53dp
345 | 140.95dp
346 | 141.36dp
347 | 141.77dp
348 | 142.19dp
349 | 142.60dp
350 | 143.01dp
351 | 143.43dp
352 | 143.84dp
353 | 144.25dp
354 | 144.67dp
355 | 145.08dp
356 | 145.49dp
357 | 145.91dp
358 | 146.32dp
359 | 146.73dp
360 | 147.15dp
361 | 147.56dp
362 | 147.97dp
363 | 148.39dp
364 | 148.80dp
365 | 149.21dp
366 | 149.63dp
367 | 150.04dp
368 | 150.45dp
369 | 150.87dp
370 | 151.28dp
371 | 151.69dp
372 | 152.11dp
373 | 152.52dp
374 | 152.93dp
375 | 153.35dp
376 | 153.76dp
377 | 154.17dp
378 | 154.59dp
379 | 155.00dp
380 | 155.41dp
381 | 155.83dp
382 | 156.24dp
383 | 156.65dp
384 | 157.07dp
385 | 157.48dp
386 | 157.89dp
387 | 158.31dp
388 | 158.72dp
389 | 159.13dp
390 | 159.55dp
391 | 159.96dp
392 | 160.37dp
393 | 160.79dp
394 | 161.20dp
395 | 161.61dp
396 | 162.03dp
397 | 162.44dp
398 | 162.85dp
399 | 163.27dp
400 | 163.68dp
401 | 164.09dp
402 | 164.51dp
403 | 164.92dp
404 | 165.33dp
405 | 165.75dp
406 | 166.16dp
407 | 166.57dp
408 | 166.99dp
409 | 167.40dp
410 | 167.81dp
411 | 168.23dp
412 | 168.64dp
413 | 169.05dp
414 | 169.47dp
415 | 169.88dp
416 | 170.29dp
417 | 170.71dp
418 | 171.12dp
419 | 171.53dp
420 | 171.95dp
421 | 172.36dp
422 | 172.77dp
423 | 173.19dp
424 | 173.60dp
425 | 174.01dp
426 | 174.43dp
427 | 174.84dp
428 | 175.25dp
429 | 175.67dp
430 | 176.08dp
431 | 176.49dp
432 | 176.91dp
433 | 177.32dp
434 | 177.73dp
435 | 178.15dp
436 | 178.56dp
437 | 178.97dp
438 | 179.39dp
439 | 179.80dp
440 | 180.21dp
441 | 180.63dp
442 | 181.04dp
443 | 181.45dp
444 | 181.87dp
445 | 182.28dp
446 | 182.69dp
447 | 183.11dp
448 | 183.52dp
449 | 183.93dp
450 | 184.35dp
451 | 184.76dp
452 | 185.17dp
453 | 185.59dp
454 | 186.00dp
455 | 186.41dp
456 | 186.83dp
457 | 187.24dp
458 | 187.65dp
459 | 188.07dp
460 | 188.48dp
461 | 188.89dp
462 | 189.31dp
463 | 189.72dp
464 | 190.13dp
465 | 190.55dp
466 | 190.96dp
467 | 191.37dp
468 | 191.79dp
469 | 192.20dp
470 | 192.61dp
471 | 193.03dp
472 | 193.44dp
473 | 193.85dp
474 | 194.27dp
475 | 194.68dp
476 | 195.09dp
477 | 195.51dp
478 | 195.92dp
479 | 196.33dp
480 | 196.75dp
481 | 197.16dp
482 | 197.57dp
483 | 197.99dp
484 | 198.40dp
485 | 198.81dp
486 | 199.23dp
487 | 199.64dp
488 | 200.05dp
489 | 200.47dp
490 | 200.88dp
491 | 201.29dp
492 | 201.71dp
493 | 202.12dp
494 | 202.53dp
495 | 202.95dp
496 | 203.36dp
497 | 203.77dp
498 | 204.19dp
499 | 204.60dp
500 | 205.01dp
501 | 205.43dp
502 | 205.84dp
503 | 206.25dp
504 | 206.67dp
505 | 207.08dp
506 | 207.49dp
507 | 207.91dp
508 | 208.32dp
509 | 208.73dp
510 | 209.15dp
511 | 209.56dp
512 | 209.97dp
513 | 210.39dp
514 | 210.80dp
515 | 211.21dp
516 | 211.63dp
517 | 212.04dp
518 | 212.45dp
519 | 212.87dp
520 | 213.28dp
521 | 213.69dp
522 | 214.11dp
523 | 214.52dp
524 | 214.93dp
525 | 215.35dp
526 | 215.76dp
527 | 216.17dp
528 | 216.59dp
529 | 217.00dp
530 | 217.41dp
531 | 217.83dp
532 | 218.24dp
533 | 218.65dp
534 | 219.07dp
535 | 219.48dp
536 | 219.89dp
537 | 220.31dp
538 | 220.72dp
539 | 221.13dp
540 | 221.55dp
541 | 221.96dp
542 | 222.37dp
543 | 222.79dp
544 | 223.20dp
545 | 223.61dp
546 | 224.03dp
547 | 224.44dp
548 | 224.85dp
549 | 225.27dp
550 | 225.68dp
551 | 226.09dp
552 | 226.51dp
553 | 226.92dp
554 | 227.33dp
555 | 227.75dp
556 | 228.16dp
557 | 228.57dp
558 | 228.99dp
559 | 229.40dp
560 | 229.81dp
561 | 230.23dp
562 | 230.64dp
563 | 231.05dp
564 | 231.47dp
565 | 231.88dp
566 | 232.29dp
567 | 232.71dp
568 | 233.12dp
569 | 233.53dp
570 | 233.95dp
571 | 234.36dp
572 | 234.77dp
573 | 235.19dp
574 | 235.60dp
575 | 236.01dp
576 | 236.43dp
577 | 236.84dp
578 | 237.25dp
579 | 237.67dp
580 | 238.08dp
581 | 238.49dp
582 | 238.91dp
583 | 239.32dp
584 | 239.73dp
585 | 240.15dp
586 | 240.56dp
587 | 240.97dp
588 | 241.39dp
589 | 241.80dp
590 | 242.21dp
591 | 242.63dp
592 | 243.04dp
593 | 243.45dp
594 | 243.87dp
595 | 244.28dp
596 | 244.69dp
597 | 245.11dp
598 | 245.52dp
599 | 245.93dp
600 | 246.35dp
601 | 246.76dp
602 | 247.17dp
603 | 247.59dp
604 | 248.00dp
605 | 248.41dp
606 | 248.83dp
607 | 249.24dp
608 | 249.65dp
609 | 250.07dp
610 | 250.48dp
611 | 250.89dp
612 | 251.31dp
613 | 251.72dp
614 | 252.13dp
615 | 252.55dp
616 | 252.96dp
617 | 253.37dp
618 | 253.79dp
619 | 254.20dp
620 | 254.61dp
621 | 255.03dp
622 | 255.44dp
623 | 255.85dp
624 | 256.27dp
625 | 256.68dp
626 | 257.09dp
627 | 257.51dp
628 | 257.92dp
629 | 258.33dp
630 | 258.75dp
631 | 259.16dp
632 | 259.57dp
633 | 259.99dp
634 | 260.40dp
635 | 260.81dp
636 | 261.23dp
637 | 261.64dp
638 | 262.05dp
639 | 262.47dp
640 | 262.88dp
641 | 263.29dp
642 | 263.71dp
643 | 264.12dp
644 | 264.53dp
645 | 264.95dp
646 | 265.36dp
647 | 265.77dp
648 | 266.19dp
649 | 266.60dp
650 | 267.01dp
651 | 267.43dp
652 | 267.84dp
653 | 268.25dp
654 | 268.67dp
655 | 269.08dp
656 | 269.49dp
657 | 269.91dp
658 | 270.32dp
659 | 270.73dp
660 | 271.15dp
661 | 271.56dp
662 | 271.97dp
663 | 272.39dp
664 | 272.80dp
665 | 273.21dp
666 | 273.63dp
667 | 274.04dp
668 | 274.45dp
669 | 274.87dp
670 | 275.28dp
671 | 275.69dp
672 | 276.11dp
673 | 276.52dp
674 | 276.93dp
675 | 277.35dp
676 | 277.76dp
677 | 278.17dp
678 | 278.59dp
679 | 279.00dp
680 | 279.41dp
681 | 279.83dp
682 | 280.24dp
683 | 280.65dp
684 | 281.07dp
685 | 281.48dp
686 | 281.89dp
687 | 282.31dp
688 | 282.72dp
689 | 283.13dp
690 | 283.55dp
691 | 283.96dp
692 | 284.37dp
693 | 284.79dp
694 | 285.20dp
695 | 285.61dp
696 | 286.03dp
697 | 286.44dp
698 | 286.85dp
699 | 287.27dp
700 | 287.68dp
701 | 288.09dp
702 | 288.51dp
703 | 288.92dp
704 | 289.33dp
705 | 289.75dp
706 | 290.16dp
707 | 290.57dp
708 | 290.99dp
709 | 291.40dp
710 | 291.81dp
711 | 292.23dp
712 | 292.64dp
713 | 293.05dp
714 | 293.47dp
715 | 293.88dp
716 | 294.29dp
717 | 294.71dp
718 | 295.12dp
719 | 295.53dp
720 | 295.95dp
721 | 296.36dp
722 | 296.77dp
723 | 297.19dp
724 | 297.60dp
725 | 298.01dp
726 | 298.43dp
727 | 298.84dp
728 | 299.25dp
729 | 299.67dp
730 | 300.08dp
731 | 300.49dp
732 | 300.91dp
733 | 301.32dp
734 | 301.73dp
735 | 302.15dp
736 | 302.56dp
737 | 302.97dp
738 | 303.39dp
739 | 303.80dp
740 | 304.21dp
741 | 304.63dp
742 | 305.04dp
743 | 305.45dp
744 | 305.87dp
745 | 306.28dp
746 | 306.69dp
747 | 307.11dp
748 | 307.52dp
749 | 307.93dp
750 | 308.35dp
751 | 308.76dp
752 | 309.17dp
753 | 309.59dp
754 | 310.00dp
755 |
756 |
--------------------------------------------------------------------------------
/library/src/main/res/values-sw320dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 320dp
4 | 0.00dp
5 | 0.43dp
6 | 0.85dp
7 | 1.28dp
8 | 1.71dp
9 | 2.13dp
10 | 2.56dp
11 | 2.99dp
12 | 3.41dp
13 | 3.84dp
14 | 4.27dp
15 | 4.69dp
16 | 5.12dp
17 | 5.55dp
18 | 5.97dp
19 | 6.40dp
20 | 6.83dp
21 | 7.25dp
22 | 7.68dp
23 | 8.11dp
24 | 8.53dp
25 | 8.96dp
26 | 9.39dp
27 | 9.81dp
28 | 10.24dp
29 | 10.67dp
30 | 11.09dp
31 | 11.52dp
32 | 11.95dp
33 | 12.37dp
34 | 12.80dp
35 | 13.23dp
36 | 13.65dp
37 | 14.08dp
38 | 14.51dp
39 | 14.93dp
40 | 15.36dp
41 | 15.79dp
42 | 16.21dp
43 | 16.64dp
44 | 17.07dp
45 | 17.49dp
46 | 17.92dp
47 | 18.35dp
48 | 18.77dp
49 | 19.20dp
50 | 19.63dp
51 | 20.05dp
52 | 20.48dp
53 | 20.91dp
54 | 21.33dp
55 | 21.76dp
56 | 22.19dp
57 | 22.61dp
58 | 23.04dp
59 | 23.47dp
60 | 23.89dp
61 | 24.32dp
62 | 24.75dp
63 | 25.17dp
64 | 25.60dp
65 | 26.03dp
66 | 26.45dp
67 | 26.88dp
68 | 27.31dp
69 | 27.73dp
70 | 28.16dp
71 | 28.59dp
72 | 29.01dp
73 | 29.44dp
74 | 29.87dp
75 | 30.29dp
76 | 30.72dp
77 | 31.15dp
78 | 31.57dp
79 | 32.00dp
80 | 32.43dp
81 | 32.85dp
82 | 33.28dp
83 | 33.71dp
84 | 34.13dp
85 | 34.56dp
86 | 34.99dp
87 | 35.41dp
88 | 35.84dp
89 | 36.27dp
90 | 36.69dp
91 | 37.12dp
92 | 37.55dp
93 | 37.97dp
94 | 38.40dp
95 | 38.83dp
96 | 39.25dp
97 | 39.68dp
98 | 40.11dp
99 | 40.53dp
100 | 40.96dp
101 | 41.39dp
102 | 41.81dp
103 | 42.24dp
104 | 42.67dp
105 | 43.09dp
106 | 43.52dp
107 | 43.95dp
108 | 44.37dp
109 | 44.80dp
110 | 45.23dp
111 | 45.65dp
112 | 46.08dp
113 | 46.51dp
114 | 46.93dp
115 | 47.36dp
116 | 47.79dp
117 | 48.21dp
118 | 48.64dp
119 | 49.07dp
120 | 49.49dp
121 | 49.92dp
122 | 50.35dp
123 | 50.77dp
124 | 51.20dp
125 | 51.63dp
126 | 52.05dp
127 | 52.48dp
128 | 52.91dp
129 | 53.33dp
130 | 53.76dp
131 | 54.19dp
132 | 54.61dp
133 | 55.04dp
134 | 55.47dp
135 | 55.89dp
136 | 56.32dp
137 | 56.75dp
138 | 57.17dp
139 | 57.60dp
140 | 58.03dp
141 | 58.45dp
142 | 58.88dp
143 | 59.31dp
144 | 59.73dp
145 | 60.16dp
146 | 60.59dp
147 | 61.01dp
148 | 61.44dp
149 | 61.87dp
150 | 62.29dp
151 | 62.72dp
152 | 63.15dp
153 | 63.57dp
154 | 64.00dp
155 | 64.43dp
156 | 64.85dp
157 | 65.28dp
158 | 65.71dp
159 | 66.13dp
160 | 66.56dp
161 | 66.99dp
162 | 67.41dp
163 | 67.84dp
164 | 68.27dp
165 | 68.69dp
166 | 69.12dp
167 | 69.55dp
168 | 69.97dp
169 | 70.40dp
170 | 70.83dp
171 | 71.25dp
172 | 71.68dp
173 | 72.11dp
174 | 72.53dp
175 | 72.96dp
176 | 73.39dp
177 | 73.81dp
178 | 74.24dp
179 | 74.67dp
180 | 75.09dp
181 | 75.52dp
182 | 75.95dp
183 | 76.37dp
184 | 76.80dp
185 | 77.23dp
186 | 77.65dp
187 | 78.08dp
188 | 78.51dp
189 | 78.93dp
190 | 79.36dp
191 | 79.79dp
192 | 80.21dp
193 | 80.64dp
194 | 81.07dp
195 | 81.49dp
196 | 81.92dp
197 | 82.35dp
198 | 82.77dp
199 | 83.20dp
200 | 83.63dp
201 | 84.05dp
202 | 84.48dp
203 | 84.91dp
204 | 85.33dp
205 | 85.76dp
206 | 86.19dp
207 | 86.61dp
208 | 87.04dp
209 | 87.47dp
210 | 87.89dp
211 | 88.32dp
212 | 88.75dp
213 | 89.17dp
214 | 89.60dp
215 | 90.03dp
216 | 90.45dp
217 | 90.88dp
218 | 91.31dp
219 | 91.73dp
220 | 92.16dp
221 | 92.59dp
222 | 93.01dp
223 | 93.44dp
224 | 93.87dp
225 | 94.29dp
226 | 94.72dp
227 | 95.15dp
228 | 95.57dp
229 | 96.00dp
230 | 96.43dp
231 | 96.85dp
232 | 97.28dp
233 | 97.71dp
234 | 98.13dp
235 | 98.56dp
236 | 98.99dp
237 | 99.41dp
238 | 99.84dp
239 | 100.27dp
240 | 100.69dp
241 | 101.12dp
242 | 101.55dp
243 | 101.97dp
244 | 102.40dp
245 | 102.83dp
246 | 103.25dp
247 | 103.68dp
248 | 104.11dp
249 | 104.53dp
250 | 104.96dp
251 | 105.39dp
252 | 105.81dp
253 | 106.24dp
254 | 106.67dp
255 | 107.09dp
256 | 107.52dp
257 | 107.95dp
258 | 108.37dp
259 | 108.80dp
260 | 109.23dp
261 | 109.65dp
262 | 110.08dp
263 | 110.51dp
264 | 110.93dp
265 | 111.36dp
266 | 111.79dp
267 | 112.21dp
268 | 112.64dp
269 | 113.07dp
270 | 113.49dp
271 | 113.92dp
272 | 114.35dp
273 | 114.77dp
274 | 115.20dp
275 | 115.63dp
276 | 116.05dp
277 | 116.48dp
278 | 116.91dp
279 | 117.33dp
280 | 117.76dp
281 | 118.19dp
282 | 118.61dp
283 | 119.04dp
284 | 119.47dp
285 | 119.89dp
286 | 120.32dp
287 | 120.75dp
288 | 121.17dp
289 | 121.60dp
290 | 122.03dp
291 | 122.45dp
292 | 122.88dp
293 | 123.31dp
294 | 123.73dp
295 | 124.16dp
296 | 124.59dp
297 | 125.01dp
298 | 125.44dp
299 | 125.87dp
300 | 126.29dp
301 | 126.72dp
302 | 127.15dp
303 | 127.57dp
304 | 128.00dp
305 | 128.43dp
306 | 128.85dp
307 | 129.28dp
308 | 129.71dp
309 | 130.13dp
310 | 130.56dp
311 | 130.99dp
312 | 131.41dp
313 | 131.84dp
314 | 132.27dp
315 | 132.69dp
316 | 133.12dp
317 | 133.55dp
318 | 133.97dp
319 | 134.40dp
320 | 134.83dp
321 | 135.25dp
322 | 135.68dp
323 | 136.11dp
324 | 136.53dp
325 | 136.96dp
326 | 137.39dp
327 | 137.81dp
328 | 138.24dp
329 | 138.67dp
330 | 139.09dp
331 | 139.52dp
332 | 139.95dp
333 | 140.37dp
334 | 140.80dp
335 | 141.23dp
336 | 141.65dp
337 | 142.08dp
338 | 142.51dp
339 | 142.93dp
340 | 143.36dp
341 | 143.79dp
342 | 144.21dp
343 | 144.64dp
344 | 145.07dp
345 | 145.49dp
346 | 145.92dp
347 | 146.35dp
348 | 146.77dp
349 | 147.20dp
350 | 147.63dp
351 | 148.05dp
352 | 148.48dp
353 | 148.91dp
354 | 149.33dp
355 | 149.76dp
356 | 150.19dp
357 | 150.61dp
358 | 151.04dp
359 | 151.47dp
360 | 151.89dp
361 | 152.32dp
362 | 152.75dp
363 | 153.17dp
364 | 153.60dp
365 | 154.03dp
366 | 154.45dp
367 | 154.88dp
368 | 155.31dp
369 | 155.73dp
370 | 156.16dp
371 | 156.59dp
372 | 157.01dp
373 | 157.44dp
374 | 157.87dp
375 | 158.29dp
376 | 158.72dp
377 | 159.15dp
378 | 159.57dp
379 | 160.00dp
380 | 160.43dp
381 | 160.85dp
382 | 161.28dp
383 | 161.71dp
384 | 162.13dp
385 | 162.56dp
386 | 162.99dp
387 | 163.41dp
388 | 163.84dp
389 | 164.27dp
390 | 164.69dp
391 | 165.12dp
392 | 165.55dp
393 | 165.97dp
394 | 166.40dp
395 | 166.83dp
396 | 167.25dp
397 | 167.68dp
398 | 168.11dp
399 | 168.53dp
400 | 168.96dp
401 | 169.39dp
402 | 169.81dp
403 | 170.24dp
404 | 170.67dp
405 | 171.09dp
406 | 171.52dp
407 | 171.95dp
408 | 172.37dp
409 | 172.80dp
410 | 173.23dp
411 | 173.65dp
412 | 174.08dp
413 | 174.51dp
414 | 174.93dp
415 | 175.36dp
416 | 175.79dp
417 | 176.21dp
418 | 176.64dp
419 | 177.07dp
420 | 177.49dp
421 | 177.92dp
422 | 178.35dp
423 | 178.77dp
424 | 179.20dp
425 | 179.63dp
426 | 180.05dp
427 | 180.48dp
428 | 180.91dp
429 | 181.33dp
430 | 181.76dp
431 | 182.19dp
432 | 182.61dp
433 | 183.04dp
434 | 183.47dp
435 | 183.89dp
436 | 184.32dp
437 | 184.75dp
438 | 185.17dp
439 | 185.60dp
440 | 186.03dp
441 | 186.45dp
442 | 186.88dp
443 | 187.31dp
444 | 187.73dp
445 | 188.16dp
446 | 188.59dp
447 | 189.01dp
448 | 189.44dp
449 | 189.87dp
450 | 190.29dp
451 | 190.72dp
452 | 191.15dp
453 | 191.57dp
454 | 192.00dp
455 | 192.43dp
456 | 192.85dp
457 | 193.28dp
458 | 193.71dp
459 | 194.13dp
460 | 194.56dp
461 | 194.99dp
462 | 195.41dp
463 | 195.84dp
464 | 196.27dp
465 | 196.69dp
466 | 197.12dp
467 | 197.55dp
468 | 197.97dp
469 | 198.40dp
470 | 198.83dp
471 | 199.25dp
472 | 199.68dp
473 | 200.11dp
474 | 200.53dp
475 | 200.96dp
476 | 201.39dp
477 | 201.81dp
478 | 202.24dp
479 | 202.67dp
480 | 203.09dp
481 | 203.52dp
482 | 203.95dp
483 | 204.37dp
484 | 204.80dp
485 | 205.23dp
486 | 205.65dp
487 | 206.08dp
488 | 206.51dp
489 | 206.93dp
490 | 207.36dp
491 | 207.79dp
492 | 208.21dp
493 | 208.64dp
494 | 209.07dp
495 | 209.49dp
496 | 209.92dp
497 | 210.35dp
498 | 210.77dp
499 | 211.20dp
500 | 211.63dp
501 | 212.05dp
502 | 212.48dp
503 | 212.91dp
504 | 213.33dp
505 | 213.76dp
506 | 214.19dp
507 | 214.61dp
508 | 215.04dp
509 | 215.47dp
510 | 215.89dp
511 | 216.32dp
512 | 216.75dp
513 | 217.17dp
514 | 217.60dp
515 | 218.03dp
516 | 218.45dp
517 | 218.88dp
518 | 219.31dp
519 | 219.73dp
520 | 220.16dp
521 | 220.59dp
522 | 221.01dp
523 | 221.44dp
524 | 221.87dp
525 | 222.29dp
526 | 222.72dp
527 | 223.15dp
528 | 223.57dp
529 | 224.00dp
530 | 224.43dp
531 | 224.85dp
532 | 225.28dp
533 | 225.71dp
534 | 226.13dp
535 | 226.56dp
536 | 226.99dp
537 | 227.41dp
538 | 227.84dp
539 | 228.27dp
540 | 228.69dp
541 | 229.12dp
542 | 229.55dp
543 | 229.97dp
544 | 230.40dp
545 | 230.83dp
546 | 231.25dp
547 | 231.68dp
548 | 232.11dp
549 | 232.53dp
550 | 232.96dp
551 | 233.39dp
552 | 233.81dp
553 | 234.24dp
554 | 234.67dp
555 | 235.09dp
556 | 235.52dp
557 | 235.95dp
558 | 236.37dp
559 | 236.80dp
560 | 237.23dp
561 | 237.65dp
562 | 238.08dp
563 | 238.51dp
564 | 238.93dp
565 | 239.36dp
566 | 239.79dp
567 | 240.21dp
568 | 240.64dp
569 | 241.07dp
570 | 241.49dp
571 | 241.92dp
572 | 242.35dp
573 | 242.77dp
574 | 243.20dp
575 | 243.63dp
576 | 244.05dp
577 | 244.48dp
578 | 244.91dp
579 | 245.33dp
580 | 245.76dp
581 | 246.19dp
582 | 246.61dp
583 | 247.04dp
584 | 247.47dp
585 | 247.89dp
586 | 248.32dp
587 | 248.75dp
588 | 249.17dp
589 | 249.60dp
590 | 250.03dp
591 | 250.45dp
592 | 250.88dp
593 | 251.31dp
594 | 251.73dp
595 | 252.16dp
596 | 252.59dp
597 | 253.01dp
598 | 253.44dp
599 | 253.87dp
600 | 254.29dp
601 | 254.72dp
602 | 255.15dp
603 | 255.57dp
604 | 256.00dp
605 | 256.43dp
606 | 256.85dp
607 | 257.28dp
608 | 257.71dp
609 | 258.13dp
610 | 258.56dp
611 | 258.99dp
612 | 259.41dp
613 | 259.84dp
614 | 260.27dp
615 | 260.69dp
616 | 261.12dp
617 | 261.55dp
618 | 261.97dp
619 | 262.40dp
620 | 262.83dp
621 | 263.25dp
622 | 263.68dp
623 | 264.11dp
624 | 264.53dp
625 | 264.96dp
626 | 265.39dp
627 | 265.81dp
628 | 266.24dp
629 | 266.67dp
630 | 267.09dp
631 | 267.52dp
632 | 267.95dp
633 | 268.37dp
634 | 268.80dp
635 | 269.23dp
636 | 269.65dp
637 | 270.08dp
638 | 270.51dp
639 | 270.93dp
640 | 271.36dp
641 | 271.79dp
642 | 272.21dp
643 | 272.64dp
644 | 273.07dp
645 | 273.49dp
646 | 273.92dp
647 | 274.35dp
648 | 274.77dp
649 | 275.20dp
650 | 275.63dp
651 | 276.05dp
652 | 276.48dp
653 | 276.91dp
654 | 277.33dp
655 | 277.76dp
656 | 278.19dp
657 | 278.61dp
658 | 279.04dp
659 | 279.47dp
660 | 279.89dp
661 | 280.32dp
662 | 280.75dp
663 | 281.17dp
664 | 281.60dp
665 | 282.03dp
666 | 282.45dp
667 | 282.88dp
668 | 283.31dp
669 | 283.73dp
670 | 284.16dp
671 | 284.59dp
672 | 285.01dp
673 | 285.44dp
674 | 285.87dp
675 | 286.29dp
676 | 286.72dp
677 | 287.15dp
678 | 287.57dp
679 | 288.00dp
680 | 288.43dp
681 | 288.85dp
682 | 289.28dp
683 | 289.71dp
684 | 290.13dp
685 | 290.56dp
686 | 290.99dp
687 | 291.41dp
688 | 291.84dp
689 | 292.27dp
690 | 292.69dp
691 | 293.12dp
692 | 293.55dp
693 | 293.97dp
694 | 294.40dp
695 | 294.83dp
696 | 295.25dp
697 | 295.68dp
698 | 296.11dp
699 | 296.53dp
700 | 296.96dp
701 | 297.39dp
702 | 297.81dp
703 | 298.24dp
704 | 298.67dp
705 | 299.09dp
706 | 299.52dp
707 | 299.95dp
708 | 300.37dp
709 | 300.80dp
710 | 301.23dp
711 | 301.65dp
712 | 302.08dp
713 | 302.51dp
714 | 302.93dp
715 | 303.36dp
716 | 303.79dp
717 | 304.21dp
718 | 304.64dp
719 | 305.07dp
720 | 305.49dp
721 | 305.92dp
722 | 306.35dp
723 | 306.77dp
724 | 307.20dp
725 | 307.63dp
726 | 308.05dp
727 | 308.48dp
728 | 308.91dp
729 | 309.33dp
730 | 309.76dp
731 | 310.19dp
732 | 310.61dp
733 | 311.04dp
734 | 311.47dp
735 | 311.89dp
736 | 312.32dp
737 | 312.75dp
738 | 313.17dp
739 | 313.60dp
740 | 314.03dp
741 | 314.45dp
742 | 314.88dp
743 | 315.31dp
744 | 315.73dp
745 | 316.16dp
746 | 316.59dp
747 | 317.01dp
748 | 317.44dp
749 | 317.87dp
750 | 318.29dp
751 | 318.72dp
752 | 319.15dp
753 | 319.57dp
754 | 320.00dp
755 |
756 |
--------------------------------------------------------------------------------
/library/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Library
3 |
4 |
--------------------------------------------------------------------------------
/library/src/test/java/com/victor/screen/match/library/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.victor.screen.match.library;
2 |
3 |
4 |
5 | /**
6 | * Example local unit test, which will execute on the development machine (host).
7 | *
8 | * @see Testing documentation
9 | */
10 | public class ExampleUnitTest {
11 | public void addition_isCorrect() throws Exception {
12 | }
13 | }
--------------------------------------------------------------------------------
/screenMatch.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Victor2018/ScreenMatchLib/f1fed83ab15bd7ed01c512c159345cbee94bfb79/screenMatch.properties
--------------------------------------------------------------------------------
/screenMatch_example_dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | @dimen/dp_15
6 |
7 |
8 |
9 | -60dp
10 | -30dp
11 | -20dp
12 | -12dp
13 | -10dp
14 | -8dp
15 | -5dp
16 | -2dp
17 | -1dp
18 | 0dp
19 | 0.1dp
20 | 0.5dp
21 | 1dp
22 | 1.5dp
23 | 2dp
24 | 2.5dp
25 | 3dp
26 | 3.5dp
27 | 4dp
28 | 4.5dp
29 | 5dp
30 | 6dp
31 | 7dp
32 | 7.5dp
33 | 8dp
34 | 9dp
35 | 10dp
36 | 11dp
37 | 12dp
38 | 13dp
39 | 14dp
40 | 15dp
41 | 16dp
42 | 17dp
43 | 18dp
44 | 19dp
45 | 20dp
46 | 21dp
47 | 22dp
48 | 23dp
49 | 24dp
50 | 25dp
51 | 26dp
52 | 27dp
53 | 28dp
54 | 29dp
55 | 30dp
56 | 31dp
57 | 32dp
58 | 33dp
59 | 34dp
60 | 35dp
61 | 36dp
62 | 37dp
63 | 38dp
64 | 39dp
65 | 40dp
66 | 41dp
67 | 42dp
68 | 43dp
69 | 44dp
70 | 45dp
71 | 46dp
72 | 47dp
73 | 48dp
74 | 49dp
75 | 50dp
76 | 51dp
77 | 52dp
78 | 53dp
79 | 54dp
80 | 55dp
81 | 56dp
82 | 57dp
83 | 58dp
84 | 59dp
85 | 60dp
86 | 61dp
87 | 62dp
88 | 63dp
89 | 64dp
90 | 65dp
91 | 66dp
92 | 67dp
93 | 68dp
94 | 69dp
95 | 70dp
96 | 71dp
97 | 72dp
98 | 73dp
99 | 74dp
100 | 75dp
101 | 76dp
102 | 77dp
103 | 78dp
104 | 79dp
105 | 80dp
106 | 81dp
107 | 82dp
108 | 83dp
109 | 84dp
110 | 85dp
111 | 86dp
112 | 87dp
113 | 88dp
114 | 89dp
115 | 90dp
116 | 91dp
117 | 92dp
118 | 93dp
119 | 94dp
120 | 95dp
121 | 96dp
122 | 97dp
123 | 98dp
124 | 99dp
125 | 100dp
126 | 101dp
127 | 102dp
128 | 103dp
129 | 104dp
130 | 104.5dp
131 | 105dp
132 | 106dp
133 | 107dp
134 | 108dp
135 | 109dp
136 | 110dp
137 | 111dp
138 | 112dp
139 | 113dp
140 | 114dp
141 | 115dp
142 | 116dp
143 | 117dp
144 | 118dp
145 | 119dp
146 | 120dp
147 | 121dp
148 | 122dp
149 | 123dp
150 | 124dp
151 | 125dp
152 | 126dp
153 | 127dp
154 | 128dp
155 | 129dp
156 | 130dp
157 | 131dp
158 | 132dp
159 | 133dp
160 | 134dp
161 | 134.5dp
162 | 135dp
163 | 136dp
164 | 137dp
165 | 138dp
166 | 139dp
167 | 140dp
168 | 141dp
169 | 142dp
170 | 143dp
171 | 144dp
172 | 145dp
173 | 146dp
174 | 147dp
175 | 148dp
176 | 149dp
177 | 150dp
178 | 151dp
179 | 152dp
180 | 153dp
181 | 154dp
182 | 155dp
183 | 156dp
184 | 157dp
185 | 158dp
186 | 159dp
187 | 160dp
188 | 161dp
189 | 162dp
190 | 163dp
191 | 164dp
192 | 165dp
193 | 166dp
194 | 167dp
195 | 168dp
196 | 169dp
197 | 170dp
198 | 171dp
199 | 172dp
200 | 173dp
201 | 174dp
202 | 175dp
203 | 176dp
204 | 177dp
205 | 178dp
206 | 179dp
207 | 180dp
208 | 181dp
209 | 182dp
210 | 183dp
211 | 184dp
212 | 185dp
213 | 186dp
214 | 187dp
215 | 188dp
216 | 189dp
217 | 190dp
218 | 191dp
219 | 191.25dp
220 | 192dp
221 | 193dp
222 | 194dp
223 | 195dp
224 | 196dp
225 | 197dp
226 | 198dp
227 | 199dp
228 | 200dp
229 | 201dp
230 | 202dp
231 | 203dp
232 | 204dp
233 | 205dp
234 | 206dp
235 | 207dp
236 | 208dp
237 | 209dp
238 | 210dp
239 | 211dp
240 | 212dp
241 | 213dp
242 | 214dp
243 | 215dp
244 | 216dp
245 | 217dp
246 | 218dp
247 | 219dp
248 | 220dp
249 | 221dp
250 | 222dp
251 | 223dp
252 | 224dp
253 | 225dp
254 | 226dp
255 | 227dp
256 | 228dp
257 | 229dp
258 | 230dp
259 | 231dp
260 | 232dp
261 | 233dp
262 | 234dp
263 | 235dp
264 | 236dp
265 | 237dp
266 | 238dp
267 | 239dp
268 | 240dp
269 | 241dp
270 | 242dp
271 | 243dp
272 | 244dp
273 | 245dp
274 | 246dp
275 | 247dp
276 | 248dp
277 | 249dp
278 | 250dp
279 | 251dp
280 | 252dp
281 | 253dp
282 | 254dp
283 | 255dp
284 | 256dp
285 | 257dp
286 | 258dp
287 | 259dp
288 | 260dp
289 | 261dp
290 | 262dp
291 | 263dp
292 | 264dp
293 | 265dp
294 | 266dp
295 | 267dp
296 | 268dp
297 | 269dp
298 | 270dp
299 | 271dp
300 | 272dp
301 | 273dp
302 | 274dp
303 | 275dp
304 | 276dp
305 | 277dp
306 | 278dp
307 | 279dp
308 | 280dp
309 | 281dp
310 | 282dp
311 | 283dp
312 | 284dp
313 | 285dp
314 | 286dp
315 | 287dp
316 | 288dp
317 | 289dp
318 | 290dp
319 | 291dp
320 | 292dp
321 | 293dp
322 | 294dp
323 | 295dp
324 | 296dp
325 | 297dp
326 | 298dp
327 | 299dp
328 | 300dp
329 | 301dp
330 | 302dp
331 | 303dp
332 | 304dp
333 | 305dp
334 | 306dp
335 | 307dp
336 | 308dp
337 | 309dp
338 | 310dp
339 | 311dp
340 | 312dp
341 | 313dp
342 | 314dp
343 | 315dp
344 | 316dp
345 | 317dp
346 | 318dp
347 | 319dp
348 | 320dp
349 | 321dp
350 | 322dp
351 | 323dp
352 | 324dp
353 | 325dp
354 | 326dp
355 | 327dp
356 | 328dp
357 | 329dp
358 | 330dp
359 | 331dp
360 | 332dp
361 | 333dp
362 | 334dp
363 | 335dp
364 | 336dp
365 | 337dp
366 | 338dp
367 | 339dp
368 | 340dp
369 | 341dp
370 | 342dp
371 | 343dp
372 | 344dp
373 | 345dp
374 | 346dp
375 | 347dp
376 | 348dp
377 | 349dp
378 | 350dp
379 | 351dp
380 | 352dp
381 | 353dp
382 | 354dp
383 | 355dp
384 | 356dp
385 | 357dp
386 | 358dp
387 | 359dp
388 | 360dp
389 | 365dp
390 | 370dp
391 | 400dp
392 | 410dp
393 | 422dp
394 | 472dp
395 | 500dp
396 | 600dp
397 | 640dp
398 | 720dp
399 |
400 |
401 | 6sp
402 | 7sp
403 | 8sp
404 | 9sp
405 | 10sp
406 | 11sp
407 | 12sp
408 | 13sp
409 | 14sp
410 | 15sp
411 | 16sp
412 | 17sp
413 | 18sp
414 | 19sp
415 | 20sp
416 | 21sp
417 | 22sp
418 | 23sp
419 | 24sp
420 | 25sp
421 | 28sp
422 | 30sp
423 | 32sp
424 | 34sp
425 | 36sp
426 | 38sp
427 | 40sp
428 | 42sp
429 | 48sp
430 |
431 |
432 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':library'
2 |
--------------------------------------------------------------------------------