相关文章推荐
腼腆的针织衫  ·  ActiveX ...·  11 月前    · 
沉稳的围巾  ·  python3 ...·  2 年前    · 
聪明伶俐的人字拖  ·  [Solved] C# how to ...·  2 年前    · 

交通灯应用程序Android Studio

0 人关注

我完全被卡住了,迷失了方向,需要帮助。我正试图在Android Studio中用Java开发一个交通灯应用程序。这个应用程序的目标是点击一个按钮并循环浏览不同的交通灯,同时在按钮上显示与交通灯对应的不同颜色和不同的文字。该应用程序的初始状态被设置为红灯,红灯图像与按钮对应,显示红色的文字 "STOP"。然后它循环到绿灯,显示绿灯的图像被点亮,按钮显示为绿色,文字为 "GO"。然后,它循环到黄灯,黄灯图像显示按钮颜色为黄色,文字为 "等待"。最后,它又循环到红灯的初始状态,一直无限循环下去。

我的思考过程是为每一块创建3个不同的数组:图像、按钮颜色和按钮文本。随着每个数组的出现,我试图为每个数组创建一个for循环,通过数组来循环显示相应的作品。然而,我遇到了在图像中循环的问题,因为它们不是一个自然的数据类型,而且不知道如何定义它们。另外,当我试图通过文本和颜色进行循环时,它将循环到第一项,而不是通过数组的其他部分。如果有任何帮助,我将不胜感激。

    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++) {