Autore Topic: Aggiornare Gallery - ImageAdapter  (Letto 2566 volte)

Offline alanTuring

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    Windows 7
Aggiornare Gallery - ImageAdapter
« il: 17 Febbraio 2012, 11:59:57 CET »
+1
Ciao Ragazzi, ho iniziato da poco tempo a sviluppare app. Ho fatto un po di ricerche nel forum ma non sono riuscito a trovare quello che cercavo...
Ovvero dato  un path per il salvataggio delle foto e una gallery, aggiorna quest'ultima ogni volta si effettua uno scatto.

Per fare questo ho eseguito i tutorial classici per implementare una gallery ma ho modificato la classe ImageAdapter come segue:

Codice (Java): [Seleziona]
/**
 *
 * @author alanTuring
 *
 */

public class ImageAdapter extends BaseAdapter {
        int mGalleryItemBackground;
        private Context mContext;

        public String[] myRemoteImages1;

        private static String pathImg;
        private File mediaStorageDir;

        public ImageAdapter(Context c) {
                mContext = c;
                TypedArray attr = mContext
                                .obtainStyledAttributes(R.styleable.CameraViewGallery);
                mGalleryItemBackground = attr.getResourceId(
                                R.styleable.CameraViewGallery_android_galleryItemBackground, 0);
                attr.recycle();

                // verifico l'esistenza del path personalizzato
                this.mediaStorageDir = new File(
                                Environment
                                                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                                "MyCameraApp");

                // se non esiste tale percorso lo creo
                if (!mediaStorageDir.isDirectory())
                        mediaStorageDir.mkdir();

                // mi memorizzo il path
                pathImg = mediaStorageDir.getPath();
                // inizializzo la lista delle immagini
                myRemoteImages1 = new String[0];
        }

        public int getCount() {
                return myRemoteImages1.length;
        }

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

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

        public View getView(int position, View arg1, ViewGroup arg2) {
                setMyRemoteImages1();
                ImageView iv = new ImageView(mContext);
                String myJpgPath;
                myJpgPath = myRemoteImages1[position];
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 10;
                Bitmap bm1 = BitmapFactory.decodeFile(myJpgPath, options);
                iv.setImageBitmap(bm1);
                iv.setScaleType(ImageView.ScaleType.FIT_XY);
                iv.setLayoutParams(new Gallery.LayoutParams(150, 120));
                iv.setBackgroundResource(mGalleryItemBackground);
                return iv;
        }

        /**
         * Aggiorno la lista delle immagini di un determinato path.
         */

        private void setMyRemoteImages1() {

                if (mediaStorageDir.list() != null) {
                        this.myRemoteImages1 = new String[mediaStorageDir.list().length];
                        for (int i = 0; i < mediaStorageDir.list().length; i++) {

                                myRemoteImages1[i] = pathImg + "/" + mediaStorageDir.list()[i];

                        }
                }

        }

}

Per qualsiasi chiarimento sono a vostra disposizione  ;-)

Fatemi sapere se vi è servito.

Saluti da alanTuring   8-)

Offline alanTuring

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    Windows 7
Re:Aggiornare Gallery - ImageAdapter
« Risposta #1 il: 17 Febbraio 2012, 12:50:51 CET »
0
Ragazzi se usate
Codice (XML): [Seleziona]
android:screenOrientation="landscape" molto probabilmente le foto saranno orientate in maniera sbagliata per  risolverlo io ho aggiunto il seguente pezzo di codice nel metodo "getView" prima del set del Bitmap (vi consiglio di giocare con il postRotate per ottenere quello che desiderate):


Codice (Java): [Seleziona]
Matrix matrix = new Matrix();
matrix.postRotate(-90);
bm1 = Bitmap.createBitmap(bm1, 0, 0, w, h, matrix, false);