我创建了一个按钮,并希望在触发某些事件后将其移到屏幕底部。所以我做了一个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是否有其他可用方法。