我正试图在RelativeLayout中为其他视图的位置设置一个视图移动动画。
所以我的布局看起来像这样:
<RelativeLayout>
<View alignParentLeft>
<View centerHorizontal>
<View alignParentRight>
<AnimatedView>
</RelativeLayout>
我使用 ObjectAnimator 为此视图设置动画:
ObjectAnimator.ofFloat(animatedView, "x", animatedView.getX(), childView.getX());
但除了我试图制作动画之外的所有子视图,为 getX()或 getLeft()返回0。
我很感激任何帮助。
答案 0 :(得分:0)
这可能是因为当您尝试启动Animation
Views
时,您的Activity's
还没有维度(尚未绘制)。您是否尝试以onCreate
Fragment's
或onCreateView
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);