屏幕适配:
布局适配、布局控件适配、图片资源适配
布局适配:
本质:使得布局元素自适应屏幕尺寸、根据屏幕的配置来加载相应的UI布局
使得布局元素自适应屏幕尺寸:
做法:使用相对布局(RelativeLayout),禁用绝对布局(AbsoluteLayout)
布局的子控件之间使用相对位置的方式排列,因为RelativeLayout讲究的是相对位置,即使屏幕的大小改变,视图之前的相对位置都不会变化,与屏幕大小无关,灵活性很强
由于绝对布局(AbsoluteLayout)适配性极差,所以极少使用。
根据屏幕的配置来加载相应的UI布局:
做法:使用限定符,通过配置限定符使得程序在运行时根据当前设备的配置(屏幕尺寸)自动加载
使用布局别名
尺寸限定符(layout-large)(3.2之前 示例:res/layout-large/main.xml)
最小宽度(Smallest-width)限定符(3.2之后 res/layout-sw600dp/main.xml)屏幕方向(Orientation)限定符
布局控件适配:
本质:使得布局组件自适应屏幕尺寸
做法:使用"wrap_content"、"match_parent"和"weight“来控制视图组件的宽度和高度或者使用百分比布局
图片资源适配:
本质:使得图片资源在不同屏幕密度上显示相同的像素效果
做法:使用自动拉伸位图:Nine-Patch的图片类型,使用自动拉伸位图(nine-patch图片),后缀名是.9.png
dp与px转换
| 低密度(ldpi) | 240x320 | 120 |1dp=0.75px|3| 32x32px
| 中密度(mdpi) | 320x480 | 160 |1dp=1px|4| 48x48px
| 高密度(hdpi) | 480x800 | 240|1dp=1.5px|6| 72x72px
| 超高密度(xhdpi) | 720x1280 | 320|1dp=2px|8| 96x96px
| 超超高密度(xxhdpi) | 1080x1920 | 480 |1dp=3px|12| 144x144px
| 超超超高密度(xxxhdpi) | 1920x2560| 640 |1dp=4px|16| 192x192px
在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px