原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/screens.html#create-bitmaps

Android设备屏幕分为两个通用的属性:尺寸和密度。你应该期待应用将会被安装在屏幕的密度和尺寸都在范围内的设备上。正因为这样,你应该包含一些可替换的资源,以便应用在不同尺寸的屏幕和不同密度的屏幕效果最优。

  • 有4种普遍屏幕尺寸:small, normal, large, xlarge。、
  • 还有4种普遍的屏幕密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。

为了对不同的屏幕声明使用不同的布局和图像,你必须将这些备选资源分开放置,和不同的语言字符串很类似。

这里也应该意识到要考虑屏幕的方向,所以很多应用应该通过布局为不同的方向提供良好的用户体验。

创建不同的布局

为了在不同尺寸的屏幕上提升用户体验,你应该为想要支持的屏幕尺寸创建唯一的XML布局文件。
每一个布局文件应该保持在合适的资源目录下,以-< screen_size>为后缀,唯一的大屏幕布局应该被保存在目录res/layout-large下。

Note: Android为了适配屏幕会拉伸你的布局。所以,不需要关心每一种尺寸的布局元素的绝对尺寸,而应该关心布局之间的结构关系,否则会影响用户体验。

下面这个工程为大屏幕提供了一个合适的布局。

MyProject/res/layout/main.xmllayout-large/main.xml

文件名称要尽可能的准确,但是其中的内容为了不同尺寸的屏幕可以不一样。
一般在代码中简单的引用下布局文件:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);
}

系统会在应用运行的时候基于设备的屏幕尺寸加载合适的布局文件。更多关于Android如何选择合适的可用资源请参见:Providing Resources。

像其它工程一样,这个工程为水平方向提供了适当的布局:

MyProject/res/layout/main.xmllayout-land/main.xml

默认情况下,layout/main.xml被用作于默认方向。

如果需要为大屏幕的水平方向屏幕提供布局,那么你需要同时使用large和land标识符:

MyProject/res/layout/              # default (portrait)main.xmllayout-land/         # landscapemain.xmllayout-large/        # large (portrait)main.xmllayout-large-land/   # large landscapemain.xml

Note: Android 3.2及更高的版本对于支持规定的屏幕尺寸有更为先进的方法。它允许你为一定范围内的屏幕尺寸提供资源,一定范围包括自小的宽度,高度和密度。这节课不覆盖这些新知识点,有关更多信息,请参见:Designing for Multiple Screens。

创建不同的位图

你应该提供合适的位图资源给每个通用的密度区域:low, medium, high and extra-high density,这可以帮助你在所有的密度下达到良好的图像效果和性能。

为了产生这些图像,你应该根据矢量格式的真实资源来为每一种密度提供扩展尺寸:

xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75

这里的意思是说,如果你为xhdpi的设备生成了一张200x200的图像,那么你应该为hdpi生成150x150的图像,以此推类。

然后,将这些文件放入到合适的图像资源目录下:

MyProject/res/drawable-xhdpi/awesomeimage.pngdrawable-hdpi/awesomeimage.pngdrawable-mdpi/awesomeimage.pngdrawable-ldpi/awesomeimage.png

任何时候通过@drawable/awesomeimage引用图像的时候,系统会根据密度选择合适的位图图像。

Note: 低密度ldpi并不总是必须的。当你提供了hdpi的资源,系统会将hdpi资源缩小一半来适应ldpi的屏幕。

更多有关为APP创建icon资源的提示和指南,请参见:Iconography design guide.

Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的屏幕相关推荐

  1. Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/nsd-wifi-direct.html 本阶段的第一节课 U ...

  2. Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/index.html 引言 Android设备除了可以与服务器 ...

  3. Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/wifi-direct.html#permissions Wi ...

  4. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  5. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  7. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  8. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之入门指南

    入门指南 欢迎来到安卓开发训练课,在这里你可以找到一系列课程来描述如何使用现有的代码示例来重新适用到你的APP上,你可以在左侧的导航栏顶部看到在若干个大项里有若干个有组织的子项课程.(导航栏请参见官方 ...

  9. Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备

    原文地址:http://android.xsoftlab.net/training/beam-files/index.html 导言 Android允许你通过Android Beam文件传输特性在两台 ...

  10. Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的平台版本

    原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/platforms.html 每当APP使用了Android ...

最新文章

  1. 显示外部页面_前端设计-响应式页面开发基础
  2. python之lambda
  3. 《Android的设计与实现:卷I》迷你书
  4. javacript中的mvc设计模式
  5. 简单的对象序列化协议(伪代码)
  6. Linux基础管理——磁盘管理及文件系统(全)
  7. jQuery中的read 和JavaScript中 的onload函数的区别
  8. ODAC(V9.5.15) 学习笔记(十六)直接访问模式
  9. python图书管理实训报告总结_图书管理系统实训报告正文
  10. 回首13我们奋斗在14的路上
  11. 扫地机器人单扫和双扫_扫地机器人初体验 懒人神器还是逗猫的塑料玩具
  12. 一道面试题:你了解哪些编译器优化行为?知道Copy elision 、RVO吗?
  13. 【YOLACT】测试自己数据集
  14. python导入scipy库、sympy库遇到的问题及解决方式
  15. 立足信息时代起点 探索企业营销新模式
  16. AM收音机前级电路理解(调频头电路)(AM收音机输入电路)
  17. 关于.nii文件的一些处理函数
  18. 2.licheepi亲自编译内核
  19. Java数据结构03-------------链表
  20. 深入理解webpack自动刷新浏览器

热门文章

  1. Android ANR视角InputDispatcher
  2. linux内核定时器编程
  3. win2008 php mysql zend phpmyadmin_Windows2008 最新版Apache2.PHP5.MySQL6.PHPMyadmin.ZendOptimizer安装图解...
  4. STM32F7xx —— 看门狗
  5. mysql报错error2002_mysql中异常错误ERROR:2002的解决方法分享
  6. python 3d渲染_python老司机带你玩玩炫酷的3D渲染,酷毙了!
  7. 三、mongodb数据库系列——mongodb和python交互 总结
  8. Web框架——Flask系列之模板使用练习(六)
  9. openpyxl 读写 excel
  10. LeetCode 1665. 完成所有任务的最少初始能量(贪心)