在上图中。我想检测用户用哪个圈子粘他的手指。 如果用户触摸了黑色圆圈,则应显示一个“Toast in Black circle”的toast。 如果它是蓝色,那么“你在蓝圈”。 红色和黄色圈也是如此。
我知道如何检测触摸事件DOWN,MOVE,PRESS等以及x,y坐标。 但现在不要如何检测该图像中的圆形区域。
实际上上面的图片只是为了让你了解我的问题。在实际场景中,我不想检测颜色像素。我想得到每个圆圈的确切区域。因为在我的情况下我的背景颜色和我的圆圈颜色可能相同。因此检测彩色像素并不能解决我的实际问题。
答案 0 :(得分:1)
如果您知道圆圈的中心位置(我假设您知道每个圆环的宽度),只需计算触摸事件中心距离,如下所示。
@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.
}
您还可以绘制一堆重叠的圆形,但这会更复杂。请参阅this开始使用。
答案 1 :(得分:0)
通过这个你可以获得红色,绿色,蓝色的比例:
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;
}
});
答案 2 :(得分:0)
您获得按下位置的像素颜色,然后检测它最接近的颜色并根据该显示Toast