2014-09-01 22 views
0

我正在開發一個應用程序,在Android中使用移動手指擦除功能。 在我的應用程序擦除功能工作正常,但當我們切換到下一個活動時,擦除區域顯示爲黑色。請提供任何建議或鏈接事先刪除這個問題..感謝名單我 代碼是刪除區域在Android中出現黑色

class EraseView extends View{ 
Bitmap bgr,bgr1; 
Bitmap overlayDefault; 
Bitmap overlay; 
Paint pTouch; 
int X = -100; 
int Y = -100; 
Canvas c2; 
GlobalVariable globalVariable; 
@SuppressLint("NewApi") 
public EraseView(Context context,Bitmap bitmap) { 
    super(context); 
    globalVariable=(GlobalVariable)context.getApplicationContext(); 
    bgr = BitmapFactory.decodeResource(getResources(),R.drawable.erase_bg); 
    bgr1 = BitmapFactory.decodeResource(getResources(),R.drawable.erase_bg); 
    overlayDefault =bitmap; 
    overlayDefault = Bitmap.createScaledBitmap(overlayDefault,globalVariable.bitmap_width, globalVariable.bitmap_height, true); 
    overlay = bitmap.copy(Config.ARGB_8888, true); 
    overlay = Bitmap.createScaledBitmap(overlay, globalVariable.bitmap_width, globalVariable.bitmap_height, 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)); 
    globalVariable.bitmapArray=new ArrayList<Bitmap>(); 
} 
@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: 
      globalVariable.count++; 
      globalVariable.bitmapArray.add(globalVariable.bitmap); 
      break; 
    } 
    return true; 
} 
@Override 
public void onDraw(Canvas canvas){ 
    super.onDraw(canvas); 
    /*//draw background 
    canvas.drawColor(Color.TRANSPARENT); 
    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);*/ 
    canvas.drawColor(Color.TRANSPARENT); 
    Paint new_paint = new Paint(/*Paint.ANTI_ALIAS_FLAG*/); 
    new_paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP)); 
    canvas.drawBitmap(bgr, 0, 0, new_paint); 
    c2.drawCircle(X, Y, 25, pTouch); 
    canvas.drawBitmap(overlay, 0, 0, new_paint); 
    Bitmap tempBitmap = Bitmap.createBitmap(globalVariable.bitmap_width,globalVariable.bitmap_height, Bitmap.Config.RGB_565); 
    Canvas can=new Canvas(tempBitmap); 
    can.drawBitmap(bgr, 0, 0, null); 
    can.drawBitmap(overlay, 0, 0, null); 
    globalVariable.bitmap=tempBitmap; 
} 
} 
+0

我有這個答案 – 2014-09-19 10:54:11

回答

0

在上面的問題刪除圖像刪除區域後出現黑色的下一個活動.. 此您可以通過以下替換此代碼代碼

Bitmap tempBitmap = Bitmap.createBitmap(globalVariable.bitmap_width,globalVariable.bitmap_height,  Bitmap.Config.RGB_565); 

在此如果u設置這個代碼,那麼你definetly找到刪除區域透明..

Bitmap tempBitmap = Bitmap.createBitmap(globalVariable.bitmap_width,globalVariable.bitmap_height,  Bitmap.Config.ARGB_8888);