2010-07-26 5 views
0

코드에서 특정 지연 후 사각형을 표시 할 수 없습니다. 여기에 내가하고있는 것이있다캔버스의 Thread.sleep

DashPathEffect dashPath = new DashPathEffect (new float [] {1,0}, 1);

 paint.setPathEffect(dashPath); 
     paint.setStrokeWidth(300); 
     final int size =300; 

canvas.drawLine (0, size, 100, size, paint);

시도 canvas.drawLine (110, 크기, (200), 크기, 페인트) {

  Thread.sleep(4000, 0); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

;


모바일 화면에서이 두 개의 직사각형 간의 지연을 확인할 수 없습니다. 둘 다 동시에 나타납니다. 내가하려고하는 것은 직사각형을 그 사이에 약간의 지연을 가지고 하나씩 그려 보는 것입니다. 이 코드가 오히려하고있는 것은 4 초를 기다린 다음 두 사각형을 동시에 표시하는 것입니다. 고맙습니다.

답변

1

UI 스레드에서 절대로 절대로 안됩니다. 보시다시피, 전체 프로그램이 잠기고 잠자기가 완료 될 때까지 기다립니다.

대신이 경우 처리기를 사용하는 것이 좋습니다. 이를 수행하는 방법에 대한 전체 설명은 timed ui-updates을 참조하십시오.

+0

값 비싼 터치 이벤트의 발생 가능성이있는 특정 문제를 처리하는 것은 터치 모션 이벤트 (약 20 밀리 초 정도)에서 잠을자는 것이 Google의 조언입니다. 개발자 그룹의 관련 스레드 : http://groups.google.com/group/android-developers/browse_thread/thread/39eea4d7f6e6dfca/b50e9be8f47db505?q&pli=1 – Maximus

+0

정말로 알지 못하는 한 99.9 %의 시간입니다. UI 스레드에서 자고있는 것은 나쁜 생각입니다. –

+0

예 ... 동의 : :) – Maximus