android区分pad还是phone设备

android是通过屏幕尺寸来区分到底是pad还是phone设备的,那么android是如何知道屏幕尺寸的呢?(屏幕尺寸指屏幕对角线的长度英寸)
是通过屏幕分辨率和屏幕密度的一个公式计算得到的。
分辨率与屏幕尺寸的换算:首先要了解Android分辨率相关基础概念 

术语

说明

备注

Screen size(屏幕尺寸)

指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸

摩托罗拉milestone手机是3.7英寸

Aspect Ratio(宽高比率)

指的是实际的物理尺寸宽高比率,分为longnolong

Milestone169,属于long

Resolution(分辨率)

和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数

Milestone854*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)

1、屏幕分辨率是从kernel的cmdline得到。
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的<bool name="config_showNavigationBar">true</bool>为true,这样就可以显示触摸版
导航键。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值