1

avoir une activité qui lit les images du dossier drawable et les montre dans viewpager comme diaporama. ci-dessous est mon code pour cela. Maintenant, je veux montrer des images de ma carte SD ou de stockage interne à viewpager. quels changements devraient être faits dans le code ci-dessous pour lire les images de la carte SD ou du stockage interne et les afficher dans viewpager comme diaporama.afficher l'image de la carte SD ou de stockage interne pour afficher pager android

Activité

public class MainActivity extends AppCompatActivity { 
    ViewPager viewPager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     setContentView(R.layout.activity_main); 

     viewPager = (ViewPager) findViewById(R.id.viewPager); 

     ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this); 

     viewPager.setAdapter(viewPagerAdapter); 
     Timer timer = new Timer(); 
     timer.scheduleAtFixedRate(new MyTimerTask(), 3000,3000); 

    } 
    public class MyTimerTask extends TimerTask { 

     @Override 
     public void run() { 

      MainActivity.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 

        if (viewPager.getCurrentItem() == 0) { 
         viewPager.setCurrentItem(1); 
        } else if (viewPager.getCurrentItem() == 1) { 
         viewPager.setCurrentItem(2); 
        } else if (viewPager.getCurrentItem() == 2) { 
         viewPager.setCurrentItem(3); 
        } else if (viewPager.getCurrentItem() == 3) { 
         viewPager.setCurrentItem(4); 
        } else { 
          viewPager.setCurrentItem(0); 
         } 

        } 


       ; 

      }); 
     } 
    } 
} 

ViewPagerAdapter

public class ViewPagerAdapter extends PagerAdapter { 

    private Context context; 
    private LayoutInflater layoutInflater; 
    private Integer [] images = {R.drawable.index1,R.drawable.index2,R.drawable.index3,R.drawable.index4,R.drawable.index5}; 

    public ViewPagerAdapter(Context context) { 

     this.context = context; 
    } 
    @Override 
    public int getCount() { 

     return images.length; 
    } 
    @Override 
    public boolean isViewFromObject(View view, Object object) { 

     return view == object; 
    } 
    @Override 
    public Object instantiateItem(ViewGroup container, final int position) { 

     layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = layoutInflater.inflate(R.layout.custom_layout, null); 
     ImageView imageView = (ImageView) view.findViewById(R.id.imageView); 
     imageView.setImageResource(images[position]); 


     ViewPager vp = (ViewPager) container; 
     vp.addView(view, 0); 
     return view; 
    } 
    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

     ViewPager vp = (ViewPager) container; 
     View view = (View) object; 
     vp.removeView(view); 

    } 
} 
+1

Check this out: https://stackoverflow.com/a/11237382/5402482 –

+0

trop compliqué, je suis confus – emin

+0

@emin, vous devez d'abord pour avoir essentiellement une fonction pour charger des images sous forme de bitmaps. Après cela, vous pouvez les mettre où vous voulez. –

Répondre

1

Vous pouvez utiliser Picasso pour charger des images de sdcard. Guide ici:
Picasso Library

Dans votre cas:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); // retrieve the storage dir 
    Picasso.with(context).load(new File(baseDir + File.separator + your_filename)).into(imageView); 
+0

quelle partie de mon code devrais-je ajouter ce code, page d'adaptateur? – emin

+0

Basé sur votre code, je voudrais essentiellement avoir une liste de chaînes avec les noms aded et chaque fois que je charge une image, je l'ajoute au chemin pour Picasso (your_filename). Mais vous pouvez le faire à votre guise. –

+0

J'ai un fichier image (nom de fichier est image) dans ma carte SD et le nom des images sont index1.png, index2.png, .. jusqu'à index5.png, Pourriez-vous améliorer mon code à ce sujet, s'il vous plaît – emin