Autore Topic: layout e logica di densità  (Letto 1120 volte)

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
layout e logica di densità
« il: 19 Gennaio 2011, 20:37:06 CET »
0
Non so se è la sezione giusta ma vorrei delle delucidazioni per quanto riguarda la densitá e la risoluzione.

Allora io ragiono in pixel perchè ho sempre sviluppato per web che alla fine è 72dpi.

Ammettendo che ho un pulsante di 120x80px. Mi pare ovvio che se lo vedo con un 480x800 lo vedo come 1/5 in larghezza e 1/10 in altezza ed è ovvio che se lo vedo con un 640x320 il pulsante lo vedo più grande.

Lo so che si usano i dp per creare layout adatti per tutti i device ma mi sfugge la logica di sviluppo.
Concettualmente conosco le unitá di misura ma come si applica il concetto sul layout devo ancora assimilarlo.




Sent from my GT-I9000 using Tapatalk
La domanda stupida è quella che non si fa

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:layout e logica di densità
« Risposta #1 il: 19 Gennaio 2011, 20:54:59 CET »
+1
Si, come giustamente dici è una logica sostanzialmente diversa da quella del web, che a dirla tutta non ha una quantità di dpi prefissata, semplicemente perchè si da' per scontato che un pixel di immagine viene praticamente sempre mappato su un pixel fisico. Nei device compatti come i telefoni, ma anche i tablet, questa sarebbe stata una limitazione, per questo hanno superato il concetto per cui 1 pixel di immagine = 1 pixel fisico.

Per i pulsanti, se tu definissi la dimensione esatta in pixel fisici, come hai già osservato, dovresti preparare e testare un layout con immagini tutte custom, per ciascuna risoluzione possibile. Decisamente non fattibile. Meglio definire il layout in un modo per cui è irrilevante la risoluzione, tu specifichi il contenuto in modo "relativo", poi ciascun dispositivo rimappa il layout sulla sua risoluzione.

Per continuare il parallelismo con il web, tu pensa il layout a dp come un layout web fatto a dimensioni percentuali (è quasi così). Ed anche il progetto del layout è davvero molto simile alla composizione di blocchi DIV all'interno di una pagina web (esempio pensa ai LinearLayout verticali come a blocchi DIV nei quali metti altri blocchi DIV, non sai le dimensioni ma sai che si allineeranno in un certo modo). Certo non viene perfetto come un layout pixel-perfect, ma non tanto peggio.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:layout e logica di densità
« Risposta #2 il: 20 Gennaio 2011, 05:36:06 CET »
0
Quindi per vedere lo stesso pulsante uguale in tutti i dispositivi devo mettere

 120dpx80pdp ma se come dici te non ha una quantità di dpi prefissata come faccio a sapere che corrisponde ad una percentuale x su un display e la stessa percentuale su un altro display.
La domanda stupida è quella che non si fa

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:layout e logica di densità
« Risposta #3 il: 20 Gennaio 2011, 08:37:59 CET »
0
Quindi per vedere lo stesso pulsante uguale in tutti i dispositivi devo mettere

 120dpx80pdp ma se come dici te non ha una quantità di dpi prefissata come faccio a sapere che corrisponde ad una percentuale x su un display e la stessa percentuale su un altro display.

I dip sono "device independent pixel". L'idea è quella che, se fai un pulsante di 40dip, esso apparirà delle stesse dimensioni fisiche (millimetri sullo schermo) su tutti i device, a prescindere da quanti pixel fisici prenderà. Sui dispositivi ad alta densità saranno 100px, su quelli a bassissima saranno 25px (dico numeri caso). Questa peculiarità ti assicura la stessa user experience, perchè la stessa applicazione apparirà più o meno delle stesse dimensioni su tutti i device, e cosa ancora più importante, i bottoni saranno a dimensione di "dito" per tutti (perchè i dip garantiscono che le dimensioni fisiche).

Non è propriamente tutto scalato in percentuale, ma quasi (dipende dalle dimensioni dei display dei device, dai dpi, dal fattore di forma, etc). Nel 95% dei casi, un layout pensato per l'indipendenza dal device, funziona automaticamente dappertutto. Nel rimanente 5% l'SDK ti permette di definire layout personalizzati per le varie classi di risoluzioni.

Torno alla tua domanda e te ne pongo una seconda: è proprio essenziale fissare in modo preciso le dimensioni del bottone? Non va bene se piazzi il bottone dove deve stare e lasci al framework che lo dimensioni "da solo" in base al contenuto ed ai vicini?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:layout e logica di densità
« Risposta #4 il: 20 Gennaio 2011, 09:12:29 CET »
0
se è un Button di sistema ok, hai ragione, ma se è un pulsante immagine cioè customizzato devo conoscere perfettamente la metodologia da usare in tutti i casi possibili.
La domanda stupida è quella che non si fa

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:layout e logica di densità
« Risposta #5 il: 20 Gennaio 2011, 10:19:14 CET »
0
Non vorrei scrivere castronerie ma, per quanto ho capito io, il trucco è questo: su mdpi 1px = 1dp, sapendo questo puoi facilmente crearti tutta la grafica in mdpi, per poi ricavarti le dimensioni in pixel delle immagini per le altre densità (ldpi e hdpi) eseguendo delle semplici proporzioni.
Ad esempio se un immagine è larga 80px in mdpi (160dpi) puoi ricavarti la dimensione in pixel in hdpi (240dpi) risolvendo questa banalissima equazione: 80/160=x/240 -> x=240*80/160.
Se ti interessa ottenere misure in ldpi (120dpi) è sufficiente sostituire nell'equazione 240 con 120 (o, molto più semplicemente, dividere per due le misure hdpi ;)).
« Ultima modifica: 20 Gennaio 2011, 10:20:48 CET da JD »
È 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 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:layout e logica di densità
« Risposta #6 il: 20 Gennaio 2011, 11:41:01 CET »
0
se è un Button di sistema ok, hai ragione, ma se è un pulsante immagine cioè customizzato devo conoscere perfettamente la metodologia da usare in tutti i casi possibili.
i bottoni personalizzati di solito si fanno con le 9patch drawable apposta perche cosi poi si possono adattare a diverse dimensioni...dai un occhio a quelle!
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 gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:layout e logica di densità
« Risposta #7 il: 20 Gennaio 2011, 12:00:54 CET »
0
si delle 9Patch sono esperto perchè in Actionscript si usano da diversi anni anche se li non abbiamo il problema delle densità.
La domanda stupida è quella che non si fa

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:layout e logica di densità
« Risposta #8 il: 20 Gennaio 2011, 13:29:25 CET »
0
Ringrazio tutti per le risposte... questo forum è fantastisco... non so come fare per contribuire alla sua crescita... fatemelo sapere  ;-)

Per quanto riguarda i pulsanti forse è meglio che quando svilupperò la mia applicazione vi farò delle domande più specifiche

La domanda stupida è quella che non si fa

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:layout e logica di densità
« Risposta #9 il: 20 Gennaio 2011, 13:47:45 CET »
0
non so come fare per contribuire alla sua crescita... fatemelo sapere  ;-)

Una cosa molto semplice che puoi fare è questa: ti scontri e riesci a risolvere un problema non ancora trattato nei tutorials? Scrivi tu un tutorial a riguardo :)

Se invece bastano poche righe di codice per risolvere il problema crea un nuovo Snippet nella omonima sezione ;)
È 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 gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:layout e logica di densità
« Risposta #10 il: 20 Gennaio 2011, 13:54:15 CET »
0
Ok non mancherò...
La domanda stupida è quella che non si fa