我想在现有位图上绘制一些东西,同时保持位图分开。所以想法是让一个RelativeLayout和两个ImageViews堆叠在一起,顶部的一个保存要绘制的位图,底部的一个保存带有背景图片的位图。
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 是一个 128x128 的位图,因此它将匹配掩码位图。我在遮罩位图中间画了一个红色圆圈,完美显示。但是,遮罩位图不会显示背景图像,而是显示黑色背景。
所以我尝试了:
- 将 ImageView 的背景颜色设置为透明
- 使用 .eraseColor 将遮罩位图的像素设置为透明
- 将位图配置设置为 ARGB_8888
- 设置蒙版 ImageView 的 alpha
这些似乎都不起作用。当我执行eraseColor(Color.BLUE) 时,背景为蓝色,中间有红色圆圈。当我设置蒙版 ImageView 的 alpha 时,背景仍然是黑色的。当我注释掉 setImageBitmap(mMaskBitmap) 时,显示背景图像。
我在这里想念什么?