Autore Topic: Posizionare gli oggetti in funzione dell'immagine di sfondo  (Letto 760 volte)

Offline Zampa

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 8
Posizionare gli oggetti in funzione dell'immagine di sfondo
« il: 26 Ottobre 2013, 14:11:09 CEST »
0
Ciao,

premetto che sono nuovo nel mondo dello sviluppo android, quindi non so se il mio sia il modo corretto di procedere, nel caso non lo fosse sono graditi suggerimenti!

Espongo il mio problema, aiutandomi con l'immagine di esempio allegata.
In una Activity imposto un'immagine di sfondo in cui si vede una persona che "parla all'utente della mia app" e in base alle scelte fatte dall'utente il programma modifica il testo che appare all'interno del fumetto.
Io dovrei posizionare le TextView e i Button in posizioni predefinite dell'Activity, in funzione dell'immagine di sfondo.
Cambiando dispositivo, e quindi dimensione e risoluzione dello schermo, le TextView dovrebbero rimanere sempre all'interno dei rispettivi fumetti ed i pulsanti nella stessa posizione relativa all'immagine di sfondo.
Ho provato utilizzando un GridLayout ma le dimensioni delle celle della griglia dipendono dalle dimensioni degli oggetti contenuti, a cui ovviamente non posso fornire dimensioni in dp, che andrebbero bene per un dispositivo ma di certo non per uno con differente risoluzione.

Quindi, come risolvere il problema?

Grazie per l'aiuto,
Ciao, Nicola

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:Posizionare gli oggetti in funzione dell'immagine di sfondo
« Risposta #1 il: 26 Ottobre 2013, 16:38:44 CEST »
0
Come hai accennato tu stesso, il problema non è tanto posizionare la TextView in un punto specifico, ma avere più o meno lo stesso risultato su dispositivi molto differenti.

Potresti provare con un RelativeLayout e posizionare gli oggetti come segue:
- Prima TextView : alignparenttop, alignparentleft, poi definisci margini e dimensioni opportune
- Seconda TextView : alignparentleft, below PrimoFumetto, poi definisci margini e dimensioni opportune
- Primo Button : alignparentbottom, alignparentleft
- Secondo Button : alignparenttop, alignparentright, poi definisci margini e dimensioni opportune
- Terzo Button : alignparentright, below Secondo Button, poi definisci margini e dimensioni opportune

Usa solo "dp" e fai in modo che l'immagine di sfondo si estenda per tutto lo schermo. Se non pretendi soluzioni allineate e precise al pixel, riesci ad ottenere un risultato grosso modo uguale per i vari display.

Per orientazione landscape devi fare un layout dedicato.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Zampa

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 8
Re:Posizionare gli oggetti in funzione dell'immagine di sfondo
« Risposta #2 il: 30 Ottobre 2013, 23:13:35 CET »
0
Grazie bradipao,

ho seguito il tuo consiglio e con un RelativeLayout, dopo qualche prova, sono riuscito ad ottenere un buon risultato per le diverse risoluzioni.
Le varie schermate non sono perfettamente uguali tra un dispositivo e l'altro, ma la differenza è più che accettabile.

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:Posizionare gli oggetti in funzione dell'immagine di sfondo
« Risposta #3 il: 31 Ottobre 2013, 09:04:55 CET »
0
Grazie bradipao,

ho seguito il tuo consiglio e con un RelativeLayout, dopo qualche prova, sono riuscito ad ottenere un buon risultato per le diverse risoluzioni.
Le varie schermate non sono perfettamente uguali tra un dispositivo e l'altro, ma la differenza è più che accettabile.

tieni conto che i valori di margin li puoi mettere per "risoluzione"; ossia puoi sfruttare le cartelle values-hdpi, values-xhdpi ecc per mettere in un file dimensions.xml le dimensioni in dp dei margini diverse per ogni tipologia di dispositivo
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