如何设置按钮颜色变化的延迟

时间:2019-02-20 06:33:00

标签: java android

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

take = getIntent();
levelone = take.getIntArrayExtra("level1");
take = getIntent();
leveltwo = take.getIntArrayExtra("level2");
take = getIntent();
levelthree = take.getIntArrayExtra("level3");
colors[0] = (R.drawable.blue1);//Suppose to give integer value for the colors
colors[1] = (R.drawable.purple1);
colors[2] = (R.drawable.yellow1);
colors[3] = (R.drawable.green1);
colors1[0] = (R.drawable.blue);//Suppose to set the colors back to origin
colors1[1] = (R.drawable.purple);
colors1[2] = (R.drawable.yellow);
colors1[3] = (R.drawable.green);


purple = findViewById(R.id.purplee);   //1
green = findViewById(R.id.greenn);//2
yellow = findViewById(R.id.yelloww);//3
blue = findViewById(R.id.bluee);//4

for (int i = 0; i < btn.length; i++) {
    buttons[i] = findViewById(btn[i]);
    buttons[i].setOnClickListener(this);
}
        buttons[1].setBackgroundResource(colors[1]);//purple Butttons[1]
buttons[2].setBackgroundResource(colors[2]);//Yellow Buttons[2]
buttons[3].setBackgroundResource(colors[3]);//Green Buttons[3]
buttons[0].setBackgroundResource(colors[0]);//Blue Buttons[0]

//  Blue Buttons[0],purple Butttons[1] ,Yellow Buttons[2],Green Buttons[3]
//colors[0]==Blue  ,colors[1]==purple,colors[2]==Green,colors[3]==Yellow


         //Set background button color}

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
           /* buttons[0].setBackgroundColor(Color.BLUE); //Suppose to change the color to the primary color*/
            for(int i=0;i<levelone.length;i++)
            {
                buttons[1].setBackgroundResource(colors[1]);

            }
        }
    }, 1000);//Set the delay between changes of colors

我想按延迟更改按钮的颜色,所以我运行了几个选项,但没有一个起作用,我的意思是我没有看到延迟,按钮的颜色也没有像预期的那样变化所以我应该怎么做? 在代码中,我尝试了一些操作,但是没有用,因此,如果您有任何想法,我将很高兴听到。

5 个答案:

答案 0 :(得分:0)

当您想延迟更改颜色时,请使用如下处理程序:

for(int i=0;i<levelone.length;i++)
{
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            buttons[1].setBackgroundResource(colors[1]);
        }
    }, NUMBER_IN_MILLISECOND * i);
}

,然后输入所需的数字(以毫秒为单位),该数字是NUMBER_IN_MILLISECOND

答案 1 :(得分:0)

    buttons[1].setBackgroundResource(colors[1]);//purple Butttons[1]
    buttons[2].setBackgroundResource(colors[2]);//Yellow Buttons[2]
    buttons[3].setBackgroundResource(colors[3]);//Green Buttons[3]
    buttons[0].setBackgroundResource(colors[0]);//Blue Buttons[0]

    //  Blue Buttons[0],purple Butttons[1] ,Yellow Buttons[2],Green Buttons[3]
    //colors[0]==Blue  ,colors[1]==purple,colors[2]==Green,colors[3]==Yellow


             //Set background button color}

        final Handler handler = new Handler();
    for(int i=0;i<levelone.length;i++)
    {
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                buttons[1].setBackgroundResource(colors1[1]);//purple Butttons[1]
                buttons[2].setBackgroundResource(colors1[2]);//Yellow Buttons[2]
                buttons[3].setBackgroundResource(colors1[3]);//Green Buttons[3]
                buttons[0].setBackgroundResource(colors1[0]);//Blue Buttons[0]


            }
        }, 1500 * i);
    }

我是这样做的,我设置了应该起作用的颜色序列,但是没有。仍然没有设置延迟。

答案 2 :(得分:0)

如果要设置颜色更改之间的延迟,则需要在循环内运行postDelayed,并且循环必须引入colors以避免异常:

for(int i = 0; i < colors.length; i++) {
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            buttons[1].setBackgroundResource(colors[i]);
        }
    }, 1000);

}

答案 3 :(得分:0)

可转换绘图可帮助您。这是一个示例:

//Code that loads your php result
initialize();

您认为,您可以像上面的<?xml version="1.0" encoding="UTF-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/holo_red_dark" /> <item android:drawable="@android:color/holo_green_dark" /> </transition>

然后在您的代码中,您可以执行以下操作来激活正向转换(也可以反向转换):

android:background="@drawable/transition_drawable"

以上将在2000毫秒内开始在两种颜色之间平滑过渡。

答案 4 :(得分:0)

您可以使用此示例中编写的代码来连续更改视图的颜色- https://github.com/yadavshivam3000/ColorChangingTextView