Android Runnable只能工作一次

时间:2014-10-24 06:14:28

标签: android multithreading animation runnable android-handler

我正在尝试旋转图片。我写了我的功能来检查图像中的旋转速度。在逻辑中一切正常但我使用runnable并且setrotate方法只运行一次。

这是我的来源:

public void rotateimages() {
    myHandler = new Handler();
    runnable = new Runnable() {

        @Override
        public void run() {

            double k = 30;

            double speed = Math.PI / k;
            for (alpa = 0; alpa < (Math.PI * 6 + res * 2 * Math.PI / 5); alpa += speed) {
                latcirclelayout.setRotation(latcirclelayout.getRotation()
                        - ((float) alpa));

                k = Math.min(k + 0.2, 240);
                speed = Math.PI / k;
            }

        }
    };
    myHandler.postDelayed(runnable, 100);
}

我调试了它,每次更改alpha值但旋转只运行一次。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的循环只是一个紧凑的循环 - 你一次性执行所有的迭代,基本上,多次调用setRotation。我强烈怀疑所有拨打setRotation 的电话都是 ......但你除了最后一个电话之外什么都没看到。如果您想将此代码用于动画,则需要重复执行代码 - 但每次迭代只需调用setRotation一次。

你可以通过在循环的每次迭代中添加一个日志条目来检查 - 我确定你会发现它会非常快速地执行所有的迭代。

(我怀疑Android中可能还有其他内容可以使动画比这更简单,但我不能随便了解。animation tutorial可能对你很有帮助。)