如何在Android中获取相对于另一个视图的视图位置?

时间:2013-04-11 12:51:21

标签: android android-imageview android-view

我正在制作Android应用程序,使用ImageView在屏幕上显示相机图像(经过一些操作后),我想允许在屏幕上移动其他ImageViews - 但仅限于父ImageView内部。 / p>

另外,我需要获取相对于父ImageView坐标的子视图的坐标。即 - 因此(0,0)不是整个屏幕,而是显示相机的ImageView。

这有可能吗?如果是这样 - 怎么样?

非常感谢帮助!感谢

1 个答案:

答案 0 :(得分:0)

如果你想通过拖动来移动视图,那么很多信息,例如Moving image with touch events

如果将minorView的顶部和左侧相对于majorView,那么使用一些简单的减法minorViewRelativeTop = minorViewTop - majorViewTop也很简单。使用View.getLocationInWindow()获取这些绝对位置。

N.B。 View.getLocationInWindow()通常不会在Activity.onCreate()内部发挥作用,所以最好在延迟一段时间后再调用它。对于测试,它可能像:

majorView.postDelayed(new Runnable() {
            @Override
            public void run() {
                int[] location = new int[2];
                majorView.getLocationInWindow(location);
                int majorViewLeft = location[0];
                int majorViewTop = location[1];
            }
        }, 1000);