Android解决html带图片标签图片宽度过大报错
直接上代码
主要代码,具体显示多少可以自己修改
Bitmap bitmap = (Bitmap) resource;
//屏幕大小
int screenWidth = textView.getWidth();
int screenHeight = textView.getHeight();
//图片大小
int width = bitmap.getWidth();
int height = bitmap.getHeight();
//如果图片大小大于可展示屏幕大小,显示三分之二
if (width > screenWidth) {
double bl = (double) width / screenWidth;
int newW = (int) Math.floor(width / bl);
int newH = (int) Math.floor(height / bl);
newW = newW - (screenWidth / 3);
newH = newH - (screenWidth / 3);
bitmap = Bitmap.createScaledBitmap(bitmap, newW, newH, true);
}
全部代码
TextView textView = 展示textView;
String content = html标签;
//处理图片
Html.ImageGetter imgGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
final URLDrawable urlDrawable = new URLDrawable();
Glide.with(context).asBitmap().load(source).into(new SimpleTarget() {
@Override
public void onResourceReady(@NonNull Object resource, @Nullable Transition transition) {
Bitmap bitmap = (Bitmap) resource;
//屏幕大小
int screenWidth = textView.getWidth();
int screenHeight = textView.getHeight();
//图片大小
int width = bitmap.getWidth();
int height = bitmap.getHeight();
//如果图片大小大于可展示屏幕大小,显示三分之二
if (width > screenWidth) {
double bl = (double) width / screenWidth;
int newW = (int) Math.floor(width / bl);
int newH = (int) Math.floor(height / bl);
newW = newW - (screenWidth / 3);
newH = newH - (screenWidth / 3);
bitmap = Bitmap.createScaledBitmap(bitmap, newW, newH, true);
}
urlDrawable.bitmap = bitmap;
urlDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
textView.invalidate();
textView.setText(textView.getText());
}
});
return urlDrawable;
}
};
textView.setText(Html.fromHtml(content, imgGetter, null));
URLDrawable
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
public class URLDrawable extends BitmapDrawable {
public Bitmap bitmap;
@Override
public void draw(Canvas canvas) {
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, getPaint());
}
}
}