2013-03-12 2 views
0

단추를 누를 때 배경색을 변경하는 앱을 원합니다. 500ms 후 배경색을 2000ms 동안 검은 색으로 변경하고 싶습니다. 그런 다음 사용자가 종료 할 때까지 전체 프로세스를 다시 반복하십시오.안드로이드 코드 반복

다음 코드를 가지고 있지만 작동하지 않는 것으로 생각합니다.

private void set() { 
    rl.setBackgroundColor(Color.WHITE); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        rl.setBackgroundColor(Color.BLACK); 
        set(); // can I do that? 
       } 
      });    
     } 
    }, 500);  
} 

내가 올바른 방향으로 나를 가리킬 수 있습니까? 그래서 내가 원하는 :

  1. , 나는 다른 코드를 실행할 통과 X 시간 후 일부 코드
  2. 을 실행하고 사용자가 취소 될 때까지 시간의 X 금액에 대한
  3. 반복 과정을 그 상태를 유지해야한다.

답변

4

뭔가 내가 생각하는 작업을해야이

Handler handler = new Handler(); 
Runnable turnBlack = new Runnable(){ 

    @Override 
    public void run() { 
     myView.setBackgroundColor(Color.BLACK); 
     goWhite(); 
    }}; 

    Runnable turnWhite = new Runnable(){ 

     @Override 
     public void run() { 
      myView.setBackgroundColor(Color.White); 
      goBlack(); 
     }}; 

public void goBlack() { 
    handler.postDelayed(turnBlack, 500); 
} 

public void goWhite() { 
    handler.postDelayed(turnWhite, 2000); 
} 
+0

작은 수정으로이 코드는 잘 동작합니다. 감사. – rootpanthera

1

이 사용하는 애니메이션 드로어 블 AnimationDrawable 할 수있는 더 쉬운 방법이있다 :이 같은

AnimationDrawable drawable = new AnimationDrawable(); 
    ColorDrawable color1 = new ColorDrawable(Color.YELLOW); 
    ColorDrawable color2 = new ColorDrawable(Color.BLACK); 

    // First color yellow for 500 ms 
    drawable.addFrame(color1, 500); 

    // Second color black for 2000 ms 
    drawable.addFrame(color2, 2000); 

    // Set if animation should loop. In this case yes it will 
    drawable.setOneShot(false); 

    Button btn = (Button)findViewById(R.id.button1); 
    btn.setBackground(drawable); 
    findViewById(R.id.buttonLan).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // Start animation 
      ((AnimationDrawable)v.getBackground()).start(); 
     } 
    }); 
+0

코드는 괜찮지 만, 내가 할 수있는 다른 일이 전환 코드에서는 전환 색상 만 작동하지 않습니다. – rootpanthera