Как узнать, пересекаются ли два изображения при перемещении одного изображения в Android?

В моем приложении я перемещаю изображение по экрану, используя onTouchListener.

У меня есть еще два изображения в том же представлении. Моя проблема в том, что когда движущееся изображение касается любого другого изображения, мне нужно выполнить определенное действие (это означает, что если изображения пересекаются, то что-то делать).

Как это может быть достигнуто? Пожалуйста, помогите мне как можно скорее

Заранее спасибо.


person user2681425    schedule 23.08.2013    source источник
comment
почему бы не использовать отдельные сенсорные слушатели для каждого?   -  person Kosh    schedule 23.08.2013


Ответы (3)


Вы должны иметь возможность использовать Rect.intersects(Rect, Rect), как в этом примере:

Rect myViewRect = new Rect();
myView.getHitRect(myViewRect);

Rect otherViewRect1 = new Rect();
otherView1.getHitRect(otherViewRect1);

Rect otherViewRect2 = new Rect();
otherView2.getHitRect(otherViewRect2);

if (Rect.intersects(myViewRect, otherViewRect1)) {
  // Intersects otherView1
}

if (Rect.intersects(myViewRect, otherViewRect2)) {
  // Intersects otherView2
} 

Ссылка: здесь.

person ter0    schedule 23.08.2013
comment
@ user2681425: в моем случае это не работает. Можете ли вы обновить свой вопрос с решением? - person Akarsh M; 30.09.2013

В onTouch с действием перемещения вы можете получить прямоугольную границу ваших движущихся изображений и другое. Проверьте, пересекается ли ваш движущийся прямоугольник с другим, с помощью функции пересечения, например: Rect movingBound = new Rect(); Rect[] otherImagesBound = новый Rect[...]

получить Rect, связанный:

Rect movingBound = new Rect();
movingImage.getHitRect(movingBound);

то же самое с другим изображением. цикл в otherImagesBound и проверьте:

if (anotherImagesBound[index].intersect(movingBound)){ 
  // do something here
}

Примечание: вы должны обновлять movingBound при каждом действии касания, но ваш другой ImageView вы должны получить один раз. Надеюсь, это поможет

person hieuxit    schedule 23.08.2013

Когда вы перемещаете свое изображение в прослушивателе onTouch, проверьте пересечение прямоугольников между View a и View b, используя:

a.getLeft() <= b.getRight() &&
b.getLeft() <= a.getRight() &&
a.getTop() <= b.getBottom() &&
b.getTop() <= a.getBottom()
person krishan711    schedule 23.08.2013