Autore Topic: Menu dinamico che permetta di cambiare un'immagine!  (Letto 1374 volte)

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Menu dinamico che permetta di cambiare un'immagine!
« il: 17 Settembre 2010, 20:50:31 CEST »
0
Salve a tutti,
sto cercando di costruire una sorta di galleria fotografica che contenga una sola immagine visibile e una serie di bottoni (il numero varia dinamicamente e sono anch'essi immagini). Al click di un bottone, l'immagine cambia con quella associata al pulsante premuto.

Vi allego uno screen per capire meglio:


Mi date qualche aiuto?

Grazie.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #1 il: 17 Settembre 2010, 20:56:15 CEST »
0
Inserisci il codice che hai scritto e ti diamo un aiuto.

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #2 il: 17 Settembre 2010, 21:13:52 CEST »
0
il problema è che non so proprio da dove partire :D mi sono oscuri tre punti:

1. come inserire dinamicamente nel layout i pulsanti a seconda del numero di immagini che ho.
2. come costruire un pulsante immagine...con imagebutton?
3. con quali metodi modificare l'imageview per visualizzare la nuova immagine.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #3 il: 17 Settembre 2010, 21:34:45 CEST »
0
Citazione
1. come inserire dinamicamente nel layout i pulsanti a seconda del numero di immagini che ho.

Predisponi un LinearLayout e tramite il metodo AddView aggiunti dinamicamente i bottoni
http://developer.android.com/reference/android/view/ViewGroup.html#addView(android.view.View, android.view.ViewGroup.LayoutParams)

Citazione
2. come costruire un pulsante immagine...con imagebutton?

Esatto

Citazione
3. con quali metodi modificare l'imageview per visualizzare la nuova immagine.

Tramite uno dei metodo setImage che ha la classe ImageView.

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #4 il: 17 Settembre 2010, 21:38:36 CEST »
0
Grazie mille.
Appena ho del codice lo posto per eventuali problemi!

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #5 il: 17 Settembre 2010, 22:10:36 CEST »
0
2. come costruire un pulsante immagine...con imagebutton?

Quelli dello screenshot mi sembrano più ImageView che ImageButton.
O ancora meglio una view con sfondo grigio xD.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #6 il: 20 Settembre 2010, 20:35:31 CEST »
0
Partendo da questo codice:

Codice (Java): [Seleziona]
...
imgView = (ImageView)findViewById(R.id.ImageView01);
Drawable drawable = LoadImageFromWebOperations(imageIDs[0]);
imgView.setImageDrawable(drawable);

LinearLayout ga = (LinearLayout) findViewById(R.id.ga);
for (int pos = 0; pos < 6; pos++) {
     ImageView c = new ImageView(this);
     c.setImageResource(R.drawable.link);
     ga.addView(c);
}
...

dovrei risolvere due problemi:

1. come faccio a settare un padding  ad ogni imageview all'interno del ciclo for?
2. per settare l'evento che setta dinamicamente imgView, ho provato a utilizzare setOnItemClickListener all'interno del ciclo for scritto sopra:

Codice (Java): [Seleziona]
c.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView parent, View v, int position, long id) {
          Drawable drawable = LoadImageFromWebOperations(imageIDs[position]);
          imgView.setImageDrawable(drawable);
     }
});

ma ecplise mi segnala errore e non capisco dove sbaglio..

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #7 il: 20 Settembre 2010, 22:06:37 CEST »
0
Per il padding puoi usare il metodo setPadding http://developer.android.com/reference/android/view/View.html#setPadding(int, int, int, int)

Che errore ti da eclipse? A occhio l'oggetto imgView dovrebbe essere dichiarato final perchè lo vai a richiamare dentro un'altra classe (che è il listener del click). L'hai messo?

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #8 il: 20 Settembre 2010, 23:06:21 CEST »
0
su "new OnItemClickListener()" mi dice OnItemClickListener cannot be resolved to a type.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #9 il: 20 Settembre 2010, 23:12:07 CEST »
0

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #10 il: 20 Settembre 2010, 23:44:54 CEST »
0
Sono quasi arrivato alla conclusione, mi manca solo un dettaglio:

Codice (Java): [Seleziona]
LinearLayout ga = (LinearLayout) findViewById(R.id.ga);
        for (int pos = 0; pos < 6; pos++) {
            ImageView c = new ImageView(this);
            c.setImageResource(R.drawable.link);
            c.setPadding(0,0,10,0);
            c.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Drawable drawable = LoadImageFromWebOperations(imageIDs[pos]);
                    imgView.invalidate();
                    imgView.setImageDrawable(drawable);
                }});
            ga.addView(c);
        }

il problema è qui, sulla variabile "pos":
Codice (Java): [Seleziona]
Drawable drawable = LoadImageFromWebOperations(imageIDs[pos]);"Cannot refer to a non-final variable pos inside an inner class defined in a different method"
 ... quindi più o meno quello che mi dicevi te prima! Come lo risolvo?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #11 il: 20 Settembre 2010, 23:48:46 CEST »
+1

Codice (Java): [Seleziona]
LinearLayout ga = (LinearLayout) findViewById(R.id.ga);
        for (int pos = 0; pos < 6; pos++) {
            ImageView c = new ImageView(this);
            c.setImageResource(R.drawable.link);
            c.setPadding(0,0,10,0);
            final int posizione = imageIDs[pos];
            c.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Drawable drawable = LoadImageFromWebOperations(posizione);
                    imgView.invalidate();
                    imgView.setImageDrawable(drawable);
                }});
            ga.addView(c);
        }

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #12 il: 21 Settembre 2010, 00:11:19 CEST »
0
perfetto funziona alla grande..davvero l'ultima curiosità..questo è il metodo finale:

Codice (Java): [Seleziona]
private void BuildGallery(int i) {
        LinearLayout ga = (LinearLayout) findViewById(R.id.ga);
        ga.invalidate();
        for (int pos = 0; pos < 6; pos++) {
                ImageView c = new ImageView(this);
                if(pos == i)
                        c.setImageResource(R.drawable.arrow);
                else
                        c.setImageResource(R.drawable.link);
                c.setPadding(0,0,4,0);
                final int posizione = pos;
                c.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                Drawable drawable = LoadImageFromWebOperations(imageIDs[posizione]);
                                imgView.invalidate();
                                imgView.setImageDrawable(drawable);
                                BuildGallery(posizione);
                        }});
                ga.addView(c);
        }
}
Vorrei distinguere due tipi di imageView: quella selezionata dalle altre. Per fare questo ho impostato i due rami if/else e richiamato il metodo BuildGallery all'interno di onclick. Però il metodo invalidate sul LinearLayout (parent delle imageview) non mi elimina quello che avevo precedentemente disegnato (ovvero la lista vecchia).

Offline fedeair10

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #13 il: 24 Settembre 2010, 22:41:22 CEST »
0
Non ne vengo fuori...come faccio ad invalidare la lista creata precedentemente e ricostruirla?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Menu dinamico che permetta di cambiare un'immagine!
« Risposta #14 il: 24 Settembre 2010, 22:56:26 CEST »
0
Cosa intendi con lista?