我创建了一个扩展 ImageView 的自定义 View 。当我设置视口(viewport)较小的矢量可绘制对象时,我注意到图像很模糊。 如果我只使用 ImageView,我会看到矢量图像像预期的那样清晰。
在我的自定义 View 中,我覆盖了“setImageDrawable”,我调用了 super,然后从可绘制对象中获取位图,稍后在 onDraw
中绘制。
这是我如何转换为位图
public Bitmap getBitmapFromDrawable(Drawable drawable) {
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
最佳答案
您需要获取 View 的宽度和高度,而不是可绘制对象,并将它们用作可绘制对象的边界。我假设您的 View 尺寸可能会随着时间而改变,因此这不是一次性任务。我会将可绘制对象存储在成员字段中:
private Drawable drawable;
@Override
public void setImageDrawable(Drawable drawable) {
this.drawable = drawable;
this.drawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
// invalidate if needed
}
@Override
protected void onMeasure(int wms, int hms) {
super.onMeasure(wms, hms);
if (drawable != null) drawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
}
然后onDraw,直接绘制drawable。
关于android - ImageView 上的 Vectordrawable 模糊位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414311/