Autore Topic: multiscreen e cartelle layout  (Letto 654 volte)

Offline auron86

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
multiscreen e cartelle layout
« il: 18 Agosto 2013, 23:31:49 CEST »
0
salve , sto sviluppando un app, che dovrà essere disponibile solo sui display con densità hdpi e xhdpi.

Ora in pratica per ogni activity ho 2 xml uno nella cartella layout-hdpi e un nella layout (ovvero xhdpi ).


i due xml sono del tutto identici, "id compresi", tranne ovviamente alcune dimensioni, di alcuni elementi .

La mia domanda è: come faccio a far puntare le activity  ai vari xml, in base alla densità dei display ?

in pratica come setto le View dinamicamente

esempio :

  setContentView(R.layout.about);

  setContentView(R.layout-hdpi.about);


P.s.( ovviamente ho inserito nel manifest anche

Codice (XML): [Seleziona]
<supports-screens android:smallScreens="false"
                 android:normalScreens="true"
                 android:largeScreens="true"
                 android:xlargeScreens="true"/>



P.s.( i display xxhdpi quali sono, in ambito smartphone, non tablet )

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:multiscreen e cartelle layout
« Risposta #1 il: 18 Agosto 2013, 23:48:04 CEST »
0
Gestisce tutto Android, così come per il supporto multilingua.

Nella cartella res del progetto inserisci le cartelle layout-small, layout-large, layout-xlarge, ecc. In ognuna di queste cartelle inserisci il file xml del layout mantenendo uguale il nome del file in tutte le cartelle. Ecco un esempio (dalla documentazione ufficiale):
Citazione
res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

A questo punto imposti il layout con setContentView(R.layout.my_layout);. Sarà poi compito del sistema andare a prelevare il layout corretto :)
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline auron86

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
Re:multiscreen e cartelle layout
« Risposta #2 il: 18 Agosto 2013, 23:58:27 CEST »
0
scusami ma in android non si utilizza la dentità con hdpi xhdpi xxhdpi mdpi ?

o almeno da android 3.1 in poi ?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:multiscreen e cartelle layout
« Risposta #3 il: 19 Agosto 2013, 00:20:56 CEST »
+3
Ora in pratica per ogni activity ho 2 xml uno nella cartella layout-hdpi e un nella layout (ovvero xhdpi ).
i due xml sono del tutto identici, "id compresi", tranne ovviamente alcune dimensioni, di alcuni elementi .


Questo non è necessario.
E' preferibile utilizzare un unico layout, e poi differenziare le dimensioni con i file dimens.xml che andrai ad inserire nelle opportune cartelle values-xxxx.
Esempio:
res/layout/activity.xml
Codice (XML): [Seleziona]
android:layout_margin="@dimen/miadimensione"
res/values/dimens.xml
Codice (XML): [Seleziona]
<dimen name="miadimensine">6dp</dimen>
res/values-sw600dp/dimens.xml
Codice (XML): [Seleziona]
<dimen name="miadimensine">8dp</dimen>

Nella cartella res del progetto inserisci le cartelle layout-small, layout-large, layout-xlarge, ecc. In ognuna di queste cartelle inserisci il file xml del layout mantenendo uguale il nome del file in tutte le cartelle. Ecco un esempio (dalla documentazione ufficiale):
A questo punto imposti il layout con setContentView(R.layout.my_layout);. Sarà poi compito del sistema andare a prelevare il layout corretto :)

L'utilizzo di small, large.... è valido, ma oggi si preferisce utilizzare le nuove notazioni:
res/layout   per gli smartphone
res/layout-sw600dp per i tablet da 7''
res/layout-sw720dp per i tablet da 10''
« Ultima modifica: 10 Settembre 2013, 09:31:23 CEST da GabMarioPower »

Offline auron86

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
Re:multiscreen e cartelle layout
« Risposta #4 il: 26 Agosto 2013, 10:32:03 CEST »
0
chiaro e preciso


grazie 1000