Come rilevare quando un drawable viene toccato
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
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