android屏幕适配测试,Android屏幕尺寸详解,屏幕适配

1、重要概念

随着Android厂商对系统的不断定制,Android出现越来越多不同尺寸的手机,由于尺寸和分辨率等不同,从而导致Android的适配成为一个老大难的问题,今天我们就来聊聊Android中的屏幕尺寸。

我们先了解一下几个重要的概念:

什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?

什么是dp、dip、dpi、sp、px?他们之间的关系是什么?

什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?

(1)屏幕尺寸

屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米,

比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。

(2)屏幕分辨率

屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1960*1080。

(3)屏幕像素密度

屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

(4)dp、dip、dpi、sp、px

(1)px我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。

(2)dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准(320*480),1dip=1px,如果密度是320dpi,则1dip=2px,以此类推,关系式:px = dp * (dpi / 160)。

假如同样都是画一条320px的线,在480*800分辨率手机上显示为2/3屏幕宽度,在320*480的手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。这也是为什么在Android开发中,写布局的时候要尽量使用dp而不是px的原因。

(3)而sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。

(5)ldpi、mdpi、hdpi、xdpi、xxdpi、xxxdpi

我们先来看两张不同dpi对应的大致分辨率。

9c565e5bfad726d18689a07c4f5418f2.png

7893c39b862f9b456e763e50f7f94915.png

其中:

ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16

这个比值乘以12就得到对应屏幕密度手机桌面icon图标大小。

2、部分Android测试机分析

先看两个计算公式:

(1)dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

(2)px = dp * (dpi / 160)

在项目开发过程中,遇到屏幕很大的手机,结果显示的图标却很小,和预期不一致,例如华为机型MT1-U06。

原因是:真机屏幕的dpi会取和谷歌标准最相近的标准dpi,然后density按照最相近的dpi来定。

部分机型屏幕尺寸、分辨率计算:

(1)一加A1001 ,主屏尺寸:5.5英寸,1920×1080像素,测试为xxdpi:

dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 = √(1920² + 1080²) / 5.5 =√ 3686400 + 1166400 /5.5 = √ 4852800 /5.5 = 2202.9 /5.5 =440.6

density = dpi/160 = 440.6/160 = 2.75

就近原则,对应dpi为xxdpi,与测试结果一致。

(2)Nexus 5,屏幕尺寸:4.95英寸,分辨率是1920×1080像素(FHD),测试为xxdpi :

dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 =2202.9 /4.95 =445

density = dpi/160 = 445/160 = 2.78

同理,就近原则,对应dpi为xxdpi,与测试结果一致。

(3)华为MT1-U06,屏幕:6.1英寸(机身尺寸:64.8*129*7.69mm),像素1280×720px,对应hdpi:

dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 = √(1280² + 720²) / 6.1 =√ 1638400 + 518400 /6.1 = √ 2156800 /6.1 = 1468.6 /6.1 =240.75

density = dpi/160 = 240.75 /160 = 1.5

这个数值,刚刚好是hdpi。

(4)三星galaxy s4 ,主屏:5英寸,1920x1080像素,xxdpi:

dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 =2202.9 /5 =440.6

density = dpi/160 = 440.6/160 = 2.75

同理,就近原则,对应dpi为xxdpi,与测试结果一致。

这就说明了之前为什么屏幕大,但是图标很小的情况了。

屏幕适配实现方法:https://blog..net/meixi_android/article/details/83149377

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值