Android手机屏幕适配知识整理
2016-10-10 11:30
686 查看
目录
关于单位关于屏幕密度
res包下的包命名
关于单位
概念:【px】pixels,像素
【sp】scaled pixels,缩放像素
【dp/dip】device independent pixels,设备独立像素
【dpi】dots per inch,每英寸所打印的点数(不晓得它的专业名称,所以暂时称它为“密度”)
【ppi】pixels per inch,像素密度
知识点:
480*800、720*1280、1080*1920等屏幕分辨率的单位是像素,即px
手机的屏幕参数中有一项屏幕像素密度,单位是ppi,比如445ppi
在Android设备中,dpi等价于ppi,常用dpi来表示屏幕密度。dpi和ppi的区别可参考PPI vs. DPI: what’s the difference?
在布局中一般使用sp表示文字大小,比如android:textSize=”16sp”
在布局中一般使用dp/dip作为文字大小以外的数字单位,比如android:layout_width=”120dp”,android:layout_marginTop=”10dp”
手机的屏幕参数中有一项屏幕尺寸,单位是英寸,比如5英寸,是指屏幕对角线的长度
换算:
屏幕分辨率为1080*1920,尺寸为5英寸的手机,其宽为1080px,高为1920px,根据勾股定理对角线为2203px,像素密度为2203px/5英寸=440ppi,也就是440dpi
px=dp*(dpi/160),px和dp之间的换算公式,这里px、dp、dpi都代表数值,不考虑单位
关于密度
目前在Android中,根据dpi,屏幕分为ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi这么6种。ldpi,至少达到120dpi,分辨率一般为240*320
mdpi,至少达到160dpi,分辨率一般为320*480
hdpi,至少达到240dpi,分辨率一般为480*800
xhdpi,至少达到320dpi,分辨率一般为720*1280
xxhdpi,至少达到480dpi,分辨率一般为1080*1920
xxxdpi,至少达到640dpi,分辨率一般为1440*2560
在密度为160dpi的屏幕中,1dp=1px,因此mdpi为基准屏幕。6种屏幕密度比例为3:4:6:8:12:16,即
在ldpi的屏幕中,1dp=0.75px,比如icon为36*36
在mdpi的屏幕中,1dp=1px,比如icon为48*48
在hdpi的屏幕中,1dp=1.5px,比如icon为72*72
在xhdpi的屏幕中,1dp=2px,比如icon为96*96
在xxhdpi的屏幕中,1dp=3px,比如icon为144*144
在xxxhdpi的屏幕中,1dp=4px,比如icon为192*192
由以上的数据可以很容易得出
320*480的屏幕宽度为320dp
480*800的屏幕宽度为320dp
720*1280的屏幕宽度为360dp
1080*1920的屏幕宽度为360dp
1440*2560的屏幕宽度为360dp
由此可见,只是在布局中使用dp还无法很好地自适应屏幕,需要考虑屏幕高度和宽度。但是相对于以px为单位的320*480、480*800等屏幕分辨率来说,以dp为单位能大大减少屏幕差异。
res包下的包命名
drawable,放置图片资源。drawable,xml配置文件和对分辨率要求较低的图片资源
drawable-ldpi,密度为ldpi的屏幕使用的图片资源
drawable-mdpi,密度为mdpi的屏幕使用的图片资源
drawable-hdpi,密度为hdpi的屏幕使用的图片资源
drawable-xhdpi,密度为xhdpi的屏幕使用的图片资源
drawable-xxhdpi,密度为xxhdpi的屏幕使用的图片资源
drawable-xxxhdpi,密度为xxxhdpi的屏幕使用的图片资源
drawable-nodpi,按照实际像素大小进行显示,不会被缩放
layout,放置布局文件。layout包可以根据屏幕分辨率自定义,格式为“layout-高度x宽度”,比如分辨率为480*800的手机会优先使用layout-800x480包下的布局文件
layout,通用
layout-854x480,屏幕为480*854
layout-1280x768,屏幕为768*1280
layout-small,屏幕至少为320*426
layout-normal,屏幕至少为320*470
layout-large,屏幕至少为480*640
layout-xlarge,屏幕至少为720*960
layout-land,横屏
layout-port,竖屏
layout-land-854x480,屏幕为480*854,且为横屏
layout-large-land,屏幕至少为480*640,且为横屏
注意事项:
在android3.0后,需将高度减去48像素,即底部状态栏的高度,比如分辨率为480*854对应layout-806x480。分辨率中大的数字必须写到前面。
values,放置strings.xml、dimens.xml、styles.xml、colors.xml等资源文件。
values-v11,API 11以上
values-v14,API 14以上
values-v21,API 21以上
values-sw600dp,高度和宽度都大于600dp
values-w800dp,宽度大于800dp
values-h820dp,高度大于820dp
values-sw480dp-land,高度和宽度都大于480dp,且为横屏
当在对应包中找不到需要的资源文件,会自动从合适的其他包中去找,比如在drawable-xhdpi包中找不到需要的图片时,会去drawable-xxhdpi中找,如果也没有,再到drawable-xxxhdpi中找,如果还没有,再到drawable-hdpi中找,直到找到为止。
暂时找到了这些知识点,后续有新的发现再做更新。
相关文章推荐
- Android小知识——手机屏幕的适配
- android手机屏幕适配理论知识
- 【最新】Android 手机分辨率整理(做屏幕适配的拿走)
- 涉及Android手机屏幕适配的相关知识
- 【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdp 3ff8 i,ldpi
- android不同屏幕大小手机的适配问题
- android之屏幕适配之一理论知识
- Android知识梳理之屏幕适配全攻略
- Android手机屏幕分辨率适配方案
- android和屏幕适配的相关知识
- android 手机屏幕适配
- [整理]Android屏幕适配(不同的屏幕分辨率和尺寸)
- Android手机屏幕适配
- android之屏幕适配之一理论知识
- Android屏幕适配 - 屏幕基础理论知识笔记;res资源文件命名与匹配规则
- Android手机屏幕适配
- Android多屏幕适配技巧整理(持续更新)
- android webview 适配手机屏幕以及禁止双击事件
- android手机屏幕密度的计算及dp、px、sp单位的转换,屏幕适配相关
- android手机屏幕适配相关.