java - 如何使用循环遍历图像

标签 java android loops switch-statement

我目前正在建立一个自定义进度,如酒吧巴士。
这个程序需要显示巴士从一个地方到另一个地方的进度。
目前进度条正在处理其时间表。
代码是switch语句的一种形式,但是switch语句变得非常长,编程也非常繁琐,我还需要做更多的工作。
有没有办法缩短这个代码?
也许是以循环的形式

 Thread t = new Thread(){
        @Override
        public void run() {
            while (!isInterrupted()) {
                try {
                    Thread.sleep(1000);

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Calendar c = Calendar.getInstance();
                            mHours = c.get(Calendar.HOUR_OF_DAY);
                            mMinutes = c.get(Calendar.MINUTE);
                            mSeconds = c.get(Calendar.SECOND);

                            String mTimeString = ""+mHours + mMinutes;
                            ImageView busBar = (ImageView) findViewById(R.id.bus_bar);
                            int intTimeString = Integer.valueOf(mTimeString);


                            switch(intTimeString)
                            {
                                case 1030:
                                case 1040:
                                case 1052:
                                case 1103:
                                case 1115:
                                case 1130:
                                case 1140:
                                case 1152:
                                case 1203:
                                    busBar.setImageResource(R.drawable.bus_bar);
                                    break;

                                case 1031:
                                case 1042:
                                case 1054:
                                case 1105:
                                case 1131:
                                case 1141:
                                case 1154:
                                case 1205:
                                    busBar.setImageResource(R.drawable.bus_bar_02);
                                    break;

                                case 1032:
                                case 1044:
                                case 1055:
                                case 1107:
                                case 1132:
                                case 1143:
                                case 1155:
                                case 1207:
                                    busBar.setImageResource(R.drawable.bus_bar_03);
                                    break;

                                case 1033:
                                case 1046:
                                case 1057:
                                case 1109:
                                case 1133:
                                case 1145:
                                case 1157:
                                case 1209:
                                    busBar.setImageResource(R.drawable.bus_bar_04);
                                    break;

                                case 1034:
                                case 1048:
                                case 1059:
                                case 1110:
                                case 1116:
                                case 1134:
                                case 1147:
                                case 1159:
                                case 1210:
                                    busBar.setImageResource(R.drawable.bus_bar_05);
                                    break;

                                case 1035:
                                case 1049:
                                case 1100:
                                case 1112:
                                case 1135:
                                case 1149:
                                case 1200:
                                case 1212:
                                    busBar.setImageResource(R.drawable.bus_bar_06);
                                    break;

                                case 1036:
                                case 1050:
                                case 1101:
                                case 1113:
                                case 1136:
                                case 1150:
                                case 1201:
                                case 1213:
                                    busBar.setImageResource(R.drawable.bus_bar_07);
                                    break;

                                case 1039:
                                case 1051:
                                case 1102:
                                case 1114:
                                case 1117:
                                case 1139:
                                case 1151:
                                case 1202:
                                case 1214:
                                    busBar.setImageResource((R.drawable.bus_bar_08));
                                    break;
                            }

                        }
                    });
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    t.start();

Photo of the bus_bar_8)
TimeTable of the bus

最佳答案

您可以尝试将一个案例的所有时间收集到一个数组或列表中,然后使用if/else检查每个案例。
在Java中使用“包含”有一些简单的选项(在这里检查:One liner to check if element is in the list
例如:

    List<Integer> case1List = Arrays.asList(new Integer[] {1030, 1040, 1052, 1103, 1115,  1130, 1140,  1152, 1203});
    List<Integer> case2List ....
    ....

    if (case1List.contains(intTimeString)) {
        //do something
    }
    else if (case2List.contains(intTimeString) {
        //do something
    }
  ....

关于java - 如何使用循环遍历图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54784682/

相关文章:

安卓人工集成

java - Android 中带有计时器的 Foreach String[]

c++ - 在循环条件下调用 const-vector size() 似乎缺少优化

java - 字符串对象实例

java - 在 Java EE for SAP Cloud Platform 中使用目标

java - 无法解析方法 getChildFragmentManager()

android - 使用 TextInputLayout 和 TextInputEditText 时删除多余的空间/填充/边距

JavaScript 异步循环

java - Amazon S3 上传 NoHttpResponseException

java - 迁移到 2.4 后 Play 的路由文件出现问题