安卓训练-开始-支持不同的设备-支持不同的屏幕

支持不同的屏幕

安卓使用两种通用的属性尺寸和密度对设备屏幕进行分类。你需要预料到你的应用会安装到拥有不同尺寸不同密度的屏幕的设备上。因此,你的应用需要包含一些可选的资源来优化在不同尺寸不同密度的屏幕上的外观。

  • 四种通用尺寸:small, normal, large, xlarge
  • 四种通用密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)

为了声明不同屏幕使用的不同的布局和位图,你必须把这些备选资源放在不同的目录中,就像你为不同语言字符串做的那样。

还需注意,屏幕方向(风景画或肖像画)也认为是屏幕尺寸的的一种变化,许多应用都需要改变布局来优化不同方向的用户体验。

创建不同的布局


为了优化不同屏幕尺寸的用户体验,你需要为你想支持的每一种屏幕尺寸创建一个独立的 XML 文件。每个布局都需要保存到合适的资源目录下,以 -<screen_size> 为后缀命名。例如,一个大屏幕的布局文件需要保存到 res/layout-large/ 目录下。

注意:安卓会自动缩放你的布局来正确地适应屏幕。所以你的不同屏幕尺寸的布局不需要担心 UI 元素的绝对大小,而仅需关心影响用户体验的布局结构(例如重要视图与兄弟视图的相对大小和位置)。

例如,这个工程包含一个默认布局和一个大屏幕的布局:

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

这些文件的名称必须一样,但为了给不同的屏幕尺寸提供最优的 UI 它们的内容不同。

像往常一样,在你的应用中简单地引用布局文件:

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

系统根据运行你的应用的设备的屏幕尺寸从合适的布局目录中加载布局文件。跟多关于安卓怎样选择合适资源的信息,参见 提供资源 指南。

另一个例子,一个包含风景画方向布局的工程:

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

默认情况下,肖像画方向使用 layout/main.xml 文件。

如果你想为风景画提供一个特殊的布局,包括运行在大屏幕上的布局,你需要使用 largeland 这两个限定符:

MyProject/
    res/
        layout/              # 默认(肖像画)
            main.xml
        layout-land/         # 风景画
            main.xml
        layout-large/        # 大屏幕(肖像画)
            main.xml
        layout-large-land/   # 大屏幕风景画
            main.xml

注意:安卓 3.2 及以上版本支持一种定义屏幕尺寸的先进方法,这种方法允许你基于以密度独立的像素为单位的最小宽度和高度来指定资源。这节课不会介绍这种新技术。更多信息,参见为多种屏幕设计

创建不同的位图


你始终需要提供能缩放到每个密度范围(low, medium, high and extra-high)的位图资源。这使你的应用在任何屏幕密度下都有好的图像质量和性能。

为了生成这些图像,你需要从数组格式原始资源开始使用以下大小比例为每个密度生成图像:

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

这意味着如果你要为 xhdpi 设备生成 200x200 的图像,你需要为 hdpi 设备生成 150x150 的图像,为 mdpi 设备生成 100x100 的图像,为 ldpi 设备生成 75x75 的图像。

然后,把这些文件放到合适的可绘制资源目录下:

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

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

注意:低密度(ldpi)资源并不总是必须的。当你提供了 hdpi 资源,系统会把它们缩小一半来适应 ldpi 屏幕。

更多关于为你的应用创建图标的技巧和指导原则,参见 图标设计指南

 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值