1. 程式人生 > >android原生TextView設定字型大小

android原生TextView設定字型大小

首先android中對於文字繪製時候對應到到螢幕上都是一個一個的畫素。

同一個文字,在不同解析度的裝置上,所佔的畫素不一樣。例如:圖片大小為80×32畫素在720P上看著合適,但是到1080P上((dpi)更高的新顯示器)則使用者介面會顯得很小。在有些情況下,使用者介面可能會小到難以看清內容。由此我們採用與解析度無關的度量單位來開發程式就能夠解決這個問題。

   所以類推,在1080P上顯示的42號字型,對應的在720P上就需要顯示28畫素的字這樣看起來才不會不協調。

   那麼當我們開發程式時候,怎麼根據不同解析度設定不同的字號以適配裝置呢?

    其實,android中有以下幾個單位概念:

      px   :是螢幕的畫素點。

      dp   :裝置獨立畫素 — 這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴畫素。裝置分如果一個160dpi的螢幕,1dp=1px。px=dp*(dpi/160)。

dpi:android系統定義了四種畫素密度dpi
低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),
它們對應的dp到px的係數分別為0.75、1、1.5和2,
這個係數乘以dp長度就是畫素數。

如果使用該單位,42 dp的文字在160dpi上是42畫素;在240dpi上就是42*1.5=63畫素字。

dip  :等同於dp

      sp   :同dp相似,但還會根據使用者的字型大小偏好來縮放(建議使用sp作為文字的單位,其它用dip)。 

根據 google 的建議,TextView 的字號最好使用 sp 做單位,而且檢視TextView的原始碼可知Android預設使用sp作為字號單位。將dip作為其他元素的單位。

   說了那麼多,那麼在設定文字字型大小就知道怎麼設定了吧。

    TextView有以下方法提供:

   public float getTextSize(); //返回單位是px
 public void setTextSize(int unit, float size) ;//可以指定單位設定
 public void setTextSize(int unit, float size) ;//可以指定單位設定
         說明:
第一個引數可設定如下靜態變數:
	TypedValue.COMPLEX_UNIT_PX : Pixels
	TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
	TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels  
public void setTextSize(float size); //設定單位是sp