+-

通过昨天的新预览版,我开始将我的应用更新到此版本.我的应用程序的一部分是列出已安装的应用程序及相关图标.
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
应用程序的这一部分仍然有效.时钟,计算器或消息等应用程序已经支持新版本的图标,因此它们返回一个AdaptiveIconDrawable.
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
这部分不再起作用了.有没有其他方法可以将AdaptiveIconDrawable转换为Bitmap?提前致谢.
最佳答案
这是更普遍的解决方案:
@NonNull
private Bitmap getBitmapFromDrawable(@NonNull Drawable drawable) {
final Bitmap bmp = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bmp);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bmp;
}
如果您不想使用自己的,它还将在系统定义的形状中渲染背景.
您可以在任何Drawable上使用它,也可以在VectorDrawable中使用它.
它也适用于BitmapDrawable,只需getBitmap()就可以提高内存效率.
点击查看更多相关文章
转载注明原文:在Android O预览中将AdaptiveIconDrawable转换为Bitmap - 乐贴网