从壁纸中获取颜色? - Android

时间:2015-11-10 04:50:07

标签: java android colors widget wallpaper

如何找到当前壁纸的(平均)颜色并将该颜色设置为我的小部件上的布局?

我正在尝试做的一个例子:

enter image description here

这是AccuWeather的设置:

enter image description here

4 个答案:

答案 0 :(得分:0)

首先,您必须获取当前壁纸并将其转换为位图,如

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

之后使用此link获取图像的主色。

答案 1 :(得分:0)

您可以使用API​​ 27中添加的WallpaperManager.getWallpaperColors

答案 2 :(得分:-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.

获取所有像素以上技术可能会对您有所帮助。

使用pixel arrays.

计算平均值

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

答案 3 :(得分:-1)

我认为您可以使用它来获取壁纸并将其传输到位图:

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