gpt4 book ai didi

Android从递归算法更新ui

转载 作者:行者123 更新时间:2023-11-30 03:56:39 24 4
gpt4 key购买 nike

我想运行一个经典的洪水填充算法,该算法具有算法进展的可视化表示;即一系列变黑的按钮以显示算法的顺序。我不想通过生成递归算法的迭代版本来作弊。 P前面带有标签的伪代码:

public void floodFill(int x, int y, String targetColor,String replacementColor) {
if *out of bounds* return
else
if button = target then return
else
Switchbuttontoblack(button);
PAUSE;
floodFill(x - 1, y, targetColor, replacementColor);
floodFill(x + 1, y, targetColor, replacementColor);
floodFill(x, y - 1, targetColor, replacementColor);
floodFill(x, y + 1, targetColor, replacementColor);
}

但是,虽然算法执行了,但是按钮只是在算法结束时一次性改变颜色。

这可能是由于非 UI 线程,如 Android timer updating a textview (UI) .

因此我在算法的暂停行实现了一个可运行的(即
handler.post(可运行);

哪里可以运行

private Runnable runnable = new Runnable() {
public void run() {

Log.d("RUNableworking","RUNableworking");
handler.postDelayed(this, 1000);

}
};

从 Floodfill 线程运行 = 无。从 onCreate 运行,我看到日志很好。

我不太热衷于轮询可运行的;一定有更好的方法吗?

最佳答案

Activity 中有一个名为 runOnUiThread() 的命令,非常方便。唯一的问题是运行的 UI 是排队的。您还可以使用 Handler 对象将 UI 更新调用发送到 UI 线程。

但是,如果你要一步一步来,你真的需要使用另一个线程吗?

更新:您是否在 onDraw() 中进行了洪水填充?如果是这样,就不会一步步走

关于Android从递归算法更新ui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13233444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com