zoukankan      html  css  js  c++  java
  • DPI 计算及速查表

    【来源】ExMobi 二次开发手册

    手机屏幕根据密度范围分为五种:低、中、高、超高、超超高,为了确保界面元素在不同的屏幕都能合适的展示,在设计界面元素的 UI 时,UI 工程师建议统一采用 dpi (Dots Per Inch) 来定义界面元素。

    计算手机dpi,需要知道手机屏幕尺寸和手机分辨率。即

     

    手机分辨率 屏幕尺寸(Inch) 实际 DPI 分屏 DPI 值
    480 x 800 4 英寸 233 高分屏 [188,300) 240
    480 x 854 3.7 英寸 265 高分屏 [188,300) 240
    1024 x 768 9.7 英寸 132 中分屏 [121,188) 160
    320 x 480 3.5 英寸 165 中分屏 [121,188) 160
    640 x 960 3.5 英寸 330 超高分屏 [300,420) 320
    1920 x 1080 5 英寸 440 超超高分屏 [420, ) 480

     

     

     

     

     

     

    【示例】

    三星 i9000,屏幕尺寸 4 英寸,分辨率 480 * 800。套入公式

    计算结果取近似值 233,即三星 i9000 的 dpi 为 233。介于高分屏区间 [188,300],所以取 240.

    在实际设计中,UI 度量单位以 640*960 设计图为基准,测量实际尺寸除以 2。现在以 720*1280 设计图为基准。

     1 /**
     2      * 获得屏幕相对的宽度和高度<br />
     3      * 横屏时候宽度大于高度,竖屏时候高度大于宽度
     4      * 
     5      * param windowManager
     6      * return <br />
     7      *         point.x:宽度,point.y:高度
     8      */
     9     @SuppressLint("NewApi")
    10     public static Point getScreenSize(WindowManager windowManager) {
    11         Point point = new Point(0, 0);
    12         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
    13             point.x = windowManager.getDefaultDisplay().getWidth();
    14             point.y = windowManager.getDefaultDisplay().getHeight();
    15         } else {
    16             windowManager.getDefaultDisplay().getSize(point);
    17         }
    18 
    19         return point;
    20     }
    获得屏幕的宽度和密度
    public static int getScreenWidth(Context context) {  
            WindowManager manager = (WindowManager) context  
                    .getSystemService(Context.WINDOW_SERVICE);  
            Display display = manager.getDefaultDisplay();  
            return display.getWidth(); 
            
        }
        
        public static float getScreeDensity(Context context){
            WindowManager manager = (WindowManager) context  
                    .getSystemService(Context.WINDOW_SERVICE);  
            DisplayMetrics metric = new DisplayMetrics();
            manager.getDefaultDisplay().getMetrics(metric);
    
            float density = metric.density;  // 密度(0.75 / 1.0 / 1.5 / 2.0)
            //int densityDpi = metric.densityDpi;
            return density;
        }

    根据屏幕大小调整尺寸

    1 // 根据屏幕和图片大小调整显示尺寸
    2             int justShowViewHeight = mScreenSize.x * 150 / 640;
    3             LayoutParams justShowParams = mJustShowImg.getLayoutParams();
    4             justShowParams.height = justShowViewHeight;
    5             mJustShowImg.setLayoutParams(justShowParams);
    6             Picasso.with(mActivity).load(R.drawable.fragment_main_justshow).into(mJustShowImg);
  • 相关阅读:
    微软系统及开发工具官方下载地址
    Office2010文档的MIME类型
    Android开发中Activity的生命周期
    DWZ框架POST方式提交Form提示JSON文件下载
    JAVA开发环境搭建
    FastJSON解析.Net生成的JSON字符串
    SQL Server 2008 如何更改服务器身份验证模式
    如何快速解决IIS中发布的网站不能访问。
    QlickView
    Lamabda表达式
  • 原文地址:https://www.cnblogs.com/renzimu/p/4752926.html
Copyright © 2011-2022 走看看