Autore Topic: Gestire click\touch in Android  (Letto 634 volte)

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Gestire click\touch in Android
« il: 24 Giugno 2011, 10:08:09 CEST »
0
Ciao,
ho una domanda sul touch in Android.

Dovrebbe essere possibile fare in modo che quando l'utente tocca con il dito un certo punto dello schermo questo vengano memorizzate le coordinate di tale punto in 2 variabili x,y. Giusto?

Cercando online ho trovato qualche snippet tipo:

Codice: [Seleziona]
main.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent e) {
        float x = e.getX();
        float y = e.getY();
    }
});

Giusto?

La mia domanda è: se volessi fare la seguente cosa:
Ho un'immagine di sfondo (o comunque un'immagine visualizzata nella mia applicazione) che rappresenta un corpo umano e volessi fare in modo che vengano riconosciuti 2 click: uno quando l'utente tocca un'area prossima alla testa ed uno quando l'utente tocca un'area prossima alla pancia.

Sapendo le coordinate della testa e confrontandole con quelle del click sarebbe possibile fargli stampare: "L'utente ha clickato la testa?"

Potrebbe essere una strategia valida secondo voi su come fare questa cosa?

Please help me...sono abbastanza disperato

Grazie
Andrea

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Gestire click\touch in Android
« Risposta #1 il: 24 Giugno 2011, 10:53:34 CEST »
0
Ciao Andrea,
certo, il tuo approccio è giusto. Nel mio gioco ho una nave in basso allo schermo. Quando un giocatore clicca sull'area della nave, parte un evento (in breve).
Fai solo attenzione a non usare coordinate statiche e immutabili, perchè col cambio di risoluzione degli schermi e delle loro densità potresti non avere più l'esatta corrispondenza che hai fissato.
Io faccio disegnare prima l'oggetto tramite l'onDraw e poi mi prendo le coordinate.

Altra possibilità è di usare un motore grafico che ti dà tante opzioni semplici da usare. Sto usando andengine e devo dirti che se lo avessi conosciuto prima il mio approccio con Android sarebbe stato diverso e sicuramente più semplice.
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:Gestire click\touch in Android
« Risposta #2 il: 24 Giugno 2011, 11:06:43 CEST »
0
Ciao Andrea,
certo, il tuo approccio è giusto. Nel mio gioco ho una nave in basso allo schermo. Quando un giocatore clicca sull'area della nave, parte un evento (in breve).
Fai solo attenzione a non usare coordinate statiche e immutabili, perchè col cambio di risoluzione degli schermi e delle loro densità potresti non avere più l'esatta corrispondenza che hai fissato.
Io faccio disegnare prima l'oggetto tramite l'onDraw e poi mi prendo le coordinate.

Altra possibilità è di usare un motore grafico che ti dà tante opzioni semplici da usare. Sto usando andengine e devo dirti che se lo avessi conosciuto prima il mio approccio con Android sarebbe stato diverso e sicuramente più semplice.

Ciao,
io sono molto novellino con Android...sostanzialmente per ora devo solo visualizzare un'immagine in una schermata e fare in modo che l'utente possa clickarci sopra, non sò...forse un motore grafico è eccessivo...dimmi te...

Da quello che mi pare di intuire tu fai disegnare l'intero oggetto (cos'è onDraw?) e poi ti prendi le coordinate di tale oggetto per evitare di avere casini con schermi di tipo diverso (che coordinate ti vengono restituite però? le coordinate del punto centrale dell'immagine o cosa?)

Il problema però forse rimarebbe nel mio caso perchè io non devo prendere ad esempio una generica coordinata centrale dell'immagine ma devo avere dei punti specifici su di essa, ad esempio: testa, pancia, mano....qualche idea su come gestire tale problematica? magari è una cavolata ma non avendolo mai fatto non ho molte idee

Grazie mille
Andrea

P.S: sai se questi argomenti sono trattati su qualche libro?

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Gestire click\touch in Android
« Risposta #3 il: 24 Giugno 2011, 11:26:27 CEST »
0
Beh devi iniziare con i tutorial classici di Android allora. Io ho trovato tutto quello che mi serviva sulla webpage di inizio: Application Fundamentals | Android Developers
Puoi anche provare con un testo molto gettonato: Apress - Pro Android Games
Negli esempi che hai scaricato nel tuo PC (se hai l'SDK) può esserti utili studiarti LunarLander, un classico giochino pieno di spunti per capire le interazioni con gli oggetti.

Alcune risposte alle tue domande:
- onDraw è il metodo che usa l'activity per disegnare sullo schermo;
- quando si parla di coordinate di un oggetto ci si riferisce sempre al vertice in alto a sinistra; se vuoi il centro dell'oggetto devi calcolartelo;
- se hai un'immagine di un corpo umano, suppongo un rettangolo, con le coordinate del tocco (= il punto esatto dove tocchi) puoi decidere se si tratta di testa, busto etc. Si tratta di gestire diversi if, a seconda della zona toccata che viene identificata tramite un sotto-rettangolo dentro quello più grande.
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:Gestire click\touch in Android
« Risposta #4 il: 24 Giugno 2011, 11:29:03 CEST »
0
Beh devi iniziare con i tutorial classici di Android allora. Io ho trovato tutto quello che mi serviva sulla webpage di inizio: Application Fundamentals | Android Developers
Puoi anche provare con un testo molto gettonato: Apress - Pro Android Games
Negli esempi che hai scaricato nel tuo PC (se hai l'SDK) può esserti utili studiarti LunarLander, un classico giochino pieno di spunti per capire le interazioni con gli oggetti.

Alcune risposte alle tue domande:
- onDraw è il metodo che usa l'activity per disegnare sullo schermo;
- quando si parla di coordinate di un oggetto ci si riferisce sempre al vertice in alto a sinistra; se vuoi il centro dell'oggetto devi calcolartelo;
- se hai un'immagine di un corpo umano, suppongo un rettangolo, con le coordinate del tocco (= il punto esatto dove tocchi) puoi decidere se si tratta di testa, busto etc. Si tratta di gestire diversi if, a seconda della zona toccata che viene identificata tramite un sotto-rettangolo dentro quello più grande.

Ok ti ringrazio per le dritte...

Diciamo che con Android ho realizzato solo un'applicazione...anche abbastanza complessa...ma di tutt'altro genere...si trattava di una guida georeferenziata, quindi Google Maps, collegamento ai web services, ma niente oggetti grafici...comunque mi metterò a studiare queste cose

Grazie mille
Andrea