动画LinearLayout背景在Android中闪烁

时间:2011-02-17 18:26:17

标签: android animation android-linearlayout

问题很简单,但我无法找到一个好的解决方案。我的活动中有一个LinearLayout。根据用户的操作,我需要使布局的背景闪烁3次。这意味着它会将背景颜色从透明变为红色并向后变换3次。让我举个例子:

  1. 用户收到问题和2个带答案的按钮
  2. 用户按错了答案。包含按钮的布局将改变它的背景(透明 - 红色,透明 - 红色,透明 - 红色 - 透明)三次。
  3. 如何在Android中制作此功能?谢谢。

4 个答案:

答案 0 :(得分:3)

您可以使用带有postDelayed方法的Handler。这看起来像这样:

    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);

答案 1 :(得分: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);
    }

谢谢大家的时间。

答案 2 :(得分:1)

使用ScheduledThreadPoolExecutor安排一项操作,使用View.setBackgroundColor(int color)更改背景颜色为红色/透明。

使用schedule(Runnable command, long delay, TimeUnit unit)方法,您可以一次安排所有颜色更改,稍后将按照正确的顺序执行这些更改。

答案 3 :(得分:0)

要使颜色闪烁,我记得在大学时代我们曾经在C ++图形库中设置了一个特定的位。我也试图眨眼背景,但我不想为此目的专门用一个线程。

如果根本没有备用,我会尝试在背景中放置一个交替颜色的.gif图像。