適配不同的屏幕

需要適配一下各類屏幕,從谷歌的文檔開始吧

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。

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