使用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.超过多少开始省略

需要指出的是这个layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw之前移Canvas的起始坐标
canvas.translate(x,y);

更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. 转载:Android(安卓)常用代码集合
  3. Android(安卓)Toast提示封装实例代码
  4. android中JSON的理解与解析
  5. 拆解Google Play Services 4.4,猜想Google I/O 2014的新动向,Andro
  6. android状态栏右上角增加图标的方法
  7. Android(安卓)- Intent广播(broadcast)
  8. java虚拟机理解
  9. SQLiteDatabase中的query方法,里面有个用占位符代替的参数,不错

随机推荐

  1. android动态壁纸
  2. android实现程序的后台运行 and 完全退出
  3. Android 启动Service监听网络状态
  4. kotlin 写的Android(安卓)toast工具类
  5. Android中应用调用系统权限
  6. Android 第十七天
  7. 我学习Android的一些套路
  8. Android之MTP框架和流程分析
  9. Android四大组件之Content Provider
  10. Java 字节码编译为Dex,d8比dx更好用!