Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增量值如何一次显示一个值_Java_Android_Loops_If Statement_Increment - Fatal编程技术网

Java 增量值如何一次显示一个值

Java 增量值如何一次显示一个值,java,android,loops,if-statement,increment,Java,Android,Loops,If Statement,Increment,我用随机生成的数字做了一个简单的序列。每个数字将显示一个链接到它的图像。 比如说, 值1将显示猫的图片。 重视狗 和鼠标的值3 每个图像都有自己的专用图像视图,默认情况下布局如下所示,即在调用其编号之前存储黑色的图像视图: 每次序列递增时。因此,在第二次运行时,将显示两个图像,在第三次运行时,将显示3个图像,依此类推 我遇到的问题是,所有的图像同时显示。所以对于序列一,只有一个图像闪烁,这就是我想要的。但在第二次运行时,两个图像同时显示,而不是先显示第一个图像,然后显示第二个图像 为了澄清,假

我用随机生成的数字做了一个简单的序列。每个数字将显示一个链接到它的图像。 比如说,

值1将显示猫的图片。 重视狗 和鼠标的值3

每个图像都有自己的专用图像视图,默认情况下布局如下所示,即在调用其编号之前存储黑色的图像视图:

每次序列递增时。因此,在第二次运行时,将显示两个图像,在第三次运行时,将显示3个图像,依此类推

我遇到的问题是,所有的图像同时显示。所以对于序列一,只有一个图像闪烁,这就是我想要的。但在第二次运行时,两个图像同时显示,而不是先显示第一个图像,然后显示第二个图像

为了澄清,假设在四次运行中,存储的数组是1,2,3,3

图1显示,然后消失。然后 图2显示并消失。然后 图3显示和消失 然后图像3显示并消失

但我实际得到的是,在第四次运行时,1、2和3将立即显示,同时一起消失。我怎样才能打破这种局面来实现我想要的。我尝试了很多方法,同样的结果也发生了。我无法解决这个问题

这是我的密码:

    ArrayList<Integer> stored_vals = new ArrayList<Integer>();
    public void Gen() {

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

        retval =list.get(i);

     Log.d("RETVAL", Integer.toString(retval));
    String imgName = "flash" + retval;
    int id = getResources().getIdentifier(imgName, "drawable", getPackageName());

     if  (retval==1){                   

            Cat.setImageResource(id);
            Reset_View();
        }       
        else if (retval==2){            
            Dog.setImageResource(id);       
            Reset_View();
        }   
        else if (retval==3){
            Mouse.setImageResource(id); 
            Reset_View();
        }   

    i++;
    }

}

那么,我如何才能实现我想要的。我已经坚持这个想法好几个星期了

这是一个关于你能做什么的高级概念

把所有的显示和隐藏放在倒计时。因此,基本上,您需要处理“onTick”,并在需要时隐藏或显示图像。类似于'time>0和<1000'的内容会隐藏除第一个图像以外的所有图像。1000到2000,仅显示第二个图像。2000到3000,仅显示第三张图像。完成后,隐藏所有

当您在for循环之后实例化计时器时,如果retval是1-那么1000将是运行的时间,retval=2,然后是2000,retval=3,然后是3000

可能有更好的方法,但这是我想到的第一件事。

一个问题可能是重置视图;这不是一种方法。该行甚至表示“公共类重置”视图;延长倒计时。我不知道这可以是一个有效的类名,但无论如何,调用Reset_View;实际上什么都不会做。 我建议您将类的名称更改为其他名称。然后,要重置视图,必须创建ResetTimer实例并使用其start方法,如下所示:

new ResetTimer(1000, 1000).start();

注意:构造函数中的第一个数字是调用计时器onFinish之前的总时间(毫秒)。第二个是两次对话之间的时间。由于您不使用此方法,因此输入的数字无关紧要。

我不完全确定倒计时是否异步运行?它是否会阻止你的for循环继续到下一个循环?如果不是的话,那么为什么所有人一次出现,一次消失是有道理的。我补充了一个高层次的答案。有几种方法可以做到这一点,我试图解释第一种方法。这段代码是如何编译的?你是不是在粘贴的时候把它搞砸了?因为这不可能不产生大量语法错误。代码确实有效,我将通读一遍,看看粘贴是否会把事情搞砸。它确实运行时没有错误
new ResetTimer(1000, 1000).start();