使用的场景主要是绘制文本的时候指定绘制区域的宽度,文本需要根据宽度自动换行。
使用TextPaint和StaticLayout就可以实现这个功能,并可以获得绘制后的文本区域的高度:
package com.hu.text; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.text.Layout.Alignment; import android.text.StaticLayout; import android.text.TextPaint; import android.view.MotionEvent; import android.view.View; import com.example.texttest.R; public class MyView extends View { TextPaint textPaint = null; StaticLayout staticLayout = null; Paint paint = null; int width = 50; int height = 0; String txt = null; boolean running = false; public MyView(Context context) { super(context); textPaint = new TextPaint(); textPaint.setAntiAlias(true); textPaint.setTextSize(12); txt = getResources().getString(R.string.my_text); staticLayout = new StaticLayout(txt, textPaint, width, Alignment.ALIGN_NORMAL, 1, 0, false); height = staticLayout.getHeight(); paint = new Paint(); paint.setStyle(Style.STROKE); paint.setColor(Color.RED); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: running = !running; if(running){ new Thread(){ public void run() { while(running){ width ++; staticLayout = new StaticLayout(txt, textPaint, width, Alignment.ALIGN_NORMAL, 1, 0, false); height = staticLayout.getHeight(); postInvalidate(); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(width >= 300){ width = 50; } } }; }.start(); } break; default: break; } return super.onTouchEvent(event); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub canvas.translate(20, 20); staticLayout.draw(canvas); canvas.drawRect(0, 0, width, height, paint); super.onDraw(canvas); } }
完。
相关推荐
StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面这篇文章主要介绍了Android中用StaticLayout实现文本绘制自动换行的相关资料,需要的朋友可以参考。
c# winform 绘制多行文本:自动换行:文本c# winform 绘制多行文本:自动换行:文本c# winform 绘制多行文本:自动换行:文本c# winform 绘制多行文本:自动换行:文本c# winform 绘制多行文本:自动换行:文本c# winform 绘制...
主要介绍了canvas绘制文本内容自动换行的实现代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
/// 绘制文字自动换行 /// /// 绘图图面 /// 绘制文本 /// 绘制字体 /// 字体颜色 /// 最大宽度,达到最大宽度则换行 /// 起始坐标 /// 段落高度间隔 /// 字体间隔</param>
Android 自动翻页-文字自动换行的例子,测试自动换行,设置文字自动换行,得到字符串的信息,通过绘制TextUtil:实现自动换行,包括:行数、页数等信息,内部调用,本源码演示了文字自动换行的同时,还告诉初学者,...
在使用 canvas 绘制某字符串的时候,我们可能想要让该字符串在某处按要求换行。那么应该如何实现,本文就来介绍一下,有兴趣的可以了解一下
手机中的文字进行自动换行,再无需要数组的烦恼
StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面是如何使用StaticLayout的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。...
JavaMe Graphics类中的drawString不支持文本换行,这样绘制比较长的字符串时,文本被绘制在同一行,超过屏幕部分的字符串被截断了。如何使绘制的文本能自动换行呢?
如果我们绘制的文本长度不确定或者我们希望文本超出自动换行或者用省略号表示,光靠这个API是无法完成的。下面本人就讲下我在开发中是如何解决这个问题的。 1 wxml代码 2 wxss代码 canvas { width: 99%; ...
三字体字体文本 - ThreeJS的位图字体渲染,将字形批处理到单个BufferGeometry中。 支撑字环绕,字母间距,字距调整,与标准衍生物,,多纹理的字体,等等。 缩小后约12kb。 最新的3.x版本适用于Three r109及更高版本...
基于C#开发的将文本框或者外部记事本 的字符串用GDI技术绘制成可以自动根据自身大小换行的程序,可以直接用vs打开执行的源码
实现心电数据接收绘制app。
Android 自定义画布canvas 实现绘制和清空画布功能,内含源码、apk
Android DrawText字符串的绘制 Android DrawText字符串的绘制
Android使用HelloCharts绘制多曲线图
文本会根据指定的最大宽度自动换行,并对齐文本使其在工具提示框的左右两侧对齐,同时保持工具提示的默认系统外观。 zip 文件中 ...\Debug\Opulos\ 文件夹中提供的所有文件的源代码。 注意:为了使 justify 正常...
Android使用GlSurfaceView和OpenGL绘制三角形 Demo,用作GlSurfaceView的使用入门,详见我的博客 : https://blog.csdn.net/EthanCo/article/details/131536345