Autore Topic: Scalare una listview item custom???  (Letto 579 volte)

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Scalare una listview item custom???
« il: 29 Maggio 2013, 12:37:44 CEST »
0
Ho un problema con una listview custom. Funziona tutto ma quando la provo su device differenti cambiano le dimensioni.
Secondo me è una domanda generica nel senso che ho un problema sulla logica che devo seguire nella costruzione di un layout.

Voglio fare una cosa simile:



In tutti gli esempi che ho trovato grossomodo si carica l'immagine e poi si vanno a posizionare gli altri elementi tenendo tutto relativo a qualcosa.
In un caso simile a quello dell'immagine carico l'immagine dentro un linearlayout e allineo il titolo a destra del linearlayout con un margine in alto.
Dopodiché la seconda e terza riga di testo sono sempre relative alla riga che precede (la seconda è ancorata alla prima, la terza alla seconda, etc).

Questo è quello che faccio e le posizioni relative vanno bene. Quello che non va bene CONCETTUALMENTE è la dimensione del font e la dimensione dell'immagine. Assumiamo che io parto da zero e ho tutto espresso in dp o dpi.

Il font ha dimensioni diverse quindi io debbo specificare per ogni riga delle dimensioni diverse. Se io lavoro a pixel ovviamente succede che il testo diventa minuscolo su un tablet.

Penso di risolvere mettendo un linearlayout orizzontale con dentro un linearlayout per l'immagine e un altro linearlayout verticale con il testo. L'idea sarebbe quella di fare in modo che il linearlayout dell'immagine "filli" il linearlayout principale (o meglio il contrario) e il secondo linearlayout me lo scalo col layout_weight in modo da essere certo che il titolo occupi il 20% il sottotitolo il 15% e così via. E' corretta concettualmente questa impostazione?

Se è corretta arrivo al secondo problema. Poiché la dimensione del linearlayout verticale è quella che mi determina la dimensione della listview item, una immagine di 64x64 pixel dovrebbe adattarsi alla risoluzione.

Nel senso che se io la metto dentro drawable-nodpi mi rimane 64x64 e sono punto e a capo col problema dei font-dimensione-formica.  :-(
Quando carico una bitmap da drawable questa non esce automaticamente a 64x64 ma viene in qualche modo scalata quindi potrei ovviare a questo inghippo. Il problema però sorge quando vado a caricarmi immagini da SD. Quelle immagini non sono scalate, vengono tenute pari pari alla loro risoluzione "naturale".

Quindi ricapitolando quello che voglio provare a fare è la seguente cosa:
- caricarmi una immagine "dummy" da drawable
- vedere a che risoluzione viene scalata dal sistema
- caricare l'immagine da SD impostando che voglio come risoluzione quella della dummy scalata
- a quel punto la mia listviewitem si scala come altezza sulla risoluzione della mia immagine (linearlayout dentro linearlayout) e la dimensione del testo si adatta PERCENTUALMENTE grazie al layout weight impostato sul secondo linearlayour che matcha il parent il quale wrappa il content del primo layout che wrappa il content dell'immagine.

Domanda: mi sto incartando io ed esiste un sistema più semplice oppure per una BANALE listview item custom gestire le dimensioni è un casino di questo tipo??????

 :-(

Offline Nicola_D

  • Moderatore
  • 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:Scalare una listview item custom???
« Risposta #1 il: 29 Maggio 2013, 14:14:37 CEST »
+1
puoi sempre farti uno style o usare un file "dimension.xml" per ogni risoluzione in cui specifichi il text size (di solito in 'sp' e non dp)
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 undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Scalare una listview item custom???
« Risposta #2 il: 29 Maggio 2013, 15:09:21 CEST »
0
Grazie della risposta Nicola!  :-)

Ok quindi se io mi tengo il layout così come è e mi scalo il font con un file dimensions.xml ottengo l'effetto voluto sul testo ma ho ancora il problema dell'immagine.
Nel senso che se l'immagine rimane uguale rischio che il testo non sia proporzionato.

Pensi che sia sensato fare quello che ho scritto (leggere una immagine dummy (che mi serve comunque per gestire errori) vedere quanto è grande, scalare quelle da SD) unito a quello che suggerisci?

Offline Nicola_D

  • Moderatore
  • 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:Scalare una listview item custom???
« Risposta #3 il: 29 Maggio 2013, 15:57:41 CEST »
+2
io le immagini le metterei di altezza fissa (e anche larghezza ovviamente) e poi gli darei un fitXY in modo che se è più grande si adatta.
Come altezza fissa puoi mettere un valore che decidi te (sempre usando il file dimension.xml per ogni risoluzione) oppure ci sono dei valori di default in android tipo ?attr listviewheight ecc (devi cercare, non ricordo).
"?android:attr/listPreferredItemHeight"
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 undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Scalare una listview item custom???
« Risposta #4 il: 29 Maggio 2013, 16:55:59 CEST »
0
Questa del listpreferreditemheight non la sapevo!!! In pratica l'immagine ha altezza uguale alla dimensione di default della listview item?
Potrebbe essere quello che fa al caso mio.... faccio qualche prova!  :-)