使Android支持html 的两个接口
来源:互联网 发布:发布淘宝优惠券的工作 编辑:程序博客网 时间:2024/06/05 18:06
spanned Android
1.fromHtml(String source,int flags)
public static Spanned fromHtml(String source) { return fromHtml(source, FROM_HTML_MODE_LEGACY, null, null); }
目前android不支持全部的html的标签,目前只支持与文本显示和段落等标签,对于图片和其他的多媒体,还有一些自定义标签不能识别输入的参数为(html格式的文本)
2.fromHtml(String source, int flags, ImageGetter imageGetter,TagHandler tagHandler)
imageGetter :对图片处理(处理html中的图片标签)
tagHandler :对标签进行处理(相当于自定义的标签处理,在这里面可以处理自定义的标签)
【1】实现ImageGetter获取网络图片
ImageGetter imgGetter = new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { Drawable d=null; try{ URL aryURI = new URL(source); /* 打开连接 */ URLConnection conn = aryURI.openConnection(); conn.connect(); /* 转变为 InputStream */ InputStream is = conn.getInputStream(); /* 将InputStream转变为Bitmap */ //Bitmap bm = BitmapFactory.decodeStream(is); /* 关闭InputStream */ /*添加图片*/ d=Drawable.createFromStream(is, "111"); is.close(); } catch (IOException e) { e.printStackTrace(); } d.setBounds(1, 1, 45, 45); return d; }
【2】实现 自定义的TagHandler
实现的概要说明:
- 继承TagHandler接口
- 实现
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader)
public class MyHtmlTagHandler implements TagHandler { public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) { if(tag.equalsIgnoreCase("strike") || tag.equals("s")) { processStrike(opening, output); } } private void processStrike(boolean opening, Editable output) { int len = output.length(); if(opening) { output.setSpan(new StrikethroughSpan(), len, len, Spannable.SPAN_MARK_MARK); } else { Object obj = getLast(output, StrikethroughSpan.class); int where = output.getSpanStart(obj); output.removeSpan(obj); if (where != len) { output.setSpan(new StrikethroughSpan(), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } } private Object getLast(Editable text, Class kind) { Object[] objs = text.getSpans(0, text.length(), kind); if (objs.length == 0) { return null; } else { for(int i = objs.length;i>0;i--) { if(text.getSpanFlags(objs[i-1]) == Spannable.SPAN_MARK_MARK) { return objs[i-1]; } } return null; } }}
实际使用和预览效果:
String msg = "1.jsoup<br> <a href=''>https://github.com/jhy/jsoup</a><br>" + "2.okhttp<br> <a href=''>https://github.com/square/okhttp</a><br>" + "3.banner<br> <a href=''>https://github.com/youth5201314/banner</a><br>" + "4.fresco<br> <a href=''>https://github.com/facebook/fresco</a><br>" + "5.GalleryPick<br> <a href=''>https://github.com/YancyYe/GalleryPick</a><br>" + "6.LRecyclerView<br> <a href=''>https://github.com/jdsjlzx/LRecyclerView</a><br>" + "7.FloatingActionButton<br> <a href=''>https://github.com/makovkastar/FloatingActionButton</a><br>" + "8.Android Open Source Project<br> <a href=''>https://developer.android.google.cn/license.html</a>"; new AlertDialog.Builder(meAbout.this).setTitle("开源许可").setCancelable(false) .setMessage(Html.fromHtml(msg)).setPositiveButton("确定", new DialogInterface.OnClickListener() { //此处fromHTML方法当传入html格式的source后,返回Spanned类型的对象 @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show();
预览效果:
阅读全文
1 0
- 使Android支持html 的两个接口
- Android 支持html标签以及接口总结
- 介绍两个在DELPHI下支持接口的类
- Android TextView 支持的HTML标签
- Android TextView 支持的HTML标签
- Android TextView 支持的HTML标签
- Android TextView 支持的HTML标签【转载】
- Android支持HTML标签
- Android支持HTML标签
- Android支持HTML标签
- Android支持HTML标签
- Android支持HTML标签
- 升级Android支持库版本遇到的两个问题
- android 多媒体文件 支持第三方应用的调用接口
- 【Android】支持https接口调用的简单证书校验
- Android中读写xml文件的两个接口
- android支持html的<input type="file">标签
- android支持html的<input type="file">标签
- NestedScrollView中嵌套ViewPager或RecyclerView出现滑动冲突的解决
- 一周学习简单总结
- 中缀表达式
- 关于stata的运用
- 尚未安装.NET Framework 4.5.2,原因是:安装时发生严重错误
- 使Android支持html 的两个接口
- 数组与指针的区别与联系
- c++随笔——17.10.21(二)
- 浅谈视频监控行业编解码技术的发展与应用
- 安卓(JAVA)读取Mp3文件中的歌曲信息(及readLine()出现乱码问题的解决方法)
- char *string="xxxxxxxxx" 与 char string[]="xxxxx"的区别
- Oracle之分区表效率与普通表比较
- 电路分析-第四章 分解方法及单口网络
- Ubuntu为安装的软件添加启动图标