TextView 加载html 图片文字

TextView 加载html 图片文字 工具类

package com.ykstudy.studentyanketang.UiUtils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.util.Log;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;

import java.util.logging.Logger;

public class ImageGetterUtils {


    public static MyImageGetter getImageGetter(Context context, TextView textView) {
        MyImageGetter myImageGetter = new MyImageGetter(context, textView);
        return myImageGetter;
    }

    public static class MyImageGetter implements Html.ImageGetter {

        private URLDrawable urlDrawable = null;
        private TextView textView;
        private Context context;

        public MyImageGetter(Context context, TextView textView) {
            this.textView = textView;
            this.context = context;
        }

        @Override
        public Drawable getDrawable(final String source) {
            urlDrawable = new URLDrawable();
            Glide.with(context).asBitmap().load(source).into(new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                    urlDrawable.bitmap =changeBitmapSize(resource) ;
                    Logger.getLogger("加载的图片,Width:\" + resource.getWidth() + \",Height:\" + resource.getHeight()");
                    urlDrawable.setBounds(0, 0, changeBitmapSize(resource).getWidth(),changeBitmapSize(resource).getHeight());

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

            return urlDrawable;
        }

        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());
                }
            }
        }

        private Bitmap changeBitmapSize(Bitmap bitmap) {


            int width = bitmap.getWidth();

            int height = bitmap.getHeight();

            Log.e("width","width:"+width);

            Log.e("height","height:"+height);
//设置想要的大小
            int newWidth=150;
            int newHeight=100;
//计算压缩的比率
            float scaleWidth=((float)newWidth)/width;
            float scaleHeight=((float)newHeight)/height;
//获取想要缩放的matrix
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth,scaleHeight);

//获取新的bitmap
            bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);

            bitmap.getWidth();

            bitmap.getHeight();

            Log.e("newWidth","newWidth"+bitmap.getWidth());

            Log.e("newHeight","newHeight"+bitmap.getHeight());

            return bitmap;

        }


    }
}

使用方法

        textivew.setText(Html.fromHtml(item.getStem(), new ImageGetterUtils.MyImageGetter(mContext, textivew), null));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值