从壁纸中获取颜色?- 安卓

3
我该如何找到当前壁纸的(平均)颜色,并将该颜色设置为小部件布局的颜色?
以下是我想要实现的示例:

enter image description here

这是 AccuWeather 的一个设置:

enter image description here


2
1> https://chris.banes.me/2014/07/04/palette-preview/ 2> http://willowtreeapps.com/blog/palette-the-new-api-for-android/. 也许这可以帮助到您。 - Anirudh Sharma
最快的方法(在对位图的1x1像素副本进行平均后仅计算1个像素):https://dev59.com/rGoy5IYBdhLWcg3wkOwK#29185394 - Phantômaxx
4个回答

2

0

首先你需要获取当前的壁纸,并将其转换为位图格式,例如:

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
Bitmap bitmap = ((BitmapDrawable)wallpaperDrawable).getBitmap();

然后使用此链接获取图像的主要颜色。


-1

您可以使用位图来查找像素,并比较值以找到平均像素。

例如:

ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x,y);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);

有很多方法可以做到这一点...

请提供更多信息,您想要做什么?

您可以做的是-

使用WallpaperManager获取壁纸。

将其转换为Bitmap

获取所有像素,上述技术可能会有所帮助。

使用像素数组计算平均值。

使用平均值制作颜色,并将您的壁纸设置为计算出的平均颜色。


抱歉没有表达清楚。我想在设备的壁纸更改时,更改小部件内布局的背景颜色。这个颜色将与壁纸的颜色相匹配。 - Muhammad Ali

-1

我认为你可以使用这个来获取壁纸并将其转换为位图:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
Bitmap bm = ((BitmapDrawable) wallpaperDrawable).getBitmap();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接