困惑了一周的问题终于解决了,决定写一篇文章,因为百度上的方法说的不是非常清楚,所以决定自己写一篇,废话不多说,直接正文
先看下效果(页面中只有一个TextView组件)
处理网络图片用的是第三方库ImageLoader,链接如下
https://github.com/nostra13/Android-Universal-Image-Loader
点击进入后下载jar包,如下图
下载完成后复制jar包,粘贴至androidstudio libs目录下如下图目录中
然后鼠标右键jar包进行如下操作
点击OK,加载一会ImageLoader包就成功导入了
注意:ImageLoader需要在onCreate方法中实例化
ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(ImageLoaderConfiguration.createDefault(this));
下面看完整程序,以下的代码可以直接复制到程序中运行
import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Html; import android.view.View; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String string="\"<p>据多家美媒消息,五年前的今天,也就是2012年12月6日,湖" + "人名宿科比-布莱恩特迎来个人生涯一个非常大的里程碑!他成为NBA历史上" + "第5位总得分达到30000分的球员,也成了历史最年轻的30000分先生。</p>" + "<p><img src=\"http://p4.qhimg.com/t0143c3caa0f210471d.jpg?size=960" + "x960\"\" class=\"mCS_img_loaded\"></p><p>在湖人以103-87战胜黄蜂的比赛" + "中,科比出战33分钟,17投10中,得到29分6篮板4助攻。其中,第二节比赛他用" + "一记抛投让自己的职业生涯总得分达到30000分。</p><p>科比在这一天是34岁104" + "天,超越了张伯伦(35岁179天)成为NBA历史上最年轻的30000分先生。</p><p>" + "<img src=\"http://p6.qhimg.com/t018adb2d64db452679.jpg?size=1024x576\"" + " class=\"mCS_img_loaded\"></p><p>詹姆斯目前32岁,如无意外的话,他在本赛" + "季(生涯第15个赛季)就能超越科比,成为NBA历史最年轻的30000分先生。</p><p>" + "<img src=\"http://p2.qhimg.com/t0111fe70b44cb3e393.jpg?size=1024x770\"" + " class=\"mCS_img_loaded\"></p><p><img src=\"http://p0.qhimg.com/t011f7" + "a164e5cd0d6f1.jpg?size=858x572\" class=\"mCS_img_loaded\"></p><p>返回搜" + "狐,查看更多</p><p>责任编辑:</p>\""; ImageLoader imageLoader = ImageLoader.getInstance();//ImageLoader需要实例化 imageLoader.init(ImageLoaderConfiguration.createDefault(this));
textView=(TextView)findViewById(R.id.textView); URLImageParser imageGetter = new URLImageParser(textView); textView.setText(Html.fromHtml(string, imageGetter, null));
}
public class URLImageParser implements Html.ImageGetter {
TextView mTextView;
public URLImageParser(TextView textView) {
this.mTextView = textView;
}
@Override
public Drawable getDrawable(String source) {
final URLDrawable urlDrawable = new URLDrawable();
ImageLoader.getInstance().loadImage(source,
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
urlDrawable.bitmap = loadedImage;
urlDrawable.setBounds(0, 0, loadedImage.getWidth(), loadedImage.getHeight());
mTextView.invalidate();
mTextView.setText(mTextView.getText());
}
});
return urlDrawable;
}
}
public class URLDrawable extends BitmapDrawable {
protected Bitmap bitmap;
@Override
public void draw(Canvas canvas) {
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, getPaint());
}
}
}
}
程序大概就是这样,重写了
textView.setText(Html.fromHtml(string, imageGetter, null));
中的imageGetter方法
好了,大功告成了,块来看看效果吧