Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to know if two images are intersect while one image moving in android?

In my application, i am moving image around the screen by using onTouchListener.

I have another two images in the same view. My problem is that, when the moving image, touches any of the other images, i need to perform a certain action (that means if images are intersected, then do something).

How can this be achieved?.Please help me asap

Thanks in Advance.

like image 799
user2681425 Avatar asked Aug 23 '13 08:08

user2681425


2 Answers

You should be able to use Rect.intersects(Rect, Rect), like this example:

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
} 

Reference is here.

like image 130
ter0 Avatar answered Nov 16 '22 20:11

ter0


In onTouch with move action you can get rectangle bound of your moving images and another. Check if your moving rect intersect with another by intersect function like: Rect movingBound = new Rect(); Rect[] anotherImagesBound = new Rect[...]

get Rect bound by:

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

same with another imageView. loop in the anotherImagesBound and check :

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

Note: you must update movingBound in every touch action, but your another ImageView you should get once. Hope this help

like image 34
hieuxit Avatar answered Nov 16 '22 18:11

hieuxit