關(guān)于android setTextSize() 以及 px dip/dp sp的說明。。。。

引用:http://www.cnblogs.com/duanweishi/p/4449588.html

Paint.setTextSize()單位為px,Android系統(tǒng)中,默認的單位是像素(px)。也就是說,在沒有明確說明的情況下,所有的大小設(shè)置都是以像素為單位。Paint.setTextSize傳入的單位是px,TextView.setTextSize默認傳入的單位是sp。


如果實在記不住,那就看android sdk的源碼說明

另外還有這個事兒注意下:

使用如下代碼時,發(fā)現(xiàn)字號不會變大,反而會變?。?/p>

size = (int) mText.getTextSize() + 1;

mText.setTextSize(size);

后來發(fā)現(xiàn)getTextSize返回值是以像素(px)為單位的,而setTextSize()是以sp為單位的,兩者單位不一致才造成這樣的結(jié)果。

這里可以用setTextSize()的另外一種形式,可以指定單位:

setTextSize(int unit, int size)

TypedValue.COMPLEX_UNIT_PX : Pixels

TypedValue.COMPLEX_UNIT_SP : Scaled Pixels

TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels


下面這樣就正常了:

size = (int) mText.getTextSize() + 1;

mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);


下面是相關(guān)的一些類轉(zhuǎn)換

dp(dip): device independent pixels(設(shè)備獨立像素). 不同設(shè)備有不同的顯示效果,這個和設(shè)備硬件有關(guān),一般我們?yōu)榱酥С諻VGA、HVGA和QVGA 推薦使用這個,不依賴像素。

dp也就是dip,這個和sp基本類似。如果設(shè)置表示長度、高度等屬性時可以使用dp 或sp。但如果設(shè)置字體,需要使用sp。dp是與密度無關(guān),sp除了與密度無關(guān)外,還與scale無關(guān)。如果屏幕密度為160,這時dp和sp和px是一 樣的。1dp=1sp=1px,但如果使用px作單位,如果屏幕大小不變(假設(shè)還是3.2寸),而屏幕密度變成了320。那么原來TextView的寬度 設(shè)成160px,在密度為320的3.2寸屏幕里看要比在密度為160的3.2寸屏幕上看短了一半。但如果設(shè)置成160dp或160sp的話。系統(tǒng)會自動 將width屬性值設(shè)置成320px的。也就是160 * 320 / 160。其中320 / 160可稱為密度比例因子。也就是說,如果使用dp和sp,系統(tǒng)會根據(jù)屏幕密度的變化自動進行轉(zhuǎn)換。

px: pixels(像素). 不同設(shè)備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。

pt: point,是一個標準的長度單位,1pt=1/72英寸,用于印刷業(yè),非常簡單易用;

sp: scaled pixels(放大像素). 主要用于字體顯示best for textsize。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容