Android:检测圆形中的触摸事件 参考图像
在上图中。我想检测用户在哪个圆圈中用胶带粘住了他的手指。 如果用户触摸了黑圈,则应显示祝酒词,表示“您在黑圈中”。 如果它是蓝色的,那么“你在蓝色的圆圈里”。 红色和黄色圆圈也是如此 我知道如何检测触摸事件、移动、按下等以及x、y坐标。 但现在不知道如何检测图像中的圆圈区域Android:检测圆形中的触摸事件 参考图像,android,touch,touch-event,shapes,Android,Touch,Touch Event,Shapes,在上图中。我想检测用户在哪个圆圈中用胶带粘住了他的手指。 如果用户触摸了黑圈,则应显示祝酒词,表示“您在黑圈中”。 如果它是蓝色的,那么“你在蓝色的圆圈里”。 红色和黄色圆圈也是如此 我知道如何检测触摸事件、移动、按下等以及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.
}
您也可以绘制一组重叠的圆形,但这将更加复杂。请确保开始 谢谢你的快速回复。但是如果我的图像中没有颜色呢。实际上,上面的图片只是为了让你理解我的问题。在实际场景中,我不想检测颜色像素。我想得到每个圆的确切面积。因为在我的例子中,我的背景色和圆圈的颜色可能是相同的。所以检测彩色像素并不能解决我真正的问题。