Android自適應屏幕方向、大小和分辨率

屏幕大小

一、不一樣的layoutjava

Android手機屏幕大小不一,有480x320,640x360,800x480.怎樣才能讓App自動適應不一樣的屏幕呢? 其實很簡單,只須要在res目錄下建立不一樣的layout文件夾,好比:layout-640x360,layout-800x480,全部的layout文件在編譯以後都會寫入R.java裏,而系統會根據屏幕的大小本身選擇合適的layout進行使用。android

二、hdpi、mdpi、ldpi佈局

前的版本中,只有一個drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是爲了支持多分辨率。字體

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

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

系統會根據機器的分辨率來分別到這幾個文件夾裏面去找對應的圖片。在開發程序時爲了兼容不一樣平臺不一樣屏幕,建議各自文件夾根據需求均存放不一樣版本圖片。spa

屏幕方向

一、橫屏豎屏自動切換code

能夠在res目錄下創建layout-port和layout-land兩個目錄,裏面分別放置豎屏和橫屏兩種佈局文件,這樣在手機屏幕方向變化的時候系統會自動調用相應的佈局文件,避免一種佈局文件沒法知足兩種屏幕顯示的問題。xml

二、禁用自動切換blog

只須要在AndroidManifest.xml文件中加入android:screenOrientation屬性限制。圖片

限制此頁面橫屏顯示

Xml代碼 複製代碼 收藏代碼
  1. Android:screenOrientation="landscape"
Android:screenOrientation="landscape"

 

Xml代碼 複製代碼 收藏代碼
  1. 限制此頁面數豎屏顯示
Xml代碼 複製代碼 收藏代碼
  1. Android:screenOrientation="portrait"
Android:screenOrientation="portrait"

 

字體自適應大小

方法1:

首先根據不一樣分辨率獲取不一樣字體大小。
在RES裏建立
values-480x320/strings.xml 裏面設置

Xml代碼 複製代碼 收藏代碼
  1. <dimen name="Text_size">30px</dimen>
<dimen name="Text_size">30px</dimen>


values-800x400/strings.xml 裏面設置

Xml代碼 複製代碼 收藏代碼
  1. <dimen name="Text_size">40px</dimen>
<dimen name="Text_size">40px</dimen>

 

分別表明480X320 和 800X400分辨率狀況下 字號爲30px和40px;

 

在java文件中這樣調用

Java代碼 複製代碼 收藏代碼

  1. int sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size);
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)

相關文章
相關標籤/搜索