Una domanda newbieAndroid - È possibile dichiarare una maschera alfa direttamente all'interno della definizione XML dell'elenco layer?
Ho questo layers.xml che uso come sorgente per un ImageView. E due immagini, mask.png e image.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"/>
Al momento l'uscita è proprio il png sull'immagine. Vorrei il png di agire come una maschera, ritaglio l'immagine utilizzando il canale alfa PNG in questo modo:
È quello possibile direttamente all'interno del xml, o devo farlo per codice?
Grazie per i vostri consigli;)
aggiornamento: al momento in cui ho raggiunto il mio obiettivo utilizzando il codice di sostituire l'intero 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();
è stato un bel modo di indicarmi qui! Non sono sicuro di questo, ma fammi guardare un po 'in giro e tornare da te. – Shaunak
Devi metterlo come una risposta accettata perché questo mi ha appena salvato! – DeeV
La risposta data non risponde alla domanda originale, mi sto ancora chiedendo se un livello maschera possa essere dichiarato usando la lista di livelli xml –