Android:支持不同的屏幕

支持不同的屏幕

 

        Android 通过两个属性来分类不同的屏幕:大小和密度。你应该考虑到你的APP可能会安装到不同大小和密度的设备上。因此,针对不同的屏幕,你应该有一些资源来让你的APP的外表得到优化。

       大小分四种:小,正常,大,特大

       密度也分为四种:低,中,高,特高

       为了给不同的屏幕设置不同的layout 和图片,你必须把这些可供选择的资源单独放到一个目录下面去,这个跟不同语言使用不同的字符串一样。

       屏幕方向(横屏和竖屏)也是一种区分屏幕大小的属性。所以你的APP应该优化在每个方向上的用户体验。

 

创建不同的布局

       为了优化不同大小屏幕的用户体验,应该为每个你所需要支持的屏幕创建一个独立的XML 布局文件。每一个布局文件应该保存在合适的资源目录,命名:-<屏幕大小>后缀。例如创建一个大屏幕的layout.目录:res/layout-large/  ,并在这个目录下创建相应的布局文件。

       注意:Android自动地衡量布局来适配不同的屏幕,因此你不用担心UI 元素的绝对大小,只需要关注影响用户体验的布局结构(重要view之间的位置以及相对大小)。

       此外,对于为屏幕大小客制化的布局文件命名必须都一样,只要它们的内容做出改变和优化即可。

       在代码中使用时,可以忽视屏幕大小,正常使用。系统会根据当前屏幕的大小来决定应该从哪个目录加载哪个布局文件。更多关于系统如何选择合适的资源见Providing Resources guide文章。

       下面是关于横屏时单独提供的一个布局文件:

MyProject/

    res/

        layout/

            main.xml

        layout-land/

            main.xml

       默认情况下,layout/main.xml 文件是竖屏时候用的。

       如果你要定义一个布局专门针对横屏,大屏的机器,则你需要用到large 和land 两个限定语。如下:

MyProject/
    res/
        layout/              # default (竖屏)
            main.xml
        layout-land/         # 横屏
            main.xml
        layout-large/        # 大屏/竖屏
            main.xml
        layout-large-land/   # 大屏/横屏
            main.xml

注意:Android 3.2 以及以后的版本支持一个定义屏幕大小的高级方法。通过这个方法你能够依据屏幕的最小宽度和高度以及与像素无关的密度来指定屏幕资源。本文没有设计到这个方法,详见:Desiging for Multiple Screens.

 

创建不同的位图

对于不同密度的屏幕,你都需要相应的位图资源,这样才能保证在不同的机器上运行时的图形质量和性能优异。

要生成这些图片,在矢量格式中使用你的原生资源,来为每种密度生成如下大小的图片:

·         xhdpi: 2.0

·         hdpi: 1.5

·         mdpi: 1.0 (baseline)

·         ldpi: 0.75

这意味着如果 XHDPI 的图片大小是  200 ×200话,那么HDPI  就是 150 × 150

Mdpi 就是 100 × 100   ldpi就是75 *75

然后把图片放到相应的目录:

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

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

注意:LDPI的资源有时候可以不需要。因为当你提供了一个HDPI资源时,系统会自动裁剪它得到LDPI的图片。

更多关于创建APP ICON的指导详见:Iconography design guide.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值