Обработка OnTouchEvent в виде вида, который также отвечает на OnTouchEvent (используется для работы в OSMDroid 3.0.2)
-
26-10-2019 - |
Вопрос
В настоящее время я использую osmdroid jar 3.0.1, и у меня есть MapView внутри "Затягиваемое пространство«(Вид, который вы можете провести между экранами). У меня есть полоса внизу, которая позволяет пользователю проходить между пространствами, и, если событие сенсорного события происходит за пределами этой области, я называю 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);
}
Хотя это противно (представление должно быть передано экземпляр карты), он хорошо работал в версиях 3.0.1 и 3.0.2. Однако, поскольку 3.0.3 он больше не работает.
Есть ли лучший способ передать события Touch на карту OSMDroid?
У меня есть демонстрационный проект, который иллюстрирует эту проблему. Полный проект Eclipse на GitHub.
Вы можете изменить путь сборки, чтобы использовать бачку 3.0.1 или 3.0.2, и карта правильно прокручивается в большем пространстве, но изменение на 3,0,3 или 3.0.4, и любое боковое движение игнорируется.
Любое руководство будет высоко оценено.
PS, это перекрестное сообщение из списка OSMDroid. Я надеюсь, что здесь есть еще несколько читателей.
Решение
Проблема заключалась в том, что MapView.OntouchEvent был переименован в MapView.DispatchTouchEvent между версиями 3.0.2 и 3.0.3