说Android得屏幕适配方案,先说下基础知识。
屏幕尺寸:屏幕的对角线,如一台小米电视49寸说的就是电视对角线长度是49寸(1英寸=2.54厘米)
分辨率: 1920×1080指纵向1920个像素点,横向1080个像素点
屏幕像素密度(DPI):指每一英寸长度中,可显示输出的像素个数,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,DPI的数字受屏幕尺寸和分辨率所影响,DPI可以通过计算所得
dp,dip,sp,px它们之间的关系
px:
构成图像的最小单位,其实就是像素单位即分辨率单位,比如我们通常说的手机分辨列表800*400都是px的单位。
dp/dip:
dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。
也就是说当前我们设备的DP是由android给予的基础标准按比例进行翻译的,所以dp可以解决部分适配。
desity
密度,表示一个dp多少个像素。desity = dpi/160。
sp:同dp相似,sp作为字体大小单位,会随着系统的字体大小改变,而dp作为单位则不会。所以建议在字体大小的数值要使用sp作为单位。
mdpi,hdpi,xdpi,xxdpi,xxxdpi得区分
名称 像素密度范围 图标尺寸
mdpi 120dpi ~ 160dpi 48*48px
hdpi 160dpi ~ 240dpi 72*72px
xdpi 240dpi ~ 320dpi 96*96px
xxdpi 320dpi ~ 480dpi 144*144
xxxdpi 480dpi ~ 640dpi 192*192
说完了基础部分,现在说下如何做不同尺寸,不同分辨率得手机端得适配工作。
采用得是限定符(SW)得适配方案,因为android会通过获取当前手机屏幕得分辨率,来选择对应得value文件夹下得文件,那么就可以通过转换不同得分辨率下得value得数值得大小来做适配了。比如说。
300x400,5寸屏 的限定符SW=300PX/Desity=300PX/0.625=480
600x800,10寸屏 的限定符SW=600PX/Desity=600PX/0.625=960
所以就是SW480和SW960
可以看到在不同得分辨率下,做自动得转换,可以做到精准得适配,所以通过这种方法来适配size得大小是可行得。
使用这种方法,推荐使用一个插件 ScreenMatch,这个插件可以自动得生成SW文件。生成得截图如下。
所以可以通过这种方法匹配市面上大部分得机型了。
另外在开发得时候也需要适配icon,那么解决方法如下。
android studio得icon是放在mipmap文件夹下得。
这个是android存放icon得位置得,google建议每个分辨率下防止一个相同尺寸得icon,设计得尺寸一般如下。
密度 建议尺寸
mipmap-mdpi 48 * 48
mipmap-hdpi 72 * 72
mipmap-xhdpi 96 * 96
mipmap-xxhdpi 144 * 144
mipmap-xxxhdpi 192 * 192
接着讲解适配图片放在drawable下如何适配。
当我们使用资源id来去引用一张图片时,Android会使用一些规则来去帮我们匹配最适合的图片。什么叫最适合的图片?比如我的手机屏幕密度是xxhdpi,那么drawable-xxhdpi文件夹下的图片就是最适合的图片。因此,当我引用android_logo这张图时,如果drawable-xxhdpi文件夹下有这张图就会优先被使用,在这种情况下,图片是不会被缩放的。但是,如果drawable-xxhdpi文件夹下没有这张图时, 系统就会自动去其它文件夹下找这张图了,优先会去更高密度的文件夹下找这张图片,我们当前的场景就是drawable-xxxhdpi文件夹,然后发现这里也没有android_logo这张图,接下来会尝试再找更高密度的文件夹,发现没有更高密度的了,这个时候会去drawable-nodpi文件夹找这张图,发现也没有,那么就会去更低密度的文件夹下面找,依次是drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi。
所以最好的方法就是在每个分辨率下都设计一套对应得图片,但是通常公司得UI只会设计一套UI,所以建议设计一套高密度值得UI,因为高密度值得UI在低密度值得情况下会被自动缩小,对图片得质量没什么影响,但是如果一张图片被放大了,那么久会占用更多得内存。另外放置图片得最好位置是在drawable-xxhdpi,市面上得drawable-xxxhdpi得手机比较少,放在drawable-xxhdpi会比较合理。
总结。
size通过SW限定符来做适配
drawable通过f放在在高密度下得文件夹来做适配。
以下是demens.xml文件
@dimen/dp_15
-60dp
-30dp
-20dp
-12dp
-10dp
-8dp
-5dp
-2dp
-1dp
0dp
0.1dp
0.5dp
1dp
1.5dp
2dp
2.5dp
3dp
3.5dp
4dp
4.5dp
5dp
6dp
7dp
8dp
9dp
10dp
11dp
12dp
13dp
14dp
15dp
16dp
17dp
18dp
19dp
20dp
21dp
22dp
23dp
24dp
25dp
26dp
27dp
28dp
29dp
30dp
31dp
32dp
33dp
34dp
35dp
36dp
37dp
38dp
39dp
40dp
41dp
42dp
43dp
44dp
45dp
46dp
47dp
48dp
49dp
50dp
51dp
52dp
53dp
54dp
55dp
56dp
57dp
58dp
59dp
60dp
61dp
62dp
63dp
64dp
65dp
66dp
67dp
68dp
69dp
70dp
71dp
72dp
73dp
74dp
75dp
76dp
77dp
78dp
79dp
80dp
81dp
82dp
83dp
84dp
85dp
86dp
87dp
88dp
89dp
90dp
91dp
92dp
93dp
94dp
95dp
96dp
97dp
98dp
99dp
100dp
101dp
102dp
103dp
104dp
105dp
106dp
107dp
108dp
109dp
110dp
111dp
112dp
113dp
114dp
115dp
116dp
117dp
118dp
119dp
120dp
121dp
122dp
123dp
124dp
125dp
126dp
127dp
128dp
129dp
130dp
131dp
132dp
133dp
134dp
135dp
136dp
137dp
138dp
139dp
140dp
141dp
142dp
143dp
144dp
145dp
146dp
147dp
148dp
149dp
150dp
151dp
152dp
153dp
154dp
155dp
156dp
157dp
158dp
159dp
160dp
161dp
162dp
163dp
164dp
165dp
166dp
167dp
168dp
169dp
170dp
171dp
172dp
173dp
174dp
175dp
176dp
177dp
178dp
179dp
180dp
181dp
182dp
183dp
184dp
185dp
186dp
187dp
188dp
189dp
190dp
191dp
192dp
193dp
194dp
195dp
196dp
197dp
198dp
199dp
200dp
201dp
202dp
203dp
204dp
205dp
206dp
207dp
208dp
209dp
210dp
211dp
212dp
213dp
214dp
215dp
216dp
217dp
218dp
219dp
220dp
221dp
222dp
223dp
224dp
225dp
226dp
227dp
228dp
229dp
230dp
231dp
232dp
233dp
234dp
235dp
236dp
237dp
238dp
239dp
240dp
241dp
242dp
243dp
244dp
245dp
246dp
247dp
248dp
249dp
250dp
251dp
252dp
253dp
254dp
255dp
256dp
257dp
258dp
259dp
260dp
261dp
262dp
263dp
264dp
265dp
266dp
267dp
268dp
269dp
270dp
271dp
272dp
273dp
274dp
275dp
276dp
277dp
278dp
279dp
280dp
281dp
282dp
283dp
284dp
285dp
286dp
287dp
288dp
289dp
290dp
291dp
292dp
293dp
294dp
295dp
296dp
297dp
298dp
299dp
300dp
301dp
302dp
303dp
304dp
305dp
306dp
307dp
308dp
309dp
310dp
311dp
312dp
313dp
314dp
315dp
316dp
317dp
318dp
319dp
320dp
321dp
322dp
323dp
324dp
325dp
326dp
327dp
328dp
329dp
330dp
331dp
332dp
333dp
334dp
335dp
336dp
337dp
338dp
339dp
340dp
341dp
342dp
343dp
344dp
345dp
346dp
347dp
348dp
349dp
350dp
351dp
352dp
353dp
354dp
355dp
356dp
357dp
358dp
359dp
360dp
365dp
370dp
400dp
410dp
422dp
472dp
500dp
600dp
640dp
720dp
6sp
7sp
8sp
9sp
10sp
11sp
12sp
13sp
14sp
15sp
16sp
17sp
18sp
19sp
20sp
21sp
22sp
23sp
24sp
25sp
28sp
30sp
32sp
34sp
36sp
38sp
40sp
42sp
48sp