Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 如何在触摸屏上消除模糊图像的方形部分_Android_Canvas_Android Imageview_Ondraw - Fatal编程技术网

Android 如何在触摸屏上消除模糊图像的方形部分

Android 如何在触摸屏上消除模糊图像的方形部分,android,canvas,android-imageview,ondraw,Android,Canvas,Android Imageview,Ondraw,我想做什么: 在模糊图像的鼠标悬停上,它以方形显示未模糊的相同图像,如下图所示。(图像完全模糊,鼠标悬停时图像以方形显示) 我所做的: 我使用以下代码()设置模糊图像。在触摸屏上,鼠标指针转换成正方形,图像显示unblur 编辑: 问题: 现在图片是不模糊的,但我不能在模糊的图像上找到合适的模糊效果,而且不模糊的图像也不清晰,触控不正常 我的代码: 使用自定义视图和以下方法,我能够模糊和取消模糊图像,但仍然不能完全满足输出 @Override protected void onDraw

我想做什么:

在模糊图像的鼠标悬停上,它以方形显示未模糊的相同图像,如下图所示。(图像完全模糊,鼠标悬停时图像以方形显示)

我所做的:

我使用以下代码()设置模糊图像。在触摸屏上,鼠标指针转换成正方形,图像显示unblur


编辑:

问题:

现在图片是不模糊的,但我不能在模糊的图像上找到合适的模糊效果,而且不模糊的图像也不清晰,触控不正常

我的代码:

使用自定义视图和以下方法,我能够模糊和取消模糊图像,但仍然不能完全满足输出

@Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(mTutorialColor);
        if (mCx >= 0 && mCy >= 0) {
            DisplayMetrics displayMetrics = new DisplayMetrics();
            ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
            int height = displayMetrics.heightPixels;
            int width = displayMetrics.widthPixels;
            // canvas.drawCircle(mCx, mCy, RADIUS, mBackgroundPaint);
            canvas.drawRect(mCx, mCy, mCx + width, mCy + 250, mBackgroundPaint);
        }

    }


private void init() {
        setWillNotDraw(false);
        setLayerType(LAYER_TYPE_HARDWARE, null);
        mBackgroundPaint = new Paint();
        mBackgroundPaint.setColor(getResources().getColor(android.R.color.transparent));
        mBackgroundPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    }
有没有其他方法可以做到这一点


您需要以不同的方式实施它

您需要两个图像(而不是一个):

  • 模糊的一个。将始终绘制为背景(或在下面的视图中)。阅读如何模糊图像

  • 正常的。这张照片应该用方形遮罩画在模糊照片的上面。看看这个

  • 更多详情:

    这可以用我在中解释的相同方法来完成,但是使用Xfermode中的
    Mode.DST_,而不是
    PorterDuff.Mode.CLEAR


    希望这会对你有所帮助。

    现在还不清楚问题出在哪里…@Alexandr首先你可以看到猫的模糊图像,但模糊程度不高,所以我需要进一步模糊它,所以,没有人能识别图像,当我们触摸图像时,它只在触摸部分显示清晰的图像。@Alexandr这里的清晰图像也不是很清晰,当我们在屏幕上触摸时,触摸必须画矩形,并且限制在x轴上移动。它只会上下移动,不会左右移动。你尝试过我的解决方案吗?hii@Alexandr我正忙于其他工作。尝试过这个解决方案后,我会给你回复的,谢谢:)