2015-08-04 5 views
-3

я хочу, чтобы отобразить изображения как слайд-шоу, но я не могу сделать паузу в течение 5 секунд до отображения следующего изображения ...Как сделать паузу через несколько секунд

Я попытался сделать сон нити, но приостановлено на 15 секунд и отобразило последнее (3-е) изображение.

for (int i = 0; i < 3; i++) { 
    File imgFile = new File(paths[i]); 

    if(imgFile.exists()){ 
     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
     mimage.setImageBitmap(myBitmap); 
    } 

    //**I want the thread pause for 5 seconds here** 
} 

ответ

1

Вам нужен обработчик

Handler handler1 = new Handler(); 
    for(int i=0;i<3;i++) 
    { 
     handler1.postDelayed(new Runnable() { 

      @Override 
      public void run() 
      { 
       File imgFile = new File(paths[i]); 

       if(imgFile.exists()) 
       { 

        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
        mimage.setImageBitmap(myBitmap); 
       } 
      } 
     }, 5000 * i); 
    } 
+0

он по-прежнему отображаться только последнее изображение после паузы – Villager

+0

@Harish правильно отредактирован последнюю строку моего кода с '5000 * я '- Вы включили это в свой тест? – Smittey

+0

Круто работает !!! – Villager

0

Попробуйте это:

public class YourClass { 
    private String[] paths; 
    private int mNextImageIndex = 0; 

    public void switch() { 


     File imgFile = new File(paths[mNextImageIndex]); 

     if(imgFile.exists()){ 

      Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
      mimage.setImageBitmap(myBitmap); 
     } 

     mNextImageIndex = (mNextImageIndex + 1) % paths.length; 

     new Handler().postDelayed(new Runnable() { 
      public void run() { 
       switch(); 
      } 
     },5000); 
    } 
} 
+0

не работает ... – Villager