Domanda

Sto lavorando su un app che ha una tela con un mazzo di piccole immagini che l'utente può trascinare in giro, e una "scatola" che l'utente trascina da creare nuovi oggetti di immagine o trascinare un'immagine esistente ad esso , e sarà rimuoverlo.

Qual è il modo migliore per rilevare se l'utente ha toccato una superficie, o un'immagine sullo schermo? La prima cosa che viene in mente è, ovviamente, si confrontano le coordinate di contatto con le coordinate di ciascun oggetto, ma che sembra un po 'ingombrante. C'è una migliore, o costruito nel modo?

Grazie

È stato utile?

Soluzione

Il View di classe in Android ha un'onClickListener che si può usare per rilevare quando l'utente fa clic su una visualizzazione. Se si implementa il tuo 'immagini' (come li chiama lei), come Vista si può semplicemente aggiungere un click ascoltatore ad ogni per trovare quale vista è stato fatto clic. Aggiungere l'ascoltatore in questo modo:

// Get a reference to the view from xml (or if you 
// have created it dynamically, just use that)
View imageView = findViewById(R.id.my_view);
imageView.setOnClickListener(new OnClickListener()
{

  @Override
  public void onClick(View v)
  {
    // Do stuff with view (the View v that is passed is the View that was touched)
    doStuff(v);  
  }
});

Altri suggerimenti

Dipende da come complicato la vostra interfaccia è, ma in fondo se si ignora onTouchEvent che ti porterà le coordinate che si riferivano a.

Al fine di trovare ciò che è stato toccato, senza passare attraverso ogni oggetto, si potrebbe trovare il modo di semplificare questo, ad esempio per dividere lo schermo in forse 8 griglie, e sapere quali griglia (s) ogni oggetto si trova in, in modo che quando si tocca lo schermo, allora si possono trovare gli oggetti che possono essere in quella griglia, e in modo da avere un minor numero di elementi da guardare attraverso.

Per una breve risposta su come utilizzare onTouchEvent si può guardare:

http://androidforums.com/android- giochi / 210019-touch-evento-image-made-canvas.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top