android studio中的多个Region / Path交叉点

时间:2017-12-16 12:51:54

标签: java android android-studio region intersect

我正面临这个问题,我有4个静态区域和一个触摸区域。在代码中,我试图检查触摸区域是否与其他区域相交。 我在onTouchEvent(Event event)ACTION_MOVE的{​​{1}}中使用了很少的“if”语句。 Pbroblem是条件满足时只访问第1个if语句,其他if语句是真实的。

这是我的代码:

ACTION_DOWN

更新: 如果条件改变,解决了问题:

    @Override
public boolean onTouchEvent(MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_UP:
            trianglePaint.setColor(Color.GREEN);
            touchVisible = false;
            text.setText("UP");
            invalidate();
            return false;
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
            trianglePaint.setColor(Color.GRAY);
            touchX = event.getX();
            touchY = event.getY();
            touchVisible = true;
            text.setText("DOWN");

            touchPath.reset();
            touchPath.addCircle(touchX, touchY, 4, Path.Direction.CW);
            touchRegion.setPath(touchPath, clip);

            if(touchRegion.op(t1.getRegion(), Region.Op.INTERSECT)) {
                text.setText("T1 INTERSEC!");
            }
            if(touchRegion.op(t2.getRegion(), Region.Op.INTERSECT)) {
                text.setText("T2 INTERSEC!");
            }
            if(touchRegion.op(t3.getRegion(), Region.Op.INTERSECT)) {
                text.setText("T3 INTERSEC!");
            }
            if(touchRegion.op(t4.getRegion(), Region.Op.INTERSECT)) {
                text.setText("T4 INTERSEC!");
            }

            invalidate();
            return true;
        default:
            return false;
    }

if((touchRegion.op(t1.getRegion(), Region.Op.INTERSECT))

1 个答案:

答案 0 :(得分:0)

另一种方法: 您可以将区域转换为矩形并执行相交操作以检查公共区域。 像这样:

    if(touchRegion.getBounds().intersect(region1.getBounds()))
    {
    Log.i("TouchRegion","this is the common region");
    }