Câu hỏi mới cho người mớiAndroid - Có thể tuyên bố mặt nạ alpha trực tiếp trong định nghĩa XML danh sách lớp không?
Tôi có layer.xml này mà tôi sử dụng làm nguồn cho ImageView. Và hai hình ảnh, mask.png và 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"/>
Tại thời điểm đầu ra chỉ là png lên ảnh. Tôi muốn các png để hoạt động như một chiếc mặt nạ, cắt hình ảnh bằng cách sử dụng kênh alpha png như vậy:
Là có thể trực tiếp trong xml, hoặc tôi phải làm điều đó bằng cách mã?
Cảm ơn lời khuyên của bạn;)
update: tại thời điểm tôi đạt được mục tiêu của tôi sử dụng mã để thay thế toàn bộ 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();
đó là cách hay để chỉ cho tôi ở đây! Không chắc chắn về điều này, nhưng hãy để tôi nhìn xung quanh một chút và lấy lại cho bạn. – Shaunak
Bạn phải đặt câu trả lời này là một câu trả lời được chấp nhận vì điều này vừa mới cứu tôi! – DeeV
Câu trả lời cho trước không trả lời được câu hỏi ban đầu, tôi vẫn tự hỏi liệu một lớp mặt nạ có thể được khai báo bằng cách sử dụng danh sách lớp xml –