Android自適應螢幕方向、大小和解析度,及字型設定

來源:互聯網
上載者:User

標籤:

螢幕大小

1、不同的layout

      Android手機螢幕大小不一,有480x320,640x360,800x480.怎樣才能讓App自動適應不同的螢幕呢? 其實很簡單,只需要在 res目錄下建立不同的layout檔案夾,比如:layout-640x360,layout-800x480,所有的layout檔案在編譯之後都會 寫入R.java裡,而系統會根據螢幕的大小自己選擇合適的layout進行使用。

2、hdpi、mdpi、ldpi

      之前的版本中,只有一個drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是為了支援多解析度。

drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:

  1. drawable-hdpi裡面存放高解析度的圖片,如WVGA (480x800),FWVGA (480x854)
  2. drawable-mdpi裡面存放中等解析度的圖片,如HVGA (320x480)
  3. drawable-ldpi裡面存放低解析度的圖片,如QVGA (240x320)

系統會根據機器的解析度來分別到這幾個檔案夾裡面去找對應的圖片。在開發程式時為了相容不同平台不同螢幕,建議各自檔案夾根據需求均存放不同版本圖片。

螢幕方向

1、橫屏豎屏自動切換

      可以在res目錄下建立layout-port和layout-land兩個目錄,裡面分別放置豎屏和橫屏兩種布局檔案,這樣在手機螢幕方向變化的時候系統會自動調用相應的布局檔案,避免一種布局檔案無法滿足兩種螢幕顯示的問題。

2、禁用自動切換

只需要在AndroidManifest.xml檔案中加入android:screenOrientation屬性限制。

  • Android:screenOrientation="landscape"  //是限制此頁面橫屏顯示
  • Android:screenOrientation="portrait"      //是限制此頁面數豎屏顯示
字型自適應大小

方法1:

首先根據不同解析度擷取不同字型大小。 
在RES裡建立
values-480x320/strings.xml 裡面設定<dimen name="Text_size">30px</dimen>
和 
values-800x400/strings.xml 裡面設定<dimen name="Text_size">30px</dimen>

分別代表480X320 和 800X400解析度情況下 字型大小為30px和40px;

在java檔案中這樣調用

int sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size);

方法2:

在視圖的 onsizechanged裡擷取視圖寬度,一般情況下預設寬度是320,所以計算一個縮放比率rate = (float) w/320   w是實際寬度
然後在設定字型尺寸時 paint.setTextSize((int)(8*rate));   8是在解析度寬為320 下需要設定的字型大小實際字型大小 = 預設字型大小 x  rate

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.