亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android Developers Training】 12. 支持不同

系統 1930 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。

原文鏈接: http://developer.android.com/training/basics/supporting-devices/screens.html


Android通過兩種參數來對屏幕進行分類:屏幕尺寸和分辨率。在開發時,應該將這兩個因素同時考慮進去,所以你應該將項目包含一些可選擇的資源文件,使得你的應用在不同的屏幕尺寸和分辨率上都能具有最佳的體驗。

  • 概括地來說,一共有四種尺寸:小,標準,大,超大。
  • 概括地來說,一共有四種分辨率:低(ldpi),中(mdpi),高(hdpi),超高(xhdpi)

為了聲明你希望在不同的屏幕使用不同的布局和位圖,你必須分別在不同的資源放置這些可選擇使用的資源,這和你為了支持不同語言所做的工作比較類似(參見上一篇博客: http://www.cnblogs.com/jdneo/p/3446617.html

另外需要注意的是,屏幕的方向:橫屏(landscape)或豎屏(portrait)也是一種屏幕尺寸的變化,所以許多應用為了優化用戶體驗,會為每一個方向調整布局。

?

一). 創建不同的布局

為了在不同屏幕尺寸上獲得最佳的用戶體驗,你應該為你希望支持的每一個屏幕尺寸分別創建一個XML布局文件。每一個布局應該存儲在相應的資源目錄中,以“ -<screen_size> ”作為名稱后綴。例如,對應于大尺寸屏幕的的布局應該存放在“ res/layout-large/ ”這一目錄下。

Note:

Android會為了適當地適應屏幕自動調整你的布局。所以在你對應于不同屏幕尺寸的布局中,不需要擔心UI元素的絕對尺寸,而應該關注影響用戶體驗的布局結構(比如一些重要UI元素相對于其他元素的相對尺寸和相對位置)

例如,以下項目包含一個默認布局和一個對應于大尺寸屏幕上的布局:

      
        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 ”和“ 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
      
    

Note:

Android 3.2及以上版本的系統可以通過一種更高級的方法來定義屏幕尺寸,這使你可以通過dip(density-independent pixels)來特定資源相對于屏幕大小的最小寬度和高度。更多信息可以閱讀: Designing for Multiple Screens

?

二). 創建不同的位圖

你應該為不同的分辨率密度的屏幕(低,中,高,超高)提供相應的資源文件。這可以幫助你在不同的屏幕上,獲取優秀的圖像質量性能表現。

為了創建這些圖像,你應該使用下述的尺寸參數將原始矢量圖的尺寸進行放大或縮小:

  • xhdpi:2.0
  • hdpi:1.5
  • mdpi:1.0(基準)
  • ldpi:0.75

這意味著如果你為一個xhdpi的設備生成了一幅200x200的圖像,那么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 ”,系統會根據屏幕的規格自動地選擇相應的圖像文件。

Note:

ldpi的資源并不一定一直是必須的。當你提供了hdpi的資源,系統會將它縮小一半來匹配ldpi的屏幕

有關創建應用圖標集的信息,可以閱讀: Iconography design guide

【Android Developers Training】 12. 支持不同屏幕


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 五月婷视频 | 玖玖精品在线 | 国产人成精品综合欧美成人 | 亚洲精品久久久久综合中文字幕 | 精品哟哟国产在线观看 | 欧美papa| 亚洲日本综合 | 欧美一级毛片免费看 | 加勒比啪啪| 特级aa一级欧美毛片 | 国产精品视频免费 | 在线国产你懂的 | 狠狠噜噜 | 精品一本久久中文字幕 | 96精品国产高清在线看入口 | 91精品国产91久久久久福利 | 四虎在线影视在线影库 | 天天爱夜夜爱 | 97夜夜操 | 五月婷婷开心中文字幕 | 亚洲天天做日日做天天看2018 | 亚洲综合日韩在线亚洲欧美专区 | 中国美女bbbbbxxxxx| 精品久久国产老人久久综合 | 九九夜夜操妹子 | 动漫精品一区二区3d | 国产综合图片 | 国产精品五月天 | 中文字幕亚洲综合 | 拍拍拍精品视频在线观看 | 免费黄色小视频在线观看 | 丁香色婷婷 | 69性影院在线观看国产精品87 | 成人短视频在线观看视频 | 手机看片久久高清国产日韩 | 成人另类 | 123日本不卡在线观看 | 波多野结衣3女同在线观看 波多野结衣av1区2区3区 | 日本aa视频| 在线色av| 狠狠躁夜夜躁人人爽天天miya |