我在RelativeLayout中有3个按钮,我已经为每个按钮实现了下降动画(弹跳),但所有按钮都在同时掉落。我想要的是在开始这个活动时,每个按钮应该从一个接一个地从顶部落下。我怎样才能达到这个效果。?
我的java代码
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.animation.PropertyValuesHolder;
import android.view.ViewPropertyAnimator;
import android.view.animation.BounceInterpolator;
import android.widget.Button;
public class MainActivity extends Activity {
Button ib,b2,b3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ib = (Button) findViewById(R.id.btnAnim);
b2 = (Button) findViewById(R.id.btnAnim2);
b3 = (Button) findViewById(R.id.btnAnim3);
aniMate(ib);
aniMate(b2);
aniMate(b3);
}
public void aniMate(Button b){
ObjectAnimator animY = ObjectAnimator.ofFloat(b, "translationY", -1000f, 0f);
animY.setDuration(1000);
animY.setInterpolator(new BounceInterpolator());
animY.setRepeatCount(0);
animY.start();
}
}
我的XML代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dip"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/btnAnim"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/btnAnim2"
android:layout_above="@+id/btnAnim"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/btnAnim3"
android:layout_above="@+id/btnAnim2"
android:layout_centerHorizontal="true" />
</RelativeLayout>
答案 0 :(得分:1)
将AnimationListener添加到动画中。当第一个完成时,你可以开始下一个。
animation.setAnimationListener(new Animation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation)
{
//ignore
}
@Override
public void onAnimationEnd(Animation animation)
{
//start your next animation here
}
@Override
public void onAnimationRepeat(Animation animation)
{
//ignore
}
});