我试图实现一个相当简单的目标。有一个螺旋桨的imageView,旋转的无限LinearInterpolator动画直到按下按钮。如何在用户按下按钮后将动画减慢到停止状态?
这是一个非常简单的动画代码:
<?xml version="1.0" encoding="UTF-8"?>
<rotate
android:interpolator="@anim/linear_interpolator"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="800" />
答案 0 :(得分:6)
开始动画:
int loops = 1000000;
int degreesPerSecond = 360;
view.animate().rotationBy(degreesPerSecond * loops).setDuration(loops * 1000)
.setInterpolator(new LinearInterpolator());
停止动画:
view.animate().rotationBy(degreesPerSecond/2).setDuration(1000)
.setInterpolator(new DecelerateInterpolator());
您需要使用这些值来获得它想要的效果。但这看起来还不错。
答案 1 :(得分:0)
创建另一个具有相同动画的XML文件,并将持续时间设置为更多,可能是1200.当您单击按钮时,您将View
(螺旋桨)设置为新的较慢动画。
public void onButtonClick(View v)
{
if(slow){
Animation fastRotate = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_fast);
propellerView.startAnimation(fastRotate)
}
else{
Animation slowRotate = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_slow);
propellerView.startAnimation(slowRotate)
}
}