屏幕适配
屏幕适配
1.为什要进行屏幕适配?
1.Android的厂商非常多,手机型号多,屏幕尺寸大小不一,屏幕分辨率多,一个控件在不同的设备上显示的效果会有一定的差异
2.是否需要对每一种尺寸的设备进行适配?
1.主流的Android厂商: google,三星,中兴,华为,酷派,联想,诺基亚,小米,oppo,vivo,锤子,格力,魅族,乐视,一加,360,小辣椒,nubia,lg,金立,摩托罗拉,HTC,sony
2.主流的屏幕尺寸:3.2 3.5 3.7 4.0 4.3 4.7 5.0 5.1 5.5 6.0 7.2 9.7
3.主流的屏幕分辨率: 1920*1080 2560*1440 1280*720 1280*768 ....
4.主流的Android系统版本: 2.3 4.0 4.1 4.3 4.4 5.1 6.0
不需要,只需要适配主流的几种设备
3.Android中的尺寸知识
1.屏幕的分辨率 表示的是宽度上的点的个数,长度上的点的个数 比如: 1920*1080 表示的是长度上有1920个点,宽度上有1080个点
2.屏幕的尺寸 表示的屏幕的对角线长度 单位in
3.屏幕的密度dpi 表示单位in上的像素点的个数
4.px 表示的是一个点的长度
5.pt 一个点的长度(绝对长度) 1pt 相当于1/72 英寸,127/360mm。
6.dp,dip 会自动的根据屏幕的密度来计算px
7.sp 文本长度,会自动的个根据屏幕的密度来计算文本的大小
4.屏幕适配
1.图片适配
1.目录适配
0.目录介绍
对应的比例 dpi对应的值范围
drawable-ldpi 0-120dpi
drawable-mdpi 4 120dpi - 160dpi
drawable-hdpi 6 160dpi - 240dpi
drawable-xdpi 8 240dpi - 320dpi
drawable-xxdpi 12 ...
drawable-xxxdpi 16 ...
1.根据不同的屏幕密度,将图片放在对应的drawable-dpi目录里面,系统会自动根据当前的屏幕密度去对应为文件中找相应的图片,
如果对应的文件中没有,会到更高dpi的文件中找
2.不需要给每一个范围的dpi文件都适配图片,也不需要给每一张图片进行适配,一般给需要高质量的图片定义4-5套图片进行适配,(比如: 程序logo,背景)
2.尽量使用可以拉伸的图片(9.png, png)
1.规则的图片
2.颜色单一的图片
2.布局适配
1.在线性布局中使用weight属性,该属性可以让控件按照一定的比例划分屏幕,不受屏幕的大小,分辨率影响,始终按照比例划分
弊端: 只能用在线性布局上,需要空间按比例划分的时候才可以使用 (适配的角度上,建议使用线性布局)
2.在代码中适配,先可以获得当前设备的宽,高,以及显示设备的参数, 可以动态的设置控件的宽高
弊端: 代码量大,布局复杂, 不建议使用
3.按照布局文件所在的文件位置来适配(在不同的屏幕状态下自动的去对应的文件夹中找) 3.按照分辨率进行适配
布局文件的适配,如下:
控件长度的适配:(就不直接在布局中写dp啥的单位了)
语言的国际化:
dp为密度
px为像素点
在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则
1dip=2px,以此类推。
名称 像素密度范围
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxhdpi 320dpi~480dpi
xxxhdpi 480dpi~640dpi
res/layout-large/main.xml 系统会在属于较大屏幕(例如 7 英寸或更大的平板电脑)的设备上选择此布局。系统会在较小的屏幕上选择其他布局(无限定符)。
res/layout-sw600dp/main.xml 对于最小宽度大于等于 600 dp 的设备,系统会选择 layout-sw600dp/main.xml布局,否则系统就会选择layout/main.xml