我正面临这个问题,我有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))
答案 0 :(得分:0)
另一种方法: 您可以将区域转换为矩形并执行相交操作以检查公共区域。 像这样:
if(touchRegion.getBounds().intersect(region1.getBounds()))
{
Log.i("TouchRegion","this is the common region");
}