android TextView 加载html已经显示图片,请自觉粘贴



class NetworkImageGetter : Html.ImageGetter {

    private var mTextView:TextView
    constructor(textView:TextView){
        mTextView = textView
    }

    override fun getDrawable(source: String): Drawable? {
        val drawable = CenterDrawable()
        Glide.with(BaseActivity.activity).asBitmap()
            .diskCacheStrategy(DiskCacheStrategy.DATA)
            .load(source)
            .into(object : SimpleTarget<Bitmap>(600, 600 ) {

                override fun onResourceReady(
                    resource: Bitmap,
                    transition: Transition<in Bitmap>?
                ) {

                    val width: Int = mTextView.width
                    if (resource.width > width) {
                        val scale = width / resource.width
                        val afterWidth = (resource.width * scale).toInt()
                        val afterHeight = (resource.height * scale).toInt()
                        drawable.setBounds(0, 0, afterWidth, afterHeight)
                        drawable.bitmap = resizeBitmap(
                            resource,
                            afterWidth,
                            afterHeight
                        )
                    } else {
                        drawable.setBounds(0, 0, resource.width, resource.height)
                        drawable.bitmap = resource
                    }
                    mTextView.invalidate()
                    mTextView.text = mTextView.text
                }
            }


            )
        return drawable
    }

    private fun resizeBitmap(resource: Bitmap, afterWidth: Int, afterHeight: Int): Bitmap? {
        val width = resource.width
        val height = resource.height
        // 计算缩放比例
        val scaleWidth = afterWidth.toFloat() / width
        val scaleHeight = afterHeight.toFloat() / height
        //         取得想要缩放的matrix参数
        val matrix = Matrix()
        matrix.postScale(scaleWidth, scaleHeight)
        //         得到新的图片
        return Bitmap.createBitmap(resource, 0, 0, width, height, matrix, true)
    }


}

 

 

public class CenterDrawable extends BitmapDrawable {
    private Bitmap bitmap;

    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        if (bitmap != null) {
            //左右边距16
            int i = canvas.getWidth() - bitmap.getWidth() - AppUtils.dp2px(16*2F);
            canvas.drawBitmap(bitmap, i / 2, 0, getPaint());
        }
    }

    public CenterDrawable setBitmap(Bitmap bitmap) {
        this.bitmap = bitmap;
        return this;
    }
}

 

 

使用:

tv_html.text = Html.fromHtml(it.content, NetworkImageGetter(tv_html), null)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值