我们正在开发一个Android应用程序,其中要求在单击图像的不同部分时使单个图像具有不同的导航。例如。一个完整的建筑物图像和点击不同的公寓我们想要展示在公寓提供的设施(建筑面积,房间数量,阳台数量,露台(如果被压缩的房子)等)。
考虑过以下两种可能性,
在布局xml中切割图像并放在一起(使其看起来像单个图像),一旦用户点击它,使用图像视图ID我们将知道单击了哪个部分。
使用onclick事件在html中剪切图像并将其放在一起(使其看起来像单个图像),在webview中加载html,创建处理点击的JavaScript类。
上述两个很难,因为这些部件不是正确的矩形或方形。
为此目的,ASP.Net有ImageMap控件,我们在Android中有这样的东西吗?
答案 0 :(得分: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 ...
}
}
要知道这不是一个完成的工作,但它更像伪代码,重要的是你有了这个想法。
答案 1 :(得分:0)
您可以通过点击其onTouch event handler来使用单个ImageView执行此操作。
有关如何获取触摸事件坐标的详细信息,请参阅MotionEvent文档。