Я пытаюсь реализовать новый API Google Maps Google (v2). Однако, похоже, это не соответствует SlidingMenu. Как вы знаете, реализация MapFragment
основана на SurfaceView
. Проблема в том, что SurfaceView
не любит перемещать его - я имею в виду размещение его в передвижных представлениях:
-
ViewPager
, -
ScrollView
, -
ListView
, - или вышеупомянутый
SlidingMenu
.
Когда вы перемещаете его, он оставляет черную дыру в месте, где первоначально располагались ее пиксели. Это выглядит как this.
Эта проблема может быть частично решена путем задания прозрачного фона на SurfaceView
или даже размещения над ним прозрачного View
. Я просто не могу понять, если только для меня результаты неприемлемы или у меня другая проблема, которая заставляет ее выглядеть так, как она выглядит.
Чтобы посмотреть, как это выглядит, просмотрите ЭТОТ ВИДЕО.
(извините за качество, но проблему можно легко увидеть)
Когда нормальный список (оранжевый экран) отрывается при открытии SlidingMenu
, анимация гладкая и приятная. Но как только появится MapFragment
, на карте появится какая-то странная проблема с обновлением/мерцанием/синхронизацией.
Протестировано на HTC One S и Samsung Galaxy ACE.
Моя супер-сумасшедшая идея решить ее: каждый раз, когда начинается анимация открытия, сделайте снимок экрана
Сделать снимок экрана не представляется возможным, но, возможно, кто-то будет вдохновлен этим.MapFragment
(это должно быть возможно с SurfaceView) и заложите его на время анимации, Но я действительно не знаю, как это сделать...
Или, возможно, отключить перерисовку карты другим способом, я не знаю.
UPDATE:
Найдено this.
Похоже, что SurfaceView можно изменить на TextureView, чтобы удалить эти ограничения. Но поскольку MapFragment основан на SurfaceView, я не знаю, можно ли его достичь.
Другое обновление Похоже, что эта проблема была решена на устройствах 4.1+. Они просто использовали TextureView. но в более низких версиях нам все равно придется использовать обходные пути.