如何防止安卓向量每次都被重新膨胀重绘成位图?

问题描述 投票:1回答:1

我正在看这个 博文 关于 VectorDrawable. 该博客提到,使用矢量图像的一个折衷办法是渲染成本较高。该博客还指出。

对于静态矢量图,绘制阶段只需要执行一次,然后就可以缓存到位图中。

但博客并没有解释如何进行缓存。怎么做呢?

android android-vectordrawable
1个回答
3
投票

这里有一些方法。

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

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.