Autore Topic: Posizionare oggetti su uno sfondo  (Letto 466 volte)

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Posizionare oggetti su uno sfondo
« il: 01 Maggio 2014, 18:51:57 CEST »
0
ciao a tutti sono nuovo di questo forum vorrei capire come riuscire a posizionare degli oggetti(in particolare textView e checkbox)  in funzione dell'immagine di sfondo per le varie risoluzioni cioè mdpi hdpi e xdpi ecc.

grazie

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 oggetti su uno sfondo
« Risposta #1 il: 01 Maggio 2014, 19:08:17 CEST »
+1
Mi spiace dirtelo, ma il sistema di layout di Android rende praticamente impossibile posizionare gli oggetti in funzione dell'immagine di sfondo. Principalmente perchè per consentire al motore di layout di adattarsi automaticamente a qualsiasi risoluzione e fattore di forma, è stato di fatto eliminato il posizionamento assoluto in favore di qualcosa concettualmente simile alle pagine HTML che si adattano dinamicamente alle dimensioni del browser.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Posizionare oggetti su uno sfondo
« Risposta #2 il: 01 Maggio 2014, 20:41:09 CEST »
0
per prima cosa grazie per aver risposto; comunque adesso ti spiego meglio il mio problema per possibili suggerimenti.Allora io ho realizzato un questionario a risposte multiple e come immagine di sfondo ho preparato un foglio di quaderno con delle immagini sui margini (tipo cornice), il problema e che le domande nelle varie risoluzioni vanno sopra a questa cornice, io vorrei che le domande con le relative risposte siano all'intero della cornice. Io ho pensato di inserire un relative layout con tutte le domande e le risposte però ho notato che il margine quando si cambia la risoluzione cambia anch' esso. Per questo volevo sapere se si può fare qualcosa come per esempio si fa con le immagini (attraverso le cartelle drawable ) però gestendo la dimensione dei margini.
qualcuno ha dei suggerimenti (visto che sono un novellino del mondo android :-) )
« Ultima modifica: 01 Maggio 2014, 21:39:02 CEST da maick94 »

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 oggetti su uno sfondo
« Risposta #3 il: 02 Maggio 2014, 10:32:18 CEST »
+1
Come detto sopra, l'approccio dell'immagine di sfondo su cui posizionare gli oggetti non è sostanzialmente fattibile.

Quello che puoi fare, ad esempio, è impostare un RelativeLayout per ciascuna domanda, all'interno posizioni i testi incolonnati in alto a sinistra e via via uno sotto all'altro, e l'immagine allineata in alto a destra. Questo unico layout dovrebbe consertirti di gestire qualsiasi dimensione e orientazione di schermo. Se lo complichi, magari serviranno versioni multiple per schermi da tablet.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Posizionare oggetti su uno sfondo
« Risposta #4 il: 02 Maggio 2014, 11:55:43 CEST »
0
scusa ma mi potersti fare un piccolo esempio tramite codice perchè non so come allineare le varie domande e risposte

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:Posizionare oggetti su uno sfondo
« Risposta #5 il: 02 Maggio 2014, 12:13:42 CEST »
0
Quello che puoi fare, ad esempio, è impostare un RelativeLayout per ciascuna domanda, all'interno posizioni i testi incolonnati in alto a sinistra e via via uno sotto all'altro, e l'immagine allineata in alto a destra. Questo unico layout dovrebbe consertirti di gestire qualsiasi dimensione e orientazione di schermo. Se lo complichi, magari serviranno versioni multiple per schermi da tablet.
Mmm se ho capito bene l'idea ho paura che potrebbe non funzionare. Se il testo parte da sinistra e l'immagine parte da destra non vi è garanzia che una immagine troppo grande e un testo troppo lungo non si sovrappongano.

Sempre che abbia capito bene cosa intendi.

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 oggetti su uno sfondo
« Risposta #6 il: 02 Maggio 2014, 12:19:02 CEST »
+1
scusa ma mi potersti fare un piccolo esempio tramite codice perchè non so come allineare le varie domande e risposte

Non avendo la minima idea di come vuoi/devi fare il layout, il massimo che posso fare è darti dei link a tutorial brevi e semplici sull'uso del relative layout. Concentrati sulle opportunità di allineamento di un elemento rispetto all'altro.

Relative Layout | Android Developers

  Android RelativeLayout example | Android Tutorial

Android User Interface Design: Relative Layouts - Tuts+ Code Tutorial

Se poi puoi postare un disegno di come vorresti il layout, possiamo anche vedere come impostarlo.

Mmm se ho capito bene l'idea ho paura che potrebbe non funzionare. Se il testo parte da sinistra e l'immagine parte da destra non vi è garanzia che una immagine troppo grande e un testo troppo lungo non si sovrappongano.

In questo caso specifico, dalle riminiscenze dei layout HTML, imporrei una width in dp alla ImageView ed un margin-right equivalente alla TextView, così da evitare la dovrapposizione. (sempre che anche io abbia capito il problema che esponevi)

In generale potrebbero accadere tante anomalie come quella, ma senza sapere cosa e come dovrebbe essere il layout, è quasi una discussione filosofica.  :-P
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

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:Posizionare oggetti su uno sfondo
« Risposta #7 il: 02 Maggio 2014, 12:31:58 CEST »
0
In questo caso specifico, dalle riminiscenze dei layout HTML, imporrei una width in dp alla ImageView ed un margin-right equivalente alla TextView, così da evitare la dovrapposizione. (sempre che anche io abbia capito il problema che esponevi)
Lo esponeva lui, non io... eheheh  :D

Così potrebbe funzionare non ho idea di come venga l'immagine su dispositivi diversi. Magari funziona.

Citazione
In generale potrebbero accadere tante anomalie come quella, ma senza sapere cosa e come dovrebbe essere il layout, è quasi una discussione filosofica.  :-P
Hai perfettamente ragione. Senza considerare che il sistema classico per generare interfacce android è pensato per risolvere dei problemi specifici. Il primo problema è la risoluzione differente, il secondo problema è il posizionamento relativo degli elementi.

Se tu devi fare una pagina grande con dentro 20 coppie di bottoni+testo uno sopra all'altro, tu imposti il layout e vivi felice. Il sistema scala i bottoni, il sistema determina la grandezza della scrollview, il file xml determina cosa sta dentro cosa, secondo quali regole un layout viene espanso, secondo quali regole gli elementi all'interno di un layout vengono ordinati e allineati. Se tu dovessi stare a posizionarli manualmente oltre a non funzionare su tutti i device sarebbe un lavoro infinito.

Ma se si parla di giochi alla cut the rope o di interfacce in cui vanno preservati aspect ratio e rapporti di dimensione e posizione tra elementi con una precisone al pixel.. questo non è ciò per cui il sistema è stato pensato.

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Posizionare oggetti su uno sfondo
« Risposta #8 il: 02 Maggio 2014, 13:06:39 CEST »
0
Non avendo la minima idea di come vuoi/devi fare il layout, il massimo che posso fare è darti dei link a tutorial brevi e semplici sull'uso del relative layout. Concentrati sulle opportunità di allineamento di un elemento rispetto all'altro.

Relative Layout | Android Developers

  Android RelativeLayout example | Android Tutorial

Android User Interface Design: Relative Layouts - Tuts+ Code Tutorial

Se poi puoi postare un disegno di come vorresti il layout, possiamo anche vedere come impostarlo.

In questo caso specifico, dalle riminiscenze dei layout HTML, imporrei una width in dp alla ImageView ed un margin-right equivalente alla TextView, così da evitare la dovrapposizione. (sempre che anche io abbia capito il problema che esponevi)

In generale potrebbero accadere tante anomalie come quella, ma senza sapere cosa e come dovrebbe essere il layout, è quasi una discussione filosofica.  :-P


ecco  allego un immagine di come vorrei il layout

Post unito: 02 Maggio 2014, 15:56:22 CEST
dai nessuno ha dei suggerumenti per piacere :-X
« Ultima modifica: 02 Maggio 2014, 15:56:22 CEST da maick94, Reason: Merged DoublePost »

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 oggetti su uno sfondo
« Risposta #9 il: 03 Maggio 2014, 10:50:40 CEST »
+1
Non c'è praticamente modo di fare esattamente quel layout usando TextView/ImageView/CheckBox allineate all'immagine sottostante, valido per qualsiasi display.

Ti ci puoi avvicinare con dei compromessi.

Per esempio:
- l'elemento root è un LinearLayout a orientazione verticale
- lo sfondo del root è quell'immagine, ma senza le linee orizzontali
- dentro il root metti tanti LinearLayout a orientazione orizzontale e altezza fissata, uno per ciascuna riga
- disegni il bordo inferiore di cascuno di essi, così hai le linee orizzontali del disegno originario
- dentro ciascuno di essi metti gli oggetti che devono stare nella riga (testo, checkbox, etc)

Secondo me viene veramente molto simile a quello che ti serve e (a parte l'immagine di sfondo) si adatta automaticamente su qualsiasi display e form-factor.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Posizionare oggetti su uno sfondo
« Risposta #10 il: 03 Maggio 2014, 13:22:02 CEST »
0
grazie bradipao terrò in considerazione i tuoi consigli

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 oggetti su uno sfondo
« Risposta #11 il: 04 Maggio 2014, 18:22:36 CEST »
+1
grazie bradipao terrò in considerazione i tuoi consigli

Ho trovato in questo momento una libreria realizzata da uno sviluppatore indipendente, che "potrebbe" fare esattamente quello che ti serve.

https://github.com/ManuelPeinado/ImageLayout

A occhio potrebbe permettere di "agganciare" elementi del layout a pixel specifici dell'immagine di sfondo, a prescindere dalla scalatura e dal fattore di forma.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline maick94

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Posizionare oggetti su uno sfondo
« Risposta #12 il: 05 Maggio 2014, 19:00:38 CEST »
0
grazie ancora bradipao però credo di aver risolto come dicevi prima tu comunque se avrò un po di tempo testerò anche questo tuo suggerimento per vedere quale sarà il risulatao migliore
« Ultima modifica: 05 Maggio 2014, 19:05:41 CEST da maick94 »