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.
Ceci fonctionne très bien.
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 } } });
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" :
Ceci marche très bien, je peux zoomer sans problème.
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
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 :
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 ...
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'espère avoir réussi à bien vous expliquer mon problème, et surtout que quelqu'un aura une solution
Merci d'avance !
Partager