Android屏幕尺寸学习经验(一)

屏幕尺寸信息

首先我们要了解屏幕的参数

1.屏幕大小
指屏幕对角线的长度,通常称为”寸”

2.分辨率
是指手机屏幕的像素点个数,例如720x1280则指分辨率;720个像素点;1280个像素点

3.PPI
每个英寸(pix per inch) 又称DPI。它是由对角线的像素点数除以屏幕的大小得到的。

Paste_Image.png

在Android中如果要精确到每种dpi屏幕基本不可能,那么就按照几个标准的dpi来做标准

密度 ldpi mdpi hdpi xhdpi xxhdpi

密度值 120 160 240 320 480
分辨率 240x320 320x480 480x800 720x1280 1080x1920

密度值 = (宽)^2 + (高)^2 ——再开根 / 手机对应的尺寸
也就是得到对角线的值

dp = 密度值/160;-----这边补充一下

mdpi = 1px ; hdpi =1.5px ; xhdpi = 2px ; xxhdpi = 3px

那么 560dpi = 2.8px(约等于1920和1080 5寸的手机)

Android中正是由于不同的密度(dpi),导致同样的像素大小的长度(就是长宽一样的手机),在不同的dpi中显示的长宽不同。

单位换算(xxxx表示你要换算的值)

PX>>>DP在
final float value = Context.getResources().getDisplayMetrics().density
(int) result = xxxx/value +0.5f(f是float)
DP>>>PX
(int) result = xxxx * value +0.5f
PX>>>SP
final float value01 = context.getResources().getDisplayMetrices().scaledDenSity
(int) result = xxxx/value01 + 0.5f
SP>>>PX
(int) float result = xxxx * value01 + 0.5f

实际应用中我们会遇到的一些问题:
例如轮播图 :UI设计的时候已iPhone6 为基准设计分辨率为:1334x750 密度为 326ppi这边我们就不要管密度 UI设计的轮播图尺寸为750:400 这时候有的人可能用(宽和高)的比例来计算 ;这样那么问题来了如果Android手机分辨率如720x1280 做的时候显然不妥;我个人的解决方案则是用(400 / 1334–UI设计用的手机高度) 这样的比例来进行处理,这里面需要注意的是因为Android手机的宽高都不等侧需要动态对比(java代码实现)获取实际的轮播图的高度了。——-浅谈个人的一个觉得不错的方法。


Paste_Image.png

你可能感兴趣的:(Android屏幕尺寸学习经验(一))