Aplique muchos filtros de color a la misma

Quiero aplicar varios filtros de color en la cadena a un dibujable. ¿Es eso posible? O tal vez para crear un filtro que es la combinación de los filtros que quiero aplicar.

Por ejemplo, me gustaría:

Drawable d = ...; d.setColorFilter(0x3F000000, Mode.OVERLAY).setColorFilter(0xFF2D2D2D, Mode.SCREEN) 

Este es el enfoque que terminé usando: Manipular el mapa de bits Drawable en un Canvas y aplicar tantas capas como sea necesario, usando Paint , funciona no sólo para filtros de color, sino también para cualquier tipo de mezcla de imágenes.

 ... Drawable myBackground = createBackground(getResources().getColor(R.color.Green)); setBackgroundDrawable(myBackground); ... private Drawable createBackground(int color) { Canvas canvas = new Canvas(); Bitmap buttonImage = BitmapFactory.decodeResource(getResources(), R.drawable.btn_image); Bitmap buttonShadows = BitmapFactory.decodeResource(getResources(), R.drawable.btn_shadows); Bitmap buttonHighLights = BitmapFactory.decodeResource(getResources(), R.drawable.btn_highlights); Bitmap result = Bitmap.createBitmap(buttonImage.getWidth(), buttonImage.getHeight(), Bitmap.Config.ARGB_8888); canvas.setBitmap(result); Paint paint = new Paint(); paint.setFilterBitmap(false); // Color paint.setColorFilter(new PorterDuffColorFilter(color, Mode.MULTIPLY)); canvas.drawBitmap(buttonImage, 0, 0, paint); paint.setColorFilter(null); // Shadows paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); canvas.drawBitmap(buttonShadows, 0, 0, paint); // HighLights paint.setXfermode(new PorterDuffXfermode(Mode.SCREEN)); canvas.drawBitmap(buttonHighLights, 0, 0, paint); paint.setXfermode(null); return new BitmapDrawable(getResources(), result); } 

Advertencia: setBackgroundDrawable(Drawable d) está obsoleta, mientras que setBackground(Drawable d) sólo está disponible en api 16, por lo que si tienes como yo un objetivo min api-14 max target api-17 no tienes una manera "limpia" de establecer El dibujable como fondo. Me quedé con la llamada obsoleta.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.