Android : 如何动态改变动画速度?
Android : How to change animation speed dynamically?
我有一个过渡动画xml
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="400"/>
</set>
我想在多个项目上应用此动画,但持续时间不同。我正在尝试通过调用 setDuration 然后调用 startAnimation 来动态更改持续时间。
mSlideLeft.setDuration(400);
view1.startAnimation(mSlideLeft);
mSlideLeft.setDuration(500);
view2.startAnimation(mSlideLeft);
mSlideLeft.setDuration(600);
view3.startAnimation(mSlideLeft);
但所有观看动画的持续时间相同。如何动态更改动画持续时间?
您对所有三个 Views
使用相同的 Animation
对象。所以你在同一个对象上调用 setDuration
3 次。
如果您想使用三个不同的持续时间,您需要创建三个单独的 Animation
对象。
Animation firstSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
firstSlideLeft.setDuration(400);
view1.startAnimation(firstSlideLeft);
Animation secondSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
secondSlideLeft.setDuration(500);
view2.startAnimation(secondSlideLeft);
Animation thirdSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
thirdSlideLeft.setDuration(600);
view3.startAnimation(thirdSlideLeft);
我有一个过渡动画xml
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="400"/>
</set>
我想在多个项目上应用此动画,但持续时间不同。我正在尝试通过调用 setDuration 然后调用 startAnimation 来动态更改持续时间。
mSlideLeft.setDuration(400);
view1.startAnimation(mSlideLeft);
mSlideLeft.setDuration(500);
view2.startAnimation(mSlideLeft);
mSlideLeft.setDuration(600);
view3.startAnimation(mSlideLeft);
但所有观看动画的持续时间相同。如何动态更改动画持续时间?
您对所有三个 Views
使用相同的 Animation
对象。所以你在同一个对象上调用 setDuration
3 次。
如果您想使用三个不同的持续时间,您需要创建三个单独的 Animation
对象。
Animation firstSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
firstSlideLeft.setDuration(400);
view1.startAnimation(firstSlideLeft);
Animation secondSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
secondSlideLeft.setDuration(500);
view2.startAnimation(secondSlideLeft);
Animation thirdSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
thirdSlideLeft.setDuration(600);
view3.startAnimation(thirdSlideLeft);