Android - Возможно ли объявить альфа-маску непосредственно в XML определении списка слоев?

Вопрос новичка

У меня есть этот layers.xml, который я использую как источник для ImageView. И два изображения, mask.png и 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"/>

На данный момент на выходе просто png поверх изображения. Я бы хотел, чтобы png действовал как маска, обрезая изображение, используя альфа-канал png, как показано ниже: enter image description here

Возможно ли это непосредственно в xml, или я должен сделать это кодом?

Спасибо за совет ;)

обновление: на данный момент я достиг своей цели, используя код для замены всего 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();
31
задан JJD 21 March 2013 в 11:09
поделиться