je veux ajouter un filtre couleur à l'imageview
j'aimerais ajouter un ColorFilter
ImageView
.
actuellement j'utilise:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
j'ai coché plusieurs Modes dans PotterDuff
SRC_IN
,SRC
etc. mais je ne vois aucune différence dans les modes... Tout le mode se tourne l'ensemble de l' ImageView
en parfait couleur Rouge.
je dois mélanger la couleur rouge dans l'image existante de sorte que l'image aura l'air avec une teinte rougeâtre....
5 réponses
La bonne façon de le faire est d'utiliser PorterDuff.Mode.LIGHTEN
.
donc le code mis à jour sera comme:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
Cela a fonctionné pour moi:
dans res/couleurs.xml:
<color name="highlight_color_filter">#A5FF0000</color>
dans votre activité initialiser le filtre et surligner la peinture:
int highlightColor = context.getResources().getColor(R.color.highlight_color_filter);
PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(highlightColor, PorterDuff.Mode.SRC_ATOP);
Paint redHighLight = new Paint();
redHighLight.setColorFilter(targetHitFilter);
redHighLight.setAlpha(190);
puis appliquez le filtre à l'ImageView:
ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter);
iv.setColorFilter(redHighLight);
si cela ne fonctionne pas, essayez d'appliquer au drawable ImageView:
iv.getDrawable().setColorFilter(redHighLight);
j'espère que vous aide.
Vous pouvez utiliser androïde: teinte (lien) dans votre fichier xml. Exemple:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_drawable"
android:tint="@color/your_color" />
autre solution, vous auriez pu garder PorterDuff.Mode.SRC_ATOP
mode et utiliser un autre alpha pour avoir une couleur transparente.
j'utilise 155 comme valeur Alpha:
final int semiTransparentGrey = Color.argb(155, 185, 185, 185);
drawable.setColorFilter(semiTransparentGrey, PorterDuff.Mode.SRC_ATOP);
dans votre fichier xml vous pouvez utiliser teinte Par exemple
<ImageView
android:id="@+id/scrachImage_1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tint="@color/colorAccent"
android:src="@drawable/eagle" />
si vous voulez ajouter un filtre couleur par programmation, utilisez
scratchImage_2.setColorFilter(Color.BLACK);
vous pouvez également supprimer ce filtre couleur en utilisant ce code:
scratchImage_2.setColorFilter(null);