Autore Topic: Layout che si adatta a tutti i dispositivi  (Letto 764 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Layout che si adatta a tutti i dispositivi
« il: 06 Gennaio 2015, 21:39:12 CET »
0
Salve a tutti!

Ho creato vari layout (basandomi sulla densità dei pixel) e le prime prove andavano bene, ho quindi 4 tipi di layout (layout-sw320dp,480dp,600dp,720dp) e su buona parte dei dispositivi andava tutto bene ma quando lo ho provato su un s3 mini l'app non ha fatto il corretto resize....
Sinceramente al momento non so dove sbattare la testa....

Voi che suggerimenti avete?

In questo momento (guardando un tutorial) ho trovato queste righe di codice che vanno messo nell'andorid manifest:

Codice (Java): [Seleziona]
<application ... >
    <activity
        android:windowSoftInputMode="adjustResize" ... >
        ...
    </activity>
    ...
</application>

voi dite che può funzionare?

grazie mille in anticipo!

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Layout che si adatta a tutti i dispositivi
« Risposta #1 il: 07 Gennaio 2015, 01:13:29 CET »
0
... ma quando lo ho provato su un s3 mini l'app non ha fatto il corretto resize....
Sinceramente al momento non so dove sbattare la testa....

Fai capire meglio come hai impostato il layout e che significa che non ha fatto il corretto resize.

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 che si adatta a tutti i dispositivi
« Risposta #2 il: 07 Gennaio 2015, 08:07:09 CET »
0
Come ha detto GabMarioPower, non basta usare i DP per avere il corretto resize, devi anche impostre il layout in modo che si adatti alle varie dimensioni. Paradossalmente talvolta significa non forzare nessuna dimensione (nemmeno in DP), ma farla determinare al sistema in proporzione alle dimensioni dello spazio a disposizione (ad esempio con l'uso degli weight).
« Ultima modifica: 07 Gennaio 2015, 10:26:18 CET da bradipao, Reason: ha con l\'acca »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Layout che si adatta a tutti i dispositivi
« Risposta #3 il: 07 Gennaio 2015, 08:59:53 CET »
0
farò molto meglio! posto l'xml del layout che uso come "home" che non è altro che una immagine in altro con 10 bottoni sotto:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:columnCount="1" >

    <ImageView
       android:layout_width="wrap_content"
       android:layout_height="220dp"
       android:id="@+id/imageView11"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:layout_alignParentTop="true"
       android:background="@drawable/neviano"
       android:layout_alignWithParentIfMissing="false" />

    <ImageView
       android:id="@+id/Ita"
       android:layout_width="40dp"
       android:layout_height="60dp"
       android:layout_column="0"
       android:layout_gravity="left|top"
       android:layout_row="0"
       android:src="@drawable/it"
       android:layout_alignParentTop="true"
       android:layout_toRightOf="@+id/space7"
       android:layout_toEndOf="@+id/space7" />

    <ImageView
       android:id="@+id/Eng"
       android:layout_width="40dp"
       android:layout_height="60dp"
       android:layout_column="0"
       android:layout_gravity="left|top"
       android:layout_row="0"
       android:src="@drawable/en"
       android:layout_alignParentTop="true"
       android:layout_toRightOf="@+id/Ita"
       android:layout_toEndOf="@+id/Ita"
       android:layout_marginLeft="10dp" />

    <RelativeLayout
       android:id="@+id/leftrelative"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_column="0"
       android:layout_gravity="left|bottom"
       android:layout_row="0"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:layout_below="@+id/imageView11"
       android:layout_toLeftOf="@+id/space8"
       android:layout_toStartOf="@+id/space8"
       android:layout_alignParentBottom="true">

        <Button
           android:id="@+id/itinerari"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c1"
           android:layout_alignParentTop="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/eventi"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c3"
           android:layout_below="@+id/itinerari"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/itinerario"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c7"
           android:gravity="center_horizontal|center"
           android:lines="2"
           android:textSize="16sp"
           android:layout_below="@+id/alberghi"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/alberghi"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c5"
           android:gravity="center_vertical|center_horizontal"
           android:lines="2"
           android:layout_below="@+id/eventi"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/mostra"
           android:layout_width="wrap_content"
           android:layout_height="77dp"
           android:background="@drawable/c9"
           android:layout_below="@+id/itinerario"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true"
           android:textStyle="bold" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Mostra Tutto"
           android:id="@+id/MostraText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_above="@+id/space13"
           android:layout_alignLeft="@+id/ItinerarioPText"
           android:layout_alignStart="@+id/ItinerarioPText" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Itinerari          "
           android:id="@+id/ItinerarioText"
           android:textColor="@android:color/white"
           android:layout_above="@+id/eventi"
           android:layout_toRightOf="@+id/space17"
           android:layout_toEndOf="@+id/space17"
           android:layout_marginBottom="25dp"
           android:textStyle="bold" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Eventi"
           android:id="@+id/EventiText"
           android:layout_below="@+id/itinerari"
           android:layout_alignLeft="@+id/ItinerarioText"
           android:layout_alignStart="@+id/ItinerarioText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_marginTop="30dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Alberghi e B&amp;B"
           android:id="@+id/AlberghiText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignLeft="@+id/EventiText"
           android:layout_alignStart="@+id/EventiText"
           android:layout_above="@+id/itinerario"
           android:layout_marginBottom="20dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Itinerario Personale"
           android:id="@+id/ItinerarioPText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignBottom="@+id/itinerario"
           android:layout_alignLeft="@+id/AlberghiText"
           android:layout_alignStart="@+id/AlberghiText"
           android:layout_marginBottom="20sp" />

        <Space
           android:layout_width="20px"
           android:layout_height="25sp"
           android:id="@+id/space13"
           android:layout_alignParentBottom="true"
           android:layout_toLeftOf="@+id/MostraText"
           android:layout_toStartOf="@+id/MostraText" />

        <Space
           android:layout_width="65sp"
           android:layout_height="20px"
           android:layout_alignBottom="@+id/ItinerarioText"
           android:layout_marginBottom="8sp"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:id="@+id/space17" />

    </RelativeLayout>

    <RelativeLayout
       android:id="@+id/rightrelative"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_column="0"
       android:layout_gravity="right|bottom"
       android:layout_row="0"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:layout_below="@+id/imageView11"
       android:layout_alignParentBottom="true"
       android:layout_toEndOf="@+id/space8"
       android:layout_toRightOf="@+id/space8">

        <Button
           android:id="@+id/ristoranti"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c2"
           android:layout_alignParentTop="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/cultura"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c4"
           android:layout_below="@+id/ristoranti"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/numeri"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c8"
           android:layout_below="@+id/prodotti"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/divertimento"
           android:layout_width="wrap_content"
           android:layout_height="77dp"
           android:background="@drawable/c10"
           android:layout_below="@+id/numeri"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/prodotti"
           android:layout_width="wrap_content"
           android:layout_height="80dp"
           android:background="@drawable/c6"
           android:gravity="center_vertical|center_horizontal"
           android:layout_below="@+id/cultura"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Ristoranti"
           android:id="@+id/RistorantiText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_alignParentTop="true"
           android:layout_toRightOf="@+id/space19"
           android:layout_toEndOf="@+id/space19"
           android:layout_marginTop="32dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Cultura"
           android:id="@+id/CulturaText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_marginBottom="29dp"
           android:layout_above="@+id/prodotti"
           android:layout_alignLeft="@+id/ProdottiText"
           android:layout_alignStart="@+id/ProdottiText" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Prodotti Tipici"
           android:id="@+id/ProdottiText"
           android:layout_alignBottom="@+id/prodotti"
           android:layout_alignLeft="@+id/RistorantiText"
           android:layout_alignStart="@+id/RistorantiText"
           android:layout_marginBottom="32dp"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_marginLeft="5sp"
           android:maxLines="2" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Numeri Utili"
           android:id="@+id/NumeriText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignBottom="@+id/numeri"
           android:layout_alignLeft="@+id/ProdottiText"
           android:layout_alignStart="@+id/ProdottiText"
           android:layout_marginBottom="20dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceMedium"
           android:text="Divertimento"
           android:id="@+id/DivertimentoText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_above="@+id/space14"
           android:layout_toRightOf="@+id/space19"
           android:layout_toEndOf="@+id/space19" />

        <Space
           android:layout_width="20px"
           android:layout_height="25sp"
           android:id="@+id/space14"
           android:layout_alignParentBottom="true"
           android:layout_alignLeft="@+id/DivertimentoText"
           android:layout_alignStart="@+id/DivertimentoText" />

        <Space
           android:layout_width="55sp"
           android:layout_height="20px"
           android:layout_alignBottom="@+id/RistorantiText"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:id="@+id/space19" />

    </RelativeLayout>

    <Button
       android:layout_width="60dp"
       android:layout_height="60dp"
       android:id="@+id/WidgetMeteo"
       android:layout_alignParentTop="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:background="@drawable/meteo" />

    <Space
       android:layout_width="10px"
       android:layout_height="10px"
       android:layout_alignParentTop="true"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:id="@+id/space7" />

    <Space
       android:layout_width="0dp"
       android:layout_height="0dp"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/space8" />

    <ImageView
       android:layout_width="200dp"
       android:layout_height="200dp"
       android:id="@+id/Welcome"
       android:background="@drawable/benvenuto"
       android:layout_below="@+id/space18"
       android:layout_centerHorizontal="true" />

    <Space
       android:layout_width="0dp"
       android:layout_height="10dp"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/space18" />

</RelativeLayout>

mi spiego meglio per il resize.... sul mio dispositivo fisico e su alcuni più grandi è tutto ok, si vedono correttamente tutti gli elementi.
Ma su un s3 mini risulta tutto schiacciato e alcuni elementi non si vedono per niente

Come a detto GabMarioPower, non basta usare i DP per avere il corretto resize, devi anche impostre il layout in modo che si adatti alle varie dimensioni. Paradossalmente talvolta significa non forzare nessuna dimensione (nemmeno in DP), ma farla determinare al sistema in proporzione alle dimensioni dello spazio a disposizione (ad esempio con l'uso degli weight).

Putroppo non ho capito completamente quello che hai detto.... puoi farmi un'esempio pratico per favore?

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 che si adatta a tutti i dispositivi
« Risposta #4 il: 07 Gennaio 2015, 10:38:34 CET »
0
Putroppo non ho capito completamente quello che hai detto.... puoi farmi un'esempio pratico per favore?

Partiamo dall'assunto che se il pixel ha dimensione fisiche diverse a seconda della risoluzione e dimensioni del display, il DP è pensato per essere di dimensioni fisiche più o meno identiche su display di qualsiasi dimensione e risoluzione. Cioè un Button di 40dp di altezza sarà di grandezza fisica (misurabile col righello) uguale su qualsiasi dispplay.

Ora prendiamo ad esempio il tuo layout: un punto potenzialmente a rischio è l'ImageView dove fissi height a 220dp. Quei 220dp sono una dimensione fisica non trascurabile, per cui se lo schermo ha dimensioni fisiche piccole, potrebbe facilmente occupare gran parte dell'area disponibile e compromettere il layout.

In generale, lavorando con DP riesci a far gestire in automatico il supporto ai display con diverse risoluzioni (esempio da 320x400 a 1980x1020), ma devi comunque assicurarti che il layout "funzioni bene" su display di diverse dimensioni fisiche (da 3.5" ai 10").
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Layout che si adatta a tutti i dispositivi
« Risposta #5 il: 07 Gennaio 2015, 10:49:41 CET »
0
Quindi se ho capito bene dovrei sostituire quei 220 dp con il loro corrispettivo in pixel in modo che si adatti a tutti gli schermi giusto?

P.S. Guardando su internet altri tutorial in molti consigliano di fare layout di versioni diverse per ogni device. Tipo un layout per uno schermo da 4'', uno per quello da 6'' ecc.... è un suggerimento valido?

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 che si adatta a tutti i dispositivi
« Risposta #6 il: 07 Gennaio 2015, 12:10:34 CET »
0
Quindi se ho capito bene dovrei sostituire quei 220 dp con il loro corrispettivo in pixel in modo che si adatti a tutti gli schermi giusto?

No, quello è proprio sbagliato. Il concetto di fondo è che non è proprio possibile fare UN SOLO layout valido per schermi di dimensione significativamente differente (a meno che il layout non sia molto banale).

P.S. Guardando su internet altri tutorial in molti consigliano di fare layout di versioni diverse per ogni device. Tipo un layout per uno schermo da 4'', uno per quello da 6'' ecc.... è un suggerimento valido?

Esatto: devi mettere in conto di dover fare almeno due layout, uno per smartphone e uno per tablet. Poi a seconda della criticità del tuo layout, potrebbero essere necessarie versioni per taglie intermedie.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Layout che si adatta a tutti i dispositivi
« Risposta #7 il: 07 Gennaio 2015, 12:21:00 CET »
0
Perfetto ho capito^^

solo un'ultima cosa.... è meglio creare i layout per densita di pixel, quindi cartelle tipo layout-sw320dp, oppure cartelle tipo layout, layout-large ecc.?
Perchè lavorando con android studio sono un po limitato (o almeno mi sembra) visto che i layout da 3.7'' a 7'' usano tutti il medesimo layout ed Android Studio non mi permette di usare due layout (ad esempio uno per il device da 4'' e uno per quello da 6'') contemporaneamente

Spero di essere stato chiaro in questa ultima domanda ^^''

Grazie mille per l'aiuto!

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:Layout che si adatta a tutti i dispositivi
« Risposta #8 il: 07 Gennaio 2015, 12:56:08 CET »
0
Attenzione che ci sono situazioni in cui i DP sono l'unica soluzione.

Esempio:

LinearLayout orientamento verticale fill parent per width e wrap content per height. WeightSum = 1
Elemento con height 0dp e weight 0.5, width fill parent
All'interno vuoi mettere una immagine.

Non puoi inserire un dato relativo sull'immagine. Questo perchè il layout così come è fatto è irrisolvibile.

Il primo wrappa il content e ha un valore X ancora sconosciuto.
Il secondo prende il 50% di X, sempre sconosciuto.
L'immagine viene aggiunta calcolandola relativamente al parent, il quale però ha size sconosciuta.

In un caso del genere o lavori in DP all'inizio (cioè sul linearlayout) o alla fine (cioè sull'immagine).
L'alternativa ovviamente sarebbe avere un linear layout che in verticale fa un fill/match del parent.

Dipende da cosa vuoi ottenere però... se il linearlayout non deve fillare il parent non hai altra scelta che usare i DP.

DP che con tutti i loro problemi sono comunque la strada da seguire documentazione alla mano.

 :-)

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 che si adatta a tutti i dispositivi
« Risposta #9 il: 07 Gennaio 2015, 13:53:38 CET »
0
solo un'ultima cosa.... è meglio creare i layout per densita di pixel, quindi cartelle tipo layout-sw320dp, oppure cartelle tipo layout, layout-large ecc.?

L'ultima volta che ho guardato, nella documentazione ufficiale viene consigliato proprio di usare -swXXXdp come discriminante per i layout. Quindi ok per  layout-sw320dp .
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Layout che si adatta a tutti i dispositivi
« Risposta #10 il: 07 Gennaio 2015, 14:03:56 CET »
0
L'ultima volta che ho guardato, nella documentazione ufficiale viene consigliato proprio di usare -swXXXdp come discriminante per i layout. Quindi ok per  layout-sw320dp .

perfetto ^^ grazie mille

Post unito: 07 Gennaio 2015, 15:12:34 CET
alllooooraaaa....
ho modificato l'xml in questo modo:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:columnCount="1" >

    <RelativeLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_above="@+id/rightrelative"
       android:id="@+id/relativeLayout"
       android:layout_below="@+id/space8">

        <ImageView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/imageView11"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true"
           android:layout_alignParentTop="true"
           android:background="@drawable/neviano"
           android:layout_alignWithParentIfMissing="false"
           android:layout_alignParentBottom="true" />

        <ImageView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/imageView12"
           android:background="@drawable/benvenuto"
           android:layout_alignParentTop="true"
           android:layout_toLeftOf="@+id/WidgetMeteo"
           android:layout_toRightOf="@+id/Eng"
           android:layout_toEndOf="@+id/Eng"
           android:layout_alignBottom="@+id/imageView11" />

        <ImageView
           android:id="@+id/Eng"
           android:layout_width="35dp"
           android:layout_height="35dp"
           android:layout_column="0"
           android:layout_gravity="left|top"
           android:layout_row="0"
           android:src="@drawable/en"
           android:layout_below="@+id/Ita"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_marginLeft="5dp"
           android:layout_marginTop="5dp" />

        <ImageView
           android:id="@+id/Ita"
           android:layout_width="35dp"
           android:layout_height="35dp"
           android:layout_column="0"
           android:layout_gravity="left|top"
           android:layout_row="0"
           android:src="@drawable/it"
           android:layout_alignParentTop="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_marginLeft="5dp"
           android:layout_marginTop="5dp" />

        <Button
           android:layout_width="40dp"
           android:layout_height="40dp"
           android:id="@+id/WidgetMeteo"
           android:layout_alignParentTop="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true"
           android:background="@drawable/meteo" />

    </RelativeLayout>

    <RelativeLayout
       android:id="@+id/rightrelative"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_column="0"
       android:layout_gravity="right|bottom"
       android:layout_row="0"
       android:layout_alignParentRight="false"
       android:layout_alignParentEnd="true"
       android:layout_alignParentBottom="true"
       android:layout_toEndOf="@+id/space20"
       android:layout_toRightOf="@+id/space20">

        <Button
           android:id="@+id/ristoranti"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c2"
           android:layout_alignParentTop="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/cultura"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c4"
           android:layout_below="@+id/ristoranti"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/numeri"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c8"
           android:layout_below="@+id/prodotti"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/divertimento"
           android:layout_width="wrap_content"
           android:layout_height="50dp"
           android:background="@drawable/c10"
           android:layout_below="@+id/numeri"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/prodotti"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c6"
           android:gravity="center_vertical|center_horizontal"
           android:layout_below="@+id/cultura"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Ristoranti"
           android:id="@+id/RistorantiText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_alignBaseline="@+id/ristoranti"
           android:layout_alignBottom="@+id/ristoranti"
           android:layout_toRightOf="@+id/space15"
           android:layout_toEndOf="@+id/space15" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Cultura"
           android:id="@+id/CulturaText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignBaseline="@+id/cultura"
           android:layout_alignBottom="@+id/cultura"
           android:layout_toRightOf="@+id/space15"
           android:layout_toEndOf="@+id/space15" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Prodotti Tipici"
           android:id="@+id/ProdottiText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_alignBaseline="@+id/prodotti"
           android:layout_alignBottom="@+id/prodotti"
           android:layout_toRightOf="@+id/space15"
           android:layout_toEndOf="@+id/space15" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Numeri Utili"
           android:id="@+id/NumeriText"
           android:layout_alignBaseline="@+id/numeri"
           android:layout_alignBottom="@+id/numeri"
           android:layout_alignLeft="@+id/ProdottiText"
           android:layout_alignStart="@+id/ProdottiText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_marginTop="40dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Divertimento"
           android:id="@+id/DivertimentoText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_alignBaseline="@+id/divertimento"
           android:layout_alignBottom="@+id/divertimento"
           android:layout_alignLeft="@+id/RistorantiText"
           android:layout_alignStart="@+id/RistorantiText" />

        <Space
           android:layout_width="90px"
           android:layout_height="20px"
           android:id="@+id/space15"
           android:layout_above="@+id/cultura"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true" />

    </RelativeLayout>

    <RelativeLayout
       android:id="@+id/leftrelative"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_column="0"
       android:layout_gravity="left|bottom"
       android:layout_row="0"
       android:layout_alignParentBottom="false"
       android:layout_alignParentLeft="false"
       android:layout_alignParentStart="true"
       android:layout_toStartOf="@+id/space8"
       android:layout_toLeftOf="@+id/space8"
       android:layout_below="@+id/relativeLayout">

        <Button
           android:id="@+id/itinerari"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c1"
           android:layout_alignParentTop="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/eventi"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c3"
           android:layout_below="@+id/itinerari"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/itinerario"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c7"
           android:gravity="center_horizontal|center"
           android:lines="2"
           android:textSize="16sp"
           android:layout_below="@+id/alberghi"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/alberghi"
           android:layout_width="wrap_content"
           android:layout_height="60dp"
           android:background="@drawable/c5"
           android:gravity="center_vertical|center_horizontal"
           android:lines="2"
           android:layout_below="@+id/eventi"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <Button
           android:id="@+id/mostra"
           android:layout_width="wrap_content"
           android:layout_height="50dp"
           android:background="@drawable/c9"
           android:layout_below="@+id/itinerario"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Itinerario"
           android:id="@+id/ItinerarioText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_above="@+id/EventiText"
           android:layout_centerHorizontal="true"
           android:layout_marginBottom="25dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Eventi"
           android:id="@+id/EventiText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_alignBaseline="@+id/eventi"
           android:layout_alignBottom="@+id/eventi"
           android:layout_alignLeft="@+id/ItinerarioText"
           android:layout_alignStart="@+id/ItinerarioText"
           android:layout_marginTop="40dp" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Alberghi e B&amp;B"
           android:id="@+id/AlberghiText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignBaseline="@+id/alberghi"
           android:layout_alignBottom="@+id/alberghi"
           android:layout_alignLeft="@+id/EventiText"
           android:layout_alignStart="@+id/EventiText" />

        <TextView
           android:layout_width="140dp"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Itinerario Personalizzato"
           android:id="@+id/ItinerarioPText"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:layout_above="@+id/mostra"
           android:layout_alignParentRight="true"
           android:layout_alignParentEnd="true"
           android:layout_marginBottom="10dp"
           android:layout_alignLeft="@+id/AlberghiText"
           android:layout_alignStart="@+id/AlberghiText" />

        <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Mostra Tutto"
           android:id="@+id/MostraText"
           android:textStyle="bold"
           android:textColor="@android:color/white"
           android:layout_alignBaseline="@+id/mostra"
           android:layout_alignBottom="@+id/mostra"
           android:layout_alignLeft="@+id/ItinerarioPText"
           android:layout_alignStart="@+id/ItinerarioPText" />

        <Space
           android:layout_width="100px"
           android:layout_height="20px"
           android:layout_alignBottom="@+id/itinerari"
           android:layout_alignParentLeft="true"
           android:layout_alignParentStart="true"
           android:id="@+id/space16" />

    </RelativeLayout>

    <Space
       android:layout_width="10dp"
       android:layout_height="20px"
       android:layout_alignParentTop="true"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:id="@+id/space7" />

    <Space
       android:layout_width="0dp"
       android:layout_height="0dp"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/space8" />

    <Space
       android:layout_width="0dp"
       android:layout_height="0dp"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/space20" />

</RelativeLayout>

e per ora va quasi bene, unica pecca è che ho dei problemi con l'imageView11 che mi occupa più di meta schermo mentre invece dovrebbe coprirne solo un terzo....

consigli?
« Ultima modifica: 07 Gennaio 2015, 15:12:34 CET da ValerioAdo, Reason: Merged DoublePost »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Layout che si adatta a tutti i dispositivi
« Risposta #11 il: 07 Gennaio 2015, 20:59:53 CET »
0
Puoi inviare un screenshot? diventerebbe più semplice capire di cosa parliamo (non è proprio intuitivo leggere un layout solo a codice).

solo un'ultima cosa.... è meglio creare i layout per densita di pixel, quindi cartelle tipo layout-sw320dp, oppure cartelle tipo layout, layout-large ecc.?

Si, la logica migliore oggi è usare swXXXdp.

Tieni anche presente questo consiglio.
Dove puoi, non mettere le dimensioni nel layout me nei file dimens.xml dentro le varie folder values, values-swXXXdp.....
Questo ti consente di limitare il nuovo di layout (ma averne uno solo è impossibile) e di rendere piu mantenibile il progetto (quando cambi un layout, ti scordi di modificare tutti gli altri).






Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 323
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Layout che si adatta a tutti i dispositivi
« Risposta #12 il: 08 Gennaio 2015, 08:44:18 CET »
0
Puoi inviare un screenshot? diventerebbe più semplice capire di cosa parliamo (non è proprio intuitivo leggere un layout solo a codice).

Scusa GabMarioPower ma il problema iniziale lo ho già risolto ^^'' ora devo solo gestire le proporzioni in altezza dei bottoni e delle imageView...
voi avete qualche consiglio su come farlo molto semplicemente?

Io avevo intenzione di ottenere l'altezza del display dell'utente e poi modificare le varie altezze degli elementi di conseguenza....
purtroppo il resize che android fa automaticamente non mi soddisfa per nulla....