Android项目开发中很多时候需要获取手机屏幕的宽高以及屏幕密度来进行动态布局,这里总结了三种获取屏幕大小和屏幕密度的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 获取屏幕密度(方法1) 
        int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();       // 屏幕宽(像素,如:480px) 
        int screenHeight = getWindowManager().getDefaultDisplay().getHeight();      // 屏幕高(像素,如:800p) 
           
        Log.e(TAG + "  getDefaultDisplay""screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); 
         
        // 获取屏幕密度(方法2) 
        DisplayMetrics dm = new DisplayMetrics(); 
        dm = getResources().getDisplayMetrics(); 
           
        float density  = dm.density;        // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 
        int densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320) 
        float xdpi = dm.xdpi;            
        float ydpi = dm.ydpi; 
           
        Log.e(TAG + "  DisplayMetrics""xdpi=" + xdpi + "; ydpi=" + ydpi); 
        Log.e(TAG + "  DisplayMetrics""density=" + density + "; densityDPI=" + densityDPI); 
           
        screenWidth  = dm.widthPixels;      // 屏幕宽(像素,如:480px) 
        screenHeight = dm.heightPixels;     // 屏幕高(像素,如:800px) 
           
        Log.e(TAG + "  DisplayMetrics""screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
         
        // 获取屏幕密度(方法3) 
        dm = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(dm); 
           
        density  = dm.density;      // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 
        densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320) 
        xdpi = dm.xdpi;          
        ydpi = dm.ydpi; 
           
        Log.e(TAG + "  DisplayMetrics""xdpi=" + xdpi + "; ydpi=" + ydpi); 
        Log.e(TAG + "  DisplayMetrics""density=" + density + "; densityDPI=" + densityDPI); 
           
        int screenWidthDip = dm.widthPixels;        // 屏幕宽(dip,如:320dip) 
        int screenHeightDip = dm.heightPixels;      // 屏幕宽(dip,如:533dip) 
           
        Log.e(TAG + "  DisplayMetrics""screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip); 
           
        screenWidth  = (int)(dm.widthPixels * density + 0.5f);      // 屏幕宽(px,如:480px) 
        screenHeight = (int)(dm.heightPixels * density + 0.5f);     // 屏幕高(px,如:800px) 
           
        Log.e(TAG + "  DisplayMetrics""screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);

Android获取屏幕的大小与密度的代码的更多相关文章

  1. Android获取屏幕尺寸大小

    官方API: A structure describing general information about a display, such as its size, density, and fo ...

  2. Android 获取屏幕大小和密度

    Android 获取屏幕大小和密度 DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay ...

  3. Android获取屏幕大小

    本来想着如下方法就能得到了 Display display = getWindowManager().getDefaultDisplay(); Log.i("view", &quo ...

  4. Android获取屏幕大小和设置无标题栏

    android获取屏幕大小非常常用,例如写个程序,如果要做成通用性很强的程序,适用屏幕很强,一般布局的时候都是根据屏幕的长宽来定义的,所以我把这个总结一下,方便日后忘记的时候查阅.还有就是有时候写程序 ...

  5. Android 获取屏幕分辨率

    原文:Android 获取屏幕分辨率 得到一个屏幕尺寸的三种方法如下:        // 通过WindowManager获取        DisplayMetrics dm = new Displ ...

  6. C# 获取屏幕的大小

    原文地址:http://www.cnblogs.com/zp89850/archive/2011/08/23/2151052.html C# 获取屏幕的大小 WinForm: int iActulaW ...

  7. Android获取屏幕宽和高

    android获取屏幕的高度和宽度用到WindowManager这个类,两种方法:   1.WindowManager wm = (WindowManager) getContext()        ...

  8. Android 获取屏幕尺寸与密度

      android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲 ...

  9. Android 获取屏幕尺寸与密度(转载)

    android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一 ...

随机推荐

  1. Python sklearn Adaboost

    1. Adaboost类库概述 scikit-learn中Adaboost类库比较直接,就是AdaBoostClassifier和AdaBoostRegressor两个,从名字就可以看出AdaBoos ...

  2. git基本操作-常用命令

    git 忽略本地文件 告诉git忽略对已经纳入版本管理的文件 .classpath 的修改,git 会一直忽略此文件直到重新告诉 git 可以再次跟踪此文件$ git update-index --a ...

  3. python的安装教学

    1.首先登陆到python的官方网站 https://www.python.org/ 2.鼠标放在Download上,点击下面对应的型号,我的是Windows 3.点击Windows到此页面,点击3. ...

  4. 使用了eclipse10年之后,我终于投向了IDEA

    使用了eclipse10年之后,我终于投向了IDEA 最近,改用了idea,同事都说我投敌了.当然,这些同事都是和我一样的"老"程序员.不说毕业生,公司里的90后基本电脑都不会安装 ...

  5. 如何实现Docker镜像和容器实例的备份迁移

    题记 大家在使用Docker都会从容器仓库下载镜像,不过这个过程可能依据网络带宽而定,那么如果将一个已经下载好的镜像迁移到另外一个环境中,或者说如何实现Docker容器的备份恢复,或者迁移,接下来我们 ...

  6. 编译原理 LR分析(主要是LR(0)分析)

    一.LR分析的基本原理 1.LR分析的基本思想 LR方法的基本思想就是,在规范归约的过程中,一方面要记住已移进和归约出的整个字符串,也就是说要记住历史:一方面能够根据所用的产生式的推测未来可能碰到的输 ...

  7. 题解报告:NYOJ 题目139 我排第几个(康托展开)

    描述 现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的? 输入 第一行有一个整数n(0<n<=1 ...

  8. 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...

  9. DateFormat类

    package Format_daqo; import java.util.Date; import java.text.DateFormat; public class DateFormatTest ...

  10. 对char类型的数组进行冒泡排序

    package maopaopaixu; import java.util.Arrays; import java.util.Scanner; public class Demo02 { public ...