翻译视图后,按下按钮以触发按钮按下的区域不会移动。你如何在视野中移动这个区域?

时间:2016-08-21 13:26:25

标签: android android-animation

我创建了一个按钮,希望在触发某个事件后它移动到屏幕底部。所以我制作了一个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回调。

我需要做什么,翻译后,允许用户按下新位置的按钮?

1 个答案:

答案 0 :(得分:3)

TranslateAnimation仅移动屏幕上的像素,它不会改变Button的实际位置,它看起来就像是在移动,因此OnClick / OnTouchListener不会使用它进行动画处理。

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

以下是使用ViewPropertyAnimator开始的示例:

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

检查Docs以了解其他可用方法。