2011-10-09 2 views
-1

매번 10  밀리 초 단위로 증가하는 수면 기능이있는 예쁜 표준 루프를 사용하고 있지만 중간에 텍스트 색상 변경을 추가하고 싶습니다. 그러나 오류가 발생합니다. . 다음 코드에 문제가 있습니까?스플래시 화면 - 루프 중 위젯 속성 변경하기

public class splashActivity extends Activity { 
    TextView tv; 
    LinearLayout ll; 
    protected boolean _active=true; 
    protected int _splashTime=5000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     tv=(TextView)findViewById(R.id.textViewSplash); 

     ll=(LinearLayout)findViewById(R.id.linearLayoutSplash); 

     Thread splashThread = new Thread(){ 
      @Override 
      public void run() { 
       try{ 
        int waited=0; 
        while (_active && waited < _splashTime){ 
         sleep(100); 
         if(_active){ 
          waited += 100; 
         } 
         if(waited >=2500){ 
         tv.setTextColor(Color.GREEN); 
         } 
        } 
       } 
       catch(InterruptedException e){ 
       } 
       finally{ 
        finish(); 
        startActivity(new Intent("com.kleaverdevelopment.splashTest.SplashTest.mainActivity")); //package.package.package.appName.nextActivity 
        stop(); 
       } 
      } 
     }; 
     splashThread.start(); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      _active = false; 
     } 
     return true; 
    } 
} 

답변

1

UI 요소 (사용자의 경우 TextView)를 백그라운드 스레드에서 업데이트하지 마십시오. UI and threading on Android에 대한 기사를 참조하십시오.

+0

그 사실을 몰랐습니다. 덕분에 피터! – kleaver