android 使用canvas畫字元時換行(用TextPaint實現,Paint不易實現)
使用canvas畫字元時,常常遇到字元很長,不會換行的問題.
解決辦法:
使用StaticLayout這個類.
mCurrentPaint =new TextPaint();
mCurrentPaint.setColor(Color.GREEN);
mCurrentPaint.setTextAlign(Align.CENTER);
mCurrentPaint.setTextSize(30);
StaticLayout currentLayout = newStaticLayout(currentLine,mCurrentPaint,mViewWidth / 2,
Alignment.ALIGN_NORMAL
canvas.translate(mViewWidth / 2,mViewHeight / 2);
currentLayout.draw(canvas);
androidStaticLayout引數解釋
StaticLayout(CharSequence source, int bufstart, int bufend,
TextPaint paint, int outerwidth,
Alignment align,
float spacingmult, float spacingadd,
boolean includepad,
TextUtils.TruncateAt ellipsize, intellipsizedWidth)
1.需要分行的字串
2.需要分行的字串從第幾的位置開始
3.需要分行的字串到哪裡結束
4.畫筆物件
5.layout的寬度,字串長度超出給定寬度時自動換行。
6.layout的對其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三種。
7.相對行間距,相對字型大小,1.5f表示行間距為1.5倍的字型高度。
8.在基礎行距上新增多少
實際行間距等於這兩者的和。
9.引數未知
10.從什麼位置開始省略
11.超過多少開始省略
注意:
1.需要指出的是這個layout是預設畫在Canvas的(0,0)點的,如果需要調整位置只能在draw之前移Canvas的起始座標
canvas.translate(x,y);
2.當字串中用空格時字串也會自動換行;(可以根據業務需求把空格換成其他的字元代替比如“/”,":" 等)