Autore Topic: [Dubbi] Supportare schermi multipli  (Letto 1852 volte)

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
[Dubbi] Supportare schermi multipli
« il: 15 Marzo 2013, 15:30:44 CET »
0
Salve,
intanto mi presento, sono un nuovo utente, studente in ingegneria informatica e mi sono dedicato allo sviluppo di applicazioni da quasi un anno.
Il mio problema sorge sviluppando un'app abbastanza complessa, ricca di immagini anche molto pesanti. Capita spesso che l'app crashi per OutOfMemoryError. Secondo me il problema nasce da come gestisco i layout (troppo complessi secondo me), mi spiego meglio: per cercare di supportare tutti gli schermi utilizzo molto i Linearlayout e i RelativeLayout per cercare di posizionare i widget in modo che si adattino al background su ogni tipo di schermo. Nell'immagine che ho allegato il rettangolo blu è un LinearLayout e gli altri sono Relative, ma solo quelli rossi contengono widget, quelli gialli sono "spessori" che fanno si che io possa posizionare correttamente quelli rossi per poi, ad esempio, mettere una textView esattamente al centro.

Mi rendo conto che è un metodo abbastanza becero per lavorare, ma non sono riuscito a trovarne altri per disegnare layout così complessi.
Qualcuno sa darmi qualche dritta per migliorare la creazione dei layout.

Grazie

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:[Dubbi] Supportare schermi multipli
« Risposta #1 il: 15 Marzo 2013, 17:12:06 CET »
0
esistono i margin nelle view per spaziare gli elementi....
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 mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #2 il: 15 Marzo 2013, 17:16:37 CET »
0
Intanto grazie per la risposta. Si lo so dei margin ma come faccio ad impostare un numero di pixel se voglio supportare tutto gli schermi?! e usare i dip, non conosco la densità dello schermo quando uso i layout.

Offline Eu4ia

  • Utente junior
  • **
  • Post: 93
  • Respect: +16
    • Mostra profilo
  • Play Store ID:
    Eu4ia
  • Sistema operativo:
    Ubuntu 11.10 + Windows 7
Re:[Dubbi] Supportare schermi multipli
« Risposta #3 il: 15 Marzo 2013, 17:18:35 CET »
0
E' proprio per quello che si usano i dp, proprio perchè sono indipendenti dallo schermo / risoluzioni utilizzati dai device (quasi eheh).
Se ti sono stato utile premi "Thanks" ;-)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:[Dubbi] Supportare schermi multipli
« Risposta #4 il: 15 Marzo 2013, 17:25:45 CET »
0
Consiglio di leggere attentamente questa pagina:

Supporting Multiple Screens | Android Developers

Il "trucco" sta tutto nel pensare che tutti i telefoni hanno praticamente la stessa dimensione in termini di DIP (vedi immagine sotto). Come questi DIP sono convertiti in pixel fisici è una cosa che non interessa minimamente. Pensando tutto in DIP, praticamente è come se tu progettassi automaticamente per tutti i display possibili. Ovviamente a questo ci sono dei limiti, ma il concetto è questo.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline brissio

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: +6
    • Mostra profilo
Re:[Dubbi] Supportare schermi multipli
« Risposta #5 il: 15 Marzo 2013, 17:30:16 CET »
0
esatto. usa i dip (dp) e gli 'spessori' implementali tramite i padding
Non mi sembra assolutamente un layout complesso

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #6 il: 15 Marzo 2013, 17:43:08 CET »
0
ok un'altra cosa: adesso ho messo tutto con i dp utilizzando nell'editor dei layout il 2.7"; ora però se cambio schermo, ad esempio uso il 7", si sposta tutto!! Devo fare quindi 4 layout per i 4 tipi di schermo, small, normal, large e x-large?!

Offline Eu4ia

  • Utente junior
  • **
  • Post: 93
  • Respect: +16
    • Mostra profilo
  • Play Store ID:
    Eu4ia
  • Sistema operativo:
    Ubuntu 11.10 + Windows 7
Re:[Dubbi] Supportare schermi multipli
« Risposta #7 il: 15 Marzo 2013, 17:48:21 CET »
0
Si devi gestirli tutti e 4 a meno che non lo fai a livello di programmazione.
Se ti sono stato utile premi "Thanks" ;-)

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #8 il: 15 Marzo 2013, 17:50:13 CET »
0
Ragazzi, grazie a tutti, gentilissimi!!!

Post unito: 15 Marzo 2013, 18:42:37 CET
Scusate ritorno sul pezzo perchè stò provando a creare i layout ma ho trovato un problema: stò facendo il layout per l'mdpi ma ci sono due dimensioni di schermo con la densità di pixel media. Il risultato è questo!! Come posso risolvere?!
« Ultima modifica: 15 Marzo 2013, 18:42:38 CET da mattsca, Reason: Merged DoublePost »

Offline Eu4ia

  • Utente junior
  • **
  • Post: 93
  • Respect: +16
    • Mostra profilo
  • Play Store ID:
    Eu4ia
  • Sistema operativo:
    Ubuntu 11.10 + Windows 7
Re:[Dubbi] Supportare schermi multipli
« Risposta #9 il: 15 Marzo 2013, 23:55:29 CET »
0
Credo ci sia un errore di questo tipo nella tua valutazione sull'aspetto grafico...

QVGA (che poi è Quarter VGA cioè 1/4 della dimensione VGA) è dichiarata come ldpi come potrai vedere nella Tabella 3 in fondo a questa pagina:
http://developer.android.com/guide/practices/screens_support.html

FWGA, invece è dichiarata come mdpi (in quell'emulatore) come potrai constatare da questa pagina:
http://developer.android.com/tools/revisions/platforms.html

E poi se mi posso permetter, io investirei tempo su altro che non "small screen in ldpi" vista la distribuzione % di dispositivi con quelle caratteristiche come potri vedere in questa pagina alla voce "Screen Size and Densities" (non capisco perchè sono mesi che google non aggiorna le ultime 2 tabelle  :-\)
http://developer.android.com/about/dashboards/index.html

Spero di aver colto il tuo problema  ;-)
Se ti sono stato utile premi "Thanks" ;-)

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #10 il: 16 Marzo 2013, 00:12:40 CET »
0
Se possibile mi hai messo ancora più confusione!!! :-P no scherzo non è colpa tua sono io che venendo da iOS ho un'altra forma mentis in fatto di grafica. Comunque secondo la tabella 3 nella pagina che mi hai linkato, ad esempio, schermi che vanno da 320x480 a 1280x800 possono essere mdpi; quindi se io volessi teoricamente coprire tutti i device android al mondo dovrei fare 16 cartelle layout diverse, ldpi small screen, ldpi medium screen, ldpi large screen e così via?!

Offline Eu4ia

  • Utente junior
  • **
  • Post: 93
  • Respect: +16
    • Mostra profilo
  • Play Store ID:
    Eu4ia
  • Sistema operativo:
    Ubuntu 11.10 + Windows 7
Re:[Dubbi] Supportare schermi multipli
« Risposta #11 il: 16 Marzo 2013, 00:26:20 CET »
0
hai ragione, la frammentazione dovuta alle svariate tipologie di dispositivi è un problema in "quest'altro mondo" eheh
A questo punto però la faccenda la possiamo complicare di parecchio in quanto tecnicamente i layout possono variare non solo in funzione delle dimensioni e risoluzioni in dip, ma anche per linguaggio portrait/landscape ecc

Non vorrei farti venire mal di testa eheheh  ;-)
Se ti sono stato utile premi "Thanks" ;-)

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #12 il: 16 Marzo 2013, 00:30:23 CET »
0
Ok, quindi tralasciando il landscape (mi accontento del portrait), la "strategia" migliore è quella di scegliersi un target di "densità di pixel" e di schermi in generale, e fare i layout per loro?!

Offline Eu4ia

  • Utente junior
  • **
  • Post: 93
  • Respect: +16
    • Mostra profilo
  • Play Store ID:
    Eu4ia
  • Sistema operativo:
    Ubuntu 11.10 + Windows 7
Re:[Dubbi] Supportare schermi multipli
« Risposta #13 il: 16 Marzo 2013, 00:38:23 CET »
+1
Forse c'è qualcun'altro che può dare la propria testimonianza, ma io ho adottato inizialmente questa filosofia nelle mie app:
se sommo le percentuali da normal ad xlarge e da mdpi a xhdpi (anche se esiste anche xxhdpi a livello software probabilmente per supportare risoluzioni ancora più alte, forse imminenti) ho coperto quasi il 97% dei dispositivi planetari android, direi che può essere un buon compromesso!

Quindi layout da mdpi ad xlarge ed immagini/icone ecc da mdpi in su.

Spero sia una buona strategia altrimenti attendiamo fiduciosi qualcuno con idee migliori  ;-)
Se ti sono stato utile premi "Thanks" ;-)

Offline mattsca

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:[Dubbi] Supportare schermi multipli
« Risposta #14 il: 16 Marzo 2013, 00:45:01 CET »
0
Guarda io ti ringrazio infinitamente per avermi ascoltato e avermi fugato dubbi che erano latenti da parecchio!! :D