我用两种不同的颜色创建不同的自定义视图.根据我的应用功能,当拖动对象相互重叠时,用户将在屏幕上拖动这些对象.我想区分重叠区域,如何设置重叠区域的组合颜色.请看下面的图片.这里我使用canvas来创建那些自定义视图,两个圆圈是两个不同的视图.
编辑: 如果我使用不透明度128我能够看到背景颜色,但我想要重叠对象颜色的组合颜色.
下面的方法有效,但不幸的是,这种方法涉及创建整个屏幕大小的位图 - 而不仅仅是绘制的区域.如果我使用它来绘制UI元素,则会为每个UI元素重新绘制它.这可以更有效地完成吗?
@Override
protected void onDraw(Canvas canvas) {
//TODO: Reduce the burden from multiple drawing
Bitmap bitmap=Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_8888);
Canvas offscreen=new Canvas(bitmap);
super.onDraw(offscreen);
//Then draw onscreen
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
}
Run Code Online (Sandbox Code Playgroud)