android区分pad还是phone设备
是通过屏幕分辨率和屏幕密度的一个公式计算得到的。
分辨率与屏幕尺寸的换算:首先要了解Android分辨率相关基础概念
术语 | 说明 | 备注 |
Screen size(屏幕尺寸) | 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 | 摩托罗拉milestone手机是3.7英寸 |
Aspect Ratio(宽高比率) | 指的是实际的物理尺寸宽高比率,分为long和nolong | Milestone是16:9,属于long |
Resolution(分辨率) | 和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数 | Milestone是854*480 |
DPI(dot per inch) | 每英寸像素数,如120dpi,160dpi等,假设QVGA(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160 | 可以反映屏幕的清晰度,用于缩放UI的 |
Density(密度) | 屏幕里像素值浓度,resolution/Screen size可以反映出手机密度, |
|
Density-independent pixel (dip) | 指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160) |
|
1、屏幕实际单位英寸像素数(lcd_density),可以通过设perporty "ro.sf.lcd_density" 来修改,一般有120,160,240,320这几种。如果没有设置,android默认为160。
2、手机像素密度(density)实际上是以单位英寸160个像素作为参考标准,用实际单位英寸像素数/参考标准(160)得到密度,主要密度有0.75,1,1.5和2,当密度为2时就表示1英寸有320个像素,Android中通过代码可以获取到屏幕的像素值和密度,根据这些值就可以反向算出屏幕的物理尺寸 。
屏幕尺寸=屏幕对角线的像素值/(密度*160)= Math.sqrt(长*长+宽*宽)/ (密度*160)
2、屏幕对角线的像素值^2 = 屏幕长^2 + 屏幕宽^2
在frameworks/base/core/java/android/util/DisplayMetrics.java和
frameworks/base/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp中得到各种值。
当你修改了perporty "ro.sf.lcd_density" 来设置使用phone的界面显示时,可能你的设备没有物理的导航键,你需要修改 frameworks/base/core/res/res/values/config.xml的
更多相关文章
- Transformer Prime 变形平板:10 寸 Super IPS+ 屏幕、12 小时电力
- Android屏幕像素转换
- android 获取屏幕尺寸大小
- android去掉标题栏、信息栏、获取屏幕分辨率、图片全屏
- Android(十):屏幕相关操作
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
- android 横向滚动屏幕实现(3)