按顺序递增显示图像

时间:2015-03-19 20:46:40

标签: java android while-loop sequence increment

这是我几天来一直遇到的问题。我在for循环中没有运气,所以我试着用了一段时间。

我想要逐步构建一系列图像,每次显示一个图像,每次再获取一个序列。我遇到的问题是按顺序打印图像。我有3个图像视图,每个图像一个。

让我们说数组有两个整数。当它的值被打印时,我希望一个图像显示另一个。但我现在得到的是他们俩都会立刻表现出来。

    public void Show(){

    int i=0 ;

        Random rand = new Random();
        int rndInt = rand.nextInt(3)+ 1 ;       
        list.add(rndInt);
        int totalElements = list.size();
     Log.d("LOOK", Integer.toString(rndInt));
     Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");        

     while(i < totalElements) {      
        final CounterClass resetImage = new CounterClass(1000 , 0010);  
        retval =list.get(i);


        if  (retval==1){


            Centre.setImageResource(R.drawable.flash1);
            resetImage.start();
        }       
        else if (retval==2){


            upperRight.setImageResource(R.drawable.flash2);     
            resetImage.start();
        }   
        else if (retval==3){


            lowerRight.setImageResource(R.drawable.flash3);     
            resetImage.start();
}           
        i++;
            }
    }  
resetImage simply restores the image to it default after the period of time I desired has passed. 

public class CounterClass extends CountDownTimer {  
                public CounterClass(long millisInFuture, long countDownInterval) {  
                     super(millisInFuture, countDownInterval);  
                }  
                @Override  // when timer is finished
               public void onFinish() {  
                    Centre.setImageResource(R.drawable.i1);
                    upperRight.setImageResource(R.drawable.i2);
                    lowerRight.setImageResource(R.drawable.i3);
                    lowerLeft.setImageResource(R.drawable.i4);
                    upperLeft.setImageResource(R.drawable.i5);  
               }
                @Override
                public void onTick(long millisUntilFinished) {
                    // TODO Auto-generated method stub

                }  }

如何一次展示一个。每次按照额外递增的值/图像重复相同的序列

1 个答案:

答案 0 :(得分:1)

在我看来,你没有在任何地方重置list。您可能会在每次通话时继续追加它,使之前的图像与之前相同,再加上下一次。

编辑:这是一个例子:

假设您有5次调用show(),每次调用都会向列表中添加一个随机数。假设随机生成器给出2,3,3,1,2

call # - list
1      - 2
2      - 2,3 (both shown)
3      - 2,3,3 (same display, but 1 more iteration on the while)
4      - 2,3,3,1 (all 3 images shown)
5      - 2,3,3,1,2 (from this one onwards, always all 3 are show, but more and more spurious iterations happen)

如果你想要的是当前列表中的图像短时间闪烁,你需要调整时间,现在,整个循环可能在2-3毫秒内发生。


其他提示:

  1. 无需启动重置计数器3
  2. A for(int i = 0; i

---关于请求的澄清后的Edit2:

我会以不同的方式构建整个事物。

  1. 首先构建完整的序列,无论您想要多长时间。不需要一点一点地做,我们将一点一点地展示
  2. 保留lastShown的计数器,从0开始。
  3. 使用计时器每秒调用一次方法。
  4. 在您的方法中,重置所有3个广告位,然后启用slot[lastShown++]
  5. 因此,这将闪烁序列的每个元素一次。如果你想在它们之间显示一个空序列,你可以随时保留一个单独的布尔变量:boolean showNow = true,然后在你的方法上做if(showNow)showNow = !showNow