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.当字符串中用空格时字符串也会自动换行;(可以根据业务需求把空格换成其他的字符代替比如“/”,":" 等)

你可能感兴趣的:(Andriod)