Manipulation onTouchEvent l'intérieur d'une vue qui répond également à onTouchEvent (utilisé pour le travail en OSMdroid 3.0.2)

StackOverflow https://stackoverflow.com/questions/6819543

  •  26-10-2019
  •  | 
  •  

Question

J'utilise actuellement pot osmdroid 3.0.1, et j'ai un MapView dans un « Dragable Espace » (vue que vous pouvez glisser entre les écrans). J'ai un bar au fond qui permet à l'utilisateur de glisser entre les espaces, et si l'événement tactile se produit en dehors de cette zone, je appel mapView.onTouchEvent (événement).

Ceci fonctionnait bien dans 3.0.1, mais j'ai essayé dans osmdroid 3.0.4, et ne semble fonctionner pour le mouvement vertical (que je soupçonne est lié à un certain réglage de slop tactile).

Voici le code de mon Dragable vue spatial.

@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);
}

Bien que ce soit méchant (le point de vue doit être passé une instance de la la carte), il a fait beau travail dans les versions 3.0.1 et 3.0.2. Toutefois, étant donné 3.0.3 il ne fonctionne plus.

Y at-il une meilleure façon de passer des événements tactiles à la carte osmdroid maintenant?

J'ai un projet de démonstration qui illustre ce problème. L'éclipse totale projet est sur github .

Vous pouvez modifier le chemin de la construction d'utiliser un pot 3.0.1 ou 3.0.2, et la carte défile autour correctement dans l'espace plus grand, mais le passage à 3.0.3 ou 3.0.4 et tout mouvement latéral est ignoré.

Toute orientation serait grandement apprécié.

PS, c'est un poste de la Croix de la liste OSMdroid. J'espère qu'il ya quelques lecteurs ici.

Était-ce utile?

La solution

Le problème était que MapView.onTouchEvent a été renommé MapView.dispatchTouchEvent entre les versions 3.0.2 et 3.0.3

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top