Visualización de imágenes de la carpeta de la tarjeta SD en la vista Gallery (Android)
-
12-12-2019 - |
Pregunta
Estoy desarrollando Aplicación de Android.En mi solicitud Quiero mostrar imágenes de la carpeta de la tarjeta SD en la vista de la Galería.Estoy usando BaseAdapter.Intenté mostrar imágenes de la carpeta Dibujable en la carpeta de recursos en mi proyecto y está funcionando bien. Intenté seguir código:
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;
}
Ahora quiero mostrar imágenes de la carpeta de la tarjeta SD y mostrarlas en formato de la galería. Para eso intenté obtener todas las imágenes en matriz, pero no sé cómo obtenerlos en formato de matriz.Puedo acceder a mis imágenes en la carpeta SD de la siguiente manera.
File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg");
Cómo obtenerlos en formato de matriz y mostrarlos en Gallery View.or ¿Hay alguna otra forma alternativa de mostrarlos en lugar de la matriz?
Necesito ayuda ... Gracias ...
Solución
ver por debajo del código
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;
}
}
}
¿Puedes hacer de esta manera
@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;
}
Otros consejos
Necesitas cargar las imágenes como mapas de bits:
getView(...){
File f = new File(directory, filename);
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
...
ImageView image=new ImageView(context);
image.setImageBitmap(bitmap);
}