美文网首页Android
android-屏幕适配

android-屏幕适配

作者: 宏伟de890926 | 来源:发表于2018-04-21 22:29 被阅读3次

    Android

    单位

        px(pixels):(像素) 屏幕上可见像素点
        dip/dp(Density independent pixels): 设备无关像素的长度单位。
        sp(放大像素):scaled pixels,字体显示 best for text size (字体大小设置而变化)
        
        dpi:(dots per inch )一英寸多少个像素点。常见取值 120,160,240。像素密度
        density:密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)
        
        in (英寸):长度单位
        mm(毫米):长度单位
        pt:point(磅)一个标准的长度单位,1pt = 1/72英寸
    

    适配

    • TypedValue
      • applyDimension
        public static float applyDimension(int unit, float value,
                                           DisplayMetrics metrics)
        {
            switch (unit) {
            case COMPLEX_UNIT_PX:
                return value;
            case COMPLEX_UNIT_DIP:
                return value * metrics.density;
            case COMPLEX_UNIT_SP:
                return value * metrics.scaledDensity;
            case COMPLEX_UNIT_PT:
                return value * metrics.xdpi * (1.0f/72);
            case COMPLEX_UNIT_IN:
                return value * metrics.xdpi;
            case COMPLEX_UNIT_MM:
                return value * metrics.xdpi * (1.0f/25.4f);
            }
            return 0;
        }
    

    • 计算
      5.2英寸,分辨率为1080×1920

        屏幕尺寸->屏幕对角线长度,多以英寸为单位->5.2 in
        
        物理宽度->1080/√ ̄(1080×1080+1920×1920)=w/5.2->1080/√ ̄(1080×1080+1920×1920) * 5.2=2.55
        
        dpi = 对角线像素点数(根据分辨率通过勾股定理获取)/屏幕尺寸
        像素密度dpi->√ ̄(1080×1080+1920×1920)/5.2=423.635->420dpi
        or
        1080/2.55=423.529->420dpi (px/in) 
        
        密度density->dpi/160=2.625->0.75 1 2 3
        
        sp->sp*dpi/160=px->sp*density=px->

    相关文章

      网友评论

        本文标题:android-屏幕适配

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