Supporting Different Screens

Android用两种常规属性来分类设备屏幕:尺寸和像素密度。作为开发者,你应当预料到你的android应用程序将会被安装到不同屏幕尺寸和像素密度的设备上。因此,你的应用应当包含可选的资源来优化应用外观,以便支持上述不同尺寸和像素密度的设备。

* 有四种广义的尺寸:small, normal, large, xlarge。

* 同样也有四种广义的像素密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。

为了声明用于不同屏幕的不同layouts布局和bitmaps资源,你必须把这些可选的资源文件分别放在不同的目录,这一点类似于你在国际化时不同语言strings的操作。

同时要注意屏幕的方向(landscape or portrait)也被认为是一种屏幕尺寸的变化,所以大多数应用都应该修改layout布局来提高用户在不同屏幕方向上的体验。

创建不同的Layout布局文件-Create Different Layouts

为了提高在不同设备屏幕上的用户体验,你应当为每一种你想要支持的屏幕尺寸创建一个独有的XML布局文件。每一布局文件应当存放到恰当的资源目录下,该目录以屏幕尺寸-作为后缀。例如,一个用于大屏幕的布局文件应当放在res/layout-large/目录下面。

注:Android会自动缩放你的布局以便适配屏幕。这样,用于不同屏幕的布局文件就不必过多考虑UI元素的绝对大小,相反应当关注于布局的结构,这将直接影响用户体验(比如重要view视图的大小或位置应当相对于同级view视图)。

例如,下面的项目包含了一个默认的layout和一个可选的用于大屏幕的layout目录:

MyProject/

res/

layout/

main.xml

layout-large/

main.xml

目录中的布局文件名必须保持一致,但是它们的内容可以不同,以便提供优化的UI来支持相对应的屏幕尺寸。

像往常一样在app中简单地获得layout布局文件的引用:

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

Android系统将根据你的app应用所运行设备的屏幕尺寸从适当的layout目录加载布局文件。更多关于Android系统如何选择适当的资源文件可以在 Providing Resources | 资源提供 - Providing Resources 指导中获取。

下面是另外一个案例,在这个项目中使用了可选的横向布局来支持横向屏幕:

MyProject/

res/

layout/

main.xml

layout-land/

main.xml

缺省情况下,layout/main.xml文件是垂直方向布局的。

如果你想提供一个特殊的横向布局,比如支持大屏幕,你需要同时使用large和land来修饰。

MyProject/

res/

layout/              # default(portrait)

main.xml

layout-land/         # landscape

main.xml

layout-large/        # large (portrait)

main.xml

layout-large-land/   # large landscape

main.xml

注:*Android 3.2 及以上版本支持一种更好的方法来定义屏幕尺寸,它允许我们在与密度无关的像素情况下通过最小宽度和高度来为不同屏幕指定资源在。本章节中我们没有涉及该新特性。如果想获得更多相关信息,请阅读Designing for Multiple Screens | 多屏幕适配设计 - Designing for Multiple Screens

创建不同的Bitmaps资源-Create Different Bitmaps

你应当为所有广义像素密度中的每一种都提供已经缩放好的适当的bitmap资源:低low, 中medium, 高high以及特高extra-high像素密度。这将使你的应用在所有分辨率的设备上都获得优良的图形质量和呈现效果。

为了生成这些图片资源,你应当以矢量图的格式来制作原始图片资源,然后根据下面的缩放尺寸生成每一种分辨率的图片:

特高分辨率xhdpi: 2.0

高分辨率hdpi: 1.5

中分辨率mdpi: 1.0 (基准)

低分辨率ldpi: 0.75

这意味着如果你要为特高分辨率设备生成一张200x200的图片,那么你需要为高分辨率设备生成150x150,中分辨率设备生成100x100,低分辨率设备生成

75x75的图片。

然后把这些文件放置到恰当的资源目录:

MyProject/

res/

drawable-xhdpi/

awesomeimage.png

drawable-hdpi/

awesomeimage.png

drawable-mdpi/

awesomeimage.png

drawable-ldpi/

awesomeimage.png

以后在你引用@drawable/awesomeimage时,系统将根据设备的分辨率自动选择适当的图片资源。

注:低分辨率(ldpi)的资源并不总是必需的。当你提供高分辨率资源时,系统将把它们对半缩放来适配低分辨率设备。

获取更多关于创建应用图标的技巧和设计指导,可以查看Iconography design guide|图标设计指南-Iconography design guide。

【编辑推荐】

【责任编辑:张叶青 TEL:(010)68476606】

点赞 0

android 布局 不同屏幕大小,如何创建支持不同屏幕尺寸的Android应用相关推荐

  1. 如何创建支持不同屏幕尺寸的Android应用(转载)

    2019独角兽企业重金招聘Python工程师标准>>> 源地址:http://wiki.eoe.cn/page/Supporting_Different_Screens Suppor ...

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

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

  3. 安卓关于不同屏幕大小的解决方案-支持多屏

    转载: http://blog.csdn.net/zhaokaiqiang1992 由于Android设备的碎片特性,关于屏幕适配的话题一直绵绵不休,这篇文章是Android开发者官网的屏幕适配教程, ...

  4. android 布局 缩小图片大小,三大布局的基本摆放属性总结,以及imageVIew图片摆放的缩放问题...

    (一)三大布局 1.FrameLayout帧布局 Android中最简单的一种布局,默认都是放在帧布局的左上角,通过android:layout_gravity来决定子控件的位置 2.LinearLa ...

  5. vue适配不同屏幕大小_Cocos creator面试题 屏幕适配的3个小技巧

    引言 cocos creator是什么? Cocos Creator 是触控科技旗下的产品,以内容创作为核心的游戏开发工具,在 Cocos2d-x 基础上实现了彻底脚本化.组件化和数据驱动等特点. 屏 ...

  6. php自动适应屏幕大小,如何解决js获取屏幕大小并且让图片自适应的方法

    在写h5页面的时候,经常会需要将图片自适应大小,一般都是用等比例的缩放,这就有个问题,当上传的图片不是一个规格时就会出现展示图片不完美. 为了解决这个问题,我们可以通过js去获取图片的大小,然后在根据 ...

  7. 《前端》解决背景适配不同屏幕大小,如何解决因屏幕大小的不同而导致背景的放大或缩小。

    目录 一.问题描述: 1.多了一段滚动距离 ​2.换大屏时背景就变小了 二.需要了解知识 三.解决: 1.HTML上: 2.css上: 四.效果: 一.问题描述: 最近小编在编程时遇到一个问题,放了一 ...

  8. android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。

    前言,本文通过修改framework代码实现,单纯在app上是无法做到的,此外本文修改的是安卓9.0源码. 1.安卓app中通过代码修改屏幕亮度的方法. 可能需要的权限: 设置屏幕亮度: /** * ...

  9. android 布局覆盖 超出一部分_谈谈移动端屏幕适配的几种方法

    文/腾讯 莫振中 移动端web开发相对于PC端web开发,我们可以庆幸不用兼容那么多浏览器了,但是随之而来的却是各种屏幕尺寸的适配,个人觉得,比PC端还要费精力.在使用了腾讯优测进行软件测试后,问题得 ...

最新文章

  1. PTA 03-树1 树的同构 (25分)
  2. c语言 switch语句大小,C语言switch语句(板式整齐)
  3. NYOJ 155 求高精度幂
  4. Qt for Android创建AndroidManifest.xml和Java类文件
  5. TOMCAT部署项目的方式
  6. 计算机应用基础教程作业脑图 车辆工程学院 冯大昕
  7. 解释为脑瘫的那张图_Python GIL全局解释器锁详解(深度剖析)
  8. 求最大公约数问题(信息学奥赛一本通-T1207)
  9. 前端那些事之Nuxt.js
  10. 如何去除快捷方式上的小箭头
  11. 学习过程,简单记录,不求详尽,看懂就行,格式随意,高效学习
  12. Makefile 教程
  13. [转]win10 vs2010安装教程(超详细,附下载链接)
  14. 阅读STC(宏晶)公司的芯片手册知识
  15. educoder考试可以切屏吗_线上考试真的好多人作弊吗?
  16. 成功解决ERROR: Command errored out with exit status 1:    command: 'f:\program files\python\python36\pyt
  17. 【0226】信息安全与密码技术
  18. marker 上的气泡 callout属性设置无效
  19. 干货,主流大数据技术总结
  20. 联想笔记本一键还原出现 “系统分区结构发生改变,无法进行恢复操作”怎样处理。

热门文章

  1. Docker 领衔 OpenSource.com 2014十佳开源软件排行榜
  2. [细说Java](3)创建字符串是使用quot; quot;还是构造函数?
  3. eclipse build慢问题
  4. 1月2日金象山滑雪(图片)
  5. jqGrid获取一行数据的方法
  6. 深度链接对社会化营销有哪些价值和作用?
  7. 剑指offer——二叉搜索树的后序遍历序列
  8. TP框架多上传域上传图片
  9. 代码jquery分享一款jquery加载csv文件的代码
  10. BSTR与CString之前的转换