【问题标题】:Android Runnable working only onceAndroid Runnable 只能运行一次
【发布时间】:2014-10-24 06:14:28
【问题描述】:

我正在尝试旋转我的图像。我编写了函数来检查图像中的旋转速度。在逻辑上一切正常,但我使用的是可运行的,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 值,但旋转只工作了一次。 我做错了什么?

【问题讨论】:

    标签: android multithreading animation runnable android-handler


    【解决方案1】:

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

    您可以通过在循环的每次迭代中添加一个日志条目来检查这一点 - 我相信您会看到它会非常快速地连续执行所有迭代。

    (我怀疑 Android 中可能还有其他东西可以让动画变得更简单,但我不知道。animation tutorial 可能会对你有所帮助。)

    【讨论】:

    • 我登录了 alpa 并在 for 循环中更改了 alpa。 complitly,我不明白你。你能显示(写)源代码吗? @乔恩斯基特
    • @viviano:不,现在不行。我的回答你有什么不明白的地方?
    • 我必须按时编写 setrotate。这意味着在 for 循环中写入外部 @Jon Skeet
    • @viviano:正如我所说,您应该阅读动画教程 - 但如果这没有帮助,您将需要某种计时器,在其中保持调用之间的当前状态。我肯定如果你在 Android 上研究动画,你会发现很多例子。
    • 是的,我搜索过它,但我非常感兴趣,哪里出了问题。请重写我的源代码并告诉我你的解决方案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多