Android自动解析html带图片,实现图文混排
程序员文章站
2022-08-03 10:05:59
在android中,如何将html代码转换为text,然后显示在textview中呢,有一个简单直接的方法: 然而用的时候却发现html里面的图片没法被被解析出来,别慌,Html还有一个方法: 其中,我们可以自定义imageGetter,这个对象是用于解析html中的图片。 最终调用: textVi ......
在android中,如何将html代码转换为text,然后显示在textview中呢,有一个简单直接的方法:
textview.settext(html.fromhtml(content));
然而用的时候却发现html里面的图片没法被被解析出来,别慌,html还有一个方法:
public static spanned fromhtml(string source, imagegetter imagegetter,taghandler taghandler)
其中,我们可以自定义imagegetter,这个对象是用于解析html中的图片。
public class mimagegetter implements html.imagegetter { private context c; private textview container; public mimagegetter(textview text, context c) { this.c = c; this.container = text; } @override public drawable getdrawable(string source) { drawable drawable = null; inputstream is = null; //source便是图片的路径,如果图片在本地,可以这样做
is = c.getresources().getassets().open(source); try { typedvalue typedvalue = new typedvalue(); typedvalue.density = typedvalue.density_default; drawable = drawable.createfromresourcestream(null, typedvalue, is, "src"); drawable.setbounds(0, 0, drawable.getintrinsicwidth(),
drawable.getintrinsicheight()); return drawable; } catch (exception e) { system.out.println(e); return null; } }
最终调用:
textview.settext(html.fromhtml(text, new mimagegetter(textview, this), null));
这样便可以实现图文混排了,在该显示图片的地方显示图片。
如果是要显示网络上的图片,getdrawable方法可以这样
public drawable getdrawable(string source) { final levellistdrawable drawable = new levellistdrawable(); glide.with(c).load(source).asbitmap().into(new simpletarget<bitmap>() { @override public void onresourceready(bitmap resource,
glideanimation<? super bitmap> glideanimation) { if(resource != null) { bitmapdrawable bitmapdrawable = new bitmapdrawable(resource); drawable.addlevel(1, 1, bitmapdrawable); drawable.setbounds(0, 0, resource.getwidth(),resource.getheight()); drawable.setlevel(1); container.invalidate(); container.settext(container.gettext()); } } }); return drawable; }
第三个参数 其作用是把 html 带标记的文本内容字符串转化成可以显示效果的的 spanned 字符串 。由于并非所有的 html 标签都可以转化,所以在使用时,用户需要自己添加一些必要的标签和处理方法时才会使用的。
转载请标明出处,维权必究:https://www.cnblogs.com/tangzh/p/10491976.html
参考链接:
上一篇: 分享微商提高销量快速卖货的四大绝招
下一篇: iOS----KVC和KVO 详解