android动画问题

pet*_*awn 3 android

我想在6个球上玩比例(从0 - > 1)动画,每个球的持续时间是1000毫秒.

并且每个动画必须等待前一个200ms.

例如:

anim1.start - >延迟200ms - > anim2.start(当anim1正在播放时) - > ........

但我总是同时开始所有6球动画,我不知道为什么,可以

有人告诉我??

// show animation.
    public void showBallAnimation(View v) {

        LinearLayout ll = (LinearLayout) findViewById(R.id.ball_container);

        RelativeLayout rl;

        ScaleAnimation scaleAnim1 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
        scaleAnim1.setDuration(500);
        scaleAnim1.setStartOffset(0);
        scaleAnim1.setFillAfter(true);
        rl = (RelativeLayout) ll.getChildAt(0);
        rl.setVisibility(View.VISIBLE);
        rl.startAnimation(scaleAnim1);

        ScaleAnimation scaleAnim2 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
        scaleAnim2.setDuration(500);
        scaleAnim2.setStartOffset(200);
        scaleAnim2.setFillAfter(true);
        rl = (RelativeLayout) ll.getChildAt(1);
        rl.setVisibility(View.VISIBLE);
        rl.startAnimation(scaleAnim2);

        ScaleAnimation scaleAnim3 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
        scaleAnim3.setDuration(500);
        scaleAnim3.setStartOffset(400);
        scaleAnim3.setFillAfter(true);
        rl = (RelativeLayout) ll.getChildAt(2);
        rl.setVisibility(View.VISIBLE);
        rl.startAnimation(scaleAnim3);

        // Animation anim4 =
        // AnimationUtils.loadAnimation(getApplicationContext(),
        // R.anim.ball_scale4);
        ScaleAnimation scaleAnim4 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
        scaleAnim4.setDuration(500);
        scaleAnim4.setStartOffset(600);
        scaleAnim4.setFillAfter(true);
        rl = (RelativeLayout) ll.getChildAt(3);
        rl.setVisibility(View.VISIBLE);
        rl.startAnimation(scaleAnim4);

    }
Run Code Online (Sandbox Code Playgroud)

Mat*_*t M 6

你应该r1.startAnimation(scaleAnimX)改为r1.setAnimation(scaleAnimX)

调用startAnimation()将立即启动动画,忽略任何时间偏移或开始时间.

通话setAnimation()将考虑任何时间规格.