我想擦Image.Actually我有两个图像一个在前景,另一个在背景中当我摩擦forground图像然后背景图像将要来怎么做?我在这里找到了很多,但还没有得到解决方案。所以有人请帮我解决这个问题。 我试过这个:
public class MainActivity extends Activity {
ImageView img;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// img = (ImageView) findViewById(R.id.img);
//
// new Panel(this);
setContentView(new Panel(this));
}
class Panel extends View {
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
private Paint mPaint;
Bitmap bitmap;
Canvas pcanvas;
int x = 0;
int y = 0;
int r = 0;
public Panel(Context context) {
super(context);
Log.v("Panel", ">>>>>>");
setFocusable(true);
setBackgroundColor(Color.MAGENTA);
// setting paint
mPaint = new Paint();
mPaint.setAlpha(1);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mPaint.setAntiAlias(true);
// getting image from resources
Resources r = this.getContext().getResources();
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.verse);
// converting image bitmap into mutable bitmap
// bitmap = Bitmap.createBitmap(295, 260, Config.ARGB_8888);
bitmap = Bitmap.createBitmap(185, 120, Config.ARGB_8888);
pcanvas = new Canvas();
pcanvas.setBitmap(bitmap); // drawXY will result on that Bitmap
pcanvas.drawBitmap(bm, 0, 0, null);
}
@Override
protected void onDraw(Canvas canvas) {
// draw a circle that is erasing bitmap
// pcanvas.drawCircle(x, y, r, mPaint);
pcanvas.drawColor(color.transparent);
canvas.drawBitmap(bitmap, 0, 0, null);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// set paramete to draw circle on touch event
x = (int) event.getX();
y = (int) event.getY();
r = 20;
// Atlast invalidate canvas
invalidate();
return true;
}
}
}
答案 0 :(得分:0)
您可能想尝试使用Xfermodes / Porterduff,可能此线程可能会对您有所帮助:Android bitmap mask color, remove color
要设置您可以使用的颜色
int[] pix=new int[bitmap.getWidth()*bitmap.getHeight()];
bitmap.getPixels(pix, 0, 0, bitmap.getWidth(), bitmap.getHeight);
// do some processing here
// possible set color of some pixels to Color.TRANSPARENT
bitmap.setPixels(pix, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());