Autore Topic: Layout per più dispositivi  (Letto 614 volte)

Offline frar

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab a
  • Sistema operativo:
    Mac OS X 12.6
Layout per più dispositivi
« il: 03 Giugno 2017, 22:06:55 CEST »
0
Ciao a tutti, sono Francesco e sono nuovo del forum ed anche di android studio.
Sto cercando di creare la mia prima app e volevo sapere come fare per creare un layout per più dispositivi. Sono riuscito a creare un layout per tablet da 10 e 7 pollici e per smartphone da 5, il problema sta quando vado a creare un layout per dispositivi con display più piccolo di 5 pollici. Qualcuno sa aiutarmi?
Garzie

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 804
  • Respect: +168
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 10 x64
Re:Layout per più dispositivi
« Risposta #1 il: 05 Giugno 2017, 09:21:50 CEST »
0
Come hai creato i vari layout finora?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline frar

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab a
  • Sistema operativo:
    Mac OS X 12.6
Re:Layout per più dispositivi
« Risposta #2 il: 05 Giugno 2017, 21:27:03 CEST »
0
Come hai creato i vari layout finora?
Ciao, grazie della risposta.
I layout li ho creati con RelativeLayout ed ho fatto 4 cartelle, una rinominata layout-sw600dp per i tablet da 7 pollici, una layout-sw720dp per i tablet da 10 pollici, una layout e una layout-land. Gli ultimi due li utilizzano tutti gli smartphon. C'è un modo per creare un layout da far utilizzare solo da smartphone da 4 pollici fino a 4.8 più o meno?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 804
  • Respect: +168
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 10 x64
Re:Layout per più dispositivi
« Risposta #3 il: 05 Giugno 2017, 23:08:43 CEST »
0
Allora: considera che il default (ossia la cartella che si chiama "layout" e basta) è usata per tutte le dimensioni che non sono specificate altrimenti, quindi per supportare i display inferiori a 5 pollici dovresti:

- creare la cartella "layout-sw380dp" e metterci dentro il contenuto attualmente in "layout".
380 è un valore approssimato che indica la dimensione minore di un dispositivo di circa 5 pollici
- mettere i layout per i dispositivi inferiori a 5 pollici nella cartella "layout"

fatto.

Quello che ottieni è che android userà le seguenti cartelle:

fino a 380 dpi di larghezza (corrispondente circa ad un display 5 pollici) -> cartella "layout"
da 380 dpi fino a 600 dpi (da 5 a 7 pollici) -> cartella "layout-sw380dp"
da 600 dpi fino a 720 dpi (da 7 a 10 pollici) -> cartella "layout-sw600dp"
da 720 dpi in poi (10 pollici ed oltre) -> cartella "layout-sw720dp"

NOTA: "sw380dp" significa "display il cui lato inferiore è 380 dp". Quando si parla di display 5 pollici, si intende la diagonale. Stabilire la dimensione del lato inferiore per questi display non è banale dato che dipende anche dal rapporto larghezza/altezza. Io ho calcolato 380 dpi prendendo come riferimento un dispositivo 4.8 pollici; potresti dover alterare il valore perché si adatti al tuo target

NOTA II: "layout-land" ha la precedenza. Questo significa che quando il dispositivo è orizzontale si usa il layout definito in "layout-land" a prescindere dalla dimensione del display. Eventualmente aggiungi dei selettori extra come "layout-sw380dp-land" per selezionare un layout orizzontale valido solo per i dispositivi fino a 5 pollici.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline frar

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab a
  • Sistema operativo:
    Mac OS X 12.6
Re:Layout per più dispositivi
« Risposta #4 il: 06 Giugno 2017, 01:14:36 CEST »
0
Allora: considera che il default (ossia la cartella che si chiama "layout" e basta) è usata per tutte le dimensioni che non sono specificate altrimenti, quindi per supportare i display inferiori a 5 pollici dovresti:

- creare la cartella "layout-sw380dp" e metterci dentro il contenuto attualmente in "layout".
380 è un valore approssimato che indica la dimensione minore di un dispositivo di circa 5 pollici
- mettere i layout per i dispositivi inferiori a 5 pollici nella cartella "layout"

fatto.

Quello che ottieni è che android userà le seguenti cartelle:

fino a 380 dpi di larghezza (corrispondente circa ad un display 5 pollici) -> cartella "layout"
da 380 dpi fino a 600 dpi (da 5 a 7 pollici) -> cartella "layout-sw380dp"
da 600 dpi fino a 720 dpi (da 7 a 10 pollici) -> cartella "layout-sw600dp"
da 720 dpi in poi (10 pollici ed oltre) -> cartella "layout-sw720dp"

NOTA: "sw380dp" significa "display il cui lato inferiore è 380 dp". Quando si parla di display 5 pollici, si intende la diagonale. Stabilire la dimensione del lato inferiore per questi display non è banale dato che dipende anche dal rapporto larghezza/altezza. Io ho calcolato 380 dpi prendendo come riferimento un dispositivo 4.8 pollici; potresti dover alterare il valore perché si adatti al tuo target

NOTA II: "layout-land" ha la precedenza. Questo significa che quando il dispositivo è orizzontale si usa il layout definito in "layout-land" a prescindere dalla dimensione del display. Eventualmente aggiungi dei selettori extra come "layout-sw380dp-land" per selezionare un layout orizzontale valido solo per i dispositivi fino a 5 pollici.
Grazie mille funziona, sono inpazzito per una giornata sana.
Un' ultima cosa, ci sono dimensioni specifiche per ogni tipo di display?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 804
  • Respect: +168
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 10 x64
Re:Layout per più dispositivi
« Risposta #5 il: 06 Giugno 2017, 09:44:13 CEST »
0
Come ho detto no, non ci sono misure specifiche, o comunque non ci sono valori che identificano univocamente un tipo di schermo.

Ti dico però come calcolare questo valore per un dispositivo qualsiasi: hai bisogno della risoluzione in pixel e della densità.

Esempio: L'OnePlus X ha una risoluzione di 1080 x 1920 pixel ed una densità di 441 dpi

Prendi il lato più corto (1080) lo moltiplichi per 160 e dividi per la densità (441), ottieni 391. Significa che per adattare un layout allo schermo dell'OnePlus X devi specificare "layout-sw391dp" (meglio mettere sempre un po' meno, tipo 390 o meglio ancora 380, come ho specificato nel post precedente).

Il problema in questo sistema è che difatti non tiene conto della diagonale del display. l'OXP è un 5 pollici, ma se fosse prodotto (per assurdo, ma non impossibile) un dispositivo allungato avremmo una risoluzione di (ad esempio) 1080 x 2160. Secondo il calcolo di sopra otterremmo sempre 391dp, ma la dimensione dello schermo di questo dispositivo, intesa come diagonale è di 5.4 pollici.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline frar

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab a
  • Sistema operativo:
    Mac OS X 12.6
Re:Layout per più dispositivi
« Risposta #6 il: 06 Giugno 2017, 12:28:55 CEST »
0
Come ho detto no, non ci sono misure specifiche, o comunque non ci sono valori che identificano univocamente un tipo di schermo.

Ti dico però come calcolare questo valore per un dispositivo qualsiasi: hai bisogno della risoluzione in pixel e della densità.

Esempio: L'OnePlus X ha una risoluzione di 1080 x 1920 pixel ed una densità di 441 dpi

Prendi il lato più corto (1080) lo moltiplichi per 160 e dividi per la densità (441), ottieni 391. Significa che per adattare un layout allo schermo dell'OnePlus X devi specificare "layout-sw391dp" (meglio mettere sempre un po' meno, tipo 390 o meglio ancora 380, come ho specificato nel post precedente).

Il problema in questo sistema è che difatti non tiene conto della diagonale del display. l'OXP è un 5 pollici, ma se fosse prodotto (per assurdo, ma non impossibile) un dispositivo allungato avremmo una risoluzione di (ad esempio) 1080 x 2160. Secondo il calcolo di sopra otterremmo sempre 391dp, ma la dimensione dello schermo di questo dispositivo, intesa come diagonale è di 5.4 pollici.
Grazie mille sei stato chiarissimo