Android適配不同的裝置

來源:互聯網
上載者:User

標籤:instance   不同   tar   normal   pen   strong   styles   raw   tin   

感謝原作者的整理:

http://blog.csdn.net/chenyjays/article/details/41308887

 

適配不同的語言

  把UI中的字串儲存在外部檔案,通過代碼提取。

 

建立地區設定目錄和字串檔案

  為了支援多國語言,在res/中建立一個額外的values目錄以連字號和ISO國家代碼結尾命名,比如values-es/ 是為語言代碼為"es"的地區放置簡單的資源檔的目錄。Android會在運行時根據裝置的地區設定,載入相應的資源。

 

  若你決定支援某種語言,則需要建立資源子目錄和字串資源檔,例如:

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

  添加不同地區語言的字串值到相應的檔案。在運行時,android系統會根據使用者裝置當前的地區設定,使用相應的字串資源。

 

使用字元資源
  你可以在你的原始碼和其他XML檔案中,通過<string>元素的name屬性來引用你的字串資源。
  在你的原始碼中你可以通過R.string.<string_name>文法來引用一個字串資源,很多方法都可以通過這種方式來接受字串。

 

適配不同的螢幕

  Android將裝置螢幕歸類為兩種常規屬性:尺寸和解析度。

  有4種普遍尺寸:小(small),普通(normal),大(large),超大(xlarge)
  4種普遍解析度:低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi)

 

建立不同的layout

  為了針對不同的螢幕去最佳化使用者體驗,你需要對每一種將要支援的螢幕尺寸,建立唯一的XML檔案。每一種layout需要儲存在相應的資來源目錄中,目錄以-<screen_size>為尾碼命名。例如,對大尺寸螢幕(large screens),一個唯一的layout檔案應該儲存在res/layout-large/中。

 

  例如,這個工程包含一個預設layout和一個適配大螢幕的layout:

  MyProject/
      res/
          layout/
              main.xml
          layout-large/
              main.xml

  layout檔案的名字必須完全一樣,為了對相應的螢幕尺寸提供最優的UI,檔案的內容不同。

  按照慣例在你的app中簡單引用:

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

  系統會根據你的app所啟動並執行裝置螢幕尺寸,在與之對應的layout目錄中載入layout。

  另一個例子,這一個工程中有為適配橫向螢幕的layout:

  MyProject/
      res/
          layout/
              main.xml
          layout-land/
              main.xml

  預設的,layout/main.xml檔案用作豎屏的layout。

  如果你想給橫屏提供一個特殊的layout,也適配於大螢幕,那麼你需要使用largeland修飾符。

   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
建立不同的bitmap

  你應該為4種普遍解析度:低,中,高,超高精度,都提供相適配的bitmap資源。要產生這些映像,你應該從原始的向量映像資源著手,然後根據下列尺寸比例,產生各種密度下的映像。

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

  這意味著,如果你針對xhdpi的裝置產生了一張200x200的映像,同樣的你應該對為hdpi產生150x150,為mdpi產生100x100, 和為ldpi產生75x75的圖片資源。

  然後,將這些檔案放入相應的drawable資來源目錄中:

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

  任何時候,當你引用@drawable/awesomeimage時系統會根據螢幕的解析度選擇恰當的bitmap。

 

適配不同的系統版本

指定最小和目標API層級

  AndroidManifest.xml檔案中描述了你的app的細節,並且標明app支援哪些Android版本。具體來說,<uses-sdk>元素中的minSdkVersion和targetSdkVersion 屬性,標明在設計和測試app時,最低相容API的層級和最高適用的API層級(這個最高的層級是需要通過你的測試的)。

  隨著新版本Android的發布,一些風格和行為可能會改變,為了能使你的app能利用這些變化,而且能適配不同風格的使用者的裝置,你應該設定targetSdkVersion的值去匹配最新的可用Android版本。

 

在運行時檢查系統版本

 

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
          ActionBar actionBar = getActionBar();
          actionBar.setDisplayHomeAsUpEnabled(true);
  }

 

 

使用平颱風格和主題

 

  Android提供了使用者體驗主題,為app提供基礎作業系統的外觀和體驗。這些主題可以在manifest檔案中被應用於你的app中.通過使用內建的風格和主題,你的app自然地隨著Android新版本的發布,自動適配最新的外觀和體驗.

  使你的activity看起來像對話方塊:

  <activity android:theme="@android:style/Theme.Dialog">

  使你的activity有一個透明背景:

  <activity android:theme="@android:style/Theme.Translucent">

  應用在/res/values/styles.xml中定義的自訂佈景主題:

  <activity android:theme="@style/CustomTheme">

  使整個app應用一個主題(全部activities)在元素中添加android:theme屬性:

  <application android:theme="@style/CustomTheme">


Android適配不同的裝置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.