Quiero agregar un filtro de color a la vista de la imagen
Me gustaría agregar un ColorFilter
a ImageView
.
Actualmente estoy usando:
- Superposición de color de Android - Modos de PorterDuff
- Cómo dibujar en mapa de bits utilizando otro mapa de bits como máscara?
- Android con PorterDuff para combinar imágenes
- Android ColorFilter - Modos de Porter-Duff
- PorterDuff y ruta
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter); iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
He comprobado los modos múltiples en PotterDuff
tales como SRC_IN
, SRC
etc., pero no estoy consiguiendo ninguna diferencia en ninguno de los modos … Todo el modo da vuelta al ImageView
entero en color rojo perfecto.
Necesito mezclar el color ROJO en la imagen existente de modo que la imagen mire con un tinte de REDDISH ….
- Mezclar dos imágenes junto con multiplicar y% de opacidad
- Mostrar TextView con 2 colores separados usando la máscara
- DrawableCompat.setTint (drawable, color) vs Drawable.setColorFilter (color, modo)
- ¿Qué significa PorterDuff.Mode en los gráficos android.¿Qué hace?
- Dibuje las áreas superpuestas en un trayecto
- Android Gauge Animation Pregunta
- Dibujo sobre lienzo - PorterDuff.Mode.CLEAR dibuja negro! ¿Por qué?
- Implementación de diferentes modos PorterDuff en android
La forma correcta de hacerlo era usar PorterDuff.Mode.LIGHTEN
.
Así que el código actualizado será como:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter); iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
Esto funcionó para mí:
En res / colors.xml:
<color name="highlight_color_filter">#A5FF0000</color>
En su Actividad inicializar el filtro y resaltar pintura:
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);
A continuación, aplique el filtro en el ImageView:
ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter); iv.setColorFilter(redHighLight);
Si eso no funciona intente aplicar al ImageView dibujable:
iv.getDrawable().setColorFilter(redHighLight);
Espero que ayude.
Puedes usar android: tint ( link ) en tu archivo xml. Ejemplo:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_drawable" android:tint="@color/your_color" />
Otra solución, podría haber mantenido el modo PorterDuff.Mode.SRC_ATOP y usar otro alfa para tener un color transparente.
Utilizo 155 como valor de Alpha.
En tu archivo xml puedes usar el tinte del usuario Por ejemplo
<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 desea agregar filtro de color mediante programación, utilice
scratchImage_2.setColorFilter(Color.BLACK);
También puede eliminar este filtro de color usando este código:
scratchImage_2.setColorFilter(null);
- La importación automática no funciona para las clases de Android en el estudio de Android
- ¿Cómo construyes una pila posterior de Android cuando se inicia una actividad directamente desde una notificación?