Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PorterDuff.Mode.CLEAR在背景为黑色时无法正常工作_Android_Paint_Porter Duff - Fatal编程技术网

Android PorterDuff.Mode.CLEAR在背景为黑色时无法正常工作

Android PorterDuff.Mode.CLEAR在背景为黑色时无法正常工作,android,paint,porter-duff,Android,Paint,Porter Duff,我需要一点帮助来使用我正在使用的应用程序。我正在尝试创建一个绘画应用程序,几天前我注意到了一个问题,现在我决定做一些研究来解决它。当我使用PorterDuff.Mode.CLEAR将画笔用作橡皮擦时,背景为白色时,画笔的工作状态应为正常。但是,如果我将背景设置为其他颜色(例如黑色:mCanvas.drawColor(color.Black);),并且在使用橡皮擦后,我使用橡皮擦的地方会被涂成白色。 下面是我如何设置橡皮擦的变量: erase.setOnClickListener(new View

我需要一点帮助来使用我正在使用的应用程序。我正在尝试创建一个绘画应用程序,几天前我注意到了一个问题,现在我决定做一些研究来解决它。当我使用
PorterDuff.Mode.CLEAR
将画笔用作橡皮擦时,背景为白色时,画笔的工作状态应为正常。但是,如果我将背景设置为其他颜色(例如黑色:
mCanvas.drawColor(color.Black);
),并且在使用橡皮擦后,我使用橡皮擦的地方会被涂成白色。 下面是我如何设置橡皮擦的变量:

erase.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            stamp=false;
            MODE = ERASER_MODE;
            mPaint.setColorFilter(null);
            mPaint.setShader(null);
            mPaint.setMaskFilter(null);
            mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        }
    });
你知道为什么会这样吗?我该如何解决这个问题


提前谢谢

事实上,我找到了我的问题所在。在我用于绘图等的自定义视图中,我正在这样做

 @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
        mCanvas.drawColor(parentColor); //parentColor = currentBackgroundColor
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
        canvas.drawPath(mPath, mPaint);
    }
我只需要在我生日那天换衣服