Android Span 架构介绍

2018-10-25  本文已影响0人  wyonxue

前言

Android Span架构具备强大的能力,是像Drawable那样强大的。一个应用中文本是非常重要的组成部分,基本上无处不在,掌握Span架构能让应用中文本表现的更灵活更丰富,更富表现力。

框架

主要层级
FontMetrics
FontMetrics1.png FontMetrics2.png
类图

工作原理

当调用TextView.setText(...),内部会适用Layout管理文本测量计算和渲染,它有三个子类:

  • Layout.draw()会负责文本的绘制,其中drawBackground会递归LineBackgroundSpan并调用lineBackgroundSpan.drawBackground来进行背景的绘制.
  • drawText则会首先通过TextLine.obtain()生成TextLine,如果是文本,则调用canvas.drawText绘制,如果包含了Spannble,emoji,则交给TextLine绘制.
  • TextLine#draw()会调用drawRun,进而调用handleRun()进行文本的渲染.
  • TextLayoutCache为了提高效率,在4.0之后加入.
  • 如果想要提升TextView的渲染效率,可以使用StaticLayout.

使用

关于各种span的使用可以参考这里
Span样式示例代码
Spans,一个强大的概念
Android Span 架构介绍
实现类似新浪微博帖子显示(2)——话题、@好友、表情解析工具类

参考

Android中的SpannableString,Spans以及TextView绘制原理

上一篇 下一篇

猜你喜欢

热点阅读