android - 在 Android O 预览中将 AdaptiveIconDrawable 转换为位图

标签 android bitmap

随着昨天发布的新预览版,我开始将我的应用程序更新到这个版本。我的应用程序的一部分是列出已安装的应用程序及其相关图标。

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 - 在 Android O 预览中将 AdaptiveIconDrawable 转换为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44447056/

相关文章:

android - 如何在 Mac OS 上为 NOX 播放器设置 adb 连接

android - Game Closure DevKit › native android build ant 错误

android - 在调用 Bitmap.recycle() 之后我应该信任垃圾收集器吗?

android - view.getDrawingCache() 在 Android API 28 中被弃用

android - 如何让两种构建风格继承自 Android Studio 中的根风格?

javascript - zIndex 在组件中不起作用

java - 将 JSON 数据从另一个类传递到我的 ImageAdapter 以提供我的图像路径

android - 尝试旋转位图但没有成功

Java位图合成如何

delphi - 如何使用 GDI 按像素强度将位图转换为灰度图?