1

我们正在开发一个 Android 应用程序,要求在单击图像的不同部分时具有不同导航的单个图像。例如,建筑物的完整图像并单击我们想要显示公寓中提供的设施的不同公寓(建筑面积、房间数量、阳台数量、露台(如果是顶层公寓)等)。

想过以下两种可能,

  1. 将图像切片并放在布局 xml 中(使其看起来像单个图像),一旦用户单击它,使用图像视图 ID,我们将知道单击了哪个部分。

  2. 使用 onclick 事件将图像切片并放在 html 中(使其看起来像单个图像),在 webview 中加载 html,创建处理点击的 JavaScript 类。

上面两个很难,因为零件不是正确的矩形或正方形。

ASP.Net 有用于此目的的 ImageMap 控件,我们在 Android 中有类似的东西吗?

4

2 回答 2

1

在 android 中没有这样的组件可以做到这一点,但您可以轻松地创建一个:

public class ImageMap extends ImageView implements onClickListener 
{

  List<Rect> hotspot;

  public ImageMap(Context c)
  {
    super(c);
    hotspot = new List<Rect>();
    setOnClickListener(this);
  }

public void addHotSpot(Rect r)
{
   hotspots.add(r);
}


  public void onClick(Event e)
  {
     int currentPosition = 0;
     for(Rect spot : hotspot){
       if(spot.contains(e.getX(), e.getY()))
            triggerClickInHotSpotAtPos(currentPosition);
       currentPosition ++;
     }

  }

  public void triggerHotSpot(int hotspotIndex)
  {
   //TODO  do something useful like calling listener for this given hotspot etc ...
  }
}

请注意,这不是完成的工作,但它更像是伪代码,重要的是你明白了。

于 2013-03-06T08:48:20.860 回答
0

您可以通过点击其onTouch 事件处理程序来使用单个 ImageView 执行此操作。

有关如何获取触摸事件坐标的详细信息,请参阅MotionEvent文档。

于 2013-03-06T08:43:14.423 回答