Autore Topic: Ottenere larghezza di una ImageView  (Letto 687 volte)

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Ottenere larghezza di una ImageView
« il: 14 Marzo 2013, 22:34:41 CET »
0
Prima di tutto è questa la sezione corretta? Ero indeciso se postare qui,in View e Layouts o in Grafica 2D :-\

Ora passiamo al problema: nella MainActivity,più precisamente nel metodo onCreate,dopo aver inizializzato un'ImageView,se vado a richiamare il metodo getWidth() di questa,mi ritorna il valore 0,come è possibile? Ho cercato un po' su internet e su una discussione su StackOverflow si parlava del fatto che getWidth() viene richiamato troppo presto,e allora mi domando,quando e dove devo richiamarlo per ottenere la larghezza della mia ImageView? Forse sbaglio come ottengo l'immagine dell'ImageView? Io al momento procedo così:

Codice (Java): [Seleziona]
ImageView I=new ImageView(this); // creo l'oggetto
I.setImageResource(R.drawable.nomeimmagine);

devo forse procedere in modo diverso? Comunque sia ho interesse nel ricavarmi la larghezza di un'immagine in modo automatico,altrimenti mi sarebbe bastato impostare le dimensioni tramite xml e il problema non c'era,però non posso mica mettermi a scrivere l'xml per una carrellata di immagini  :D
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™

Offline elfo83

  • Utente normale
  • ***
  • Post: 287
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Ottenere larghezza di una ImageView
« Risposta #1 il: 15 Marzo 2013, 15:50:38 CET »
0
Vuoi ottenere le dimensioni dell'immagine che si trova nella  tua cartella drawable o le dimensioni dell'imageView che contiene l'immagine?

Post unito: 15 Marzo 2013, 16:33:15 CET
Se vuoi sapere le dimensioni della tua immagine senza allocare bytes in memoria...
Codice (Java): [Seleziona]
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
fonti: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Se vuoi sapere le dimensioni della tua view che contiene l'immagine, basta chiamare getWidth() e getHeight() sulla view una volta che l'hai inizializzata e le hai assegnato l'immagine..
« Ultima modifica: 15 Marzo 2013, 16:33:15 CET da elfo83, Reason: Merged DoublePost »

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Re:Ottenere larghezza di una ImageView
« Risposta #2 il: 15 Marzo 2013, 19:22:03 CET »
0
Vuoi ottenere le dimensioni dell'immagine che si trova nella  tua cartella drawable o le dimensioni dell'imageView che contiene l'immagine?

Post unito: 15 Marzo 2013, 16:33:15 CET
Se vuoi sapere le dimensioni della tua immagine senza allocare bytes in memoria...
Codice (Java): [Seleziona]
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
fonti: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Se vuoi sapere le dimensioni della tua view che contiene l'immagine, basta chiamare getWidth() e getHeight() sulla view una volta che l'hai inizializzata e le hai assegnato l'immagine..
La soluzione che mi hai proposto la trovo poco efficiente per un grande numero di immagini,quello che vorrei fare sarebbe ottenere la larghezza con getWidth() dopo aver inizializzato l'ImageView,come nell'esempio nel primo post,il problema è che quando utilizzo getWidth() mi ritorna 0.Il problema è legato forse al fatto che richiamo getWidth() nel metodo onCreate dell'activity? da dove dovrei richiamarlo? ho provato ad aggiungere onWindowFocusChanged(boolean hasFocus) con l'override ma non sembra funzionare...
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™