Affichage des images du dossier de la carte SD dans la vue Galerie (Android)
-
12-12-2019 - |
Question
Je développe une application Android.In Ma candidature, je souhaite afficher des images de dossier de carte SD dans la vue Galerie.J'utiliseaseadapter.J'ai essayé d'afficher des images à partir de dossier digues dans le dossier Ressources de mon projet et cela fonctionne bien. J'ai essayé le code suivant:
public class ImageAdapter extends BaseAdapter {
private Context context;
public static Integer[] imageIDs={
R.drawable.sp1,R.drawable.sp2,
R.drawable.sp3,R.drawable.sp4,
R.drawable.sp5,R.drawable.sp6,
R.drawable.sp7,R.drawable.sp8,
R.drawable.sp9
};
public ImageAdapter(Context context){
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIDs.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View
convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView image=new ImageView(context);
image.setImageResource(imageIDs[position]);
image.setAdjustViewBounds(true);
image.setLayoutParams(new Gallery.LayoutParams(120,120));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
return image;
}
Maintenant, je souhaite afficher des images à partir de dossier de carte SD et les afficher au format de la galerie. Pour cela, j'ai essayé d'obtenir toutes les images en tableau mais je ne sais pas comment les obtenir en format Array.Je peux accéder à mes images dans le dossier SD de la manière suivante.
File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg");
Comment obtenir tout le format de tableau et les afficher dans la vue Galerie.
Besoin d'aide ... merci ....
La solution
voir le code ci-dessous
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
// It have to be matched with the directory in SDCard
boolean exist = new File(Environment.getExternalStorageDirectory()
+ File.separator + "download").exists();
if (exist) {
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "download");
File[] files = f.listFiles();
File file;
for (int i = 0; i < files.length; i++) {
file = files[i];
Bitmap bitmap = decodeFile(file);
return bitmap;
}
}
}
pouvez-vous faire de cette façon
@Override
public int getCount() {
// TODO Auto-generated method stub
return files.length;
}
@Override
public View getView(int position, View
convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView image=new ImageView(context);
//image.setImageResource(imageIDs[position]);
File file = files[position]
Bitmap bitmap = decodeFile(file);
image.setImageBitmap(bitmap);
image.setAdjustViewBounds(true);
image.setLayoutParams(new Gallery.LayoutParams(120,120));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
return image;
}
Autres conseils
Vous devez charger les images comme bitmaps:
getView(...){
File f = new File(directory, filename);
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
...
ImageView image=new ImageView(context);
image.setImageBitmap(bitmap);
}