我已经使用画布视图方法绘制了饼图,但现在我想点击单个饼图?我怎么能点那个?
问问题
1054 次
3 回答
3
这个问题我得到了完美的答案:
获取点击区域的颜色代码并检查颜色是否与您的颜色代码匹配,这将获得您想要的点击。
@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);
}
于 2013-07-09T04:53:17.133 回答
0
你能做的是,
覆盖 onTouch 事件,您将获得 Motion 事件,
您将分别通过 event.getX() 和 event.getY() 获得点击的 x 和 y 坐标。
确定这个 x 和 y 在饼图中相交的位置。
示例代码:
1)简单
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_UP){
float xCord=event.getX();
float yCord = event.getY();
....
Write condition to identify where this x & y intersect in pie.
...
}
return true;
}
2)另一种接触方式(好方法)
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;
}
于 2013-07-04T12:39:31.227 回答
0
你不能。好吧,至少不是直接的。
您可以执行以下操作:
- 在视图的点击处理程序中,确定点击的 xy 坐标
- 比较您编写的绘图代码,从而确定点击是在哪一块饼中
于 2013-07-04T12:40:20.200 回答