Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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_Touch_Touch Event_Shapes - Fatal编程技术网

Android:检测圆形中的触摸事件 参考图像

Android:检测圆形中的触摸事件 参考图像,android,touch,touch-event,shapes,Android,Touch,Touch Event,Shapes,在上图中。我想检测用户在哪个圆圈中用胶带粘住了他的手指。 如果用户触摸了黑圈,则应显示祝酒词,表示“您在黑圈中”。 如果它是蓝色的,那么“你在蓝色的圆圈里”。 红色和黄色圆圈也是如此 我知道如何检测触摸事件、移动、按下等以及x、y坐标。 但现在不知道如何检测图像中的圆圈区域 编辑 实际上,上面的图片只是为了让你理解我的问题。在实际场景中,我不想检测颜色像素。我想得到每个圆的确切面积。因为在我的例子中,我的背景色和圆圈的颜色可能是相同的。因此,检测彩色像素并不能解决我真正的问题。这样你就可以得到

在上图中。我想检测用户在哪个圆圈中用胶带粘住了他的手指。 如果用户触摸了黑圈,则应显示祝酒词,表示“您在黑圈中”。 如果它是蓝色的,那么“你在蓝色的圆圈里”。 红色和黄色圆圈也是如此

我知道如何检测触摸事件、移动、按下等以及x、y坐标。 但现在不知道如何检测图像中的圆圈区域


编辑
实际上,上面的图片只是为了让你理解我的问题。在实际场景中,我不想检测颜色像素。我想得到每个圆的确切面积。因为在我的例子中,我的背景色和圆圈的颜色可能是相同的。因此,检测彩色像素并不能解决我真正的问题。

这样你就可以得到红、绿、蓝的比例:

final Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
imageView.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event){

        int x = (int)event.getX();
        int y = (int)event.getY();
        int pixel = bitmap.getPixel(x,y);

        int red = Color.red(pixel);
        int blue = Color.blue(pixel);
        int green = Color.green(pixel);

        Log.i("color", red+","+green+","+blue);
        return false;
    }
});

您获得按下位置的像素颜色,然后检测它最接近的颜色,并根据该颜色显示
Toast


如果您知道圆圈的圆心在哪里(我假设您知道每个圆环的宽度),只需在触控事件中计算与圆心的距离,如下所示

@Override public boolean onTouchEvent(MotionEvent ev) {
    double distanceFromCenter = Math.sqrt((CENTER_X - ev.getX())^2 + (CENTER_Y - ev.getY())^2);
    //Figure out which ring it's in. 
}  

您也可以绘制一组重叠的圆形,但这将更加复杂。请确保开始

谢谢你的快速回复。但是如果我的图像中没有颜色呢。实际上,上面的图片只是为了让你理解我的问题。在实际场景中,我不想检测颜色像素。我想得到每个圆的确切面积。因为在我的例子中,我的背景色和圆圈的颜色可能是相同的。所以检测彩色像素并不能解决我真正的问题。