美文网首页
6.1 屏幕尺寸信息

6.1 屏幕尺寸信息

作者: 贝贝ovo | 来源:发表于2018-07-04 23:35 被阅读19次

    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(像素)
     * <p>
     * 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
     * <p>
     * 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(像素)
     * <p>
     * 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
     * <p>
     * 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 屏幕尺寸信息

          本文链接:https://www.haomeiwen.com/subject/owzyuftx.html