我想擦图像。实际上,当我擦前景图像时,我有两个图像,一个在前景,另一个在背景帮我解决这个问题。我试过这个:
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;
}
}
}