Android实现小球一直运动

本文介绍了一种使用ObjectAnimator实现无限循环动画的方法。通过在动画序列的末尾设置事件监听器,当最后一个动画结束时,重新启动首个动画,形成连续循环效果。文章提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private ObjectAnimator objectAnimator1;
private ObjectAnimator objectAnimator2;
private ObjectAnimator objectAnimator3;private ObjectAnimator objectAnimator4;
之前一直想着用死循环让动画一直运动,一点开始就崩溃;

只要是在最后一个而动画执行完之后,在事件监听的en方法里,在调用第一个动画的start();即可实现动画一直运动;

没有实现点击结束按键,结束动画


 @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.start:
                //    ani();
                sports();
                doTranslateAnimation(pop_iv);
                break;
            case R.id.stop:
                //   valueAnimator.end();
//                objectAnimator1.end();
//                objectAnimator2.end();
//                objectAnimator3.end();
//                objectAnimator4.end();
                break;
        }

public void sports() {

objectAnimator1 = ObjectAnimator.ofFloat(pop_iv, "translationY", 0f, 500f);
objectAnimator1.setDuration(500);
objectAnimator1.addListener(new Animator.AnimatorListener() {

    private ObjectAnimator objectAnimator2;

    @Override
    public void onAnimationStart(Animator animation) {

    }

    @Override
    public void onAnimationEnd(Animator animation) {
        objectAnimator2 = ObjectAnimator.ofFloat(pop_iv, "translationX", 0f, 300f);
        objectAnimator2.setDuration(500);
        objectAnimator2.addListener(new Animator.AnimatorListener() {



            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                objectAnimator3 = ObjectAnimator.ofFloat(pop_iv, "translationY", 500f, 0f);
                objectAnimator3.setDuration(500);
                objectAnimator3.addListener(new Animator.AnimatorListener() {



                    @Override
                    public void onAnimationStart(Animator animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animator animation) {
                        objectAnimator4 = ObjectAnimator.ofFloat(pop_iv, "translationX", 300f, 0f);
                        objectAnimator4.setDuration(500);
                        objectAnimator4.addListener(new Animator.AnimatorListener() {
                            @Override
                            public void onAnimationStart(Animator animation) {

                            }

                            @Override
                            public void onAnimationEnd(Animator animation) {
                                objectAnimator1.start();
                            }

                            @Override
                            public void onAnimationCancel(Animator animation) {
                                objectAnimator4.end();
                            }

                            @Override
                            public void onAnimationRepeat(Animator animation) {

                            }
                        });
                        objectAnimator4.start();
                    }

                    @Override
                    public void onAnimationCancel(Animator animation) {
                        objectAnimator3.end();
                    }

                    @Override
                    public void onAnimationRepeat(Animator animation) {

                    }
                });
                objectAnimator3.start();
            }

            @Override
            public void onAnimationCancel(Animator animation) {
                objectAnimator2.end();
            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });
        objectAnimator2.start();
    }

    @Override
    public void onAnimationCancel(Animator animation) {
        objectAnimator1.end();

    }

    @Override
    public void onAnimationRepeat(Animator animation) {

    }
});
objectAnimator1.start();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值