Android 给一个View设置一个从当前位置往下缓慢向下移动触底弹跳两下的动画
时间: 2024-03-05 09:50:19 浏览: 19
可以使用Android中的动画来实现这个效果。以下是一种实现方式:
1. 首先,创建一个TranslateAnimation对象,设置动画的起始位置和结束位置。起始位置为当前View的位置,结束位置为当前View位置下移一个固定距离(比如100px)。
2. 设置动画的持续时间、插值器和重复次数。持续时间可以根据需要自己设定,插值器可以使用AccelerateInterpolator,重复次数设置为1。
3. 设置动画结束后的监听器,在动画结束后执行下一步操作。
4. 在监听器中创建一个新的TranslateAnimation对象,设置动画的起始位置和结束位置。起始位置为当前View的位置下移100px,结束位置为当前View位置下移200px。设置动画的持续时间、插值器和重复次数,与第一次动画相同。
5. 将第二次动画应用到View上,并启动动画。
6. 最后,在第二次动画结束后执行相关操作。
下面是代码示例:
```java
TranslateAnimation anim1 = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 1f);
anim1.setDuration(1000);
anim1.setInterpolator(new AccelerateInterpolator());
anim1.setRepeatCount(1);
anim1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
TranslateAnimation anim2 = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 1f,
Animation.RELATIVE_TO_SELF, 2f);
anim2.setDuration(1000);
anim2.setInterpolator(new AccelerateInterpolator());
anim2.setRepeatCount(1);
anim2.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// 动画结束后执行相关操作
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(anim2);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(anim1);
```
在这个示例中,View是指需要执行动画的视图。你可以将它替换为你需要执行动画的视图。同时,你可以根据需要来调整动画的参数,比如起始位置、结束位置、持续时间、插值器等。