2011-02-17 154 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图像与背景颜色交替。