在android中一个接一个地为不同的对象启动相同的动画

时间:2015-07-07 14:10:49

标签: android

我想为某些按钮启动相同的动画,但我不想在同一时间开始我想要一个接一个地开始!我用过这个,但它不起作用!我怎么能解决这个问题? 请帮帮我

pivate void animation(){
    Animation fadein= AnimationUtils.loadAnimation(this,R.anim.fadein_btn);
    try{
        btn_seasons.startAnimation(fadein);
        Thread.sleep(250);
    }catch (Exception e){
        return;
    }
    try{
        btn_main_exit.startAnimation(fadein);
        Thread.sleep(250);
    }catch (Exception e){
        return;
    }
    try{
        btn_main_about.startAnimation(fadein);
        Thread.sleep(250);
    }catch (Exception e){
        return;
    }
    try{
        btn_main_send.startAnimation(fadein);
        Thread.sleep(250);
    }catch (Exception e){
        return;
    }
}

*我在onCreate方法上调用我的动画方法!

2 个答案:

答案 0 :(得分:0)

让asumme你有这样的布局:

<LinearLayout
    android:id="@+id/linear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >

    <Button
        android:id="@+id/btn1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btn2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btn3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btn4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btn5"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btn6"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>

这将使用缩放动画一个接一个地延迟90ms的按钮动画,启动延迟为800ms。如果您只想为其中一些按钮设置动画,则需要稍微修改一下代码以满足您自己的需要。这只是一个给你一些想法的例子。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


   final LinearLayout linear = (LinearLayout)findViewById(R.id.linear);

    int delay;
    for (int i = 0; i < linear.getChildCount(); i++) {
        delay=(i*90)+800;
        View v = linear.getChildAt(i);
        if (v instanceof Button) {
            linear.getChildAt(i).setScaleY(0f);
            linear.getChildAt(i).setScaleX(0f);
            linear.getChildAt(i).animate()
                    .setInterpolator(new DecelerateInterpolator(1.6f))
                    .setStartDelay(delay)
                    .setDuration(400)
                    .scaleY(1f)
                    .scaleX(1f)
                    .setListener(new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationStart(Animator animation) {

                        }

                        @Override
                        public void onAnimationEnd(Animator animation) {

                        }
                    })
                    .start();
        }

    }

}

答案 1 :(得分:0)

您可以使用AnimatorSet逐个启动每个动画:Choreographing Multiple Animations with AnimatorSet