2015-11-10 2 views
3

Comment puis-je trouver la couleur (moyenne) du fond d'écran actuel et définir cette couleur sur une mise en page de mon widget?Obtenez la couleur du papier peint? - Android

Un exemple de ce que je suis en train de faire:

enter image description here

Ce paramètre sur 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/. peut-être que cela peut aider. –

+0

La méthode la plus rapide (calcule 1 pixel seulement après avoir fait la moyenne d'une copie 1x1 px du bitmap): http://stackoverflow.com/a/29185394/2649012 –

Répondre

-1

Vous pouvez utiliser Bitmap pour trouver les pixels et vous peut comparer les valeurs pour trouver les pixels moyens.

Pour ex

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); 

Il y a plusieurs façons que vous pouvez le faire ..

S'il vous plaît dire plus d'informations que voulez-vous faire?

Qu'est-ce que vous pouvez faire est-

obtenir le fond d'écran en utilisant WallpaperMAnager.

Convertir à Bitmap.

Obtenez tous les pixels au-dessus des techniques peuvent vous aider.

Calculer la moyenne en utilisant pixel arrays.

En utilisant la moyenne faire une couleur et papier peint à régler la couleur moyenne calculée.

+0

Désolé de ne pas avoir clarifié correctement. Je voudrais changer la couleur d'arrière-plan de la mise en page à l'intérieur de mon widget chaque fois que le fond d'écran est modifié sur l'appareil. Cette couleur correspond à la couleur du papier peint. –

0

Vous devez d'abord obtenir fond d'écran actuel et le convertir en bitmap comme

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

Après que l'utilisation de cette link pour obtenir la couleur dominante d'une image.

-1

Je pense que vous pouvez utiliser pour obtenir le fond d'écran et de le transférer à Bitmap:

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