2
我想在現有的位圖上繪製一些東西,同時保持位圖分離。所以想法是有一個RelativeLayout和兩個ImageViews堆疊在一起,頂部的一個持有要繪製的位圖,最後一個持有帶有背景圖片的位圖。ImageView中的透明位圖
layout.xml(僅適用於相關的部分)
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/photo_mask"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent" />
<ImageView
android:id="@+id/photo"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
layout.java(僅適用於相關的部分)
setContentView(R.layout.layout);
ImageView image = (ImageView) findViewById(R.id.photo);
image.setImageBitmap(mSomeImage);
mMaskPaint = new Paint();
mMaskPaint.setColor(0xFF0000);
mMaskPaint.setAlpha(128);
mMaskBitmap = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);
mMaskBitmap.eraseColor(Color.TRANSPARENT);
mMaskCanvas = new Canvas(mMaskBitmap);
mMaskCanvas.drawCircle(64, 64, 10, mMaskPaint);
ImageView mask = (ImageView) findViewById(R.id.photo_mask);
image.setImageBitmap(mMaskBitmap);
注意mSomeImage是128×128位圖,所以它會匹配掩碼位圖。 我正在繪製一個紅色的圓形在面具位圖中,這完美地顯示。但是,蒙版位圖不會顯示背景圖像,而是顯示黑色背景。
所以,我試圖:
- 所述的ImageView的背景顏色設置爲透明
- 掩碼位圖的透明使用.eraseColor
- 設置位圖配置的像素設置爲ARGB_8888
- 設置蒙版的alpha值ImageView
沒有一個看起來可行。當我做一個eraseColor(Color.BLUE)時,背景是藍色的,中間是紅色圓圈。當我設置蒙版ImageView的Alpha時,背景仍然是黑色。當我註釋掉setImageBitmap(mMaskBitmap)時,背景圖像顯示出來。
我在這裏錯過了什麼?
嘗試設置ImageView的面具背景爲null,看看它是否工作。 – Wenhui
你爲什麼要擦掉透明色?它看起來像掩碼位圖需要用紅色圓圈透明。我的猜測是像素的默認值是ff000000 - 這是黑色的。儘量不要擦除透明度。 – toadzky
eraseColor方法實際上使用該顏色填充位圖。 –