跟Google学习Android开发-起始篇-支持不同的设备(2)

3.2 支持不同的屏幕


Andr​​oid设备屏幕进行分类,一般使用两个属性:尺寸和密度。你应该预料到你的应用程序将被安装在不同范围的尺寸和密度屏幕的设备上。因此,您应该包含一些可替换资源,针对不同的屏幕大小和密度,优化你的应用程序的外观。

·      有四种普遍的尺寸小(small)正常(normal)大(large)超大(xlarge)

·      也有4种普遍的密度:低(ldpi),(mdpi),(hdpi),超高xhdpi

声明你要在不同的屏幕中使用的布局和位图,你必须在不同的目录中放置这些可替换的资源,就像你为不同的语言字符串所做的那样。

另外要注意,屏幕方向(横向或纵向)被认为是一个屏幕大小的变化,所以很多应用程序应该针对每个方向修改布局,来优化用户体验。


创建不同的布局


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

注: Android自动拉伸你的布局来正确地适应屏幕。因此,你的不同屏幕尺寸的布局,不需要担心UI元素的绝对大小,而是把重点放在影响用户体验的布局结构上(如重要视图相对于同级视图的大小或位置)。

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

MyProject/    

        res/        

               layout/            

                       main.xml        

               layout-large/            

                       main.xml

 

文件名必须是完全一样的,但它们的内容是不同的,以便为相应的画面尺寸提供优化的用户界面。

只需像往常一样在你的应用程序中引用这个布局文件:

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

根据运行您的应用程序的设备屏幕尺寸,系统从布局目录加载适当的布局文件。关于Android是如何选择适当的资源的更多信息,可参考提供资源 指南。

再举一个例子,这里是一个有横向替换布局的项目:

MyProject/    

        res/        

               layout/            

                       main.xml        

               layout-land/            

                       main.xml

默认情况下,纵向使用layout/main.xml文件。

如果你想为提供一个特殊的横向布局,包括在大屏幕上,那么你需要同时使用largerland标识符:

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及以上的系统,支持一个先进的指定屏幕尺寸的方法,这个方法允许你根据最小宽度和高度的与密度无关像素(DIP),为不同的屏幕尺寸指定资源文件。这节课不包括这项新技术。欲了解更多信息,请阅读多屏幕的设计


创建不同的位图


你应该总是对各个普遍的密度桶(bucket)提供正确缩放的位图资源:低,中,高和超高密度。这可以帮助你在所有的屏幕密度上实现良好的图形质量和性能。

要生成这些图像,你的原始资源应该是矢量格式的,并为各个密度生成的图像使用下面的拉伸比例:

·      xhdpi2.0

·      hdpi1.5

·      mdpi1.0基线

·      ldpi0.75

这意味着,如果你为xhdpi设备生成一个200x200的图像,你应该为其它密度产生相同的资源:hdpi150X150mdpi100x100ldpi75X75

然后,将这些文件放在适当的绘制资源目录中:

MyProject/    

        res/       

                drawable-xhdpi/           

                       awesomeimage.png        

               drawable-hdpi/            

                       awesomeimage.png        

               drawable-mdpi/            

                       awesomeimage.png        

               drawable-ldpi/             

                       awesomeimage.png

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

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

关于您的应用程序创建图标资产的更多的提示和指引,请参阅 意象设计指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值