屏幕适配
2018-12-17 本文已影响6人
三年级一班亚索
重要概念
(1)什么是屏幕尺寸、分辨率以及像素密度:
- 屏幕尺寸:屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸 = 2.54厘米
- 屏幕分辨率:屏幕分辨率是指在横纵向上的像素点数,单位是px,如果1920 * 1080
- 屏幕像素密度:每英寸上的像素点数,单位dpi(dot per inch)
(2)dp、dip、dpi、sp、px
- dp和dip:dp和dip是一个意思,density independent pixels,也即无关像素,在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。
假如同样都是画一条320px的线,在480 x 800分辨率(hdpi)手机上显示为2/3屏幕宽度,在320*480分辨率(mdpi)的手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度(因为他们的dpi不一样,经过换算为一半)。这也是为什么在Android开发中,写布局的时候要尽量使用dp而不是px的原因。
- dpi和px:即像素密度,和像素的基本单位
- sp:scale independent pixels,可以根据系统文字的大小首选项进行缩放
(3)mdpi、hdpi、xhpi、xxhdpi、xxxhdpi
名称 | 像素密度范围(单位dpi) | 分辨率 | 像素和dp比例 |
---|---|---|---|
mdpi-320P | 120 ~ 160 | 320x480 | 1 |
hdpi-480P | 160 ~ 240 | 480x800 | 2/3 |
xhdpi-720P | 240 ~ 320 | 720x1280 | 1/2 |
xxhdpi-1080P | 320 ~480 | 1080x1920 | 1/3 |
xxxhdpi-4K | 480 ~ 640 | 2160x3840 | 1/4 |
设计图标时应按照2:3:4:6:8的比例进行缩放,所以,如果UI给的是720x1280分辨率的图, 那么dp = px / 2, 给的是1080x1920分辨率的图,那么 dp = px / 3,即根据比例即可。
一个启动图标的尺寸为48x48dp,其含义为在mdpi中的实际尺寸为48x48px,在hdpi的屏幕上其实际大小是72x72px(1.5倍)
案例
举例:UI在720x1280上做的图,其中一个按钮的宽高分辨为:宽720px,高为100px,字体大小为30px,在布局中则这样使用(像素和dp比例0.5):
<Button
android:layout_width="@dimen/dp_360"
android:layout_height="@dimen/dp_50"
android:textSize="@dimen/sp_15"/>