drawText(String text, float x, float y, Paint paint)

x,y是基于文字基本线的,而不是android坐标系的左上角。

使用staticLayout进行文字换行,它既可以为文字设置宽度上限来让文字自动换行,也会在 \n 处主动换行

例子:

String text1 = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
StaticLayout staticLayout1 = new StaticLayout(text1, paint, 600,  Layout.Alignment.ALIGN_NORMAL, 1, 0, true);
String text2 = "a\nbc\ndefghi\njklm\nnopqrst\nuvwx\nyz";
StaticLayout staticLayout2 = new StaticLayout(text2, paint, 600,  Layout.Alignment.ALIGN_NORMAL, 1, 0, true);...canvas.save();
canvas.translate(50, 100);
staticLayout1.draw(canvas);
canvas.translate(0, 200);
staticLayout2.draw(canvas);
canvas.restore(); 

效果:

StaticLayout 的构造方法是 StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:

width 是文字区域的宽度,文字到达这个宽度后就会自动换行; 
align 是文字的对齐方向; 
spacingmult 是行间距的倍数,通常情况下填 1 就好; 
spacingadd 是行间距的额外增加值,通常情况下填 0 就好; 
includeadd 是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界。

如果你需要进行多行文字的绘制,并且对文字的排列和样式没有太复杂的花式要求,那么使用 StaticLayout 就好。

Paint对文字绘制的辅助

setTypeface(Typeface typeface)  设置字体样式

setFakeBoldText(boolean fakeBoldText) 设置伪粗体

setStrikeThruText(boolean strikeThruText) 是否加删除线

setUnderlineText(boolean underlineText) 是否加下划线

setTextSkewX(float skewX) 字体倾斜对应的角度

setLetterSpacing(float letterSpacing) 设置字符间距,默认是0

setTextAlign(Paint.Align align) 设置文字对齐方式,左对齐,右对齐,中间对齐等

setTextLocale(Locale locale) 设置字体的语言区域,繁体中文,简体中文等

转载于:https://www.cnblogs.com/krislight1105/p/10005902.html

drawText文字绘制知识相关推荐

  1. android drawtext 方法,Android 文字绘制(DrawText)技术总结

    这里的绘制文字不是直接调用TextView.setText(String content)去展示文字内容.而是在View上面通过 canvas.drawText(text, x, y,textPain ...

  2. Android之TextView文字绘制流程

    一:TextView的onDraw()方法: 1.第一句restartMarqueeIfNeeded()绘制字幕滚动. protected void onDraw(Canvas canvas) {re ...

  3. 安卓文字绘制和歌词器的简单实现

    文章目录 安卓绘制文本的细节和歌词动画实战 绘制简单文本 绘制API 绘制线 设计多条线的原因 中心绘制 x轴居中 align居中 宽度居中 正中心绘制 动画绘制 原理 过度绘制 解决过度绘制 Dem ...

  4. OpenGL笔记16 文字绘制

    增加了两个文件,showline.c, showtext.c.分别为第二个和第三个示例程序的main函数相关部分. 在ctbuf.h和textarea.h最开头部分增加了一句#include < ...

  5. EasyX---快速入门---(一)基本绘图与文字绘制

    先上导图 基本说明 EasyX是针对C++的图形库,可以帮助C/C++初学者快速上手图形和游戏编程 EasyX原理 基于Windows图形编程,将Windows下的复杂程序过程进行封装,将Window ...

  6. Canvas——文字绘制

    文章目录 文字绘制 文字样式 文本宽度 文字绘制 画笔.font = "字体大小 字体" 画笔.fillText =(文字内容,x1 ,y1, w) :x1,y1: 内容的起点: ...

  7. Skia深入分析5——skia文字绘制的实现

    文字绘制主要包括编码转换(主要是中文).字形解析(点线或image)和实际渲染三个步骤.在这个过程中,字形解析和实际渲染均是耗时步骤.Skia对文字解析的结果做了一套缓存机制.在中文字较多,使用多种字 ...

  8. 计算机视觉加强之图像特效与线段文字绘制

    一.图像特效介绍 1.灰度处理:彩色图片灰度化 对于彩色图片有三个颜色通道:RGB 对于灰度图片如果也是三个颜色通道,则RGB值是相等的 2.底板效果(灰度) 彩色底板是通过当前RGB取反得到的 3. ...

  9. pygame文字绘制机制

    这是学习嵩天老师的课程,习得并引以为笔记. 何为文字绘制?增在python中以print()来打印文字在屏幕上,但是在pygame上用print绘制特定的文字是十分困难的,所以不能使用print,而是 ...

最新文章

  1. Android自定义控件属性的使用
  2. 搜索-----棋盘问题
  3. 自定义圆形控件 RoundImageView
  4. ue 编写linux脚本,UltraEdit23 sh文件 (shell脚本)着色
  5. 判断一个程序员水平高低的标准?
  6. oracle 类似decode,类似于ORACLE decode 的用法
  7. Failed to connect to github.com port 443 after 21505 ms: Timed out
  8. 2020中国云厂商预测:华为云、UCloud、青云、百度云、金山云等,谁是第三很重要?...
  9. 网易云易盾牵手百视通 助力广电领域新媒体内容安全
  10. rails 3环境搭建
  11. EMNLP2018 - 语言理解+对话系统的最新进展
  12. 易语言WebUI教程 —— 入门简介
  13. 最新WannaRen勒索病毒解密工具
  14. idea打包jar的多种方式(总结-共三种)
  15. 哪个计算机无法做到双屏显示,笔记本电脑怎么实现双屏显示不同的内容
  16. Unity3d接入googleplay内购详细说明(四)
  17. win10 android 传多个文件夹,Win10使用ROBOCOPY快速复制多个文件夹的操作方法
  18. 【Mskt问题的解决办法】使用御坂翻译器2.x版本遇到的常见问题及解决办法
  19. PHP高级开发技巧与范例,PHP高级开发技巧与范例(PDG)
  20. 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。

热门文章

  1. 弹窗和 window 的方法
  2. 手机端二维码遮罩层加弹窗显示
  3. CS231n课程笔记:神经网络笔记3
  4. HDU 4859-海岸线(网络流_最小割)
  5. 软件测试笔试练习题与参考答案(一)
  6. Python 中的len()函数
  7. 微软发布会推Win10新品 Lumia手机与电脑齐更新
  8. css透明饱和度,css中filter:alpha透明度使用
  9. 用python求pi的近似值_python求pi的方法
  10. 如何从文件目录中直接进入cmd页面