如果移动,Android会获取视图坐标

时间:2014-01-23 14:15:25

标签: android android-layout android-animation android-ui

我在RelativeLayout的中心对齐ImageView,我希望它转换为alignedParentTop。如何设置deltaY来设置TranslateAnimation?

编辑: 自从我被要求展示我已经完成的工作以来,这里是我正在使用的代码:

  private Animation getTranslateAnimation(final View v) {
    final float yDelta = getScreenHeight() - (2 * v.getHeight());

    TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, yDelta);

    translateAnimation.setDuration(Initial.DURATION_MILLIS);
    translateAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
    return translateAnimation;
}

这种方法的问题是我在这个动画之后显示了EditText,它应该位于ImageView的正下方。我已设置AnimationListener使其在onAnimationEnd上可见,但它将其定位在原始位置下方,而不是新位置。是否有一些简单的方法或我应该切换到PropertyAnimation框架?

1 个答案:

答案 0 :(得分:0)

如果您查看Animation Resources Documentation,您会看到您可以定义相对于父级或自我的值。所以你可以有一个像这样的xml资源:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromXDelta="0%"
        android:toXDelta="0%"
        android:fromYDelta="0%"
        android:toYDelta="0%p" />
</set>

这将产生这样的效果:视图从其原始位置转换为与父顶部对齐(因为android:toYDelta="0%p" - “p”表示它相对于父级)。

如果你不需要以编程方式真正做到这一点,那么这应该可行。