如何在onDraw()方法绘制的对象(多于1个)上单独设置onTouchEvent?

时间:2016-02-01 10:05:19

标签: android graphics android-canvas android-view paint

假设我的onDraw()方法中有两个圆圈。

protected void onDraw(Canvas canvas) {

    canvas.drawCircle(redX, redY, redRad, redPaint);
    canvas.drawCircle(cx, cy, rad, p);
}

通过ViewonTouchEvent()提供的方法永远不要理解我使用过的变量如果它是单独的,我可以对一个圆圈进行操作,但是如果我希望他们有一个虽然它们处于相同的onTouchEvent()方法,但是onDraw()分开,是否可能?最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我不认为这是可能的,因为onTouchEvent是视图类的方法,您只能覆盖它一次。 您唯一能做的就是覆盖ontouchEvent,然后从触摸位置,您可以找到您正在触摸的区域并执行您需要执行的操作。

 @Override
 public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
    upCell = -1;
    xPos = event.getX();
    return true;
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
        xPos = event.getX();
    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {

    } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {

    }
 return super.onTouchEvent(event);
}

答案 1 :(得分:0)

您需要存储每个对象的位置&每次调用此视图的触摸事件时检查重叠。

下面给出了一个示例(假设您的对象是圆圈):

plt.show(block=True)