android导入图片标签,【原创】TextView加载Html标签和加载带图片的标签

一、加载Html代码

String html=" 百度;";

textView.setMovementMethod(LinkMovementMethod.getInstance());//允许超链接点击跳转到浏览器

textView.setText(Html.fromHtml(html));

效果:lALOU2hips0HgM0EOA_1080_1920-169x300.png

二、加载src标签

1、加载本地图片

String html="Picture_01_Greenery.jpg%5C%22";

textView.setText(Html.fromHtml(html, new Html.ImageGetter() {

@Override

public Drawable getDrawable(String source) {

Drawable drawable = null;

try {

drawable = Drawable.createFromStream(new URL(source).openStream(), null);

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

} catch (IOException e) {

e.printStackTrace();

}

return drawable;

}

},null));

注意:file:/别忘了加

Html还有个三参数的fronHtml方法,三个参数分别是:String source(图片资源的路径),ImageGetter imageGetter(实现ImageGetter类的对象),TagHandler tagHandler(暂不知什么用,不过这里设为null就行了)

ImageGetter类是Html类的一个静态接口,有个方法getDrawable,返回值为Drawable,作用是取得图片的Drawable

drawable = Drawable.createFromStream(new URL(source).openStream(), null);

这句代码,有一点要说,不要用网上许多人用的:

drawable= Drawable.createFromPath(source);

可能会报FileNotFound错误。

效果:lALOU2kHOc0HgM0EOA_1080_1920-169x300.png

2、加载网络图片

html代码和之前差不多,把路径换成网络图片的地址就行

比如:

String html="%E5%AE%A0%E7%89%A9622.jpg%5C%22";

但是ImageGetter的getDrawable方法需要变化:

这里使用Piccsso框架加载网络图片,不会的同学可以去百度一下

private class MyImageGetter implements Html.ImageGetter {

private URLDrawable urlDrawable = null;

@Override

public Drawable getDrawable(final String source) {

urlDrawable = new URLDrawable();

Picasso.with(context).load(source).into(new Target() {

@Override

public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {

urlDrawable.bitmap = bitmap;

urlDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());

textView.setText(textView.getText());//不加这句显示不出来图片,原因不详

}

@Override

public void onBitmapFailed(Drawable errorDrawable) {

}

@Override

public void onPrepareLoad(Drawable placeHolderDrawable) {

}

});

return urlDrawable;

}

}

URLDrawable类:

/**

* Created by Administrator on 2016/6/28 0028.

*/

public class URLDrawable extends BitmapDrawable {

public Bitmap bitmap;

@Override

public void draw(Canvas canvas) {

super.draw(canvas);

if (bitmap != null) {

canvas.drawBitmap(bitmap, 0, 0, getPaint());

}

}

}

调用方法如下:

textView.setText(Html.fromHtml(html, new MyImageGetter(), null));

效果:lALOU2hi580HgM0EOA_1080_1920-169x300.png

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/17022.html

75d087ef9a9fb11dc373caaf33adbf7f.png

微信打赏

支付宝打赏

感谢您对作者kyle的打赏,我们会更加努力!    如果您想成为作者,请点我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值