Java 增量值如何一次显示一个值
我用随机生成的数字做了一个简单的序列。每个数字将显示一个链接到它的图像。 比如说, 值1将显示猫的图片。 重视狗 和鼠标的值3 每个图像都有自己的专用图像视图,默认情况下布局如下所示,即在调用其编号之前存储黑色的图像视图: 每次序列递增时。因此,在第二次运行时,将显示两个图像,在第三次运行时,将显示3个图像,依此类推 我遇到的问题是,所有的图像同时显示。所以对于序列一,只有一个图像闪烁,这就是我想要的。但在第二次运行时,两个图像同时显示,而不是先显示第一个图像,然后显示第二个图像 为了澄清,假设在四次运行中,存储的数组是1,2,3,3 图1显示,然后消失。然后 图2显示并消失。然后 图3显示和消失 然后图像3显示并消失 但我实际得到的是,在第四次运行时,1、2和3将立即显示,同时一起消失。我怎样才能打破这种局面来实现我想要的。我尝试了很多方法,同样的结果也发生了。我无法解决这个问题 这是我的密码:Java 增量值如何一次显示一个值,java,android,loops,if-statement,increment,Java,Android,Loops,If Statement,Increment,我用随机生成的数字做了一个简单的序列。每个数字将显示一个链接到它的图像。 比如说, 值1将显示猫的图片。 重视狗 和鼠标的值3 每个图像都有自己的专用图像视图,默认情况下布局如下所示,即在调用其编号之前存储黑色的图像视图: 每次序列递增时。因此,在第二次运行时,将显示两个图像,在第三次运行时,将显示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();