可点击部分的大图像

时间:2013-03-05 19:03:34

标签: android

我的Android应用程序中有一个大图像,代表一个真实的图片设备。 现在我想知道,最好的方法是做什么:

  • 将某些特定图像扇区标记为可点击
  • 直观预览点击事件(如普通的安卓机按钮)

我已经想过像“imagemap”类似的解决方案了 http://catchthecows.com/?p=113。 但它没有突出显示点击的部分(对我来说是必要的)。 创建处理突出显示效果的“n”个不同图片是不可能的,或者说非常复杂(例如:第1部分点击 - 因此突出显示它,第2部分点击 - 因此高亮显示它......)。

任何建议都会很棒。

非常感谢。

顺便说一下: 我的图像如下所示(红色部分应该是可点击的)。 enter image description here

1 个答案:

答案 0 :(得分:1)

我快速查看了您提供的ImageMap来源。

这是onDraw()的{​​{1}}方法:

ImageMap

因此,正如评论所述,首先绘制完整的图像,然后是位置装饰' (这似乎是一个特别感兴趣的领域),最后是“泡沫”区域,它们基本上似乎是可选区域的工具提示,可能不适用于您。

看一下'位置装饰的绘图方法':

/**
* Paint the view
* image first, location decorations next, bubbles on top
*/
@Override
protected void onDraw(Canvas canvas) {
    drawMap(canvas);
    drawLocations(canvas);
    drawBubbles(canvas);
}

最后是protected void drawLocations(Canvas canvas) { for (Area a : mAreaList) { a.onDraw(canvas); } } 对象的绘制方法(可定义的可选图像区域):

Area

我想说你最好的选择是使用// an onDraw is set up to provide an extensible way to // decorate an area. When drawing remember to take the // scaling and translation into account public void onDraw(Canvas canvas) { if (_decoration != null) { float x = (getOriginX() * mResizeFactorX) + mScrollLeft - 17; float y = (getOriginY() * mResizeFactorY) + mScrollTop - 17; canvas.drawBitmap(_decoration, x, y, null); } } 类来处理大部分所需的功能。您可以使用提供的ImageMap方法来处理区域'突出显示'。使用Area.onDraw()类或子类中定义的形状信息,并使用Area方法在选定区域上绘制透明高光蒙版,而不是绘制“装饰位图”。

编辑:对于每个Canvas子类,您需要一个单独的onDraw()实现,因为区域边界信息存储在子类中。