The answer given by Dheeraj has the answer to your question:
https://stackoverflow.com/a/9918830/1268168
Here's a copy and paste of his answer:
Another method I can think of will work with simple objects that can be constructed using Paths.
Once you have two objects whose boundaries are represented by paths, you may try this:
Path path1 = new Path();
path1.addCircle(10, 10, 4, Path.Direction.CW);
Path path2 = new Path();
path2.addCircle(15, 15, 8, Path.Direction.CW);
Region region1 = new Region();
region1.setPath(path1, clip);
Region region2 = new Region();
region2.setPath(path2, clip);
if (!region1.quickReject(region2) && region1.op(region2, Region.Op.INTERSECT)) {
// Collision!
}
Once you have your objects as Paths, you can draw them directly using drawPath(). You can also perform movement by transform()ing the path.
From my understanding, the variable "clip" in the above code should be the bounding box of the path. For general purposes I use
Region clip = new Region(0, 0, layoutWidth, layoutHeight);
Where the layout width and height can be the size of your canvas or activity or whatever.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…