Bonjour à tous,
Je vais essayer de vous exposer mon probleme clairement :
J'ai une application avec laquelle je dois prendre une photo en noir et blanc. Une fois la photo prise, j'ai un aperçu de la photo, qui était contenu dans un ImageView.
J'y ai rajouté des boutons afin de pouvoir augmenter ou diminuer la luminosité. Sur le clic d'un de ces boutons, je repasse mon image d'origine dans ma fonction "createBlackAndWhite()" avec les nouveaux paramètres, et je rafraichie la vue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
brightMinus.setOnClickListener(new View.OnClickListener() {
 
				@Override
				public void onClick(View v) {
					if (currentProgress == 0) {
						Log.i(TAG, "Minimum atteint");
					} else {
						brightnessBar.setProgress(brightnessBar.getProgress() - 1);
						thresold += 5;
						currentProgress--;
						Bitmap newBmp = createBlackAndWhite(bmpFinal, thresold); // On repasse la photo en noir et blanc avec le nouveau seuil
						imageView.setImageBitmap(newBmp); // On assigne la nouvelle photo a la vue
						imageView.invalidate(); // On raffraichi la vue
					}
				}
			});
Ceci fonctionne très bien.

Cependant, je dois également rajouter la possibilité de zoomer sur mon aperçu de photo avec 2 doigts, un pinch-zoom quoi.
J'ai donc un layout qui doit contenir : ma photo que je peux zoomer, et 2 boutons pour changer la luminosité.

Pour le pinch zoom j'ai utilisé la bibliothèque GestureImageView (qui hérite de ImageView).
J'ai remplacé ma vue "ImageView" par un "RelativeLayout" avec l'id "photoLayout", et j'ai donc changé une partie de mon code, pour assigner mon image (type Bitmap), non plus à ma vue "ImageView" mais à mon GestureImageView" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
gestureImageView = new GestureImageView(this); // Gestionnaire d'évènements (pinch zoom)
gestureImageView.setLayoutParams(params);
photoLayout = (ViewGroup) findViewById(R.id.photoLayout); // Layout qui va contenir la photo
bmpBlackWhite = createBlackAndWhite(bmpColor, thresold); // On passe la photo en noir et blanc
gestureImageView.setImageBitmap(bmpBlackWhite); // On assigne l'image au GestureImageView
photoLayout.addView(gestureImageView); // On rajoute cette vue au Layout
Ceci marche très bien, je peux zoomer sans problème.

Le contexte est posé, voici mon problème :
Une fois que j'ai mis en place ce nouvel "affichage" avec le GestureImageView, je ne peux plus utiliser mes boutons me permettant de changer la luminosité. Je n'ai pas d'erreur, mais des que je clique sur un bouton, la vue se rafraichie bien, mais j'ai une image complètement BLANCHE, et je ne sais pas du tout comment faire pour arriver à combiner ces 2 fonctionnalités.

Nouveau code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
brightMinus.setOnClickListener(new View.OnClickListener() {
 
				@Override
				public void onClick(View v) {
					if (currentProgress == 0) {
						Log.i(TAG, "Minimum atteint");
					} else {
						brightnessBar.setProgress(brightnessBar.getProgress() - 1);
						thresold += 5;
						currentProgress--;
						Bitmap newBmp = createBlackAndWhite(bmpFinal, thresold); // On repasse la photo en noir et blanc avec le nouveau seuil
						gestureImageView.setImageBitmap(newBmp); // On assigne la nouvelle photo a la vue
						gestureImageView.invalidate(); // On raffraichi la vue
					}
				}
			});
J'ai l'impression que c'est ma variable "bmpFinal" qui déconne, ou ma gestureImageView qui n'arrive pas a réassigner l'image, je ne sais pas ...

J'espère avoir réussi à bien vous expliquer mon problème, et surtout que quelqu'un aura une solution

Merci d'avance !