我有一个按钮,它使用ObjectAnimator在屏幕中间旋转,另一个按钮(将是正方形或圆形)来回移动,有时在第一个按钮上重叠。
我需要知道第一个按钮被第二个按钮覆盖的时间,但是第一个按钮会旋转,所以我不能只比较两个矩形。
有人知道解决方案吗?
修改的
我一直在尝试使用pturner的解决方案但是有一些问题我无论如何都无法修复:
旋转按钮的矩形值似乎是从轴的原点生成的,而不是按钮的原点,因此移动按钮会相信他正在与屏幕左上角的旋转按钮相交
当旋转按钮旋转时,矩形的值最终会反转,变为负值,从而向左/向右和向上/向下翻转。因此,在某些角度,移动按钮相信总是重叠,而在其他角度,它认为永远不会重叠。
我真的不知道如何解决这些问题,我只想在这里留下这个问题,希望有人知道解决方案。
答案 0 :(得分:0)
我认为你应该能够得到两个视图的视图,然后使用矩阵对它们进行转换,其中包括:
Matrix matrix1 = button1.getMatrix();
Rect box1 = new Rect();
button1.getDrawingRect(box1);
Rectf boxf1 = new RectF(box1);
matrix1.mapRect(boxf1);
Matrix matrix2 = button2.getMatrix();
Rect box2 = new Rect();
button2.getDrawingRect(box2);
Rectf boxf2 = new RectF(box2);
matrix2.mapRect(boxf2);
boolean intersect = boxf1.intersect(boxf2);