我创建了一个按钮,并希望在触发某些事件后将其移到屏幕底部。所以我做了一个TranslateAnimation对象

    private TranslateAnimation setupAnimation(float yOffset) {
    TranslateAnimation animation = new TranslateAnimation(0, 0, 0, yOffset);
    animation.setDuration(1000);
    animation.setFillAfter(true);
    animation.setInterpolator(new AccelerateDecelerateInterpolator());
    return animation;
}


然后,将TranslateAnimation对象传递到要移动的视图的startAnimation()方法中。

很好,它可以实现我想在视觉上完成的功能,但是我注意到我无法单击它的可见位置,但是可以按一下按钮的位置,然后将执行onClick回调。

翻译后,我需要怎么做才能允许用户在新位置按下按钮?

最佳答案

TranslateAnimation只会移动屏幕上的像素,它不会更改Button的实际位置,只是看起来像是在移动,因此OnClick / OnTouchListener不会对其进行动画处理。

使用ObjectAnimator或ViewPropertyAnimator可以真正更改Button的属性。

这是使用ViewPropertyAnimator入门的示例:

yourButton.animate()
    .translationY(yOffset)
    .setInterpolator(new AccelerateDecelerateInterpolator())
    .setDuration(1000);


检查Docs是否有其他可用方法。

10-08 03:16