Skip to content
zzhoujay edited this page Nov 15, 2017 · 2 revisions

本章将详细介绍构建RichText时的各种参数

Source

需要解析的源文本

构建RichTextConfigBuild时传入,之后不可更改

即由RichText.fromxxx构建

RichType

富文本类型,有MarkdownHtml两种,默认后者

.type(RichType.MARKDOWN)

autoFix

自适应屏幕缩放图片,默认为true

将图片在长宽比例不变的情况下,进行缩放直至适应屏幕,一般来说是图片在宽度上填充屏幕

.autoFix(false)

resetSize

不使用img标签里的宽高,img标签的宽高存在才有用,默认false

在image标签中存在宽高尺寸时,若是设置为false,会为首次加载时的占位图设置宽高

.resetSize(true)

cacheType

缓存类型

有三种类型:

  1. NONE,不做任何缓存
  2. LAYOUT,只缓存图片的尺寸信息
  3. ALL,缓存图片的尺寸信息及图片内容

默认为CacheType.ALL

其中2、3若需要持久化缓存则需在RichText第一次使用时调用:

RichText.initCacheDir(context)

或者

RichText.initCacheDir(file)

来设置本地缓存目录

.cacheType(CacheType.ALL)

noImage

不显示图片,默认false

若设置为true,则不会进行任何图片的加载,也不会显示占位图,ImageFixCallback将不会被回调

.noImage(true)

clickable

链接图片是否可点击

此项设置有三种情况:

  1. 不设置,链接点击会调用浏览器打开
  2. 设置false,屏蔽所有点击事件
  3. 设置true,图片链接可点击,并且可以设置点击回调
.clickable(true)

autoPlay

GIF图片是否自动播放,默认false

.autoPlay(true)

scaleType

图片缩放类型,类似于ImageView的ScaleType

这里先分清三种概念:加载到内存中的图片的尺寸、图片边框的尺寸、真正显示的图片尺寸

加载到内存中的图片的尺寸

这个影响的是图片显示的质量,一般用于图片压缩,在ImageFixCallback的onSizeReady中设置

图片边框的尺寸

类似于ImageView的width和height,是图片的边框,图片不能超出边框显示,由ImageFixCallback中的onLoading、onFailure和onImageReady中调用ImageHolder的setWidthsetHeight方法设置

真正显示的图片尺寸

由图片边框和scaleType共同决定图片的最终显示效果,scaleType类似于ImageView的scaleType,其总共有9中缩放类型:

  1. NONE,不进行任何缩放和平移,按照原图尺寸放置在左上角
  2. CENTER,不进行缩放,将图片放置在边框的中心
  3. CENTER_CROP,以填满整个边框为目的,对图片进行等比例缩放,并将图片放置在边框中心
  4. CENTER_INSIDE,以原图完全显示为目的,对图片进行等比例缩放,并将图片放置在边框中心
  5. FIT_CENTER,把图片等比例扩大或缩小到边框的尺寸,并且居中显示
  6. FIT_START,把图片等比例扩大或缩小到边框尺寸,并且显示在边框上部分或是左边
  7. FIT_END,把图片等比例扩大或缩小到边框尺寸,并且显示在边框的下部分或是右边
  8. FIT_XY,把图片按照边框缩放,并填充显示
  9. FIT_AUTO,将图片的宽度按照边框宽度缩放,并且按照同比例缩放高度

默认为NONE,当autoFix为true时使用FIT_AUTO

.scaleType(ImageHolder.ScaleType.FIT_AUTO)

width

边框的宽度

可以选择为具体数值、ImageHolder.WRAP_CONTENT和ImageHolder.MATCH_PARENT,默认为ImageHolder.WRAP_CONTENT

.width(ImageHolder.MATCH_PARENT)

height

边框高度

可以选择为具体数值、ImageHolder.WRAP_CONTENT和ImageHolder.MATCH_PARENT,默认为ImageHolder.WRAP_CONTENT

.height(ImageHolder.MATCH_PARENT)

singleLoad

是否单线程解析,默认true

在有多个RichText同时解析时起作用

  • true:解析顺序执行
  • false:解析并发执行,适合在RecyclerView和ListView中
.singleLoad(false)

ImageDownloader

设置DefaultImageGetter的图片下载器

只有在使用DefaultImageGetter的情况下生效

在使用DefaultImageGetter的情况下,若是添加了OkHttpImageDownloader库的依赖可以自动使用OkHttpImageDownloader不用进行设置

若需要自定义图片下载器则需要实现com.zzhoujay.richtext.ig.ImageDownloader接口

ImageFixCallback

图片调整回调设置

接收一个ImageFixCallback类型的回调,在图片加载的过程中逐步调用

详情见:手动调整图片

.fix(myImageFixCallback)

LinkFixCallback

链接调整回调设置

接收一个LinkFixCallback类型的回调,在链接解析过程中被调用

详情见:手动调整链接

.linkFix(myLinkFixCallback)

OnImageClickListener

图片点击回调设置

接收一个OnImageClickListener类型的回调,在图片被点击时调用

.imageClick(myImageClickListener)

OnImageLongClickListener

图片长按回调设置

接收一个OnImageLongClickListener类型的回调,在图片被点击时调用

.imageLongClick(myImageLongClickListener)

OnUrlClickListener

链接点击回调设置

接收一个OnUrlClickListener类型的回调,在链接被点击时调用

.urlClick(myUrlClickListener)

OnUrlLongClickListener

图片长按回调设置

接收一个OnUrlLongClickListener类型的回调,在图片被点击时调用

.urlLongClick(myUrlLongClickListener)

placeHolder

图片加载过程中的占位图生成器设置

生成器须实现com.zzhoujay.richtext.callback.DrawableGetter接口

注意

drawable的bounds需要自行设置

.placeHolder(myPlaceHolderDrawableGetter)

errorImage

图片加载失败的占位图生成器设置

生成器须实现com.zzhoujay.richtext.callback.DrawableGetter接口

注意

drawable的bounds需要自行设置

.errorImage(myErrorImageDrawable)

ImageGetter

指定使用的图片加载器

设置特定的图片加载器进行富文本中图片的加载,接受一个实现了com.zzhoujay.richtext.callback.ImageGetter的类

现有实现有两个:

  1. DefaultImageGetter,使用okhttp进行图片的下载,支持图片缓存(内存+磁盘),支持GIF图片,支持加载本地图片和Assets目录下的图片
  2. GlideImageGetter,使用Glide进行图片的加载,使用Glide自己的缓存机制,支持GIF图片,其余和Glide类似

详情见:自定义图片加载器

其中DefaultImageGetter集成在RichText库中,为默认使用的ImageGetter

GlideImageGetter需要手动引入:compile 'com.zzhoujay.glideimagegetter:glideimagegetter:latest-version'

也可以根基自己的需求自行实现ImageGetter

推荐使用DefaultImageGetter

.imageGetter(yourImageGetter)

Callback

解析完成的回调(此时图片也都加载完成)

.done(yourCallback)

Tag

绑定RichText到某个对象

绑定后可以通过RichText.clear(tag)来进行缓存和任务的清理

.bind(tag)

BorderHolder

图片边框属性

此属性由四个方法设置:

  1. showBorder,是否显示边框,默认不显示
  2. borderSize,边框尺寸,默认5
  3. borderColor,边框颜色,默认黑色
  4. borderRadius,边框圆角弧度,默认0
.showBorder(true).borderSize(10).borderColor(Color.RED).borderRadius(5)