알고리즘을 진행하는 방식을 시각적으로 표현한 고전적인 flood fill 알고리즘을 실행하고 싶습니다. 즉 검정색으로 바뀌는 일련의 버튼은 알고리즘의 순서를 나타냅니다. 재귀 알고리즘의 반복 버전을 생성하여 속임수를 쓰고 싶지는 않습니다. oorly 탭 의사 앞서 P : 알고리즘이 버튼은 알고리즘의 끝에서 한 번에 색상을 변경 실행 있지만안드로이드 업데이트 ui에서 재귀 알고리즘
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);
}
하지만.
Android timer updating a textview (UI)과 같은 UI가 아닌 스레드가 원인 일 수 있습니다.
그러므로 I)이 (즉handler.post (하는 Runnable algoithm의 PAUSE 라인에서 실행 가능한 구현].
실행 가능하다
private Runnable runnable = new Runnable() {
public void run() {
Log.d("RUNableworking","RUNableworking");
handler.postDelayed(this, 1000);
}
};
플러드 필 스레드 = 무에서 실행 러닝 onCreate에서 로그를 볼 수 있습니다.
실행 가능한 폴링에 너무 열중하지 않으므로 더 나은 방법이 있어야합니다.
TBH, 스레드가 문제를 복잡하게 만듭니다. 하지만 바닐라 함수를 사용하면 (위와 같이) 실행이 끝날 때까지 UI를 업데이트하지 않는 것처럼 보입니다. 명시 적으로 새 스레드를 만들지는 않지만 문제가 발생한다고 가정합니다. – stevenpcurtis
아니요, onDraw()를 사용하지 않습니다. 그냥 배경색을 설정 switchbutt.setBackgroundColor (Color.BLACK); – stevenpcurtis
오! 나는 잘못 읽었다. 나는 당신이 픽셀 플로팅을 사용하고 있다고 생각했지만 버튼은 사용하지 않았습니다. 단추를 무효화하여 업데이트되도록해야하는 경우가 있습니다. Android가 BG 변경 요청을 대기 행렬에 넣고 한 번에 하나씩 전달하는 대신 이 단계를 위해 각 패스마다 일종의 타이머 메커니즘을 수행하거나 반복 플리퍼 버튼을 원한다. –