zoukankan      html  css  js  c++  java
  • Android 为什么计算不出准确的屏幕尺寸的原因,及 Android 获得屏幕物理尺寸、密度及分辨率

    DPI:dots-per-inch,每英寸的像素数量。也就是说。密度越大,每英寸内容纳的点数就越多。这个值是设备自己决定并写死的。

    计算方法:获取到屏幕的分辨率:point.x和point.y。再取出屏幕的DPI(每英寸的像素数量),计算长和宽有多少英寸。即:point.x / dm.xdpi,point.y / dm.ydpi,屏幕的长和宽算出来了。再用勾股定理,计算出斜角边的长度,即屏幕尺寸。

    WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics displaysMetrics = new DisplayMetrics();
    manager.getDefaultDisplay().getMetrics(displaysMetrics);
    
    Point point = new Point();
    manager.getDefaultDisplay().getRealSize(point);
    DisplayMetrics dm = context.getResources().getDisplayMetrics();
    double x = Math.pow(point.x / dm.xdpi, 2);
    double y = Math.pow(point.y / dm.ydpi, 2);
    double screenInches = Math.sqrt(x + y);
    注意: 此处displayMetrics不要使用context.getApplicationContext().getResources().getDisplayMetrics()来获取。

    上面说到。DPI是由设备出厂时写死到设备里的,假设写入的DPI值不准确,当然计算不出准确的屏幕尺寸。这也是友盟统计里没有屏幕尺寸这一项的原因吧,所以计算出的屏幕尺寸仅仅做參考。

  • 相关阅读:
    什么是CMS
    TP3.2项目—微信推广页
    《实用技巧》——让你的网站变成响应式的3个简单步骤
    thinkphp分页带数据
    tp框架表单验证 及ajax
    tp框架做留言板
    随时修改添加,thinkphp小知识
    thinkphp使用ajax
    thinkphp修改和删除数据
    tp框架查询
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7090656.html
Copyright © 2011-2022 走看看