我正在看这个 博文 关于 VectorDrawable
. 该博客提到,使用矢量图像的一个折衷办法是渲染成本较高。该博客还指出。
对于静态矢量图,绘制阶段只需要执行一次,然后就可以缓存到位图中。
但博客并没有解释如何进行缓存。怎么做呢?
这里有一些方法。
public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
Drawable drawable = ContextCompat.getDrawable(context, drawableId);
// depending on the support lib version you may have to use
// Drawable drawable = AppCompatResources.getDrawable(context, drawableId);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
drawable = (DrawableCompat.wrap(drawable)).mutate();
}
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;
}
用... Android KTX
val bitmap = AppCompatResources.getDrawable(context, drawableId).toBitmap()
希望能帮到你