How to Change Images on Imageview After Some Interval

how to change images on imageView after some interval

You can't use things in the UI thread from a background one. So this call:

iv.setImageResource(mThumbIds[i]);

Has to be done in the main thread. In fact you probably don't need a background thread at all to get the effect you're looking for. You can make that just an activity, no need to implement runnable. and then do something like this:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv = (ImageView) findViewById(R.id.yourImageViewID);
int i = 0;
Runnable r = Runnable(){
public void run(){
iv.setImageResource(mThumbIds[i]);
i++;
if(i >= mThumbIds.length){
i = 0;
}
iv.postDelayed(r, 3000); //set to go off again in 3 seconds.
}
};
iv.postDelayed(r,3000); // set first time for 3 seconds

Android: changing Image with time interval

I do not know about ImageLoader component but scheduling a timer on a view is quite easy in Android.(Without any additional Object)

final ImageView bgImage=(ImageView) findViewById(R.id.image);

...

new Runnable() {
int updateInterval = 1000; //=one second

@Override
public void run() {

// Any code which goes here will be executed every 'updateInterval'
// change your background here

bgImage.postDelayed(this, updateInterval);
}
}.run();

You can change this template as you wish, suppose I want to stop this timer, for this purpose I have to add a stop method to my runnable(This stop method acts synchronized and do not cause inconsistency in timer inner codes):

Runnable myRunnable = new Runnable() {
int updateInterval = 1000; //=one second
boolean stop = false;

public void stop() {
this.stop = true;
}

@Override
public void run() {

// Any code which goes here will be executed every 'updateInterval'
// change your background here

if(!stop) {
bgImage.postDelayed(this, updateInterval);
}
}
}.run();

Now I can stop it by myRunnable.stop();

EDIT :
You should iterate your array of URLs and pass one of them to your downloader. It can be accomplished by this snippet code:

int arraySize = list.size();

new Runnable() {
int currentIndex = 0;
int updateInterval = 1000; //=one second

@Override
public void run() {

currentIndex += 1;
if(currentIndex == arraySize){
currentIndex = 0;
}

item = list.get(currentIndex);
downloader.download(item.imageurl(), bgImage);

bgImage.postDelayed(this, updateInterval);
}
}.run();

Android: how to change images in a imageview, with varying intervals?

Use below code hope it will help

MyCount count=new MyCount(IMAGE_IDS.length * 1000,1000);  
public class MyCount extends CountDownTimer{

public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}

@Override
public void onFinish() {
start=0;
count.start();
}

@Override
public void onTick(long millisUntilFinished) {
if(start<=IMAGE_IDS.length)
{
img.setImageResource(IMAGE_IDS[start])
start+=1;
}

}
}
int start=0;
count.start();

Image View change image after paticular time interval

You will need TimerTask for it.

Below Snippet will help you

It will change image every 3 seconds.

  timer = new Timer();
timer.schedule(new TimerTask() {

@Override
public void run() {
runOnUiThread(new Runnable() {

public void run() {

if (flag > 1) {
timer.cancel();
timer = null;
} else
imageView.setImageResource(images[flag++]);

}
});

}
}, System.currentTimeMillis(), 3000);

Get from Arraylist and Update Imageview Periodically after some Interval

I hope the following function will help. It will trigger after every 4 seconds and a toast message will be showing. You can call your function to load your images based on I counter.

int i = 0;
int length = 5;
private Handler mHandler;
private Runnable mRunnable;

public void startPeriodicFunciton() {

mHandler = new Handler();
mRunnable = new Runnable() {
@Override
public void run() {
// Do some task on delay
// doTask();

// You can add your fuction to load image here
i++;
if (i == length)
i = 0;
Toast.makeText(MainActivity.this, "value : " + i,
Toast.LENGTH_SHORT).show();
mHandler.postDelayed(mRunnable, 4000);

}
};
mHandler.postDelayed(mRunnable, (4000));
}

How to change image after one second automatically in Android Studio?

You can use a Handler with a delay of 1 sec for the first change, and a handler for 2 seconds for the rollback

public class MainActivity extends AppCompatActivity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView.findViewById(R.id.img1);}

public void start(View view){

new Handler(getMainLooper()).postDelayed(() -> {
imageView.setImageResource(R.drawable.img2);
}, 1000); // 1 second

new Handler(getMainLooper()).postDelayed(() -> {
imageView.setImageResource(R.drawable.img1);
}, 2000); // 2 seconds

}
}
}


Related Topics



Leave a reply



Submit