我的想法是将两个图像重叠在一起,并且在onTouch上,顶部图像应该在触摸的半径上变得透明,从而暴露底部图像.
这是我叠加2张图片的方式:
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, new Matrix(), null);
Run Code Online (Sandbox Code Playgroud)
我已经查看了这篇文章,并在下面使用Paint来使其透明:
mPaint = new Paint();
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
mPaint.setColor(Color.TRANSPARENT);
mPaint.setAntiAlias(true);
public void onDraw(Canvas canvas) {
canvas.drawCircle(40, 40, 30, mPaint); //hardcode to test
}
Run Code Online (Sandbox Code Playgroud)
问题是,我认为圆圈直接使2个图像在定义的半径上透明,我怎样才能使顶部位图透明?
我在我的应用程序中有一个自定义视图,我使用视图中的onDraw()函数绘制.它还需要来自ACtivity的一些数据来绘制图形.因此,而不是使用标准setContentView(R.layout.myview)我使用以下 -
MyView mv = new MyView(this, userData);
setContentView(mv);
Run Code Online (Sandbox Code Playgroud)
这似乎有效,直到我textview在customview上面添加了一个.然后我意识到上面的代码根本没有显示textview.也onFinishInflate()永远不会被调用.在这种情况下,我是否必须自己夸大布局?如果是这样,我也必须自己调用这个onDraw()功能吗?
谢谢, - P.