Android - 为两个独立的动画更有效地编写我的递归方法的建议

时间:2014-02-11 07:44:51

标签: java android animation recursion

我是Java和Android编程的新手,并通过Coursera学习这门课程。我的应用程序有两个上下动画的图像。现在,我已经得到了两个图像反复动画在一起。我得到了帮助并编写了一个递归方法,让它们重复动画,直到更改了pleaseStop布尔标志。

我希望他们独立行动。 如何编写两个stepRecursive方法,如何只编写一个?

我在这里设置并运行动画。

 mHandler = new Handler(); // .os package class when importing
        mLeftfoot = findViewById(R.id.leftfoot);
        mRightfoot = findViewById(R.id.rightfoot);  
        mFootAnim = AnimationUtils.loadAnimation(this, R.anim.foot); //this looks to the foot.xml file for the animations
        stepRecursive();

这是我的递归方法。注意mInterval。我想让mLeftfoot和mRightfoot在他们自己的mInterval上运行。

private void stepRecursive() {
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mLeftfoot.startAnimation(mFootAnim);
                mRightfoot.startAnimation(mFootAnim);
                if (!pleaseStop)
                    stepRecursive();
            }
        }, mInterval);

1 个答案:

答案 0 :(得分:1)

通过boolean方法传递一个stepRecursive()变量,并根据View值确定哪个boolean必须设置动画...

private void stepRecursive(final boolean isLeftFoot,final int mInterval) {
    mHandler.postDelayed(new Runnable() {

        @Override
        public void run() {
            if (isLeftFoot) {
                mLeftfoot.startAnimation(mFootAnim);
            } else {
                mRightfoot.startAnimation(mFootAnim);
            }
            if (!pleaseStop)
                stepRecursive(isLeftFoot,mInterval);
        }
    }, mInterval);
}

并且在调用此方法时,根据boolean值传递适当的间隔。

stepRecursive(true,intervalForLeft);
stepRecursive(false,intervalForRight);