How to change image on image after some time

I have a problem with the fact that I want to embed images in ImageView in Android and that images change periodically at some interval. Means one by one the images shown in ImageView. I am doing this with Thread in java, but I had a problem with Thread not connecting and something like that. Check out my code below and tell me the exact error and how to remove this error or give me some ways to do this.

package com.ex.thread; import com.ex.thread.R; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; public class thread extends Activity implements Runnable{ /** Called when the activity is first created. */ public static Integer[] mThumbIds = { R.drawable.al1,R.drawable.al2,R.drawable.al3,R.drawable.al4, }; Thread th; ImageView iv; public void run() { for(int i=0;i<3;i++) { iv.setImageResource(mThumbIds[i]); System.out.println("Sanat Pandey"); try{ Thread.sleep(3000); }catch(Exception e) { System.out.println(e); } } } public void create() { Thread th = new Thread(new thread()); th.start(); try{ Thread.sleep(3000); }catch(Exception e) { System.out.println(e); } } @Override public void onCreate(Bundle savedInstace) { super.onCreate(savedInstace); setContentView(R.layout.main); create(); } } 
+7
source share
6 answers

You cannot use things in the user interface thread from the background. So this call:

 iv.setImageResource(mThumbIds[i]); 

Must be done in the main thread. In fact, you probably don't need the background thread to get the effect you're looking for. You can do it simply as an action, no runnable needed. 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 
+12
source

Try this ... It works well ...

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);`` // // int []imageArray={R.drawable.img1,R.drawable.img2,R.drawable.img3}; final Handler handler = new Handler(); Runnable runnable = new Runnable() { int i=0; public void run() { imageView.setImageResource(imageArray[i]); i++; if(i>imageArray.length-1) { i=0; } handler.postDelayed(this, 50); //for interval... } }; handler.postDelayed(runnable, 2000); //for initial delay.. } 
+31
source

try using a handler in conjunction with TimerTask

0
source

Try it it works

public class vv extends Activity {int b [] = {R.drawable.a, R.drawable.m, R.drawable.b, R.drawable.j, R.drawable.er, R.drawable.chan, R. drawable.vv}; public ImageView i; int z = 0;

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); i = (ImageView) findViewById(R.id.image); i.setImageResource(b[0]); Thread timer = new Thread() { public void run() { try { sleep(2000); for (z = 0; z < b.length + 2; z++) { if (z < b.length) { sleep(2000); runOnUiThread(new Runnable() { public void run() { i.setImageResource(b[z]); } }); } else { z = 0; } } } catch (InterruptedException e) { e.printStackTrace(); } finally { System.out.println("finally"); } } }; timer.start(); } 

}

0
source

try this code. Images were saved in the drawing. please paste the image in xml code. noted that the time interval for the next code is 1 second.

 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { public ImageView iv; public static Integer[] mThumbIds = { R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4}; int i; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.imageView); i=0; t.start(); } Thread t = new Thread() { @Override public void run() { try { while (!isInterrupted()) { Thread.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { iv.setImageResource(mThumbIds[i]); i++; if(i >= mThumbIds.length){ i = 0; }}});}} catch (InterruptedException e) { }}}; } 
0
source
 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final int img[] = {R.drawable.flower1, R.drawable.flower2, R.drawable.flower3, R.drawable.flower4}; layout = (RelativeLayout) findViewById(R.id.activity_main); final Handler handler=new Handler(); Runnable runnable = new Runnable() { int i = 0; @Override public void run() { layout.setBackgroundResource(img[i]); i++; if (i > img.length - 1) { i = 0; } handler.postDelayed(this, 4000); //for interval 4s.. } };handler.postDelayed(runnable, 100); //for initial delay.. } 
-one
source

All Articles