2011-09-27 5 views
0

Je veux mettre en œuvre une fonctionnalité dans laquelle une zone particulière d'une image définie dans un ImageView entraînera l'appel d'une intention.android ImageLink liens hypertexte

similaires aux hyperliens coords HTML

<img src ="planets.gif" width="145" height="126" alt="Planets" usemap ="#planetmap" /> 

<map name="planetmap"> 
    <area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun" /> 
    <area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury" /> 
    <area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus" /> 
</map> 

Je veux mettre en œuvre ce même dans une image zoomée.

Heres ce que je recherche et trouvé conduit sur:

je vais devoir utiliser un SurfaceView avec une logique appropriée dans OnTouch();

Fonctionnalité similaire est là sur mapViews obtenir la méthode de projection. similaire à cela, mais devrait être chargé d'un bitmap.

Répondre

0

Une autre approche possible est de créer vous-même une vue qui utilise un patch 9 transparent comme arrière-plan. Réglez-le à la taille et la position dont vous avez besoin et appelez votre intention à partir de son onClickListener(). Ceci permet d'obtenir le même effet du point de vue des utilisateurs.

Editer: Si vous voulez plusieurs actifs en même temps, vous devez utiliser plusieurs vues transparentes. Si vous voulez seulement 1 actif à la fois, vous pouvez réutiliser le même et juste changer la taille/position de celui-ci.

Étant donné que cette approche crée des vues supplémentaires, vous allez avoir un léger impact sur les performances. Si vous cherchez à maximiser la performance en faisant quelque chose comme vous l'avez mentionné ci-dessus où vous attachez un OnTouchListener et avez votre logique dans le rappel onTouch. Vous pouvez créer des objets Rect pour représenter vos zones tactiles et appeler Rect.intersect() pour voir si la position de l'événement tactile croise l'une de vos zones rectales. Cela vous donnerait probablement une meilleure performance globale.

+0

Comment vais-je pouvoir définir plusieurs zones dans cette approche? – Shardul

+0

Vous devez utiliser plusieurs vues, voir ma modification. – FoamyGuy

+0

Avez-vous un échantillon de travail? Et si je veux aussi mettre à l'échelle cette image, alors ces zones devraient aussi évoluer. Juste comme marquer dans le livre de visage. – Shardul