Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中设置线性布局背景动画以使其闪烁_Android_Animation_Android Linearlayout - Fatal编程技术网

在Android中设置线性布局背景动画以使其闪烁

在Android中设置线性布局背景动画以使其闪烁,android,animation,android-linearlayout,Android,Animation,Android Linearlayout,这个问题很简单,但我无法找到一个好的解决办法。我在活动中有一个线性布局。根据用户的需要,我需要使布局的背景闪烁3次。这意味着它会将背景颜色从透明更改为红色,并向后更改3次。让我举个例子: 用户收到一个问题和两个带答案的按钮 用户按错了答案。包含该按钮的布局将更改其背景(透明-红色、透明-红色、透明-红色-透明透明)三次 我如何在安卓系统中实现这一点?谢谢。使用视图将背景颜色更改为红色/透明。setBackgroundColor(int-color) 使用调度(Runnable命令,long de

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

  • 用户收到一个问题和两个带答案的按钮
  • 用户按错了答案。包含该按钮的布局将更改其背景(透明-红色、透明-红色、透明-红色-透明透明)三次
  • 我如何在安卓系统中实现这一点?谢谢。

    使用视图将背景颜色更改为红色/透明。setBackgroundColor(int-color)


    使用
    调度(Runnable命令,long delay,TimeUnit)
    方法,您可以一次调度所有颜色更改,并在以后以正确的顺序执行这些更改。

    您可以将处理程序与postdayed方法一起使用。看起来是这样的:

        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);
    
    Handler h=new Handler();
    整数计数=0;
    Runnable r=新的Runnable()
    {
    公开募捐
    {
    如果(计数<6){
    如果(计数%2==0){
    计数++;
    布局。立根台(红色);
    h、 延迟后(r,500);
    }否则{
    计数++;
    布局。立根台(透明);
    h、 延迟后(r,500);
    }
    }
    }
    };
    h、 员额(r);
    
    @vidstige:我试过你的建议,但背景的改变并不流畅,有时有效有时只有一半无效

    @蒂姆:你的解决方案看起来很好,但在让它工作时我遇到了一些问题,因为我不太擅长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);
        }
    
    Handler blinkHandler=new Handler(){
    @凌驾
    公共无效handleMessage(消息消息消息){
    开关(msg.what){
    案例0:
    lay1.收穗基色(颜色:红色);
    打破
    案例1:
    lay1.setBackgroundColor(颜色:透明);
    打破
    }
    超级handleMessage(msg);
    }
    };
    
    (int i=0;i < p>使颜色闪烁,我记得在大学时代我们在C++图形库中设置了一个特定的比特。我也试图眨眨眼背景,但是我不想为此而献出一个线程。

    如果没有其他颜色,我会尝试在背景中放置一个带有交替颜色的.gif图像