Autore Topic: Modifica della posizione di una View con layout()  (Letto 1293 volte)

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Modifica della posizione di una View con layout()
« il: 23 Aprile 2010, 16:19:37 CEST »
0
Salve a tutti, sto sviluppando un'applicazione che permette di guidare un dispositivo motorizzato elettronicamente, attraverso l'uso degli accelerometri di un Nexus One e la connessione bluetooth. :-o
Oltre a ricevere i dati dell'accelerometro, loggarli, mandarli via bluetooth (già implementati), vorrei visualizzare a schermo un feedback dei comandi che mando al dispositivo.  :-P
La cosa più carina che ho pensato è una "pallina" o simile, che si muove nello schermo a seconda di come si inclina il telefono, più precisamente legata alle gesture necessarie per guidare il dispositivo: inclino in avanti, avanzo, inclino a destra, sterzo a destra, inclino a sinistra, sterzo a sinistra.

Ma lasciando stare come deve comportarsi, la vera domanda è se utilizzando il LinearLayout e chiamando il metodo
Codice (Java): [Seleziona]
View.layout(l, t, r, b); sulla View che rappresenta la mia "pallina", la posizione si modifica veramente, oppure la gravity del LinearLayout piuttosto che chissà cos'altro, mi riporta l'oggetto dove era.

Dite: "domanda semplice, provalo e vedi se funziona". Il fatto è che non ho con me il dispositivo fisico e sull'emulatore non c'è accelerometro, quindi per provarlo dovrei scatenare io un evento, con una posizione fissata...bla...bla...bla, più la spesa che l'impresa. Chiedo a voi, o illuminati, se c'è qualcuno che sa se la cosa funziona o devo implementare un Layout custom per farla funzionare o...

Grazie a tutti  ;-)

p.s.: se volete pezzi di codice di quel che ho fatto chiedete pure. in ogni caso quando ho pronto qualcosa posto i listati da qualche parte che possono magari servire a qualcuno  :D
« Ultima modifica: 15 Maggio 2010, 17:28:16 CEST da JD »

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Modifica della posizione di una View con layout()
« Risposta #1 il: 29 Aprile 2010, 15:22:21 CEST »
0
Visto che non risponde nessuno mi rispondo da solo:
ho avuto modo di testarlo e...FUNZIONA! La gravità del LinearLayout non inflisce con la funzione View.layout().
Al momento il modo in cui la chiamo è troppo sensibile alla variazione dell'inclinazione perché è diretto e non filtrato, ma funge! vedo muovere la pallina :D

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Modifica della posizione di una View con layout()
« Risposta #2 il: 29 Aprile 2010, 15:49:52 CEST »
0
Mi spiace non aver potuto rispondere ma non ho mai affrontato il problema :(
In ogni caso ti ringrazio per aver condiviso l'informazione :)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Modifica della posizione di una View con layout()
« Risposta #3 il: 29 Aprile 2010, 19:57:54 CEST »
0
Spero possa essere utile ad altri  :-P
Sembra un "problema" che potrebbe accadere facilmente sviluppando un gioco ad esempio (io prossimamente dovrò fare un comando joystick e penso di usare questo con l'evento OnTouch per spostare la "manopola" del joystick): può capitare facilmente di dover "spostare" qualcosa in base alle azioni dell'utente...Magari non è nemmeno la soluzione corretta, ma è l'unica che mi viene in mente: nel caso qualcuno abbia idee migliori sono felicissimo di ascoltare! :D

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:[RISOLTO] Modifica della posizione di una View con layout()
« Risposta #4 il: 30 Aprile 2010, 00:38:44 CEST »
0
non ho capito bene cosa devi fare, ma forse dovresti dare anche un'occhiata alle animazioni.

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:[RISOLTO] Modifica della posizione di una View con layout()
« Risposta #5 il: 30 Aprile 2010, 01:03:51 CEST »
0
mi definisci "animazioni"?
comunque quello che devo fare è spiegato nel primo post: vorrei muovere un'immagine (nell'esempio una pallina) guidandola con l'accelerometro. Se vuoi, può essere qualcosa di simile al tipico gioco da spiaggia in cui devi infilare una biglia nel buco giusto, passando per un labirinto pieno di ostacoli e buchi "sbagliati". C'è anche più di un gioco per iPhone su questo tema.
A me serve fare questo perché con l'accelerometro ci guido un dispositivo (tipo macchina telecomandata), inclinando in avanti il telefono accelero, ruotando a sinistra sterzo a sinistra, ruotando a destra giro a destra e così via. L'animazione della pallina mi serve come feedback per l'utente che in questo modo capisce cosa sta facendo fare al dispositivo.

Quello che mi è venuto in mente di fare è letteralmente spostare una ImageView (la mia pallina) all'interno di un LinearLayout, chiamando il metodo View.layout() come detto a inizio thread. Mi chiedevo se la gravity del LinearLayout impedisse tutto questo, ma ho constatato che non era così. Ovviamente, se ci sono metodi migliori, come già detto, accetto suggerimenti  ;-)
Se mi chiarisci come funzionano queste "animazioni" magari trovo qualcosa di più semplice e più pulito  :-)

grazie! buonanotte