Android源码之DisplayMetrix
来源:互联网 发布:第二国际 知乎 编辑:程序博客网 时间:2024/06/07 22:31
DisplayMetrix是Android下关于显示屏信息的结构类,包括显示屏大小、密度等等。
DisplayMetrix中没有什么方法,在实际应用中主要使用其内部的几个public成员变量,其定义如下:
public static final int DENSITY_LOW = 120;
public static final int DENSITY_MEDIUM = 160;
public static final int DENSITY_HIGH = 240;
上面三个是关于密度定义的常量
public static final int DENSITY_DEFAULT = DENSITY_MEDIUM;
默认密度为DENSITY_MEDIUM
public int widthPixels; //X方向宽度,单位为pxpublic int heightPixels; //Y方向高度,单位为pxpublic float density; //逻辑密度,以DENSITY_MEDIUM(160)为基准,即实际大小为density*DENSITY_MEDIUM。在代码中的常用单位dip //与此的关系是:1px = density * 1dip。比如在代码中定义长度为16dip,density为1.5,那么在实际显示时,其占据 //的屏幕大小为16 * 1.5 = 24pxpublic int densityDpi; //DPI密度,density = densityDpi / DENSITY_MEDIUM;public float scaledDensity; //字体缩放密度,还不知道具体含义public float xdpi; //X方向的dpipublic float ydpi; //Y方向的dpi
这几个成员中,最主要的是density,不过density可以通过xdpi和ydpi来求得,即简单的勾股定理:
density = Math.sqrt(Math.pow(xdpi, 2), Math.pow(ydpi, 2)) / DENSITY_MEDIUM;
通过这几个变量,也可以求得设备的尺寸,步骤如下:
1、计算X方向的宽度:x = widthPixels / xdpi;
2、计算Y方向的高度,y = heightPixels / ydpi;
3、勾股定理:size = Math.sqrt(Math.pow(x, 2), Math.pow(y, 2)) //这里设备尺寸指对角线长度
在三星Galaxy Tab P1000上测试:
widthPixels = 600
heightPixels = 1024
xdpi = 168.89351
ydpi = 169.33333
求得屏幕尺寸为7寸屏
注:从网上看到有下面求屏幕尺寸的方法:
这种方法是错误的,因为diagonalPixels是屏幕对角线长度,而density*160是每inch的pixel,是单位正方形的对角线,两者根本不能做除法。
附:Android分辨率相关基础概念:
源码下载:http://download.csdn.net/detail/lxgwm2008/5234067
- Android源码之DisplayMetrix
- android之源码结构
- Android源码之Observable
- Android源码之Cursor
- Android源码之Parcel
- Android源码之Parcelable
- Android源码之Matrix
- Android源码之高仿爱奇艺
- Android 之源码
- android源码之单列
- android源码之Builder
- Android源码之高仿爱奇艺
- Android源码之ArrayList
- Android源码之陌陌源码
- Android源码之陌陌源码
- Android源码之陌陌项目源码
- Android源码之陌陌源码
- Android源码探究之AsyncTask 源码解析
- source insight 查找功能
- 信号值强度值dBm详解
- Oracle语法 Nulls First Nulls Last
- Maven4Myeclipse10.7.1搭建SSH2-part2:创建MavenStruts2.3.12
- Android使用Application总结
- Android源码之DisplayMetrix
- bourne shell 与bash的区别
- Linux安装程序Anaconda分析
- 学点设计模式-多例模式
- 我的创业梦想
- poj 1163
- 关于svn
- Wireshark基本介绍和学习TCP三次握手
- 常用的状态(信息)保持方式(重点)