Autore Topic: Visualizzazione immagini in gallery  (Letto 2228 volte)

Offline Nokias

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
Visualizzazione immagini in gallery
« il: 10 Giugno 2011, 12:47:44 CEST »
0
Buongiorno a tutti , devo andare a visualizzare una serie di immagini in una gallery ed il codice che ho utilizzato è questo:

Codice (Java): [Seleziona]
 public class ViewImmaginiA extends Activity {
            /** Called when the activity is first created. */
            @Override
            public void onCreate(Bundle icicle) {
                super.onCreate(icicle);
                setContentView(R.layout.immagini2);

                /* Find the gallery defined in the main.xml
                 * Apply a new (custom) ImageAdapter to it. */

                ((Gallery) findViewById(R.id.gallery))
                                .setAdapter(new ImageAdapter(this));
            }
         
            public class ImageAdapter extends BaseAdapter {
                /** The parent context */
                private Context myContext;
         
                /** URL-Strings to some remote images. */
                private String[] myRemoteImages = {
                                //"/sdcard/Multimedia/Immagini/image_LARGE_2.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_10.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_11.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_12.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_13.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_14.unknown",
                                "/sdcard/Multimedia/Immagini/image_LARGE_15.unknown",
                };
               
                /** Simple Constructor saving the 'parent' context. */
                public ImageAdapter(Context c) { this.myContext = c; }
         
                /** Returns the amount of images we have defined. */
                public int getCount() { return this.myRemoteImages.length; }
         
                /* Use the array-Positions as unique IDs */
                public Object getItem(int position) { return position; }
                public long getItemId(int position) { return position; }
         
                /** Returns a new ImageView to
                 * be displayed, depending on
                 * the position passed. */

                public View getView(int position, View convertView, ViewGroup parent) {
                    ImageView i = new ImageView(this.myContext);
                    //ImageView jpgView = (ImageView)findViewById(R.id.jpgview);
                    String myJpgPath;

                    myJpgPath = myRemoteImages[position];
                    //myJpgPath = "/sdcard/Multimedia/Immagini/image_LARGE_3.unknown";
                    BitmapFactory.Options options = new BitmapFactory.Options();
                    options.inSampleSize = 2;
                    Bitmap bm1 = BitmapFactory.decodeFile(myJpgPath, options);
                    //jpgView.setImageBitmap(bm1);
                    i.setImageBitmap(bm1);

                    /* Image should be scaled as width/height are set. */
                    i.setScaleType(ImageView.ScaleType.FIT_CENTER);
                    /* Set the Width/Height of the ImageView. */
                    i.setLayoutParams(new Gallery.LayoutParams(300, 250));
                    return i;
                }
         
                /** Returns the size (0.0f to 1.0f) of the views
                 * depending on the 'offset' to the center. */

                public float getScale(boolean focused, int offset) {
                        /* Formula: 1 / (2 ^ offset) */
                    return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
                }
            }
        }


Ma il risultato è questo:



Mentre io pensavo di fare per ogni schermata un'immagine che faccio scorrere...così invece sembra che vengono sovrapposte.

Oppure una cosa del genere dite che sia adatta??



Grazie a tutti per le risposte!! ;-)
« Ultima modifica: 10 Giugno 2011, 13:01:39 CEST da Nokias »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Visualizzazione immagini in gallery
« Risposta #1 il: 10 Giugno 2011, 14:10:55 CEST »
0
per la prima basta mettere un po di margin tra un'immagine e l'altra (Non so, ma ci sarà sicuramente il parametro per la gallery)
mentre la seconda soluzione è sicuramente la piu elegante, e ci sono vagonate di tutorial online per farlo,
basta che cerchi su google
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Nokias

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
Re:Visualizzazione immagini in gallery
« Risposta #2 il: 11 Giugno 2011, 13:49:49 CEST »
+1
Ho risolto con questo tutorial: Android: Web image, photo, picture gallery « Vikas Patel's Blog

Prendendo però le immagini da sdcard in questa maniera:

Codice (Java): [Seleziona]
public class GalleryView2 extends Activity {

        public String[] myRemoteImages = {
            //"/sdcard/Multimedia/Immagini/image_LARGE_2.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_10.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_11.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_12.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_13.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_14.unknown",
            "/sdcard/Multimedia/Immagini/image_LARGE_15.unknown",
};
       
       
    ImageView imageView;
       
        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Gallery ga = (Gallery)findViewById(R.id.Gallery01);
        ga.setAdapter(new ImageAdapter(this));
       
        imageView = (ImageView)findViewById(R.id.ImageView01);
        ga.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                        long arg3) {
                                //Toast.makeText(getBaseContext(),
                                        //      "You have selected picture " + (arg2+1) + " of Antartica",
                                                //Toast.LENGTH_SHORT).show();
                        String myJpgPath;
                               
                        myJpgPath = myRemoteImages[arg2];
                                BitmapFactory.Options options = new BitmapFactory.Options();
                                options.inSampleSize = 2;
                                Bitmap bm1 = BitmapFactory.decodeFile(myJpgPath, options);
                                imageView.setImageBitmap(bm1);
                        }
               
        });
       
    }
   
   
    public class ImageAdapter extends BaseAdapter {

        private Context ctx;
        int imageBackground;

        public ImageAdapter(Context c) {
                        ctx = c;
                        TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
                        imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
                        ta.recycle();
                        }
       
                public String[] myRemoteImages1 = {
                    //"/sdcard/Multimedia/Immagini/image_LARGE_2.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_10.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_11.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_12.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_13.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_14.unknown",
                    "/sdcard/Multimedia/Immagini/image_LARGE_15.unknown",
                };
               
        /** Returns the amount of images we have defined. */
         public int getCount() { return this.myRemoteImages1.length; }
       
         public Object getItem(int position) { return position; }
         public long getItemId(int position) { return position; }

         @Override
        public View getView(int position, View arg1, ViewGroup arg2) {
                ImageView iv = new ImageView(ctx);
                String myJpgPath;
                        myJpgPath = myRemoteImages[position];
                        BitmapFactory.Options options = new BitmapFactory.Options();
                        options.inSampleSize = 2;
                        Bitmap bm1 = BitmapFactory.decodeFile(myJpgPath, options);
                        iv.setImageBitmap(bm1);
                        iv.setScaleType(ImageView.ScaleType.FIT_XY);
                        iv.setLayoutParams(new Gallery.LayoutParams(150,120));
                        iv.setBackgroundResource(imageBackground);
                return iv;
        }
    }
}

E questo è il risultato davvero elegante come diceva Nicola_D :



Grazie comunque a tutti!

Offline kapata

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    android sdk
  • Sistema operativo:
    windows 7
Re:Visualizzazione immagini in gallery
« Risposta #3 il: 10 Agosto 2011, 12:25:50 CEST »
0
Salve a tutti
Nokias potresti postare il file zip col programma?Deve implementare una galleria di immagini prendendole da Url, ho seguito quel tutorial ma non riesco....grazie mille!