2010-10-13 5 views
0

J'ai créé une toile dans android et à l'intérieur que j'ai plusieurs images bitmap.not je veux faire ces images cliquez sur capable.image cliquable à l'intérieur de la toile

J'ai essayé des choses suivantes jusqu'à présent ..

J'ai essayé d'ajouter bitmap en mode image imageview a une setOnClickListner mais je pense que ImageView ne peut être ajouté en toile, donc je laissé tomber cette idée. car même Bitmap lui-même n'a aucun événement de clic.

Répondre

1

Si vous souhaitez utiliser Canvas, gardez à l'esprit qu'il s'agit d'un mécanisme de dessin de bas niveau.

Par conséquent, vous devez implémenter la logique de clic vous-même. Saisissez les coordonnées de tout TouchEvent entrant.

  • Si le TouchEvent est un "toucher" (appuyez sur le doigt) ou "retouche" (doigt relâché), selon votre choix, considérez qu'il s'agit d'un clic.
  • Comparez les coordonnées de l'événement de clic à la boîte englobante de chaque image attachée pour trouver quelle image a été touchée. Prendre en compte l'indice z en cas de chevauchement.
  • Déclenchez un onClickListener.

Vous devez également conserver les coordonnées de toutes les images et les onClickListeners correspondants quelque part en mémoire.

Autre solution:

Utilisez une mise en page, peut-être un RelativeLayout, dans lequel vous ajoutez les ImageViews comme des enfants.

+0

Ohhh c'est un processus assez lourd avez-vous une solution de rechange? – Hunt

+0

Si je vais aller avec votre approche, comment puis-je obtenir/calculer la boîte de délimitation d'une image à l'intérieur de la toile? – Hunt

+0

Oui, c'est un processus lourd. En suivant cette procédure, vous codez une vue personnalisée à partir de zéro. C'est à vous de mesurer le cadre de sélection de chaque image ajoutée et de la stocker dans une ArrayList, par exemple. Il y a une autre solution, j'ai édité la réponse. –

-1

Je crois que vous vous demandez quelque chose comme ça:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/clickable_image" 
     android:src="@drawable/ic_image" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:clickable="true" 
     /> 
</LinearLayout> 

Maintenant vous avez votre arrière-plan « Définition de la vue tout comme fond d'écran » dans vos propres mots, et vous avez votre image, qui est cliquable. Dans votre code, vous implémentez onClickListener et l'attachez à votre ImageView et il fera ce que vous voulez faire.