gpt4 book ai didi

android - 带有可点击部分的大图像

转载 作者:行者123 更新时间:2023-11-29 01:55:50 26 4
gpt4 key购买 nike

我的 Android 应用程序中有一个大图像,它代表一个真实的图片设备。现在我想知道,执行以下操作的最佳方法是什么:

  • 将一些特定的图像区域标记为可点击
  • 视觉预览点击事件(像一个普通的 android 按钮)

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

任何建议都会很棒。

非常感谢。

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

最佳答案

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

这是 ImageMaponDraw() 方法:

/**
* 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 方法在所选区域上绘制透明高光 mask 。

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

关于android - 带有可点击部分的大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com