安卓中在canvas.drawtext()時發現很多需要注意的問題:
paint mpaint = new paint(paint.anti_alias_flag);
mpaint.settextalign(paint.align
.left);
.center);
初始化paint物件時可以指定文字對齊方式,先討論預設情況(也就是paint.align.left)。
通過paint物件可以獲得與文字相關的兩個重要的物件:
//獲取可包裹文字的最小矩形(left,top,right,bottom指的是相對基準點的值,而不是實際的矩形的位置座標)
rect bounds=new rect();
mpaint.gettextbounds(text,0,text.length(),bounds);
//獲取fontmetrics物件
fontmetrics mfontmetrics =mpaint.getfontmetrics();
fontmetrics物件在安卓中的解釋:
為了能直觀的看出這些值的含義,我將這些值的相對位置畫了出來:
相應的引數解釋如下圖:
無論是bounds(left,top,right,bottom)還是fontmetrics(top,ascent,descent,bottom)都是相對於基準點的數值差
因此,在繪製文字,並且要求文字中心在(x,y)處時,可以如下處理:
public
class drawtextutil
}
最後,附上繪製對應線的**
public
class
drawtext
extends
view
public
drawtext(context context, attributeset attrs)
public
drawtext(context context, attributeset attrs, int defstyleattr)
public
drawtext(context context, attributeset attrs, int defstyleattr, int defstyleres)
public
void
init(context context)
@override
protected
void
ondraw(canvas canvas)
安卓開發遇到的坑
最近接了乙個外包開發的專案,在這個專案上做ui調整和新功能開發。遇到乙個getbackground setalpha 改變背景顏色的問題。晚上提交完 第二天執行發現專案中的所有對話方塊 dialog,popwindow 背景全部變成透明效果了。然後就感覺肯定是不小心改變主題樣式什麼的。但是檢視所有的...
安卓掉坑記錄
將含 litepal.xml 檔案的 assets 資料夾放到 main 資料夾下,編輯一下 xml 檔案 直觀上看是沒有刪除某個檔案,產生的ioexception異常,實際上是因為上次編譯導致的快取沒有清空導致的。進入到android目錄下執行下面 清除上次打包時的快取 gradlew.bat c...
安卓中sharedperference的用法
引數 sharedperference 使用步驟 1.獲取到 sp this.getsharedpreferences config 0 2.獲取編輯器 editor editor sp.edit 3.editor.putstring key,value putint putdouble 4.edi...