2011-02-17 122 views
2

這個問題很簡單,但我無法找到一個好的解決方案。我在我的活動中有一個LinearLayout。根據用戶的操作,我需要使我的Layout的背景閃爍3次。這意味着它將背景顏色從透明改變爲紅色並向後改變3次。我給大家舉一個例子:動畫LinearLayout背景在Android中閃爍

  1. 用戶收到的問題和2個按鈕的答案
  2. 用戶按下錯誤的答案。包含該按鈕的佈局會改變其背景(透明 - 紅色,透明 - 紅色,透明 - 紅色 - 透明)三次。

我怎樣才能使這個在Android的?謝謝。

回答

3

@vidstige:我想你的建議,但背景是改變不流利,有時工作有時只有一半有時事與願違

@Tim:您的解決方案看起來非常好,但是我遇到了一些問題,使得它可以正常工作,而且我並不擅長放棄Java。

,工程解決方案是兩個答案相結合的原則。我不確定它是否是最好的,但在我的情況下效果很好

 Handler blinkHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
       switch (msg.what) { 
       case 0: 
        lay1.setBackgroundColor(Color.RED); 
         break; 
       case 1: 
        lay1.setBackgroundColor(Color.TRANSPARENT); 
        break; 

       } 
       super.handleMessage(msg); 
     } 
    }; 


    for (int i=0; i<6; i++) 
    { 
     Message msg = new Message(); 
     if(i % 2 == 0){ 
      msg.what = 0; 
     } 
     else{ 
      msg.what=1; 
     } 

     blinkHandler.sendMessageDelayed(msg, i*300); 
    } 

謝謝大家爲你的時間。

1

使用ScheduledThreadPoolExecutor安排一個動作,使用View.setBackgroundColor(int color)將背景顏色更改爲紅色/透明。

使用schedule(Runnable command, long delay, TimeUnit unit)方法,你可以安排一次所有的顏色變化,他們稍後會以正確的順序執行。

3

你可以使用一個處理程序與方法postDelayed。這將是這個樣子:

Handler h = new Handler(); 
    int count = 0; 
    Runnable r=new Runnable() 
    { 
     public void run() 
     { 
      if(count < 6){ 
       if(count % 2 == 0){ 
        count++; 
        layout.setBackground(RED); 
        h.postDelayed(r,500); 
       }else{ 
        count++; 
        layout.setBackground(TRANSPARENT); 
        h.postDelayed(r,500); 
       } 
      } 

     } 

    }; 
    h.post(r); 
0

爲了使顏色眨眼我記得有我們使用C++圖形庫設置,在大學生活的特定位。我也試圖眨眼背景,但我不想爲此目的奉獻一條線索。

如果沒有備用的一切,我會盡力把.gif圖像與背景顏色交替。