android 图文混排,显示网络图片(续) ImageGetter
来源:互联网 发布:棋院围棋软件 编辑:程序博客网 时间:2024/05/16 05:08
上文中写了用ImageLoader实现图文混排中网络图片的显示,但是随后又发现了问题,网络加载慢时,会报空指针异常。如果给ImageLoader设置了默认图片的话,虽然不会报异常,但有时会一直显示默认图片,而不显示你所需要的网络图片。经过一番网络查找,找到一个能彻底解决问题的方法,下面例子中解决的是图文混排,加载网络图片,并将图片充满整个TextView的问题,示例如下:
package com.haier.online_shop.goodsdetail.contract;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.text.Html;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.haier.online_shop.goodsdetail.GoodsDetailActivity;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;import com.orhanobut.logger.Logger;/** * Created by Administrator on 2016/10/29 0029. */public class UrlImageGetter implements Html.ImageGetter { Context c; TextView container; public UrlImageGetter(TextView t,Context c){ this.c = c; this.container = t; } public Drawable getDrawable(String source){ final UrlDrawable urlDrawable = new UrlDrawable(); ImageLoader.getInstance().loadImage(source,new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage){ ViewGroup.LayoutParams params = container.getLayoutParams(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; container.setLayoutParams(params); float scaleWidth = ((float) container.getMeasuredWidth())/loadedImage.getWidth(); Matrix matrix = new Matrix(); matrix.postScale(scaleWidth,scaleWidth); loadedImage = Bitmap.createBitmap(loadedImage,0,0,loadedImage.getWidth(),loadedImage.getHeight(),matrix,true); urlDrawable.bitmap = loadedImage; urlDrawable.setBounds(0,0,loadedImage.getWidth(),loadedImage.getHeight()); container.invalidate(); container.setText(container.getText()); } }); return urlDrawable; } public class UrlDrawable extends BitmapDrawable { protected Bitmap bitmap; @Override public void draw(Canvas canvas) { // override the draw to facilitate refresh function later if (bitmap != null) { canvas.drawBitmap(bitmap, 0, 0, getPaint()); } } }}
在Activity文件中调用:
Html.ImageGetter imageGetter =newUrlImageGetter(tvDetail,mContext);
tvDetail.setText(Html.fromHtml(data,imageGetter,null));即可。
0 0
- android 图文混排,显示网络图片(续) ImageGetter
- android 图文混排,显示网络图片
- android 显示图文混排
- android 图文混排 显示 与 图文混排输入
- Android的图文混排(表情显示)
- android textview里面显示图文混排
- Android 图文混排 异步加载图片
- Textview显示Html,图文混排,支持图片点击放大
- TextView显示Gif图片实现图文混排
- 在图文混排时候遇见图片显示黑块
- android图文混排
- Android图文混排
- Android 图文混排
- android图文混排
- Android图文混排
- Android图文混排
- Android 图文混排
- android图文混排
- linux中关于dma_alloc_coherent的用法
- 使用MyEclipse创建POJO类映射文件
- 嵌入式C中消除BUG的良好编程习惯
- 三天上手PHP之12:类(class)
- Android消息提示和权限分类
- android 图文混排,显示网络图片(续) ImageGetter
- 从零开始学spring-boot(1)-Hello spring boot!
- 2016.10.29【初中部 NOIP提高组 】模拟赛C题解
- async.js 接口文档以及测试用例
- Android 闹钟实现
- 如何在 Android 应用中使用 FontAwesome 图标
- Drawable
- 欢迎使用CSDN-markdown编辑器
- 2016.10.27总结