2010-11-27 4 views
0

Je travaille sur une application qui a un canevas avec un tas de petites images que l'utilisateur peut faire glisser, et une "boîte" sur laquelle l'utilisateur va glisser pour créer une nouvelle image objets ou faites-y glisser une image existante, et il l'enlèvera.Comment détecter quand un dessin est touché

Quelle est la meilleure façon de détecter si l'utilisateur a touché une zone ou une image sur l'écran? La première chose qui vient à l'esprit est évidemment de comparer les coordonnées tactiles avec les coordonnées de chaque objet, mais cela semble un peu lourd. Y a-t-il un meilleur ou construit de manière?

Merci

+0

Y a-t-il une raison pour laquelle vous utilisez une classe de vue cusom sur 'ImageView'? – schwiz

+0

Je pense que maintenant je vais finir par dessiner des formes au lieu d'images, donc j'ai l'impression de revenir à la comparaison des coordonnées. Merci à tous pour l'aide! – Matt

Répondre

-1

La classe View dans Android a une onClickListener que vous pouvez utiliser pour détecter lorsque l'utilisateur clique sur une vue. Si vous implémentez vos «images» (comme vous les appelez) en tant que Vues, ​​vous pouvez simplement ajouter un écouteur de clic à chacun pour trouver quelle vue a été cliquée. Ajoutez l'écouteur comme ceci:

// 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); 
    } 
}); 
0

Cela dépend de la complexité de votre interface est, mais, fondamentalement, si vous substituez onTouchEvent que vous obtiendrez les coordonnées que vous parlez. Afin de trouver ce qui a été touché, sans passer par tous les objets, vous pouvez trouver des moyens de simplifier cela, par exemple en divisant votre écran en 8 grilles, et de savoir dans quelle (s) grille (s) se trouve chaque objet. Lorsque vous touchez l'écran, vous pouvez trouver les objets qui peuvent se trouver dans cette grille. Vous aurez donc moins d'éléments à regarder.

Pour une brève réponse sur la façon d'utiliser onTouchEvent vous pouvez regarder:

http://androidforums.com/android-games/210019-touch-event-image-made-canvas.html

Questions connexes