android的多屏支持

这个页面收集的数据来自过去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

猜你喜欢

转载自xin3336019-sina-com.iteye.com/blog/1920986