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. CentOS 6 网络设置修改 指定IP地址 DNS 网关

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 路由器网关:192.168.1.1 步骤: 1.查看网络MAC地址 [ro ...

  2. bzoj4276

    线段树优化建图+费用流 朴素的做法是每个强盗直接对每个区间的每个点连边,然后跑最大权匹配,这样有5000*5000条边,肯定过不去,那么我们用线段树优化一下,因为线段树能把一个O(n)的区间划分为O( ...

  3. bzoj 1511: [POI2006]OKR-Periods of Words【kmp】

    n-ne[n]是n的最长循环节长度,其实就是n-最短前缀=后缀长度 然后我们要求最短循环节,其实就是ne一直往前跳,跳到不能跳为止,这时的n-ne[n]就是n的最短循环节长度 #include< ...

  4. c++中快速排序

    (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...

  5. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  6. linux 文件 chgrp、chown、chmod

    linux 默认情况下有会提供6个terminal 来让用户登录,使用[Ctrl]+[Alt] +[F1]~[F6] 组合 linux 文件 任何一个文件都具有"user,Group及Oth ...

  7. [转]广义正交匹配追踪(gOMP)

    广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为OMP算法的一种推广,由文献[1]提出,第1作者本硕为哈工大毕业,发表此论文时在Korea University攻读博士学位 ...

  8. [Usaco2008 Dec]Patting Heads 轻拍牛头

    Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号 ...

  9. Poj 3436 ACM Computer Factory (最大流)

    题目链接: Poj 3436 ACM Computer Factory 题目描述: n个工厂,每个工厂能把电脑s态转化为d态,每个电脑有p个部件,问整个工厂系统在每个小时内最多能加工多少台电脑? 解题 ...

  10. poj 2506 Tiling 递推

    题目链接: http://poj.org/problem?id=2506 题目描述: 有2*1和2*2两种瓷片,问铺成2*n的图形有多少种方法? 解题思路: 利用递推思想,2*n可以由2*(n-1)的 ...