【问题标题】:Incrementally show images in sequence按顺序递增显示图像
【发布时间】:2015-05-23 03:55:01
【问题描述】:

这是我几天来一直遇到的问题。我对 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

                }  }

如何一次显示一个。每次重复相同的序列,以增加额外的值/图像

【问题讨论】:

    标签: java android while-loop sequence increment


    【解决方案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. 无需启动reset counter 3
    2. A for(int i=0; i

    --- 澄清reqs后编辑2:

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

    1. 首先构建完整的序列,无论您想要多长时间。不用一点点做,我们会一点一点展示
    2. 保持lastShown的计数器,从0开始。
    3. 设置一个计时器,每秒左右调用一次您的方法。
    4. 在您的方法中,重置所有 3 个插槽,然后打开 slot[lastShown++]

    因此,这将使序列中的每个元素闪烁一次。如果您想在两者之间显示一个空序列,您可以始终保留一个单独的布尔变量:boolean showNow = true,然后在您的方法上执行 if(showNow)showNow = !showNow

    【讨论】:

    • 嗯,当然,这有点像我的意思,让我在答案中更加明确。
    • 感谢您的帮助。你的例子完全总结了我的问题。我不明白你说的调整时间是什么意思。你的意思是改变我的resetImage的时间吗?
    • 不,我的意思是,您确实想“看到”图像在列表中翻转,对吗?物理观察序列?我对你的最终目标并不完全清楚。
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    相关资源
    最近更新 更多