首页 > 解决方案 > 如何将视图从 Y 位置移动到另一个 Y

问题描述

我有一个按钮,我想制作一个向下的动画。我做到了,但功能保留在前一个位置(就像按钮移动但如果我点击它,它不起作用,但如果我点击它的前一个位置它会起作用)

Animation logbtn = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.logbtnanim); button.startAnimation(logbtn);

动画代码是这样的。
PS Parent 是约束布局。

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100"
        android:duration="1000"/>
</set>

标签: javaandroidanimation

解决方案


首先,如果您只有一个动画,则不需要 AnimatorSet 标签。如果您想一起播放多个动画,则使用此选项。

其次,您使用的是不会为 Buttons 属性设置动画的TranslateAnimation,它只会移动屏幕上的像素,因此在动画之后,Android 仍然认为视图位于旧位置,这就是它仍然可以点击的原因。

我建议使用ViewPropertyAnimator在 Java 代码中执行此操作,例如:

button.animate().translationY(...f).duration(1000);

或者更灵活一点的ObjectAnimator ,因为您也可以在 xml 中执行此操作。


推荐阅读