今天碰到一个后台返回Html标签的数据,一开始使用的方法是Html.fromhtml方法,但是那个图片只显示一个小框,点进去到详情之后才能真正显示出来。这样的效果体验太差了,于是我就换了一种方式来解析。下面是代码:
//加载图片 我这个是在adapter里加载的数据
NetworkImageGetter imageGetter = new NetworkImageGetter(); //调用下面的方法
Spanned spanned = Html.fromHtml(entity.getArt_content(), imageGetter, null);//调用下面的方法
text.setText(spanned);//把解析完的数据放到组件中就可以了
private final class NetworkImageGetter implements Html.ImageGetter {
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
LevelListDrawable d = new LevelListDrawable();
new LoadImage().execute(source, d);
return d;
}
}
/**** 异步加载图片 **/
private final class LoadImage extends AsyncTask<Object, Void, Bitmap> {
private LevelListDrawable mDrawable;
@Override
protected Bitmap doInBackground(Object... params) {
String source = (String) params[0];
mDrawable = (LevelListDrawable) params[1];
try {
InputStream is = new URL(source).openStream();
return BitmapFactory.decodeStream(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap != null) {
BitmapDrawable d = new BitmapDrawable(bitmap);
mDrawable.addLevel(1, 1, d);
mDrawable
.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
// mDrawable.setBounds(0, 0,
// getWindowManager().getDefaultDisplay().getWidth(),
// bitmap.getHeight());
mDrawable.setLevel(1);
CharSequence t = holder.shouye_list_price.getText();
holder.shouye_list_price.setText(t);
}
}
}
网友评论