2013-05-16 65 views
0

我有一個班,應該顯示一個白色的屏幕,並通過很多顏色淡入淡出。安卓版面顏色變化以編程方式

public class SecondActivity extends Activity implements Runnable { 

protected PowerManager.WakeLock mWakeLock; 

boolean isrunning = true; 
int red = 0, blue = 0, green = 0; 

@Override 
public void onCreate(Bundle savedInstanceState) .... etc 

TextView btnstart = (TextView) findViewById(R.id.btnstart); 
    btnstart.setTypeface(font1); 
    btnstart.setOnClickListener(new OnClickListener() { 
@Override 
     public void onClick(View v) { 

      MediaPlayer mediaPlayer = MediaPlayer.create(
        getApplicationContext(), R.raw.button); 
      try { 
       mediaPlayer.start(); 
       mediaPlayer.setLooping(false); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      { 

       run(); 
      } 
      ; 
     } 
    }); 

然後我可以運行

@Override 
public void run() { 
    while (isrunning) { 


     try { 

      red = red + 1; 
      blue = blue + 2; 
      green = green + 3; 
      if (green > 240){ 

       red = 0; 
       blue = 0; 
       green = 0; 
      } 

      LinearLayout colorchanger = (LinearLayout) findViewById(R.id.colorchange); 
      colorchanger.setBackgroundColor(Color.argb(255, red, blue, 
        green)); 
      Thread.sleep(100); 
       } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 



} 

我有以下問題,當我按下按鈕的應用程序強制關閉。如果我將「while(isrunning)」取出並用if(正在運行)取代它,它可以正常工作,但我希望在單擊按鈕後顏色保持不變。

我敢肯定I'm做錯了什麼....

也許有一個佈局做是不是最好的方式,我有一個矩形(尺寸屏幕)辦呢?並在onDraw中更改顏色?

回答

2

處理程序非常適合於此。

// Initialize your handler: 
Handler h = new Handler(); 

// Start fading: 
h.postDelayed(color_fade, 0); 


// Set up your runnable:  
private Runnable color_fade = new Runnable(){ 
    public void run(){ 
     /* 
     * Do your color and layout changes here. 
     */ 
     h.postDelayed(this, 100); // loop with 100 ms delay. 
    } 
}; 
+0

工作就像魅力! 謝謝! – Rodrigofantino