Cómo tintar un mapa de bits a un color sólido

¿Cómo se va a teñir un mapa de bits a un color sólido, reemplazando efectivamente todos los píxeles que tienen un valor alfa> 0 a un valor RGB dado? Además, ¿cómo hacer lo mismo, pero mantener el alpha por cada píxel? No estoy buscando operaciones por pixel ya que tienden a ser lentas.

Intenté usar un ColorMatrixColorFilter y un ColorFilter, que teñen el mapa de bits, pero coloran en vez de realizar un tinte del 100%.

He resuelto esto mediante un PorterDuffColorFilter

Paint paint = new Paint(); paint.setColorFilter(new PorterDuffColorFilter(targetColor, PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(resource, matrix, paint); 

Sólo para dar una respuesta más completa.

Esto tomará un mapa de bits y producirá un nuevo mapa de bits de color:

 public static Bitmap tintImage(Bitmap bitmap, int color) { Paint paint = new Paint(); paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)); Bitmap bitmapResult = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(bitmapResult); canvas.drawBitmap(bitmap, 0, 0, paint); return bitmapResult; } 
  • Cambiar el color de la pista
  • Quiero crear un "modo nocturno" rojo para mi aplicación para Android
  • Bandas de colores y artefactos con gradientes a pesar de usar RGBA_8888 en todas partes
  • El color de fondo de Android está en gris en lugar de @android: color / blanco
  • Android: selector de texto personalizado
  • ¿Hay una API de Android para obtener el botón predeterminado presionado / colores seleccionados?
  • Establecer dinámicamente el color del tema
  • Cómo obtener de forma programática una lista de colores de un degradado en Android
  • ¿Qué algoritmo de mezcla de color se utiliza para oscurecer un color?
  • Patrón de relleno en Imagen en Android
  • Android: botón con dos colores de fondo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.