2011-07-26 25 views
5

Bu, statik dosyalar içeren içeriği görüntülediğim galeri programım, SDcard'ta fotoğrafları göstermek için bu programın nasıl değiştirileceği, fotoğraf veya SD kartın uyarı vermemesi durumundaAndroid galerisi SDcard görüntülerini göster

package DisplayViewsExample.com; 

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Context; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Gallery; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 




    public class DisplayViewsExampleActivity extends Activity { 

Integer[] imageIDs = { 
      R.drawable.sample_1, 
      R.drawable.sample_2, 
      R.drawable.sample_3 

    }; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Gallery gallery = (Gallery) findViewById(R.id.gallery1); 

    gallery.setAdapter(new ImageAdapter(this));   
    gallery.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView parent, 
     View v, int position, long id) 
     {     
    /*  Toast.makeText(getBaseContext(), 
        "pic" + (position + 1) + " selected", 
        Toast.LENGTH_SHORT).show();*/ 
      ImageView imageView = (ImageView) findViewById(R.id.image1);     
      imageView.setImageResource(imageIDs[position]); 

     } 
    }); 

} 
public class ImageAdapter extends BaseAdapter 
{ 
    private Context context; 
    private int itemBackground; 

    public ImageAdapter(Context c) 
    { 
     context = c; 
     //---setting the style--- 
     TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
     itemBackground = a.getResourceId(
      R.styleable.Gallery1_android_galleryItemBackground, 0); 
     a.recycle();      
    } 

    //---returns the number of images--- 
    public int getCount() { 
     return imageIDs.length; 
    } 

    //---returns the ID of an item--- 
    public Object getItem(int position) { 
     return position; 
    }    

    public long getItemId(int position) { 
     return position; 
    } 

    //---returns an ImageView view--- 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView = new ImageView(context); 
     imageView.setImageResource(imageIDs[position]); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 
     imageView.setBackgroundResource(itemBackground); 
     return imageView; 
    } 


}  

} 

cevap

0

Environment.getExternalStoragePublicDirectory(String type) 

işlevi dış extorage erişim sağlar. En sıradan standart klasör isimleri için bile konikler vardır.

Bildiride erişim iznini koymayı unutmayın.

1

Sen Manifest ilk izni ayarlamak gerekir:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

Sonra yinelemeli SD gelen tüm resim dosyalarınızı getirir işlevi yazın: Listenizi adaptörü Bundan sonra

final static String[] IMAGE_FORMATS = new String[] { 
     ".JPEG", ".GIF", ".PNG", ".BMP"}; 

public static ArrayList<File> getImageFilesFromSD() { 

    File dir = Environment.getExternalStorageDirectory(); 

    if (dir == null || !dir.exists()) 
     return null; 

    ArrayList<File> images = getImageFilesFromDir(dir); 
    return images; 

} 

private static ArrayList<File> getImageFilesFromDir(File dir) { 
    File[] files = dir.listFiles(); 
    ArrayList<File> result = new ArrayList<File>(); 
    if (files != null) 
     for (File file : files) { 
      if (file.isDirectory()) { 
       result.addAll(getImageFilesFromDir(file)); 
      } else { 
       final String fileName = file.getName(); 
       final String fileNameLwr = fileName.toLowerCase(); 
       // filtering images by extension 
       boolean contains = false; 
       for (int i = 0; i < IMAGE_FORMATS.length; i++) { 
        final String formatLwr = IMAGE_FORMATS[i].toLowerCase(); 
        if (fileNameLwr.endsWith(formatLwr)) { 
         contains = true; 
         break; 
        } 
       } 
       if (contains) { 
        result.add(file); 
       } 
      } 
     } 
    return result; 
} 

:

imageView.setImageURI(Uri.fromFile(file)); 

file, 0 tarafından döndürülen ArrayList öğesinden oluşur.işlevi.

İyi şanslar.