Java 交通灯应用程序Android Studio
我完全迷路了,需要帮助。我正在尝试使用Java在Android Studio中开发一个红绿灯应用程序。该应用程序的目标是单击一个按钮并在不同的交通灯之间循环,同时在按钮上显示与具有不同文本的交通灯对应的不同颜色。应用程序的初始状态设置为红灯,红灯图像与按钮对应,按钮显示红色,文本为“停止”。然后,它循环到绿灯,显示绿灯图像,按钮显示绿色,文本为“开始”然后,它循环到黄色灯光,黄色灯光图像显示按钮颜色黄色,文本为“等待”。最后,它循环回到红色灯光的初始状态,并以无限循环的方式继续运行 我的想法是为每一块创建3个不同的数组:图像、按钮颜色和按钮文本。与每个数组一起,我尝试为每个数组创建一个for循环,以循环通过数组来显示相应的片段。然而,我遇到了在图像中循环的问题,因为它们不是自然的数据类型,也不知道如何定义它们。另外,当我尝试循环文本和颜色时,它将循环到第一项,但不会循环到数组的其余部分。任何帮助都将不胜感激Java 交通灯应用程序Android Studio,java,android,android-studio,Java,Android,Android Studio,我完全迷路了,需要帮助。我正在尝试使用Java在Android Studio中开发一个红绿灯应用程序。该应用程序的目标是单击一个按钮并在不同的交通灯之间循环,同时在按钮上显示与具有不同文本的交通灯对应的不同颜色。应用程序的初始状态设置为红灯,红灯图像与按钮对应,按钮显示红色,文本为“停止”。然后,它循环到绿灯,显示绿灯图像,按钮显示绿色,文本为“开始”然后,它循环到黄色灯光,黄色灯光图像显示按钮颜色黄色,文本为“等待”。最后,它循环回到红色灯光的初始状态,并以无限循环的方式继续运行 我的想法是为
public class MainActivity extends AppCompatActivity {
Button btn = null;
ImageView iv = null;
ImageView redTrafficLight;
ImageView greenTrafficLight = null;
ImageView yellowTrafficLight = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
registerListener();
}
private void initialize() {
// assign button variable
btn = (Button) findViewById(R.id.btn_changeLight);
iv = (ImageView) findViewById(R.id.iv_TrafficLight);
redTrafficLight.setImageResource(R.drawable.red2);
greenTrafficLight.setImageResource(R.drawable.green);
yellowTrafficLight.setImageResource(R.drawable.yellow);
btn.setText("STOP");
btn.setBackgroundColor(Color.RED);
}
private void registerListener() {
btn.setOnClickListener(buttonListener);
}
private View.OnClickListener buttonListener = new View.OnClickListener() {
public void onClick(View v) {
final int[] colors = {Color.RED, Color.GREEN, Color.YELLOW};
final String[] text = {"STOP", "GO", "WAIT"};
final ImageView[] images = {redTrafficLight, greenTrafficLight, yellowTrafficLight};
int current = 0;
int currentText = 0;
int i = 0;
for(i = 0; i < colors.length; i++ ) {
btn.setBackgroundColor(colors[current + 1]);
}
for (i = 0; i < text.length; i++) {
btn.setText(text[currentText + 1]);
}
for (i = 0; i < images.length; i++) {
}
}
};
}
public类MainActivity扩展了AppCompatActivity{
按钮btn=null;
ImageView iv=空;
图像视图红绿灯;
ImageView绿色交通灯=空;
ImageView黄色交通灯=空;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
初始化();
registerListener();
}
私有void初始化(){
//分配按钮变量
btn=(按钮)findViewById(R.id.btn\u changeLight);
iv=(图像视图)findViewById(R.id.iv_交通灯);
设置图像资源(R.drawable.red2);
绿色交通灯。设置图像资源(R.可绘制。绿色);
黄色TrafficLight.setImageResource(R.drawable.yellow);
btn.setText(“停止”);
btn.setBackgroundColor(颜色为红色);
}
私有无效注册表列表器(){
btn.setOnClickListener(按钮Listener);
}
private View.OnClickListener按钮Listener=new View.OnClickListener(){
公共void onClick(视图v){
final int[]colors={Color.RED,Color.GREEN,Color.YELLOW};
最后一个字符串[]text={“STOP”、“GO”、“WAIT”};
最终图像视图[]图像={红色交通灯、绿色交通灯、黄色交通灯};
int电流=0;
int currentText=0;
int i=0;
对于(i=0;i
当前值始终为0。您根本没有使用i
。是不是应该是btn.setBackgroundColor(colors[i])
?是的,你说得对,把它关掉了。我在以前的版本上使用了current,但忘记删除以前的版本。既然它是一个ImageView而不是和int,我该如何循环遍历这些图像呢?