android中的解析度 行高和字型大小

2021-06-21 11:01:47 字數 1015 閱讀 3961

想要計算下在乙個textview中最多能列印多少字元,但是理論計算結果和實際結果卻不一致。

先說下我的演算法:

獲取螢幕的解析度(px): width * height

獲取螢幕密度: density

設定字型大小(sp): textsize

設定單倍行距(sp): singlelinespace

那麼字型的行數(含行距)應該為: height / density / textsize = line

對於我的手機,解析度為720 * 1280, 密度為2.0, 字型大小為20sp,單倍行距為20sp,那麼理論結果是16行(含行距)。可是實際結果卻是14.5行左右,明顯後面幾行被截掉了。

思考了一天多,也到好多論壇和群裡去問,基本沒人理啊,淚流滿面。最後終於弄明白了,具體原因如下:

在多倍行距為0時,顯示的字型大小就是設定的textsize,也就是說當把linespacingmultiplier設定為0時,顯示的結果和計算的結果是一致的。但是當linespacingmultiplier大於0時,對於字型大小使用的不是設定的textsize。例如,設定textsize為20sp,使用函式gettextbounds可以獲取字型的最小rect,能夠發現字高為37px,若單倍行距為20sp,多倍行距為1.0,那麼實際的行高(包括行距)為87!也就是說,此時使用的字型大小是真實字高,而不是設定的textsize。

其實,只要使用textview.getlineheight()就能獲得真實行高了...我辛辛苦苦研究了快一天,就是在找這個api啊...

獲取字型的實際大小(最小包圍盒)

textpaint paint;

paint = ((textview)findviewbyid(r.id.content)).getpaint();

paint.gettextbounds(c, 0, 1, bounds);

獲取行高

int l = textview.getlineheight();

高解析度格式

wiki 當使用高精度進行數值求解偏微分方程時,若方程的解存在間斷或激波,需要使用高解析度格式。通常其具有以下性質 一般的格式不具備求解大梯度現象時獲得高解析度 它們通常會引入非物理影響,如使解平滑或者高階振盪。godunov定理證明了線性方法不能提供高於一階的無振盪格式,這個困難吸引了許多學者關注...

Android解析度常識 多解析度適配

螢幕大小 以螢幕對角線的物理長度來衡量螢幕的大小 解析度 螢幕中所有物理畫素點數。如1920x1080,就表示寬方向有1920個畫素,高方向有1080個畫素,整個螢幕有2073600個畫素。螢幕密度 dpi dots per inch 即畫素密度,每英吋面積上存在多少個畫素。160dpi表示單位面積...

android解析度大全

對於android遊戲開發我們不得不像iphone那樣思考相容android平板電腦,對於蘋果要考慮ipad iphone 3gs和iphone 4等螢幕之間的相容性,對於幾乎所有的解析度android123總結了大約超過20中粉筆阿女郎的大小和對應關係,對於開發android遊戲而言可以考慮到未來...