按顺序递增显示图像
Incrementally show images in sequence
这是我困扰了几天的问题。我对 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
} }
如何一次显示一个。每次都按顺序重复相同的序列,并增加 value/image
在我看来你没有在任何地方重置 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毫秒。
其他提示:
- 无需启动重置计数器3
- A for(int i=0; i
--- 澄清要求后的 Edit2:
我会以不同的方式构建整个事物。
- 首先构建完整的序列,无论你想要多长。不需要一点一点地做,我们会一点一点地展示。
- 保留
lastShown
的计数器,从 0 开始。
- 设置一个定时器,大约每秒调用一次您的方法。
- 按照您的方法,重置所有 3 个插槽,然后打开
slot[lastShown++]
因此,这将让序列中的每个元素闪烁一次。如果你想在两者之间显示一个空序列,你总是可以保留一个单独的布尔变量:boolean showNow = true
然后在你的方法上做 if(showNow)
和 showNow = !showNow
.
这是我困扰了几天的问题。我对 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
} }
如何一次显示一个。每次都按顺序重复相同的序列,并增加 value/image
在我看来你没有在任何地方重置 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毫秒。
其他提示:
- 无需启动重置计数器3
- A for(int i=0; i
--- 澄清要求后的 Edit2:
我会以不同的方式构建整个事物。
- 首先构建完整的序列,无论你想要多长。不需要一点一点地做,我们会一点一点地展示。
- 保留
lastShown
的计数器,从 0 开始。 - 设置一个定时器,大约每秒调用一次您的方法。
- 按照您的方法,重置所有 3 个插槽,然后打开
slot[lastShown++]
因此,这将让序列中的每个元素闪烁一次。如果你想在两者之间显示一个空序列,你总是可以保留一个单独的布尔变量:boolean showNow = true
然后在你的方法上做 if(showNow)
和 showNow = !showNow
.