1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android TextView显示文字和图片

android TextView显示文字和图片

时间:2020-07-17 22:03:43

相关推荐

android TextView显示文字和图片

为什么80%的码农都做不了架构师?>>>

在做web的时候jsp页面可以直接显示一段html代码,如:

<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"

+"<p><a href=\"/xhtml/\">超链接HTML入门</a>学习HTML!</p><p><font color=\"#aabb00\">颜色1"

+"</p><p><font color=\"#00bbaa\">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>" +

"下面是网络图片</p><img src=\"/img/image/suyan.jpg\"/><img src=\"/img/image/suyan.jpg\"/><img src=\"/img/image/suyan.jpg\"/></body></html>在jsp页面和老版的android 版本之前都可以显示图片,

较早版本的android实现:2.3.3测试

Html html="<html></html>";

TextView tv=(TextView)findViewById(R.id.textView1);

tv.setText(Html.fromHtml(html, imgGetter,null));

ImageGetter imgGetter = new Html.ImageGetter() {

public Drawable getDrawable(String source) {

Toast.makeText(context,source,Toast.LENGTH_LONG).show();

TextView tvs=(TextView)findViewById(R.id.textView);

String ss=tvs.getText()+source+"\n";

tvs.setText(ss);

Log.d("image",source);

Drawable drawable = null;

URL url;

try {

url = new URL(source);

drawable = Drawable.createFromStream(url.openStream(), ""); //获取网路图片

} catch (Exception e) {

return null;

}

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

.getIntrinsicHeight());

return drawable;

}

};

我的项目是4.2的以上代码在获取网络图片是就会报错,因为android在之后的版本中不允许在主线程中做比较耗时的操作比如http请求,所以以上代码运行是就会报错!后来自己就对上面的代码做了处理

private Map<String,Bitmap> bitmaps=new HashMap<String,Bitmap>();//存放新闻中图片

private boolean newsImgIsShow=false;//判断新闻中图片是否显示

private List<String> urls=new ArrayList<String>();//存放文章中的图片链接

TextView tvContent=(TextView) findViewById(R.id.tv_news_details_content);

urls.clear();

String strHtml=="<html></html>";

tvContent.setText(Html.fromHtml(strHtml,imgGetter,null));//先把文章赋值给textview

//imgGetter过滤文章中的图片

ImageGetter imgGetter = new Html.ImageGetter() {

public Drawable getDrawable(String source) {

Drawable drawable=null;

//source文章中图片地址

if(newsImgIsShow){//判断图片是否已经获取

//将图片从map中取出

BitmapDrawable bd = new BitmapDrawable(bitmaps.get(source));

drawable=bd;

}else{

//将图片地址添加到列表中

urls.add(source);

//设置默认图片

drawable=getResources().getDrawable(R.drawable.no_photo);

}

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

.getIntrinsicHeight());

return drawable;

}

};

final Handler handler=new Handler(){

public void handleMessage(Message msg){

super.handleMessage(msg);

if(msg.what==1){//图片请求成功后重新设置textview

newsImgIsShow=true;

tvContent.setText(Html.fromHtml(strHtml,imgGetter,null));

}

}

};

//开辟子线程请求服务器图片

new Thread(){

public void run(){

try {

for(String url:urls){

Log.d("url",url);

Bitmap bitmap=null;

try {

bitmap=HttpHelper.getURLBitmap(url);//图片请求

if(null==bitmap){

bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.no_photo);

}

} catch (Exception e) {

// TODO: handle exception

bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.no_photo);

}

bitmaps.put(url, bitmap);

}

Message msg=new Message();

msg.what=1;

handler.sendMessage(msg);

} catch (Exception e) {

// TODO: handle exception

}

}

}.start();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。