上篇介绍了 Android手机分辨率基础知识(DPI,DIP计算) 想了很多,也查了很多资料不知道如何区分android设备是phone还是pad,android中没有提供固定的方法,有人说用android版本号判断,可是现在android设备很多都在升级系统,没有固定标准,有人说用分辨路

上篇介绍了Android手机分辨率基础知识(DPI,DIP计算)想了很多,也查了很多资料不知道如何区分android设备是phone还是pad,android中没有提供固定的方法,有人说用android版本号判断,可是现在android设备很多都在升级系统,没有固定标准,有人说用分辨路,说800*480以上的一般都是pad使用,可是现在很多高分辨率的手机比如三星galaxy

NOTE就采用了1280*800 分辨率,屏幕是5.3寸,但是我们看,一般手机屏幕都比较小(相对pad而言),一般手机尺寸都在6英寸以下,而pad多是6英寸以上,好,下面就根据这个标准来判断:

出发点:Android系统本身是支持多种分辨率的,如图1所示,一般情况下要适配不同尺寸的设备只需要做两件事,1. 根据4种不同的屏幕尺寸提供4套UI布局(layout)。 2. 根据4种不同屏幕像素密度(单位英寸的像素值)提供4套界面元素的图片。

图1 Android屏幕分类

而实际应用合并过程中存在的问题是:同一个应用对应的手机和平板界面设计是完全不一样的,如何根据屏幕的大小来决定提供哪一套界面是一件很头疼的事情。

目的:根据分辨率来区分手机和平板的不合理性在于:

1. 分辨率高但是物理屏幕尺寸小的设备(比如三星5.3寸的galaxy NOTE1280*800 手机)采用平板布局后的可点击界面元素太小,很难点中。

2. 分辨率小但是物理屏幕尺寸大的设备采用手机布局后界面元素过大,显得整体UI粗糙。

所以目前通过屏幕尺寸来区分手机和平板相对合理,主要目的是验证如下调整的可行性

分辨率与屏幕尺寸的换算:首先要了解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)

手机像素密度(density)实际上是以单位英寸160个像素作为参考标准,主要密度有0.75,1,1.5和2,当密度为2时就表示1英寸有320个像素,Android中通过代码可以获取到屏幕的像素值和密度,根据这些值就可以反向算出屏幕的物理尺寸

屏幕尺寸=屏幕对角线的像素值/(密度*160)= Math.sqrt(长*长+宽*宽)/ (密度*160)

实践过程:

由于Android设备中获取的密度density本身是个约等于的数值,比如计算出密度的准确值density=1.575,实际在代码中读到的density=1.5, 需要实现一个简单的计算屏幕尺寸的应用在不同设备上验证物理尺寸准确程度,具体代码如下:

实践结果:几个不同设备(手机和平板)的测试结果如下:

结论:手机上根据分辨率反向算出的屏幕物理尺寸比较准确,平板则误差较大,但是结果基本上是大于6寸,以上根据物理尺寸区分手机和平板的方法目前来看是可行的。

android设备类型,android根据屏幕尺寸区分设备类型,phone或者pad - yuanyuan相关推荐

  1. android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...

    我需要能够知道屏幕的确切大小,不包括软件导航栏.我正在使用andengine来制作游戏. 我们希望全力支持新的Nexus系列(4,7和10) 根据许多人指出的this page,软件导航栏的大小应为4 ...

  2. 魅蓝x android,魅蓝X的屏幕尺寸是多少?分辨率是多少?

    魅蓝X的屏幕尺寸是多少 魅蓝X的屏幕尺寸是5.5英寸. 针对魅蓝X的屏幕尺寸是多少的问题,魅蓝X的指纹识别模块有着不错的识别速度和识别正确率,即使在湿手的情况下也能快速解锁手机屏幕,另外,指纹模块还支 ...

  3. 创建支持多种屏幕尺寸的Android应用

    负责人:冰凝 原文链接:http://developer.android.com/guide/practices/screens_support.html Android涉及各种各样的支持不同屏幕尺寸 ...

  4. qt android图片自适应大小,Qt on Android:怎样适应不同的屏幕尺寸

    使用 Qt 开发的 Android 应用,怎样适应 Android 智能手机各种各样的屏幕尺寸? 说到屏幕尺寸,从 2.8 吋到 8.9 吋的手机屏幕都有,这对程序猿们来讲痛苦可不只一点. Andro ...

  5. ym——Android怎样支持多种屏幕

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 原文链接:http://developer.android.com/guide/pra ...

  6. Android如何支持多种屏幕

    支持多屏 Android涉及各种各样的支持不同屏幕尺寸和密度的设备.对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的用户界面到它显示的屏上.与此同时 ...

  7. ym——Android如何支持多种屏幕

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 原文链接:http://developer.android.com/guide/pra ...

  8. Android适配 获取手机屏幕的分辨率

    如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<man ...

  9. Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕尺寸

    原文地址:http://android.xsoftlab.net/training/multiscreen/index.html 引言 Android运行于数以百计不同尺寸的设备上.范围小到手持移动电 ...

最新文章

  1. TensorFlow基础笔记(11) max_pool2D函数 深度学习
  2. 1-2 postman工具简介
  3. Java静态方法与非静态方法的泛型
  4. spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化
  5. Python之OS模块进程管理介绍--os.fork()
  6. 装linux服务器进去配置界面,在CentOS 8 Linux上安装和配置SuiteCRM的步骤
  7. Coaching 企业教练
  8. 火到爆的扩散模型(Diffusion Model)帮你具象化幻想世界
  9. 总结:IDEA如何解析wsdl文件为Java源代码
  10. C语言输出素数表(1-100)前100个
  11. 高仿京东分类效果(Scroll+Fragment)
  12. 漂亮得不像触控板,全新 Magic Trackpad 2
  13. 计算几何——扇形面积
  14. SpringBoot使用AOP记录接口操作日志
  15. 群晖Docker部署MySQL服务
  16. RecyclerView中的Item无法填充满的问题
  17. 【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)
  18. 【文件上传绕过】——二次渲染漏洞
  19. PyBullet(六)UR5机器人手臂模型
  20. 实战小米官网静态页面1:导航栏部分

热门文章

  1. 永信至诚蓝莲花绽放2016“启明星辰杯”四川大学生信息安全技术大赛
  2. 45RF SOI CMOS
  3. C++ 开源协程库 libco——原理及应用
  4. STC89C52RC - 12 - 静、动数码管显示
  5. 洛谷P1751贪吃虫
  6. C#键盘事件处理(来源网上)
  7. deepin linux软件,深度软件包安装器
  8. 基于51单片机智能热水器控制系统设计
  9. 【雕爷学编程】Arduino动手做(64)---RGB全彩LED模块
  10. SparkSQL 创建 DataFrame 的方式