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