-
Notifications
You must be signed in to change notification settings - Fork 561
参数介绍
本章将详细介绍构建RichText时的各种参数
需要解析的源文本
构建RichTextConfigBuild
时传入,之后不可更改
即由RichText.fromxxx
构建
富文本类型,有
Markdown
和Html
两种,默认后者
.type(RichType.MARKDOWN)
自适应屏幕缩放图片,默认为true
将图片在长宽比例不变的情况下,进行缩放直至适应屏幕,一般来说是图片在宽度上填充屏幕
.autoFix(false)
不使用img标签里的宽高,img标签的宽高存在才有用,默认false
在image标签中存在宽高尺寸时,若是设置为false,会为首次加载时的占位图设置宽高
.resetSize(true)
缓存类型
有三种类型:
- NONE,不做任何缓存
- LAYOUT,只缓存图片的尺寸信息
- ALL,缓存图片的尺寸信息及图片内容
默认为CacheType.ALL
其中2、3若需要持久化缓存则需在RichText第一次使用时调用:
RichText.initCacheDir(context)
或者
RichText.initCacheDir(file)
来设置本地缓存目录
.cacheType(CacheType.ALL)
不显示图片,默认false
若设置为true,则不会进行任何图片的加载,也不会显示占位图,ImageFixCallback将不会被回调
.noImage(true)
链接图片是否可点击
此项设置有三种情况:
- 不设置,链接点击会调用浏览器打开
- 设置false,屏蔽所有点击事件
- 设置true,图片链接可点击,并且可以设置点击回调
.clickable(true)
GIF图片是否自动播放,默认false
.autoPlay(true)
图片缩放类型,类似于ImageView的ScaleType
这里先分清三种概念:加载到内存中的图片的尺寸、图片边框的尺寸、真正显示的图片尺寸
加载到内存中的图片的尺寸
这个影响的是图片显示的质量,一般用于图片压缩,在ImageFixCallback的onSizeReady中设置
图片边框的尺寸
类似于ImageView的width和height,是图片的边框,图片不能超出边框显示,由ImageFixCallback中的onLoading、onFailure和onImageReady中调用ImageHolder的setWidth
和setHeight
方法设置
真正显示的图片尺寸
由图片边框和scaleType共同决定图片的最终显示效果,scaleType类似于ImageView的scaleType,其总共有9中缩放类型:
- NONE,不进行任何缩放和平移,按照原图尺寸放置在左上角
- CENTER,不进行缩放,将图片放置在边框的中心
- CENTER_CROP,以填满整个边框为目的,对图片进行等比例缩放,并将图片放置在边框中心
- CENTER_INSIDE,以原图完全显示为目的,对图片进行等比例缩放,并将图片放置在边框中心
- FIT_CENTER,把图片等比例扩大或缩小到边框的尺寸,并且居中显示
- FIT_START,把图片等比例扩大或缩小到边框尺寸,并且显示在边框上部分或是左边
- FIT_END,把图片等比例扩大或缩小到边框尺寸,并且显示在边框的下部分或是右边
- FIT_XY,把图片按照边框缩放,并填充显示
- FIT_AUTO,将图片的宽度按照边框宽度缩放,并且按照同比例缩放高度
默认为NONE,当autoFix为true时使用FIT_AUTO
.scaleType(ImageHolder.ScaleType.FIT_AUTO)
边框的宽度
可以选择为具体数值、ImageHolder.WRAP_CONTENT和ImageHolder.MATCH_PARENT,默认为ImageHolder.WRAP_CONTENT
.width(ImageHolder.MATCH_PARENT)
边框高度
可以选择为具体数值、ImageHolder.WRAP_CONTENT和ImageHolder.MATCH_PARENT,默认为ImageHolder.WRAP_CONTENT
.height(ImageHolder.MATCH_PARENT)
是否单线程解析,默认true
在有多个RichText同时解析时起作用
- true:解析顺序执行
- false:解析并发执行,适合在RecyclerView和ListView中
.singleLoad(false)
设置DefaultImageGetter的图片下载器
只有在使用DefaultImageGetter的情况下生效
在使用DefaultImageGetter的情况下,若是添加了OkHttpImageDownloader
库的依赖可以自动使用OkHttpImageDownloader
不用进行设置
若需要自定义图片下载器则需要实现com.zzhoujay.richtext.ig.ImageDownloader
接口
图片调整回调设置
接收一个ImageFixCallback类型的回调,在图片加载的过程中逐步调用
详情见:手动调整图片
.fix(myImageFixCallback)
链接调整回调设置
接收一个LinkFixCallback类型的回调,在链接解析过程中被调用
详情见:手动调整链接
.linkFix(myLinkFixCallback)
图片点击回调设置
接收一个OnImageClickListener类型的回调,在图片被点击时调用
.imageClick(myImageClickListener)
图片长按回调设置
接收一个OnImageLongClickListener类型的回调,在图片被点击时调用
.imageLongClick(myImageLongClickListener)
链接点击回调设置
接收一个OnUrlClickListener类型的回调,在链接被点击时调用
.urlClick(myUrlClickListener)
图片长按回调设置
接收一个OnUrlLongClickListener类型的回调,在图片被点击时调用
.urlLongClick(myUrlLongClickListener)
图片加载过程中的占位图生成器设置
生成器须实现com.zzhoujay.richtext.callback.DrawableGetter
接口
注意
drawable的bounds需要自行设置
.placeHolder(myPlaceHolderDrawableGetter)
图片加载失败的占位图生成器设置
生成器须实现com.zzhoujay.richtext.callback.DrawableGetter
接口
注意
drawable的bounds需要自行设置
.errorImage(myErrorImageDrawable)
指定使用的图片加载器
设置特定的图片加载器进行富文本中图片的加载,接受一个实现了com.zzhoujay.richtext.callback.ImageGetter的类
现有实现有两个:
- DefaultImageGetter,使用okhttp进行图片的下载,支持图片缓存(内存+磁盘),支持GIF图片,支持加载本地图片和Assets目录下的图片
- GlideImageGetter,使用Glide进行图片的加载,使用Glide自己的缓存机制,支持GIF图片,其余和Glide类似
详情见:自定义图片加载器
其中DefaultImageGetter集成在RichText库中,为默认使用的ImageGetter
GlideImageGetter需要手动引入:compile 'com.zzhoujay.glideimagegetter:glideimagegetter:latest-version'
也可以根基自己的需求自行实现ImageGetter
推荐使用DefaultImageGetter
.imageGetter(yourImageGetter)
解析完成的回调(此时图片也都加载完成)
.done(yourCallback)
绑定RichText到某个对象
绑定后可以通过RichText.clear(tag)来进行缓存和任务的清理
.bind(tag)
图片边框属性
此属性由四个方法设置:
- showBorder,是否显示边框,默认不显示
- borderSize,边框尺寸,默认5
- borderColor,边框颜色,默认黑色
- borderRadius,边框圆角弧度,默认0
.showBorder(true).borderSize(10).borderColor(Color.RED).borderRadius(5)
by zzhoujay