TextView控件中的html語句中添加文字和圖片
1、創建添加png/jpg必要的類
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);
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 = width;
int newHeight = height;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
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;
}
}
}
2、textView控件調用
textview.setText(Html.fromHtml(content,new ImageGetterUtils.MyImageGetter(this,textview),null));
END
下章整理編輯器