Autore Topic: Layout Tablet 1024x600, 1280x800, 1280x768  (Letto 1644 volte)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Layout Tablet 1024x600, 1280x800, 1280x768
« il: 19 Ottobre 2011, 09:52:50 CEST »
0
Ciao a tutti.
Ho la necessità di creare un'app che giri su android 2.x e sui relativi tablet che supportano questa versione di s.o. (tra cui i vari galaxytab).
Premetto che la grafica non è adattabile, ma pensata per quelle specifiche risoluzioni.
Da quanto ho visto in giro, la risoluzione 1024x600 dovrebbe essere vista come large, mentre la 1280x800 dovrebbe essere vista come xlarge.
Sul mio tablet 3.0 la 1280x800 viene vista tranquillamente, ma se faccio un emulatore 1024x600, vede comunque la xlarge.

Stessa cosa per la versione Honeycomb 3.x:
devo supportare 2 risoluzioni: 1280x800 e 1280x768
anche quì vale la storia di grafica fatta ad hoc per cui ho necessità di differenziare le cose.

Fermo restando che se faccio 4 versioni differenti, utilizando layout/layout-land/drawable/drawable-land per ognuna, tutto funziona sul relativo device, ma in fase di pubblicazione diventa un problema.

Qualcuno sa darmi una mano?

grazie.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

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 Tablet 1024x600, 1280x800, 1280x768
« Risposta #1 il: 19 Ottobre 2011, 10:14:30 CEST »
0
Mi vengono in mente due approcci, completamente teorici (quindi non sono per niente sicuro siano fattibili, ne' che siano applicabili alla tua problematica):


1) Riconoscimento screen size prima del setcontentview

Sulla OnCreate, dopo super.onCreate, controlli le dimensioni dello schermo ( getWindowManager().getDefaultDisplay().getMetrics(dm); ) e in base al risultato fai la setContentView con il layout più appropriato.


2) Activity separate per ciascun layout

Oppure, se le interfacce oltre ad essere ad hoc per ogni dimensione, possono essere anche leggermente diverse come contenuti e risorse presenti, dopo aver ottenuto le dimensioni fisiche dello schermo come sopra, lanci l'activity opportuna. Questo metodo secondo me è quello ideale per applicazioni che devono garantire cross-compatibilità con smartphone e tablet, dove i layout sono nettamente diversi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Layout Tablet 1024x600, 1280x800, 1280x768
« Risposta #2 il: 19 Ottobre 2011, 10:28:36 CEST »
0
per il punto 1 dovrei avere dei nomi per i layout e per i drawable differenti....e credo che sia un casino.
la versione smartphone già c'è e questo è un progetto a parte, quindi il punto 2 salta.

quindi rimane il problema.

^_^

grazie comunque per la risposta, sid.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

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 Tablet 1024x600, 1280x800, 1280x768
« Risposta #3 il: 19 Ottobre 2011, 10:45:37 CEST »
0
per il punto 1 dovrei avere dei nomi per i layout e per i drawable differenti....e credo che sia un casino.

Mmm. Solo il layout dovrebbe avere nome differente, i drawable che rimangono uguali possono continuare ad essere unici. Quelli che sono differenti, è anche giusto abbiano nome differente.

Il problema di fondo è che i qualificatori delle risorse non contengono (volutamente) le possibili risoluzioni, per cui l'unico modo di distinguerle è quello esplicito. Il che ti metterebbe al riparo anche da future evoluzioni, non troppo remote a dire il vero, di display con risoluzione leggermente diverse come 1280x720.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Layout Tablet 1024x600, 1280x800, 1280x768
« Risposta #4 il: 19 Ottobre 2011, 10:48:47 CEST »
0
eh, ma il problema è che anche la grafica in portrait per 768x1280 è diversa da quella 800x1280, quindi non solo i layout, ma anche la stessa grafica andrebbe reindirizzata diversamente.
Di fatto ogni risoluzione ha i suoi drawable e i suoi layout.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

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 Tablet 1024x600, 1280x800, 1280x768
« Risposta #5 il: 20 Ottobre 2011, 18:47:07 CEST »
0
Aggiungo un post, non per dare una risposta specifica al tuo quesito, ma per lasciare qualche traccia a chi dovesse capitare in questa discussione.

Ottimo articolo aggiornato sulla gestione dei display di varie dimensioni:

Android Developers Blog: New Tools For Managing Screen Sizes


E poi tratto dall'articolo, lo snippet che avevo pensato di realizzare nel caso 1) da me sopra citato.

Codice (Java): [Seleziona]
public class MyActivity extends Activity {
    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate();

        Configuration config = getResources().getConfiguration();
        if (config.smallestScreenWidthDp >= 600) {
            setContentView(R.layout.main_activity_tablet);
        } else {
            setContentView(R.layout.main_activity);
        }
    }
}
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Layout Tablet 1024x600, 1280x800, 1280x768
« Risposta #6 il: 20 Ottobre 2011, 22:58:59 CEST »
0
Io credo che 7hebugger intendesse dire che oltre a richiamare un layout diverso deve anche utilizzare immagini diverse.
perciò non basta chiamare solo un layout diverso.
Almeno io ho capito così.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Layout Tablet 1024x600, 1280x800, 1280x768
« Risposta #7 il: 25 Ottobre 2011, 10:16:18 CEST »
0
esattamente, Luigi.
Il problema nasce dal fatto che c'è una grafica specifica per ogni risoluzione.
Certo, una volta che utilizzo un layout specifico per risoluzione, nello stesso layout posso dirgli di utilizzare specifiche risorse, ma comunque sarebbe meglio una soluzione che non incorresse nell'utilizzo del codice...
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/