I'm new in developing so I want to ask this question, sorry if it's stupid
I have 6 different ImageView
s and 6 images, how can I set images into ImageView
s so that they appear on click one by one with some delay, like 1 second? Now they appear all together at the same time
private int[] images;
private int[] containers;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
images = new int[] {R.drawable.wale,
R.drawable.btrfly,
R.drawable.cat,
R.drawable.dog,
R.drawable.fish,
R.drawable.dolphin};
containers = new int[] {R.id.container1,
R.id.container2,
R.id.container3,
R.id.container4,
R.id.container5,
R.id.container6};
for (int i = 0; i<containers.length; i++) {
final ImageView temp = findViewById(containers[i]);
temp.setImageResource(R.drawable.placeholder);
}
Button load = findViewById(R.id.btnLoad);
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for ( int i =0; i<containers.length; i++) {
final ImageView temp = findViewById(containers[i]);
temp.setImageResource(images[i]);
}
}
});
}
You can use postDelayed()
of android.os.Handler like this:
final int baseDelay = 1000;
final Handler handler = new Handler();
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < containers.length; i++) {
final int ifinal = i;
handler.postDelayed(new Runnable(){
public void run(){
final ImageView temp = findViewById(containers[ifinal]);
temp.setImageResource(images[ifinal]);
}
}, i * baseDelay);
}
}
});