安卓动画问题

3
我想在6个球上播放从0到1的缩放动画,每个球的持续时间为1000毫秒。每个动画都必须等待前一个动画200毫秒。
例如:
anim1.start -> 延迟200毫秒 -> 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);

    }

只是猜测 - 你设置了开始时间吗?http://developer.android.com/reference/android/view/animation/Animation.html#setStartTime(long) - 链接不太好用,请搜索“setStartTime”。另外,“作为startAnimation()的替代,您可以使用Animation.setStartTime()定义动画的起始时间,然后使用View.setAnimation()将动画分配给视图。”- http://developer.android.com/guide/topics/graphics/view-animation.html - Aaron Newton
1个回答

6

您应该将r1.startAnimation(scaleAnimX)修改为r1.setAnimation(scaleAnimX)

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

调用setAnimation()会考虑任何时间规格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接