버튼을 클릭 할 때마다 FrameLayout 위에 View가 쌓이는데요


 이 View에는 alpha값을 먹인 bitmap이 있습니다.


 계속 쌓이면서 점점 진해지는거죠


 다른 버튼을 누르면 쌓였던 bitmap들이 날아가고 


 다시 쌓는 버튼을 누르면 처음 동작 그대로 하게 만들고 싶습니다..


 frameLayout.removeView(patinView); 를 하면 


 paintView 자체가 날아가버려서 


 다시 bitmap이 쌓이지 않더군요... 


 메소드를 다 뒤져봐도 bitmap을 날리는 게 없습니다...도와주세요!!!


protected void onCreate(Bundle icicle) {

super.onCreate(icicle);

alpha = 30;


paintView = new PaintView(this);


frameLayout = new FrameLayout(this);


frameLayout.setBackgroundResource(R.drawable.background_a);

frameLayout.addView(paintView);

setContentView(frameLayout);


btn_start = new Button(this);

btn_start.setText("Start");

btn_start.setTextSize(20);

btn_start.setLayoutParams(new FrameLayout.LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,

Gravity.LEFT | Gravity.TOP));

frameLayout.addView(btn_start);


btn_clear = new Button(this);

btn_clear.setText("Clear");

btn_clear.setTextSize(20);

btn_clear.setLayoutParams(new FrameLayout.LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,

Gravity.RIGHT | Gravity.TOP));

frameLayout.addView(btn_clear);


btn_start.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

paintView.stackImg();

}

});

btn_clear.setOnClickListener(new OnClickListener() {

public void onClick(View v) { 

paintView.removeImg();

//////////// 바로 이부분입니다!!!!!!!!! //////////////// 

}

});



private class PaintView extends View {

private Bitmap bm;

private Bitmap bitmap;

private Canvas canvas;

// private int stack = 0;

private Paint paint = new Paint();

private Paint paint2 = new Paint(Paint.ANTI_ALIAS_FLAG);

/******/

private Path path;


public PaintView(Context context) {

super(context);

bitmap = BitmapFactory.decodeResource(getResources(),

R.drawable.background_c);


paint2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));


paint2.setStyle(Style.STROKE);

paint2.setStrokeWidth(20);

paint2.setStrokeCap(Cap.ROUND);

paint2.setStrokeJoin(Join.ROUND);


paint.setAlpha(alpha);

/******/

path = new Path();

}


@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

if (bm != null && !bm.isRecycled()) {

bm.recycle();

bm = null;

}

bm = Bitmap.createBitmap(w, h, Config.ARGB_8888);

bm.eraseColor(0);

canvas = new Canvas(bm);

super.onSizeChanged(w, h, oldw, oldh);

}


public void stackImg() {

if (stack < 12) {

canvas.drawBitmap(bitmap, 0, 0, paint);

stack++;

Log.i(TAG, "stack : " + stack);

invalidate();

}

}


public void removeImg() {

/////////////////// 바로 이부분입니다!!!!!!!!!!!!!!//////////////////

invalidate();

}


public void onDraw(Canvas canvas) {

canvas.drawBitmap(bm, 0, 0, null);

}