📜  如何在 Android 中将矢量转换为位图?(1)

📅  最后修改于: 2023-12-03 14:52:12.923000             🧑  作者: Mango

如何在 Android 中将矢量转换为位图?

在 Android 中,我们通常使用矢量图形来展示图形。但是有时候我们需要将矢量图转换为位图。那么,如何在 Android 中将矢量转换为位图呢?下面,本文将介绍两种方法。

方法一:使用 VectorDrawableCompat 转换
  1. 首先,在 res 目录下创建 drawable 目录,并在其中添加 vector 图片,例如 my_vector.xml。

  2. 在代码中获取 my_vector.xml 对应的 Drawable 对象:

Drawable vectorDrawable = getResources().getDrawable(R.drawable.my_vector);
  1. 将 Drawable 对象转换为 Bitmap 对象:
Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
        vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);
  1. 现在,bitmap 对象就是转换后的位图了。
方法二:使用 PictureDrawable 转换
  1. 在 res 目录下创建 drawable 目录,并在其中添加 vector 图片,例如 my_vector.xml。

  2. 在代码中获取 my_vector.xml 对应的 Drawable 对象:

Drawable vectorDrawable = getResources().getDrawable(R.drawable.my_vector);
  1. 将 Drawable 对象转换为 PictureDrawable 对象:
Picture picture = new Picture();
Canvas canvas = picture.beginRecording(vectorDrawable.getIntrinsicWidth(),
        vectorDrawable.getIntrinsicHeight());
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);
picture.endRecording();

PictureDrawable pictureDrawable = new PictureDrawable(picture);
  1. 将 PictureDrawable 对象转换为 Bitmap 对象:
Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),
        pictureDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
pictureDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
pictureDrawable.draw(canvas);
  1. 现在,bitmap 对象就是转换后的位图了。

以上就是两种在 Android 中将矢量转换为位图的方法。请根据实际需求选择适合的方式。