Make certain area of bitmap transparent on touch Make certain area of bitmap transparent on touch android android

Make certain area of bitmap transparent on touch


import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BlurMaskFilter.Blur;import android.graphics.BitmapFactory;import android.graphics.BlurMaskFilter;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;public class StartActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(new TouchView(this));    }    class TouchView extends View{        Bitmap bgr;        Bitmap overlayDefault;        Bitmap overlay;        Paint pTouch;        int X = -100;        int Y = -100;        Canvas c2;        public TouchView(Context context) {            super(context);            bgr = BitmapFactory.decodeResource(getResources(),R.drawable.bgr);            overlayDefault = BitmapFactory.decodeResource(getResources(),R.drawable.over);            overlay = BitmapFactory.decodeResource(getResources(),R.drawable.over).copy(Config.ARGB_8888, true);              c2 = new Canvas(overlay);            pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);                     pTouch.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));             pTouch.setColor(Color.TRANSPARENT);            pTouch.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL));        }        @Override        public boolean onTouchEvent(MotionEvent ev) {            switch (ev.getAction()) {                case MotionEvent.ACTION_DOWN: {                    X = (int) ev.getX();                    Y = (int) ev.getY();                    invalidate();                    break;                }                case MotionEvent.ACTION_MOVE: {                        X = (int) ev.getX();                        Y = (int) ev.getY();                        invalidate();                        break;                }                           case MotionEvent.ACTION_UP:                    break;            }            return true;        }        @Override        public void onDraw(Canvas canvas){            super.onDraw(canvas);            //draw background            canvas.drawBitmap(bgr, 0, 0, null);            //copy the default overlay into temporary overlay and punch a hole in it                                      c2.drawBitmap(overlayDefault, 0, 0, null); //exclude this line to show all as you draw            c2.drawCircle(X, Y, 80, pTouch);            //draw the overlay over the background              canvas.drawBitmap(overlay, 0, 0, null);        }    }}


Heh, you've got the answer right inside your post!

Basically try something like:

public void onDraw(Canvas canvas) {        if (myPaintFlag) {        canvas.drawBitmap(bmp1, new Matrix(), null);        canvas.drawBitmap(bmp2, new Matrix(), mPaint);    }    else {        canvas.drawBitmap(bmp1, new Matrix(), mPaint);        canvas.drawBitmap(bmp2, new Matrix(), null);    }   }