因此,例如,我使用对象动画师将按钮的alpha更改为0,然后旋转屏幕,然后它又回到预动画状态,因为再次调用onCreate。我在想我应该实现类似动画监听器的东西,在动画结束时我应该改变按钮的属性,但我不知道该怎么做。例如,如果我有一个约束布局并且我将按钮向上移动了100个像素,那么我应该在动画侦听器中使用什么代码,以便在动画结束后保持更改。我读了一些关于在标签之后设置填充的事情,但我认为这是用于查看动画。
感谢您的帮助。
答案 0 :(得分:0)
对于您所描述的应用,您可以使用ValueAnimator
并在其上设置AnimatorUpdateListener
以记录每个动画帧后的状态。
要收听方向更改并保持动画状态,您应首先在您的清单的android:configChanges="orientation"
标记中加入<activity>
。这将确保您的活动不会在方向更改时重新创建,并且onCreate()
不会再次被调用。每当方向发生变化时,都会调用onConfigurationChanged()
,因此您应该覆盖它以保持动画状态。
因此,在您的onCreate()
中,您可以执行以下操作:
ValueAnimator valueAnimator = ValueAnimator.ofObject(new IntEvaluator(),
initialPosition, finalPosition);
valueAnimator.setDuration(duration);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// mCurrentPosition should be a member variable
mCurrentPosition = (int)animation.getAnimatedValue();
// Update the position of your button with currentPosition
}
}
valueAnimator.start();
并且您的onConfigurationChanged()
应如下所示:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.your_layout);
// Set the position of your button with mCurrentPosition
}
有关详细信息,请参阅https://developer.android.com/reference/android/animation/ValueAnimator.html和https://developer.android.com/guide/topics/resources/runtime-changes.html。