So erstellen Sie eine benutzerdefinierte Galerie mit Bilder von einem bestimmten Ordner auf der SD-Karte?

Ich habe den API-demos von android (/ApiDemos/src/com/example/android/apis/view/Gallery1.java) , aber Sie nehmen Bilder aus dem res-Ordner in das Projekt. Ich will erstellen Sie eine Galerie der Bilder, die sind in dem Ordner: /mnt/sdcard/Android/data/com.myapp/files/Bilder/

Alles was ich tun konnte, war dieser code, die, nehme ich an, zeigt alle Bilder.

public class ExistingPicGallery extends Activity {

private Cursor cursor;
private int columnIndex;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallery1);
    Gallery g=(Gallery)findViewById(R.id.gallery1);
    String[] projection = {MediaStore.Images.ImageColumns._ID,MediaStore.Images.Thumbnails.IMAGE_ID, 
            MediaStore.Images.Thumbnails.KIND};
    //Create the cursor pointing to the SDCard
    String selection = MediaStore.Images.Thumbnails.KIND +
            "="  + //Select only mini's 
                            MediaStore.Images.Thumbnails.MINI_KIND; 
    cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
            projection, 
            selection,
            null,
            null);
    //Get the column index of the image ID
    columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
    g.setAdapter(new ImageAdapter(this));

    g.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            Toast.makeText(ExistingPicGallery.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });

}



 public class ImageAdapter extends BaseAdapter {

     int mGalleryItemBackground;

      public ImageAdapter(Context c) {
            context = c;

            TypedArray a = obtainStyledAttributes(R.styleable.ExistingPicGallery);
            mGalleryItemBackground = a.getResourceId(
                    R.styleable.ExistingPicGallery_android_galleryItemBackground, 0);
            a.recycle();
        }

        public int getCount() {
            return cursor.getCount();
        }

        public Object getItem(int position) {
            return position;
        }

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

        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView i = new ImageView(context);
            //Move cursor to current position
            cursor.moveToPosition(position);
            //Get the current value for the requested column
            int imageID = cursor.getInt(columnIndex);
            //obtain the image URI
            Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
            String url = uri.toString();
            //Set the content of the image based on the image URI
            int originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
            Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(),
                            originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
            i.setImageBitmap(b);
            i.setLayoutParams(new Gallery.LayoutParams(150, 100));
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            i.setBackgroundResource(0);
            return i;
        }

        private Context context;


        ;
    }
}

Ich habe viel Zeit damit verbracht, auf der Suche nach Ihrer Lösung, aber kein Erfolg..

Was ist das problem mit diesem code? Alle Fehler - /exception geworfen?
Was ist das problem mit dem code? Was brauchen Sie Hilfe?
ist kein problem mit diesem code ist es perfekt. Aber ich will den code, nehmen Sie die Bilder, die sind in dem Ordner: /mnt/sdcard/Android/data/com.myapp/files/Pictures/ und zeigt in der custom-gallery.. danke im Voraus
es gibt keine Ausnahme, nur das ist nicht der code, den ich Suche.

InformationsquelleAutor vishalaksh | 2011-12-23

Schreibe einen Kommentar