gpt4 book ai didi

java - 使用当前壁纸作为动态壁纸背景

转载 作者:搜寻专家 更新时间:2023-11-01 08:08:25 25 4
gpt4 key购买 nike

我正在使用以下代码获取当前壁纸:

  final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
final Drawable wallpaperDrawable = wallpaperManager.getDrawable();

我如何从中创建位图?

比如当我从 res 文件夹创建位图时我使用这个

    Resources res = getApplicationContext().getResources();
b = BitmapFactory.decodeResource(res, R.drawable.wall);

我应该使用什么代码将当前墙纸放入位图中,以便我可以在我的 Canvas 上绘制它并将其用作我的动态墙纸背景?

最佳答案

获取的Drawable应该是BitmapDrawable .如有必要,您可以使用 instanceof 验证这一点。

既然如此,你所要做的就是:

final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
final Bitmap wallpaperBitmap = ((BitmapDrawable) wallpaperDrawable).getBitmap();

编辑:如果发现 Drawable 不是 BitmapDrawable,您可以使用以下方法转换它(在this answer ,归功于 André ):

public static Bitmap drawableToBitmap(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable)drawable).getBitmap();
}

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

return bitmap;
}

关于java - 使用当前壁纸作为动态壁纸背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com