Android Training - 支持不同的尺寸

Android设备屏幕根据两个属性分类:尺寸和密度。你应该期望你的程序被安装在合理的尺寸和密度范围内。例如,你应该针对不同的尺寸和密度提供可选择的资源,让你的程序能有好的展现。
  • 这里有四个常用的尺寸:small, normal, large, xlarge
  • 四个常用的密度:low(ldpi), medium(mdpi), high(hdpi), extra high(xhdpi)
为了能够在不同的屏幕中显示不同的样式和位图,你必须保存不同的资源在独立的目录中,和前面说的不同语言字符串类似。

还要注意的是,不同的屏幕方位(风景或者肖像)被指定为不同的屏幕尺寸。所以很多程序需要修订样式以便在不同方位都能有好的用户体验。

创建不同的样式

为了在不同的屏幕尺寸下有好的用户体验,你必须为每个你想支持的屏幕尺寸创建一个唯一的XML样式文件。每个样式保存在对应的以-<screen_size>为后缀的资源目录中。例如,一个large屏幕的样式目录为res/layout-large/。

提示:Android会自动缩放你的样式,以便合适的填充屏幕。因此,你不用担心不同尺寸屏幕下UI元素的决定尺寸,而是要更多关注样式结构对用户体验的影响(比如相对于相邻view的尺寸和位置)。

例如,下面这个工程包含默认的样式和一个可选择的large屏幕样式:
MyProject/
    res/
        layout/
            main.xml
        layout-large/
            main.xml
文件名必须是相同的,但是内容是不同的,它为不同的屏幕尺寸提供对应的UI。

在程序中简单引用样式文件:
@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
}

系统会基于你使用的设备加载合适的样式文件。更多关于Android选择合适资源显示的信息,可以看这个教程:   Providing Resources

作为另外一个例子,这个工程使用一个可选的风景(横屏)方位样式:
MyProject/
    res/
        layout/
            main.xml
        layout-land/
            main.xml
默认的layout/main.xml文件被使用在肖像(竖屏)方位。

如果你为风景方位和large屏幕提供一个特别的样式,你需要使用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
提示:Android3.2以及更高版本支持一种更加先进的定义屏幕尺寸的方法,允许你基于最小宽高去指定资源文件,这个课程不包括这种新技术,想了解请移步到: Designing for Multiple Screens .

创建不同位图

你通常提供不同的位图资源去适应不同的密度:low, medium, high, extra-high。这样能帮助你在不同屏幕密度中取得好的绘图质量和性能。

为了生成这些图像,你需要从原始的矢量格式开始,采用下面的尺寸缩放生成对应密度的图片:
  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0
  • ldpi: 0.75
意思就是说,如果你生成一个200x200的图片给xhdpi设备,你就需要生成相同的资源给其他设备,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屏幕。

更多关于创建程序图标资源的教程,看这里: Iconography design guide .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值