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

<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"
+"<p><a href=\"http://www.dreamdu.com/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=\"http://img.baidu.com/img/image/suyan.jpg\"/><img src=\"http://img.baidu.com/img/image/suyan.jpg\"/><img src=\"http://img.baidu.com/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();

更多相关文章

  1. Android中ScrollView布局初始化显示的时候使页面置顶
  2. 【Android开发】构建第一个APP
  3. Android(安卓)TextView中显示图片的4种方式
  4. 详解ImageView的CENTER_CROP,CENTER_INSIDE,FIT_CENTER等属性
  5. Android(安卓)中ListView setOnItemClickListener点击无效原因分
  6. [置顶] Android(安卓)Gallery用法(自定义边框+底部小圆点)
  7. 让Python在Android系统上飞一会儿
  8. 基于.NET/C#开发跨平台Windows Phone 7、iPhone及Android应用程
  9. 《第一行代码 Android(安卓)》学习记录(一)

随机推荐

  1. Android Weekly #216 中文版
  2. Android(安卓)横向RecyclerView中item居
  3. android改变分区权限
  4. Android使用SharedPreferences实现登录帐
  5. DeskClock笔记
  6. Android自用----- 加载png图片时出错!
  7. android studio继续深入ndk打包so库和jar
  8. Android(安卓)TextView 字段设置监听事件
  9. 【android】只让本应用程序的webview加载
  10. Android 通过 Intent 传递类对象