如何获取RelativeLayout中的视图坐标

时间:2015-10-26 12:24:04

标签: android android-layout android-animation

我正试图在RelativeLayout中为其他视图的位置设置一个视图移动动画。

所以我的布局看起来像这样:

<RelativeLayout>
     <View alignParentLeft>
     <View centerHorizontal>
     <View alignParentRight>
     <AnimatedView>
</RelativeLayout>

我使用 ObjectAnimator 为此视图设置动画:

ObjectAnimator.ofFloat(animatedView, "x", animatedView.getX(), childView.getX());

但除了我试图制作动画之外的所有子视图,为 getX() getLeft()返回0。

我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

这可能是因为当您尝试启动Animation Views时,您的Activity's还没有维度(尚未绘制)。您是否尝试以onCreate Fragment'sonCreateView Views之类的方式开始制作动画?

要确保您的yourRelativeLayout.getViewTreeObserver() .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int width = yourRelativeLayout.getWidth(); int height = yourRelativeLayout.getHeight(); if (width > 0 && height > 0) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { yourRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { yourRelativeLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); } //START YOUR ANIMATION HERE } } }); 已准备好设置动画,您可以使用以下代码:

clearInterval(Otimer);