Je suis en train de mettre en œuvre de nouveaux Android de Google Maps API (v2). Toutefois, il ne semble pas aller bien avec SlidingMenu. Comme vous le savez, MapFragment
mise en œuvre est basée sur SurfaceView
. Le problème est que l' SurfaceView
n'est pas comme le déplacer - je veux dire de le placer dans les points de vue:
-
ViewPager
, -
ScrollView
, -
ListView
, - ou ladite
SlidingMenu
.
Lorsque vous le déplacez, il laisse un trou noir dans le lieu de ses pixels à l'origine portées. Il ressemble à quelque chose comme cela.
Ce problème peut être partiellement résolu par la spécification d'un arrière-plan transparent sur l' SurfaceView
ou même le fait de placer une transparence View
- dessus d'elle. Je ne peux pas comprendre si c'est seulement pour moi les résultats sont inacceptables, ou si j'ai un problème différent qui lui donne une apparence à quoi il ressemble.
Pour voir à quoi il ressemble, s'il vous plaît regarder CETTE VIDÉO.
(désolé pour la qualité, mais le problème peut être vu facilement de toute façon)
Lorsqu'un normal listview (l'orange de l'écran) est retiré lors de l'ouverture d' SlidingMenu
, l'animation est fluide et agréable. Mais dès que l' MapFragment
s'affiche, il y a un peu bizarre rafraîchissant/scintillement/problème de synchronisation sur la carte.
Testé sur HTC One S et le Samsung Galaxy ACE.
Mon super-duper-idée folle de le résoudre: à chaque fois que l'animation d'ouverture commence, prendre une capture d'écran de l'
La prise de capture d'écran d'une carte n'est pas possible, mais peut-être que quelqu'un aura inspiré.MapFragment
(il devrait être possible avec SurfaceView) et le poser sur la durée de l'animation. Mais je ne sais vraiment pas comment faire...
Ou peut-être désactiver redessiner la carte d'une autre manière, je ne sais pas.
Mise à JOUR:
Trouvé cette.
Il semble que SurfaceView peut être modifié à TextureView pour supprimer ces restrictions. Mais depuis MapFragment est basé sur SurfaceView, je ne sais pas si elle peut être réalisée.
Une autre mise à jour Il semble que ce problème a été résolu sur les périphériques 4.1+. Ils ont juste utilisé TextureView. mais sur les versions antérieures, nous avons encore à utiliser des solutions de contournement.