这个页面收集的数据来自过去14天访问Google Play Store的所有设备。数据包括android版本的分布率、屏幕尺寸和密度的相关数据。
http://developer.android.com/about/dashboards/index.html#
Android运行在不同的设备上(不同的屏幕尺寸、像素密度)。Android系统提供了统一的开发环境,并为兼容每个应用的用户接口完成了大部分工作。同时,系统提供了API允许你针对特殊的屏幕尺寸和密度调整app的UI,比如你可能需要为平板电脑和手机提供不同的UI。
屏幕(screen)相关术语和概念
- Screen size(屏幕尺寸)
实际物理尺寸Actual physical size
一般来说,android将所有屏幕尺寸分为:small,normal,large,extra large.
- Screen density(屏幕密度)
某一物理范围内像素点数量,通常指dpi(dots per inch一英寸内的像素点)
一般来说,android将所有屏幕密度分为:low, medium, high, and extra high
- Orientation(排列模式)
从用户角度看屏幕的排列模式,分为风景模式和肖像模式(landscape or portrait),其实就是横向和竖向。值得注意的是,不但不同的设备默认按不同的排列模式操作,在运行中排列模式也可以根据用户旋转屏幕来回切换
- Resolution(分辨率)
屏幕上总的像素. applications do not work directly with resolution; applications should be concerned only with screen size and density, as specified by the generalized size and density groups.
- Density-independent pixel (dp 密度-非依赖像素)
虚拟像素单位,用来定义UI布局,用密度-非依赖的方式来表达布局密度或位置。
dp等于160dpi屏幕的物理像素。运行时,系统根据屏幕实际密度将dp转换成px:px = dp * (dpi / 160)。比如在240dpi的屏幕上,1dp=1.5px。你应该只使用dp作为单位,这样能确保在不同密度的屏幕上获得正确的显示。
最佳实践
对多屏幕支持的目标是,创建能同时在不同屏幕配置的设备上正确表达的APP应用。
1、设置android:layout_width和android:layout_height时,"wrap_content", "fill_parent"或者以dp为单位。同样地,使用sp设置文本size
2、代码中不要出现硬编码像素值
由于性能上的原因和为保持代码简单,android系统使用像素px作为标准单位来表示尺寸、坐标。虽然尺寸使用px表示,但值依然基于当前屏幕密度。比如,myView.getWidth()返回的值为10,在当前屏幕该视图为10像素,但在更高密度的屏幕中其值可能为15.
如果应用在运行时需要处理位图或像素值,请参考这一段
http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations
3、避免使用AbsoluteLayout(绝对布局)
不同于其他布局,绝对布局强制使用固定值定位使其跳出子视图,这就很容易导致用户方案不能兼容不同屏幕。因此,绝对布局从Android 1.5 (API Level 3)开始被deprecated。
可用相对布局代替,比如,你可以定位一个按钮出现在文本组件的右边。
4、使用特定尺寸、密度的资源
虽然系统基于当前屏幕配置扩展你的layout和drawable资源,你可能有需求为不同屏幕密度的设备分别配置相应的drawables,以达到最佳体验。在特定资源目录中配置。比如,想在medium和high密度的屏幕中显示icon。分别创建不同尺寸的icon(如100x100,150x150),置于
res/drawable-mdpi/icon.png //for medium-density screens
res/drawable-hdpi/icon.png //for high-density screens
关于合理配置的更多的信息,查看Using configuration qualifiers部分
关于android屏幕支持的详细文档,请参考
http://developer.android.com/guide/practices/screens_support.html
关于Android中dip、dp、sp、pt和px的区别,这篇文章不错
http://greatverve.cnblogs.com/archive/2011/12/27/Android-dip-dp-sp-pt-px.html
分享到:
相关推荐
Android多屏幕支持Demo
androidN多屏幕支持例子
实现Android屏幕多点触摸测试的实现功能,测试屏幕是否支持多点触摸
目前最为推荐的Android多屏幕自适应解决方案。 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是...
android触摸测试,支持多指同时划动,主要用于安卓系统下对触摸驱动的测试,代码中也加了多指坐标点的打印,可以帮助排查触摸问题。当然安卓的开发者选项中也有指针的显示界面,但自己写的代码可以灵活增加一些日志...
Android屏幕大小和精度介绍包括:多分辨率支持,术语和概念,支持的屏幕分辨率范围
Android 双屏异显(Presentation) 开发示例Demo,实现将第二个页面投屏到副屏上 具体想看我的博客 : https://blog.csdn.net/EthanCo/article/details/128662556
超实用的异显异触说明,实现双屏,还有异触摸功能,支持下
Android usb 触摸屏驱动。 usb 触摸屏的驱动 支持电阻屏和电容屏,在安卓上和linux都可以 usb touch
该Demo实现了,Android环境下的工控机连接多块显示屏之后的分屏显示。
实现了海康摄像头 Android端的二次开发支持多屏显示,这里将播放部分单独作为空间,可以轻松实现扩展
AutoLayout-Android, 支持多个屏幕的简单方法 面向Android的自动布局支持多个屏幕的简单方法。自动调整大小:每次使用屏幕尺寸时,写入。。自定义自适应策略。支持的纵横比。这里项目是来自 hongyangandroid/android...
Android 屏幕自适应方向尺寸与分辨率,包括屏幕界面布局、多分辨率支持、获取屏幕尺寸、屏幕横屏与竖屏等,android 模拟器横屏,android 虚拟机横屏,android 判断横屏,android 禁止横屏,android 强制横屏,...
Android推箱子说明支持键盘和触摸屏操作.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
支持自定义并且已经集成了很多炫酷的 Header 和 Footer. 支持和 ListView 的无缝同步滚动 和 CoordinatorLayout 的嵌套滚动 . 支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉). 支持...
DKPlayer A video player based on IjkPlayer. ------ demo下载 ------ 特性 支持直播和点播。 支持调整显示比例:默认、原始...支持多路播放器同时播放,没有任何控制UI的纯播放 抖音demo。使用 1.添加类库 gradl
Basic4android包含一个强大的GUI设计器,内建对多屏和坐标的支持,不需要开发者再写XML。开发者可以在Basic4android环境下利用Android模拟器或Android物理设备(利用USB连接或通过本地网络连接)进行程序开发和调试...
Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC、Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouch技术,对于网页缩放、手势操作上有更好的用户...
为了设计实用新型工业人机界面,...测试表明,基于优化的Android多点触摸输入系统在噪声很大环境下能够维持高信噪比(超过80∶1),并支持带手套或触笔触摸输入,反应时间小于10 ms,符合工业人机界面(HMI)设计要求。
Android游戏源码支持触屏和按键的推箱子是一个经典游戏-推箱子的安卓版本源码,界面做的比较简陋。试玩了一下只有两关没发现bug,如果想要开发推箱子的话可以借鉴里面的算法,游戏能后撤步骤,支持触屏或者按键操作...