今天有人問我,android系統不同解析度,不同大小的手機,字型大小怎麼去適應呢?其實字型的適應和圖片的適應是一個道理的。

一、

原理如下:

假設需要適應320x240,480x320解析度。在res目錄下新建資料夾values-320x240, values-480x320。然後在資料夾 values ,values-320x240 和  values-480x320 下新建xml檔案dimens.xml,該xml檔案內容如下:

vaules-320x240下的dimens.xml內容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<dimen name="btnTextSize">18sp</dimen>
</resources>
values-480x320 下的dimens.xml內容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
	<dimen name="btnTextSize">18sp</dimen>
</resources>
針對不同解析度的手機,android系統會自動適配載入相應檔案中的字型的大小值,btnTextSize的值是不同的。在佈局檔案中引用的方式如下:
<TextView android:layout_width="fill_parent"
	android:layout_height="wrap_content" android:gravity="center"
	android:id="@+id/lblSet" style="@style/btntext" android:textSize="@dimen/btnTextSize">
</TextView>
在java檔案中這樣呼叫:

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

通過這種方法,可以方便設定在不同解析度下,字型的大小了。當然,不僅僅字型大小,寬和高等其他的一些屬性,也可以通過類似的方式來設定!

二、

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

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    android:textSize="@dimen/Text_size"
    />
佈局多解析度適配 :


技術諮詢:請關注微信訂閱號,微信名:非著名程式設計師,微訊號:smart_android

.