Android TextView图文混编之Html.formHtml()
来源:互联网 发布:ssh ajax json 实例 编辑:程序博客网 时间:2024/05/09 15:47
前言
在TextView中要显示HTML文字是比较轻松的事,但是在其中混上图片就变的复杂了起来。本文使用Glide作为图片加载工具。
上手
一.首先看看需要什么对象
public void onSuccess(String string) { CharSequence charSequence; // 这个是自定义的ImageGetter DetailImageGetter detailImageGetter = new DetailImageGetter(this,textView); //因为fromHtml在api24开始过时,所以加上版本判断 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { charSequence = Html.fromHtml(string, Html.FROM_HTML_MODE_LEGACY, detailImageGetter, null); } else { charSequence = Html.fromHtml(string, detailImageGetter, null); } textView.setText(charSequence); }
二.来看看自定义的ImageGetter类:
class DetailImageGetter implements Html.ImageGetter { private Context context; private TextView textView; DetailImageGetter(Context context, TextView textView) { this.context = context; this.textView = textView; } @Override public Drawable getDrawable(String source) { final UrlDrawable drawable = new UrlDrawable(); Glide.with(context) .load(source) .asBitmap() .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { drawable.setBitmap(resource); drawable.setBounds(0, 0, resource.getWidth(), resource.getHeight()); textView.invalidate(); textView.setText(textView.getText()); } }); return drawable; } private class UrlDrawable extends BitmapDrawable { private Bitmap bitmap; @Override public void draw(Canvas canvas) { super.draw(canvas); if (bitmap != null) { canvas.drawBitmap(bitmap, 0, 0, getPaint()); } } void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } } }
其中包含了一个自定义的BitmapDrawable类。如果没有重写这个onDraw方法的话,显示不出图片来,只会有一个图片大小的空位在那里。
到这里就完成了图片的下载和显示,并且利用了Glide进行了缓存。但这里还有一个问题,BitmapDrawable的空构造器已经过时了,但是当我使用BitmapDrawable(Res,bitmap)这个构造器的时候图片无法加载。根据查看源码只发现这个res的传入是更新了mTargetDensity,不知道为什么就无法显示了。希望各位博友能给予一些指导。
阅读全文
1 0
- Android TextView图文混编之Html.formHtml()
- 图文混编效果之TextView、EditText中显示图片
- Android TextView加载Html图文混排
- 图文混编
- android基于XRichText实现图文混编
- Android控件之TextView支持html
- Android TextView之Html.fromHtml学习
- Android UI之TextView实现图文混合效果
- android TextView图文混排
- android TextView图文混排
- Android TextView图文混合编排
- TextView中的HTML进行图文混排
- Textview显示Html 图文混排
- HTML ApiCloud混编Android和IOS
- Android textView展示html图片,实现图文混排,点击查看大图片
- Android聊天实现图文混编(包括gif显示)
- android TextView 显示HTML
- Android TextView HTML链接
- [分享]基于百度云IoT的可燃气体监测仪TiJOS应用发布 [强烈推荐]
- 1064. 朋友数(20) PAT乙级真题
- 判断是否为数字类型
- 最近才知道php调用函数可以这样
- 最高精錬办法,教你如何训练脑力!
- Android TextView图文混编之Html.formHtml()
- WebService JAX-WS 注释
- vs中使用QT静态库
- 精通批处理教程 批处理从入门到精通
- visual studio上搭建arm交叉编译环境
- 【C++】C++中的C
- Linux下的tar压缩解压缩命令详解
- BZOJ1037 [ZJOI2008]生日聚会Party 【DP】
- sys:1: DtypeWarning: Columns (0,19) have mixed types. Specify dtype option on import or set low_memo