Android官方文档翻译:支持不同的屏幕

Android官方文档翻译:支持不同的屏幕

原文地址:https://developer.android.com/training/basics/supporting-devices/screens.html#create-bitmaps

Android使用两种常规属性对设备屏幕进行分类:尺寸和密度。你一定期望你的app能被安装在各种尺寸以及分辨率的设备上。
这样呢,你应该包含一些可选资源来优化你的app在不同屏幕尺寸和密度的设备上的外观。

  • 有四种普遍的尺寸:small,normal,large,xlarge
  • 同样有四种普遍的密度:ldpi,mdpi,hdpi,xhdpi

为了声明不同的布局和图片(bitmaps)给不同的屏幕,你必须放置这些可选资源到不同的目录,就像你使用不同的语言字符串(strings)的方式一样。

创建不同的布局


为了优化在不同屏幕尺寸上的用户体验,你应当为每个你想支持屏幕尺寸创建单独的布局xml文件。每一个布局应当被保存在适当的资源目录,以一个-<screen_size>后缀命名。例如,一个单独的大屏幕布局应当保存在res/layout-large/.

Note: Android自动缩放你的布局,为了正确的适应屏幕。因此,你的不同屏幕尺寸的布局不必担心UI元素的绝对尺寸,而只需关注影响用户体验的布局的结构(例如重要的视图相对于兄弟布局的大小和位置)。

例如,这个项目包含一个默认布局和一个大屏幕的可选布局:

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

这两个文件名必须完全一样,但是内容不同,为了在不同的尺寸的屏幕上有一个优化的UI效果。

简单的引用这个布局文件,在你的app中,像平常一样:

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

在你的app运行时,系统根据屏幕尺寸,从合适的目录加载布局文件。更多的信息,关于Android选择合适的资源,看这里: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

Note: Android 3.2及以上版本支持一种高级方法来定义屏幕尺寸,允许您根据密度无关像素的最小宽度和高度来指定屏幕尺寸的资源。本课不涵盖这一新技术。有关详细信息,请参阅Designing for Multiple Screens

创建不同的位图

您应该始终提供适当缩放到每个广义密度的位图资源:低,中,高和超高密度。这有助于您在所有屏幕密度上实现良好的图形质量和性能。

要生成这些图像,您应该以矢量格式从原始资源开始,并使用以下尺寸比例为每个密度生成图像:
* xhdpi: 2.0
* hdpi: 1.5
* mdpi: 1.0 (baseline)
* ldpi: 0.75
这意味着如果您为xhdpi设备生成200x200的图片,则应为hdpi的150x150,mdpi为100x100,ldpi设备为75x75生成相同的资源。
然后,将文件放在相应的drawable资源目录中:

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

每当您引用@ drawable / awesomeimage时,系统将根据屏幕的密度选择适当的位图。

注意:低密度(ldpi)资源并不总是必需的。当您提供hdpi资产时,系统将其缩小一半以适应ldpi屏幕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值