zoukankan      html  css  js  c++  java
  • Android 获取屏幕分辨率

    得到一个屏幕尺寸的三种方法如下:
            // 通过WindowManager获取
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);

            // 通过Resources获取 
            DisplayMetrics dm2 = getResources().getDisplayMetrics();

            // 获取屏幕的默认分辨率
            Display display = getWindowManager().getDefaultDisplay();
            System.out.println("width-display :" + display.getWidth());
            System.out.println("heigth-display :" + display.getHeight());

    安卓4.2系统中,使用方法一得到了正确的屏幕尺寸值,而使用方法二和三得到的值全部为零。原因不祥。其中方法三中的display.getWidth()和display.getHeight()已被弃用。


    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);//display = getWindowManager().getDefaultDisplay();display.getMetrics(dm)(把屏幕尺寸信息赋值给DisplayMetrics dm);
    width = dm.widthPixels;
    height = dm.heightPixels;
    xdpi = dm.xdpi;
    ydpi = dm.ydpi;
    density = dm.densityDpi;
    fdensity = dm.density;


    查询log,得到各值如下:
    D/Lichking(22643): -----------widthpixels---540
    D/Lichking(22643): -----------heightpixels---960
    D/Lichking(22643): -----------xdpi---244.92857
    D/Lichking(22643): -----------ydpi---246.30302
    D/Lichking(22643): -----------density---240
    D/Lichking(22643): -----------fdensity---1.5
    另提一点,我们通常所指的屏幕上的int尺寸是像素单位,比如我用getHitRect()得到控件的矩形坐标的值即使和像素尺寸相匹配的。

    DisplayMetrics和Display的关系。
    Display指代显示区域这个对象,它可能是真实的物理屏幕,也可能仅指应用程序的显示区域,比如在非全屏Activity里,系统因为有状态栏,因此显示区域要比物理屏幕要小。DisplayMetrics里封装了显示区域的各种属性值。查看源码发现,在DisplayMetrics对各个属性值的注释都说明为真实的物理尺寸。而且也发现display.getMetrics(dm)这一函数基本在应用在获取真实屏幕尺寸的时候。记住这一点即好。


    另外xdpi不是指屏幕宽度上以dp为单位的大小。以dp为单位的屏幕宽度需用计算公式:dpWidth = WidthPixels / fdensity = 540 / 1.5 = 360

  • 相关阅读:
    HDU 4725 The Shortest Path in Nya Graph(优先队列+dijkstra)
    POJ 3216 Repairing Company(二分图匹配)
    POJ 3414 Pots(bfs打印路径)
    POJ 3278 Catch That Cow(bfs)
    poj 3009 curling2.0 (dfs)
    用“道”的思想解决费用流问题---取/不取皆是取 (有下界->有上界) / ACdreamoj 1171
    hdu2448 / 费用流 / harbin赛区c题
    大数类模板(+-*/%等等)
    hdu4619 / 最大独立集
    hdu4888 多校B 最大流以及最大流唯一判断+输出方案
  • 原文地址:https://www.cnblogs.com/yaya-Android/p/4532888.html
Copyright © 2011-2022 走看看