1. 程式人生 > >android 使用canvas畫字元時換行(用TextPaint實現,Paint不易實現)

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

, 1.5f, 0f,false);

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.當字串中用空格時字串也會自動換行;(可以根據業務需求把空格換成其他的字元代替比如“/”,":" 等)