2012-02-06 3 views
1

단추의 배경을 빨간색으로 변경 한 다음 다른 활동을 호출하기 전에 1 초 동안 기다리고 싶습니다.단추의 배경 변경 및 잠시

btn1.setBackgroundColor(Color.RED); 
SystemClock.sleep(1000); 
startActivity(intent); 

문제는 응용 프로그램이 1 초 동안 휴면하고 활동을 시작하지만, 버튼의 색상이 변경되지 않는다는 것입니다 :

이 내 코드입니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

2

을 사용하는 경우 SystemClock.sleep (1000);

루퍼를 처리하는 주 스레드가 절전 모드가됩니다.

그리고 반환 할 때 먼저 색상을 변경 한 다음 작업을 시작합니다. 지체없이 하나씩 수행되므로 변경된 색상을 볼 수 없습니다. u는 또한 잠하여 답변

0

아니요 설정 색상은 있지만 볼 수는 없습니다. 나는 당신이 볼 수없는 이유를 설명 할 것입니다.

색상이 1 초 후에 설정됩니다. 그러나 1 초가 지나면 새로운 활동을 시작하므로 색상 변경을 볼 수 없습니다. 실제로 수면은 주어진 시간 동안 실을 일시 중지했습니다.

이 효과를 확인하려면 다음 코드를 시도하십시오.

 btn1.setOnClickListener(new View.OnClickListener() {    
      public void onClick(View v) { 
       v.setBackgroundColor(Color.RED); 
       SystemClock.sleep(5000); // color will set after 5 seconds 
      } 
     }); 

이 문제를 극복하는 방법을 모르겠습니다. 나는 이것을 알리기 위해 대답했다.

+0

감사를 메인 루퍼 스레드를 차단하지 필요 지연 후 활동을 실행하는 U 도움이 될 것입니다

사용 처리기 postDelayed. 버튼의 색상이 빨간색 일 때 중단되는 while 루프를 시험해보고 싶었지만이를 확인하는 방법을 모르겠습니다. ColorDrawable 클래스의 getColor() 메서드를 사용하려고 시도했지만 eclipse가이 메서드가 존재하지 않는다고 말합니다. 버튼의 배경색을 확인하는 또 다른 방법을 알고 계십니까? – user1186043

0

sleep 명령이 UI를 고정 시키므로 변경 사항이 표시되지 않도록 잠자기중인 동일한 스레드에 색상을 설정하고 있습니다.

다른 활동을 시작하기 전에 색상을 설정하고 5 초 정도 기다리는 새 스레드를 생성해야합니다.