在项目中有时候会遇到富文本的图文混排
先放 demo 地址
https://github.com/MC317/htmlResolve
效果图:
富文本解析效果图
其中 module,html_resolve 为 HTML 解析, 如果返回的 HTML 中 img 路径不全需要配置 Constans 中的 IMAGE_URL 为图片地址前缀
在 activity 中设置:
oncreate 方法中对富文本方法进行初始化:
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- htmlSpanner = new HtmlSpanner(this, dm.widthPixels, handler);
通过调用 setInfo 方法对 HTML 进行解析并将解析到的图文信息显示到 textview 上
- private void setInfo() {
- new Thread(new Runnable() {
- @Override
- public void run() {
- final Spannable spannable = htmlSpanner.fromHtml(HTML);
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- textView.setText(spannable);
- textView.setMovementMethod(LinkMovementMethodExt.getInstance(handler, ImageSpan.class));
- }
- });
- }
- }).start();
- }
在 handler 中获取富文本中的图片地址, 如果富文本中为多图, 会多次进入该方法, 可定义一个 list 来接收图片地址, 实现预览图的功能.
- @SuppressLint("HandlerLeak")
- final Handler handler = new Handler() {
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 1:// 获取图片路径列表
- String url = (String) msg.obj;
- Log.e("jj", "url>>" + url);
- break;
- }
- }
- };
来源: http://www.jianshu.com/p/75b30d0a11b3