android中的Html.fromHtml可以用来加载HTML的内容,fromHtml有三个参数需要设置,第一个是要显示的html内容,第二个就是要说的重点,ImageGetter,用来处理图片加载的,第三个TagHandler可以设置为null,接下来我们来讲解下ImageGetter,网上很多的方法都是直接引用本地的图片,是同步的,比如:

private ImageGetter imageGetter = new ImageGetter() {@Overridepublic Drawable getDrawable(String source) {String f = pic_path.substring(0, 1);String url = pic_path.substring(2);if (f.equals("1")) {try {ContentResolver cr = getActivity().getContentResolver();Uri uri = Uri.parse(url);Bitmap bitmap = getimage(cr, uri);return getMyDrawable(bitmap);} catch (Exception e) {e.printStackTrace();return null;}} else {return null;}}};上面的代码是我做的一个项目里面用到的引用本地图片的方法,重写imagegetter,然后用ContentResolver来读取图片转换为Bitmap,然后再进行显示,可是,很多时候会我们都需要引用的是网络图片的,那这个方法就行不通了,

首先,我们先创建一个URLDrawable,让它去继承BitmapDrawable,重写draw方法,这个有什么用呢?这个可以让你加载图片的时候显示初始的图片,也就是加载中的图片。

URLDrawable.java:

public class URLDrawable extends BitmapDrawable { // the drawable that you need to set, you could set the initial drawing // with the loading image if you need to protected Drawable drawable; @Override public void draw(Canvas canvas) { // override the draw to facilitate refresh function later if(drawable != null) { drawable.draw(canvas); } }}

接下来就是重写ImageGetter

URLImageParser继承ImageGetter

放源码

URLImageParser.java

public class URLImageParser implements ImageGetter { Context c; EditText container; /*** * 构建URLImageParser将执行AsyncTask,刷新容器 * @param t * @param c */ public URLImageParser(EditText t, Context c) { this.c = c; this.container = t; } public Drawable getDrawable(String source) { URLDrawable urlDrawable = new URLDrawable(); // 获得实际的源 ImageGetterAsyncTask asyncTask = new ImageGetterAsyncTask( urlDrawable); asyncTask.execute(source); //返回引用URLDrawable我将改变从src与实际图像标记 return urlDrawable; } public class ImageGetterAsyncTask extends AsyncTask{ URLDrawable urlDrawable; public ImageGetterAsyncTask(URLDrawable d) { this.urlDrawable = d; } @Override protected Drawable doInBackground(String... params) { String source = params[0]; return fetchDrawable(source); } @Override protected void onPostExecute(Drawable result) { // 设置正确的绑定根据HTTP调用的结果 Log.d("height",""+result.getIntrinsicHeight()); Log.d("width",""+result.getIntrinsicWidth()); urlDrawable.setBounds(0, 0, 0+result.getIntrinsicWidth(), 0+result.getIntrinsicHeight()); // 改变当前可提取的参考结果从HTTP调用 urlDrawable.drawable = result; // 绘制图像容器 URLImageParser.this.container.invalidate(); // For ICS URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight() + result.getIntrinsicHeight())); // Pre ICS URLImageParser.this.container.setEllipsize(null); } /*** * 得到Drawable的URL * @param urlString * @return */ public Drawable fetchDrawable(String urlString) { try { InputStream is = fetch(urlString); Drawable drawable = Drawable.createFromStream(is, "src"); drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(), 0 + drawable.getIntrinsicHeight()); return drawable; } catch (Exception e) { return null; } } private InputStream fetch(String urlString) throws MalformedURLException, IOException { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet request = new HttpGet(urlString); HttpResponse response = httpClient.execute(request); return response.getEntity().getContent(); } }}

代码里的注释也非常的清楚明了了,这里就不用重复说明了,最重要的就是要重写onPostExecute,这个方法是加载完毕之后UI的刷新用的,需要对drawable进行重绘才能在EditText中显示出来,而且不会和文字的位置重叠,Android EditText加载HTML内容(内容包含网络图片)》(https://www.unjs.com)。是不是非常的简单?

android edittext html 图片,Android EditText加载HTML内容(内容包含网络图片) -电脑资料...相关推荐

  1. 【图片选择】Android 仿微信图片选择器疾风加载 (单选,多选,相机)--唯剑做伴且随疾风前行

    请下载必要的配置文件按里面的目录copy导入使用 效果图 配置 app graild加依赖:compile 'com.squareup.picasso:picasso:2.4.0' 权限: <u ...

  2. html加载占位图片,Skeleton Screen加载占位图(内容出现前显示灰色占位图)的分析与实现...

    今天有几个好友问了这个叫加载占位图的实现方法,我还在此问题下做了个回答. 由于国内对这个的名词是各有各的叫法,所以这里直接用加载占位图来解释. 相信很多人都看到过图中这样的加载方式: 这个图是一个国内 ...

  3. android 记一次富文本加载之路

    文章链接:https://mp.weixin.qq.com/s/69TRkmFL1aNuSqfw4ULMJw 项目中经常涉及到富文本的加载,后台管理端编辑器生成的一段html 代码要渲染到移动端上面, ...

  4. Android插件化开发之动态加载技术简单易懂的介绍方式

    转载地方:https://segmentfault.com/a/1190000004062866 基本信息 Author:kaedea GitHub:android-dynamical-loading ...

  5. android 自定义view 动画效果,Android自定义view实现阻尼效果的加载动画

    效果: 需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又 ...

  6. android 皮肤包换肤之Resources加载(一)

    Android 换肤之资源(Resources)加载(一) 本系列计划3篇: Android 换肤之资源(Resources)加载(一) - 本篇 setContentView() / LayoutI ...

  7. 携程Android App插件化和动态加载实践

    转载自:http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading?email=947091870@qq.com 编者按:本文为携程无 ...

  8. Android插件化开发之动态加载本地皮肤包进行换肤

    Android插件化开发之动态加载本地皮肤包进行换肤 前言: 本文主要讲解如何用开源换肤框架 android-skin-loader-lib来实现加载本地皮肤包文件进行换肤,具体可自行参考框架原理进行 ...

  9. Android开源框架集合分享-图像加载

    关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最大的需求应该就在图像的显示上了,一开始的话都是直接加载,等到写完之后发现内存溢出,然后开始优 ...

最新文章

  1. 应届生失业率或继续上升?别怕,这份秋招指南请收好!
  2. 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
  3. Sublime Text 2报“Decode error - output not utf-8”错误的解决办法
  4. Android设计模式——单例模式(Singleton)
  5. 机器学习(十七)——决策树, 推荐系统进阶
  6. 【渝粤教育】国家开放大学2018年春季 8622-22T社会调查研究与方法 参考试题
  7. 《MySQL 8.0.22执行器源码分析(2)解读函数 ExecuteIteratorQuery》
  8. ES6之Module的语法(1)
  9. java service 事物_Service 事务(JdbcUtils 升级)
  10. 大学 C语言程序设计第一讲,c语言程序设计1第一讲(第一章上).ppt
  11. 前端与移动开发之vue-day1(1)
  12. java几种集合遍历速度对比
  13. 论各类BI工具的“大数据”特性!
  14. 关于android的apk版本升级的一些建议
  15. matlab基于视频的车流量检测,基于视频的车流量统计——matlab代码.docx
  16. 蓝色理想:建站初期如何低成本运营网站
  17. 【转】大河报重要版面刊登署名永春文章:观猴有感
  18. matlab 画海面图,教你画波光粼粼的海面
  19. Docker学习(八):Docker可视化与监控
  20. GoogleHacking 语法篇

热门文章

  1. 手挽手带你学React:四档(上)一步一步学会react-redux (自己写个Redux)
  2. PIE SDK点元素的绘制
  3. Factory - 工厂模式
  4. 《超越需求:敏捷思维模式下的分析》—第1章 1.2节交付价值
  5. Okhttp 使用与debug时留的大坑
  6. android项目获得所有运行程序
  7. android:layout_gravity=bottom不起作用问题
  8. 动态SQL语句--mybatis
  9. oracle em 乱码问题
  10. 评论:苹果APP STORE面临失贞可能?