6.1 屏幕尺寸信息

1.屏幕参数

屏幕大小:指屏幕对角线的长度,通常用“寸”来度量。例如 5.5寸手机。(1英寸=2.54厘米)
分辨率:指手机屏幕的像素点个数,例如720x1280,指宽有720个像素点,高有1280个像素点。
PPI:每英寸像素(Pixels Per Inch)又被称为DPI(Dots Per Inch)。它是有对角线的像素点除以屏幕的大小得到的,通常达到400PPI就算是比较高的屏幕密度了。

2.独立像素密度dp

Android系统使用mdpi即密度值为160的屏幕作为标准,在这个屏幕上1dp=1px,其他屏幕通过比例换算如下表。

宽×高(标准值) 240×320 320×480 480×800 720×1280 1080×1920 1440×2560
DPI等级 LDPI MDPI HDPI XHDPI XXHDPI XXXHDPI
DPI数值( 120 160 240 320 480 640
对应比例 3 4 6 8 12 16
1DP=?PX (density) 0.75 1 1.5 2 3 4

另:density和PPI的关系:density = ppi/160 = dpi/160
px = dp x density = dp x (dpi/160)
以上均为16:9的手机屏幕,18:9的手机主流分辨率为1080*2160
当控件在对应的文件夹中没有找到,就从高分辨率的文件夹依次向低分辨率的文件夹中寻找

3.单位转换工具类

public class DisplayUtil {
/**
 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
 * 

* fontScale DisplayMetrics类中属性 density */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp *

* fontScale DisplayMetrics类中属性 density */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 根据手机的分辨率从 sp 的单位 转成为 px(像素) *

* fontScale DisplayMetrics类中属性 scaledDensity */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 sp *

* fontScale DisplayMetrics类中属性 scaledDensity */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * dp2px */ public static int dpTopx(Context context, float dpValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics()); } /** * sp2px */ public static int spTopx(Context context, float spValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics()); } }

你可能感兴趣的:(6.1 屏幕尺寸信息)