我想做一层反弹动画。
我已经完成了从右到中的那一层,现在我想稍微向后移动然后再回到中心。这会产生反弹效果。
我以为我可以用这样的翻译来做到这一点:
<translate
android:duration="900"
android:fromXDelta="100%p"
android:toXDelta="0%p" />
<translate
android:duration="900"
android:fromXDelta="0%p"
android:toXDelta="100%p" />
<translate
android:duration="900"
android:fromXDelta="70%p"
android:toXDelta="0%p" />
这段代码不起作用,我唯一可以实现的是Layer从左到中,然后动画停止。
我无法使用此代码:因为它无法达到我想要的效果
setInterpolator(AnimationUtils.loadInterpolator(this,
android.R.anim.bounce_interpolator));
任何帮助都将不胜感激。
答案 0 :(得分:13)
您可以使用BounceInterpolator来发挥此效果。 docs包含如何在XML中使用它的非常好的描述。只需要一个像这样的动画xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/bounce_interpolator">
<!-- Use your working translate animation here-->
<translate
android:duration="900"
android:fromXDelta="100%p"
android:toXDelta="0%p" />
</set>
答案 1 :(得分:4)
使用此xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/bounce_interpolator">
<scale
android:duration="600"
android:fromXScale="1.0"
android:fromYScale="0.0"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
这将显示带有比例的跳出效果,与翻译不同(在某些情况下更适合),以便更多检查THIS ..
答案 2 :(得分:0)
在按钮或图像上单击添加代码
final Animation myAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.bounce);
// Use bounce interpolator with amplitude 0.1 and frequency 15
MyBounceInterpolator interpolator = new MyBounceInterpolator(0.1, 15);
myAnim.setInterpolator(interpolator);
imgVoiceSearch.startAnimation(myAnim);
添加此类
public class MyBounceInterpolator implements android.view.animation.Interpolator {
private double mAmplitude = 1;
private double mFrequency = 10;
public MyBounceInterpolator(double amplitude, double frequency) {
mAmplitude = amplitude;
mFrequency = frequency;
}
public float getInterpolation(float time) {
return (float) (-1 * Math.pow(Math.E, -time / mAmplitude) *
Math.cos(mFrequency * time) + 1);
}
}