Android 如何获得画布区域点击?
我已经使用画布视图方法绘制了饼图,但现在我想点击单个饼图?我怎么能把它打点呢 你能做的是Android 如何获得画布区域点击?,android,view,charts,pie-chart,Android,View,Charts,Pie Chart,我已经使用画布视图方法绘制了饼图,但现在我想点击单个饼图?我怎么能把它打点呢 你能做的是 覆盖onTouch事件&您将获得运动事件 您将获得click by事件的x&y坐标。getX()& 分别是event.getY() 确定此x&y在饼图中相交的位置 示例代码: 1) 简单的 2) 另一种联系方式(好方法) 你不能。嗯,至少不是直接的 不过,您可以执行以下操作: 在视图的单击处理程序中,确定单击的xy坐标 比较您编写的图形代码,从而确定单击位于饼图的哪个部分 我得到了这个问题的完美答案:
- 覆盖onTouch事件&您将获得运动事件
- 您将获得click by事件的x&y坐标。getX()& 分别是event.getY()
- 确定此x&y在饼图中相交的位置
你不能。嗯,至少不是直接的 不过,您可以执行以下操作:
我得到了这个问题的完美答案: 获取单击区域的颜色代码,并检查颜色是否与您的颜色代码匹配。这将获得您想要的单击
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
Logger.debug("X-->"+touchX+" Y---->"+touchY);
//get drawing cache of your view
Bitmap bitmap = getDrawingCache(true);
//Get color code of pixle where you have tap
int colorCode=bitmap.getPixel((int)touchX,(int)touchY);
if(colorCode == context.getResources().getColor(R.color.pie_blue)) {
Logger.debug("Color blue");
onPieClick.onBluePieClick(touchX,touchY);
}else if(colorCode == context.getResources().getColor(R.color.pie_green)) {
Logger.debug("Color green");
onPieClick.onGreenPieClick(touchX,touchY);
}
return super.onTouchEvent(event);
}
OnGestureListener mGestureListener=new GestureDetector.SimpleOnGestureListener(){
public boolean onSingleTapConfirmed(MotionEvent e) {
float xCord=e.getX();
float yCord = e.getY();
....
identify where this x & y intersect in pie.
...
};
};
GestureDetector gestureDetector=new GestureDetector(context, mGestureListener);
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
Logger.debug("X-->"+touchX+" Y---->"+touchY);
//get drawing cache of your view
Bitmap bitmap = getDrawingCache(true);
//Get color code of pixle where you have tap
int colorCode=bitmap.getPixel((int)touchX,(int)touchY);
if(colorCode == context.getResources().getColor(R.color.pie_blue)) {
Logger.debug("Color blue");
onPieClick.onBluePieClick(touchX,touchY);
}else if(colorCode == context.getResources().getColor(R.color.pie_green)) {
Logger.debug("Color green");
onPieClick.onGreenPieClick(touchX,touchY);
}
return super.onTouchEvent(event);
}