怎么用aide编写一个html,AIDE教程-Android实现TextView显示HTML加图片的方法

9f4f6491294017e6ee31359ad1373ae3.png

站长一个Android实现TextView显示HTML加图片的方法。分享给大家供大家参考,具体如下:

转载请注明出处

www.aidezy.com

TextView显示网络图片,我用android2.3的系统,可以显示图片出来,并且如果图片比较大,应用会卡的现象,肯定是因为使用主线程去获取网络图片造成的,但如果我用android4.0以上的系统运行,则不能显示图片,只显示小方框。

究其原因,是在4.0的系统上执行的时候报错了,异常是:Android.os.NetworkOnMainThreadException 经过查文档,原来是4.0系统不允许主线程(UI线程)访问网络,因此导致了其异常。说白了就是在主线程上访问网络,会造成主线程挂起,系统不允许使用了。

此处有作部分修改,代码独立。图片实现异步加载。解决上述问题

用法,调用代码activity

//TextView 控件

textViewContent = (TextView) getActivity().findViewById(R.id.textview_prodcut_detail_more_zp_content);

//HTML文本

zp_content = “测试图片信息:136814766742544.jpg%5C%E2%80%9D”;

//默认图片,无图片或没加载完显示此图片

Drawable defaultDrawable = MainActivity.ma.getResources().getDrawable(R.drawable.stub);

//调用

Spanned sp = Html.fromHtml(zp_content, new HtmlImageGetter(textViewContent, “/esun_msg”, defaultDrawable), null);

textViewContent.setText(sp);

HtmlImageGetter类:

import java.io.InputStream;

import android.graphics.Canvas;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.os.AsyncTask;

import android.os.Environment;

import android.text.Html.ImageGetter;

import android.util.Log;

import android.widget.TextView;

public class HtmlImageGetter implements ImageGetter{

private TextView _htmlText;

private String _imgPath;

private Drawable _defaultDrawable;

private String TAG = “HtmlImageGetter”;

public HtmlImageGetter(TextView htmlText, String imgPath, Drawable defaultDrawable){

_htmlText = htmlText;

_imgPath = imgPath;

_defaultDrawable = defaultDrawable;

}

@Override

public Drawable getDrawable(String imgUrl) {

String imgKey = String.valueOf(imgUrl.hashCode());

String path = Environment.getExternalStorageDirectory() + _imgPath;

FileUtil.createPath(path);

String[] ss = imgUrl.split(“\\.”);

String imgX = ss[ss.length-1];

imgKey = path+”/” + imgKey+”.”+imgX;

if(FileUtil.exists(imgKey)){

Drawable drawable = FileUtil.getImageDrawable(imgKey);

if(drawable != null){

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

return drawable;

}else{

Log.v(TAG,”load img:”+imgKey+”:null”);

}

}

URLDrawable urlDrawable = new URLDrawable(_defaultDrawable);

new AsyncThread(urlDrawable).execute(imgKey, imgUrl);

return urlDrawable;

}

private class AsyncThread extends AsyncTask {

private String imgKey;

private URLDrawable _drawable;

public AsyncThread(URLDrawable drawable){

_drawable = drawable;

}

@Override

protected Drawable doInBackground(String… strings) {

imgKey = strings[0];

InputStream inps = NetWork.getInputStream(strings[1]);

if(inps == null) return _drawable;

FileUtil.saveFile(imgKey, inps);

Drawable drawable = Drawable.createFromPath(imgKey);

return drawable;

}

public void onProgressUpdate(Integer… value) {

}

@Override

protected void onPostExecute(Drawable result) {

_drawable.setDrawable(result);

_htmlText.setText(_htmlText.getText());

}

}

public class URLDrawable extends BitmapDrawable {

private Drawable drawable;

public URLDrawable(Drawable defaultDraw){

setDrawable(defaultDraw);

}

private void setDrawable(Drawable ndrawable){

drawable = ndrawable;

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable

.getIntrinsicHeight());

setBounds(0, 0, drawable.getIntrinsicWidth(), drawable

.getIntrinsicHeight());

}

@Override

public void draw(Canvas canvas) {

drawable.draw(canvas);

}

}

}

NetWork 类:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值