android textview 显示html图片 大小,Android异步加载TextView中的图片自动缩放

有空直接写了一个类用来加载textView中的html.图片可以异步加载,项目中使用universalimageloader来加载图片,

所以使用前请自行配置好

首先引入一类解析类 TextViewHtmlParser.javapackage com.loadimg;

import java.util.Collections;

import java.util.LinkedList;

import java.util.List;

import com.example.textviewhtml.R;

import com.nostra13.universalimageloader.core.DisplayImageOptions;

import com.nostra13.universalimageloader.core.ImageLoader;

import com.nostra13.universalimageloader.core.assist.ImageScaleType;

import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;

import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;

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.os.Handler;

import android.text.Html;

import android.view.View;

import android.view.WindowManager;

import android.widget.TextView;

public class TextViewHtmlParser implements Html.ImageGetter{

static final List displayedImages = Collections.synchronizedList(new LinkedList());

TextView mTextView;

private Context mContext;

public TextViewHtmlParser(Context c) {

this.mContext=c;

}

public void setTextViewHtml(TextView textview,String htmlStr){

htmlStr=regStr(htmlStr);

this.mTextView = textview;

mTextView.setText(Html.fromHtml(htmlStr,this, null));

}

//对字符串进行一些操作

private String regStr(String str){

//str=str.replaceAll("", "");

return str;

}

@Override

public Drawable getDrawable(String source) {

final URLDrawable urlDrawable = new URLDrawable();

WindowManager wm = (WindowManager)mContext.getApplicationContext()

.getSystemService(Context.WINDOW_SERVICE);

final int width = wm.getDefaultDisplay().getWidth();

//预先设置图片(默认图片)加载前的宽高

urlDrawable.setBounds(0, 0, width,width/3);

// Log.d("ChapterActivity", Consts.BASE_URL + source);

DisplayImageOptions options = new DisplayImageOptions.Builder()

.showImageOnLoading(R.drawable.default_1px) // 设置图片在下载期间显示的图片

.showImageForEmptyUri(R.drawable.default_1px)// 设置图片Uri为空或是错误的时候显示的图片

.showImageOnFail(R.drawable.default_1px)// 设置图片加载/解码过程中错误时候显示的图片

.resetViewBeforeLoading(true)  // default

.delayBeforeLoading(1000)

.cacheInMemory(true)//设置下载的图片是否缓存在内存中

.cacheOnDisk(true)  //设置下载的图片是否缓存在SD卡中

// .postProcessor(null)//在图片显示之前的操作

//.preProcessor(null) //设置图片加入缓存前,对bitmap进行设置

.extraForDownloader(null)

.considerExifParams(false) // default

.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default

.bitmapConfig(Bitmap.Config.ARGB_8888) // default

//  .decodingOptions(null)

.displayer(new SimpleBitmapDisplayer()) // default

.displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少

//.displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间

.handler(new Handler()) // default

.build();

//返回一个实例

ImageLoader imageLoader = ImageLoader.getInstance();

imageLoader.loadImage(source, new SimpleImageLoadingListener() {

@Override

public void onLoadingComplete(String imageUri, View view, Bitmap bitmap) {

//缩放图片宽为全屏

Matrix matrix = new Matrix();

int w=bitmap.getWidth();

float bili=(float)width/(float)w;

matrix.postScale(bili,bili); //长和宽放大缩小的比例

bitmap = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);

urlDrawable.bitmap = bitmap;

urlDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());

mTextView.invalidate();

mTextView.setText(mTextView.getText()); // 解决图文重叠

}

});

return urlDrawable;

}

}

class URLDrawable extends BitmapDrawable {

protected Bitmap bitmap;

@Override

public void draw(Canvas canvas) {

if (bitmap != null) {

canvas.drawBitmap(bitmap, 0, 0, getPaint());

}

}

}

下面是使用方法//在activity中设置TextView的html字符串

texthtml=(TextView)findViewById(R.id.texthtml);

new TextViewHtmlParser(this).setTextViewHtml(texthtml,htmlStr);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值