Una pregunta para principiantesAndroid: ¿es posible declarar una máscara alfa directamente dentro de la definición XML de la lista de capas?
Tengo este layers.xml que utilizo como fuente para un ImageView. Y dos imágenes, mask.png y imagen.jpg
layers.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/image" android:gravity="center"/>
</item>
<item>
<bitmap android:src="@drawable/mask" android:gravity="center"/>
</item>
</layer-list>
ImageView:
<ImageView
android:id="@+id/img_B"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/layers"/>
En el momento de la salida es sólo el png sobre la imagen. Me gustaría que el png para actuar como una máscara, la saturación de la imagen utilizando el canal alfa PNG, así:
Es eso posible directamente en el xml, o tengo que hacerlo por código?
Gracias por su consejo;)
actualización: en el momento en que he logrado mi objetivo utilizando el código de reemplazar todo el ImageView
ImageView img = (ImageView) findViewById(imgID);
Canvas canvas = new Canvas();
Bitmap mainImage = BitmapFactory.decodeResource(getResources(), R.drawable.img);
Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.mask);
Bitmap result = Bitmap.createBitmap(mainImage.getWidth(), mainImage.getHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(result);
Paint paint = new Paint();
paint.setFilterBitmap(false);
canvas.drawBitmap(mainImage, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(mask, 0, 0, paint);
paint.setXfermode(null);
img.setImageBitmap(result);
img.invalidate();
esa fue una buena manera de señalarme aquí! No estoy seguro de esto, pero déjame mirar un poco y responderte. – Shaunak
Tienes que poner esto como una respuesta aceptada porque esto me acaba de salvar! – DeeV
La respuesta dada no responde a la pregunta original, todavía me pregunto si una capa de máscara podría declararse utilizando la lista de capas xml –