我想从可绘制资源ID中获取位图,我找到了使用BitmapFactory decode方法解码的解决方案,但它返回null。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);
请核实您是否正在使用矢量图形(Vector drawable)或普通的png/jpeg图像作为可绘制(drawable),如果尝试解码矢量图形,则会返回空值。
如果您要尝试解码矢量图形,请使用以下代码
public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
Drawable drawable = ContextCompat.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;
}
vectorDrawables.useSupportLibrary = true
.png
、.jpg
等位图文件 - 您只能使用BitmapFactory
处理这些位图文件。 - pskink