在视图中处理onTouchEvent,该视图也响应onTouchEvent(用于在OSMdroid 3.0.2中工作)

时间:2011-07-25 16:45:43

标签: android ontouchevent osmdroid

我目前正在使用osmdroid jar 3.0.1,我在里面有一个MapView “Dragable Space”(您可以在屏幕之间滑动的视图)。 我在底部有一个栏,让用户在空格之间滑动, 如果触摸事件发生在该区域之外,我打电话 mapView.onTouchEvent(事件)。

这曾经在3.0.1中运行良好,但我尝试在osmdroid 3.0.4中使用它 只是似乎适用于垂直运动(我怀疑是相关的 一些触摸坡度设置)。

以下是我的可拖动空间视图中的代码。

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Check if the current space is the Map space and we are over the map
    // difference is the Y value between the top and bottom of the map area.
    if (this.mCurrentScreen == 1
                    && event.getY() >= topY && event.getY() <= difference){
            Log.d(TAG, "touch received inside Map Area");
            // Pass the event directly to the mapView.
            return mOsmv.onTouchEvent(event);
    }
    Log.d(TAG, "touch received outside Map Area");
    return super.onTouchEvent(event);
}

虽然这很讨厌(视图必须传递一个实例) map),它在3.0.1和3.0.2版本中运行良好。但是,自从 3.0.3它不再有效。

现在有更好的方法将触摸事件传递给osmdroid地图吗?

我有一个演示项目来说明这个问题。全蚀 项目是on github

您可以更改构建路径以使用3.0.1或3.0.2 jar,并且地图在较大的空间内正确滚动,但更改为3.0.3或3.0.4并忽略任何侧向移动。 / p>

非常感谢任何指导。

PS,这是来自OSMdroid列表的交叉帖子。我希望这里有更多的读者。

1 个答案:

答案 0 :(得分:0)

问题是MapView.onTouchEvent在版本3.0.2和3.0.3之间重命名为MapView.dispatchTouchEvent