如何知道如果一个视图叠加在RelativeLayout的另一种观

如何知道如果一个视图叠加在RelativeLayout的另一种观

本文介绍了Android的 - 如何知道如果一个视图叠加在RelativeLayout的另一种观点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有内部的两个意见RelativeLayout的。该厂景以每十秒钟的随机位置的布局内重新创建。视图2是一个静态的位置,是更大然后厂景。我想知道当第二视图区域内创建的第一个观点,我该怎么办呢?

I have a RelativeLayout with two views inside. The view1 is recreated inside the layout in a random position every ten seconds. view2 is in a static position and is bigger then view1. I want to know when the first view is created inside the second view area, how can I do that?

目前,我正在尝试此code,但ID不能很好地工作。

I'm currently trying this code but id doesn't work well.

        if (paramsView1.topMargin > View2Ystart
            && paramsView1.topMargin < View2Yend
            && paramsView1.leftMargin > View2Xstart
            && paramsView1.leftMargin < View2Xend) {
        return true
    }
    else
        return false;

返回TRUE只有当厂景是感人视图2的侧面。我想只有在厂景是完全内部视图2返回true。

It returns true only if view1 is touching a side of view2. I want it returns true only if view1 is totally inside view2.

推荐答案

您应该使用 getLeft() GetRight时()共达() getBottom()

if (v1.getTop() >= v2.getTop() &&
    v1.getLeft() >= v2.getLeft() &&
    v1.getRight() <= v2.getRight() &&
    v1.getBottom() <= v2.getBottom()) { ...

要留意,这些值将可当父被摆出来,即不立即后 addView()

另一种可能的解决方案,这可能是更灵活,是建设矩形实例,其中每个视图的坐标,例如

Another possible solution, which may be more flexible, is to build Rect instances with each view's coordinates, e.g.

Rect rect1 = new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom());
Rect rect2 = new Rect(v2.getLeft(), v2.getTop(), v2.getRight(), v2.getBottom());

然后你可以使用<$c$c>rect1.contains(rect2)或<$c$c>Rect.intersects(rect1, RECT2) 或任何其他组合。

Then you can use rect1.contains(rect2) or Rect.intersects(rect1, rect2) or any other combination.

这篇关于Android的 - 如何知道如果一个视图叠加在RelativeLayout的另一种观点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 05:03