Android: 两个事件侦听器 - 如何调用两者
Android: two event listeners - how to call both
问题:
我有两个监听器,OnSingleTapListener
和 OnGraphicClick
<-ArcGIS 相关的监听器。我的问题是我的一个听众拦截了另一个听众的用户输入。
目标:
看看我附上的截图;我希望在用户点击 "tap here" 图标时调用两个侦听器。目前,当用户点击 "tap here" 图标时 - OnGraphicClick
似乎会拦截用户事件并且不会调用 OnSingleTapListener
。
想了个办法手动调用OnSingleTapListener
中的onSingleTap
方法,但是需要float
参数(用户点击的屏幕位置)和OnGraphicClick
采用 ArcGIS graphic
对象:两种方法的参数不相关。
需要考虑的问题
- 有没有办法通过做类似的事情来模拟用户事件
将执行单击的
performClick
方法
在用户点击 "tap here" 图标的位置?
- 我是否可以在地图视图上方创建一个不可见视图并将
OnSingleTapListener
放置在该不可见视图上?如果我这样做了,用户的点击事件是否会通过不可见视图向下传递,从而也与放置在地图视图上的 onGraphicClick
侦听器交互?
有用信息:
我正在为 Android.
使用 ArcGIS API
我有两个听众。一个 OnSingleTapListener
在 MapView
对象(包含所有地图内容的主视图)上设置,一个与 ArcGIS 相关的 onGraphicClickListener
也在 MapView
对象上设置。
MySingleTapListener mySingleTapListener = new MySingleTapListener(mMapView.getContext(), mMapView);
mMapView.setOnSingleTapListener(mySingleTapListener);
mMapViewHelper = new EnhancedMapViewHelper(mMapView, handler, this); //<--onGraphicClickListener is set here
示例屏幕显示
我无法让两个听众协同工作。不过,我确实找到了解决办法。
MapView
class 包含一个将屏幕坐标转换为地图坐标的 toMapPoint
方法。以下是如何使用此方法:
- 只需在正在使用的
MapView
上设置一个 OnSingleTapListener
。
- 让
OnSingleTapListener
的 onSingleTap
方法通过 toMapPoint
方法将每个用户事件转换为地图坐标。
- 如果地图坐标等同于 "tap here" 图标的地图坐标,则执行某些操作,即在这些屏幕坐标处显示弹出窗口。
问题:
我有两个监听器,OnSingleTapListener
和 OnGraphicClick
<-ArcGIS 相关的监听器。我的问题是我的一个听众拦截了另一个听众的用户输入。
目标:
看看我附上的截图;我希望在用户点击 "tap here" 图标时调用两个侦听器。目前,当用户点击 "tap here" 图标时 - OnGraphicClick
似乎会拦截用户事件并且不会调用 OnSingleTapListener
。
想了个办法手动调用OnSingleTapListener
中的onSingleTap
方法,但是需要float
参数(用户点击的屏幕位置)和OnGraphicClick
采用 ArcGIS graphic
对象:两种方法的参数不相关。
需要考虑的问题
- 有没有办法通过做类似的事情来模拟用户事件
将执行单击的
performClick
方法 在用户点击 "tap here" 图标的位置? - 我是否可以在地图视图上方创建一个不可见视图并将
OnSingleTapListener
放置在该不可见视图上?如果我这样做了,用户的点击事件是否会通过不可见视图向下传递,从而也与放置在地图视图上的onGraphicClick
侦听器交互?
有用信息:
我正在为 Android.
我有两个听众。一个 OnSingleTapListener
在 MapView
对象(包含所有地图内容的主视图)上设置,一个与 ArcGIS 相关的 onGraphicClickListener
也在 MapView
对象上设置。
MySingleTapListener mySingleTapListener = new MySingleTapListener(mMapView.getContext(), mMapView);
mMapView.setOnSingleTapListener(mySingleTapListener);
mMapViewHelper = new EnhancedMapViewHelper(mMapView, handler, this); //<--onGraphicClickListener is set here
示例屏幕显示
我无法让两个听众协同工作。不过,我确实找到了解决办法。
MapView
class 包含一个将屏幕坐标转换为地图坐标的 toMapPoint
方法。以下是如何使用此方法:
- 只需在正在使用的
MapView
上设置一个OnSingleTapListener
。 - 让
OnSingleTapListener
的onSingleTap
方法通过toMapPoint
方法将每个用户事件转换为地图坐标。 - 如果地图坐标等同于 "tap here" 图标的地图坐标,则执行某些操作,即在这些屏幕坐标处显示弹出窗口。