Android手机屏幕适配知识整理
目录
- 关于单位
- 关于屏幕密度
- 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手机屏幕适配方案总结
0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...
- android手机屏幕适配理论知识
对于具有相同像素密度的设备来说,像素越高,尺寸就越大,所以可以换个思路,讲问题从单纯的尺寸大小转换到像素大小和像素密度的角度来 占比最高的是480*800,320*480的设备竟然也占据了很大比例,但 ...
- Android手机屏幕适配
Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环.Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,其实Android屏幕适配也可以很简 ...
- mdpi的手机_【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi
Android的碎片化设备状况,使得其API必须在不同的屏幕中选取合适的算法并展示,而在API级别上,的确也是有类似的定义,当然,我也终于明白,这是Android的显示效果始终跟不上苹果的原因 苹果的 ...
- 【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi
为什么80%的码农都做不了架构师?>>> Android的碎片化设备状况,使得其API必须在不同的屏幕中选取合适的算法并展示,而在API级别上,的确也是有类似的定义,当然,我也 ...
- Android多屏幕适配-手机
1.常用单位及其关系 px:像素 inch:英寸 pt:1/72 英寸 dpi:一英寸长的直线上的像素点的数量,即像素密度.不同的设备,dpi值不同,显示效果不同,dpi的值跟设备硬件有关.标准值是1 ...
- Android的屏幕适配
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- android – 多屏幕适配相关
android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).a ...
- android多屏幕适配注意几点
一.关于布局适配 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如 ...
最新文章
- ENBM内部测试试题 组建与维护企业网络试题
- Redis源码剖析(十一)跳表
- Java并发教程–锁定:显式锁定
- 2020非全日计算机博士,在职攻读博士是不是非常难,免考在职博士和非全日博士有什么不同...
- C++ 对引用的理解4
- 苹果无线耳机使用方法_苹果官方:如果 AirPods Pro 出现这些问题,我们将免费更换!...
- Redis-集群监控之Redis monitor
- structs2拦截器详解
- Redis简介与安装
- alt php,我怎样才能在PHP中获取a p标签的alt属性?
- Ibator生成iBATIS配置文件 DO及DAO操作记录
- 美国政府悬赏1000万美元,获取 DarkSide 勒索团伙线索
- CentOS 7 下挂载新硬盘
- 最新EyouCMS发布工具
- Windows重装为Linux
- 两张MD5值一样但实际不一样的图片
- STK开发包用法探讨
- 批处理命令和常用脚本
- 中国信号发生器行业市场供需与战略研究报告
- 负载均衡获得真实源IP的6种方法