适配不同的屏幕

需要适配一下各类屏幕,从谷歌的文档开始吧

http://developer.android.com/intl/zh-cn/training/basics/supporting-devices/screens.html


android使用两个常规属性分类设备屏幕:尺寸和密度。你应该期望你的应用能够适配所有规模和密度大小的设备。那么,你应该包括一些可选择的资源来优化你的外观,使其适用不同的屏幕尺寸和密度。


  • 有四种常用尺寸:小(small),中(normal),大(large),巨大(xlarge)
  • 有四种通用的密度:低(ldpi),中(mdpi),高(lhpi),特高(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);
}

系统会基于你app运行的设备的屏幕尺寸来选择加载合适的布局文件,更多信息关于android如何选择合适的资源文件,请参考提供资源指南
http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch

再举一个例子,这是有横向的替代布局的项目:
MyProject/
    res/
        layout/main.xml
        layout-land/main.xml

缺省情况下,layout/ main.xml中文件用于纵向。

如果你想提供特殊的横屏布局,包括在大屏幕上,那么你需要同时使用大和横屏选定符
MyProject/
    res/
        layout/main.xml       # default (portrait)
            
        layout-land/main.xml   # landscape
            
        layout-large/main.xml  # large (portrait)
            
        layout-large-land/main.xml  # large landscape

注: Android的3.2及以上支持更先进的定义屏幕尺寸的方法,它允许您根据密度无关像素方面的最小宽度和高度,以指定的屏幕大小的资源。本节不包括这种新技术。欲了解更多信息,请阅读设计的多个屏幕。
http://developer.android.com/intl/zh-cn/training/multiscreen/index.html

创建不同的位图
你应该总是提供适当缩放到每个广义密度的位图资源:低,中,高,超高密度。这将帮你在不同的屏幕上实现良好的图像质量和性能

为了产生这些图像,你应该从你矢量格式的原始资源入手,创建使用以下规模的密度图像:

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (baseline)
  • ldpi: 0.75
这意味如果你为xhdpi设备生成一个200*200的图像,你应该为生成同一资源图像150*150 为hpdi 100*100 为mdpi 75*75 为ldpi

然后放入适当的资源文件中
<span style="font-size:18px;">MyProject/
    res/
        drawable-xhdpi/awesomeimage.png
        drawable-hdpi/awesomeimage.png
        drawable-mdpi/awesomeimage.png
        drawable-ldpi/awesomeimage.png</span>

您引用@drawable/ awesomeimage任何时候,系统会选择基于屏幕的密度的适当的位图。

注意:低密度( ldpi)资源并非总是必要的。当你提供了hdpi的资源时,系统会通过缩放一半的方式来适配ldpi。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章