У меня есть GLSurfaceView
во фрагменте, причем это мой основной фрагмент. Когда я делаю переход от фрагмента с моим GLSurfaceView к другому фрагменту без GLSurfaceView, GLSurfaceView немного перемещается вверх перед началом перехода.
Я попытался установить GLSurfaceView.setZOrderOnTop(true)
, это не работает, и на самом деле это приносит больше вреда, чем пользы в этой ситуации, так как моя реклама и панель навигации становятся скрытыми.
Я попытался скрыть фрагмент, на котором размещается GLSurfaceView, но это не дало никакого эффекта.
Я попытался приостановить фрагмент, содержащий GLSurfaceView , поэтому одновременная приостановка GLSurfaceView не имеет никакого эффекта.
Когда GLSurfaceView перемещается вверх, экран становится черным там, где должен быть GLSurfaceView. Кажется, что черная область на экране характерна для переходов фрагментов, поскольку, если я удалю переход и просто заменю транзакцией фрагмента, движение glsurfaceview исчезнет. Это не решение, потому что мне нужны переходы в моем приложении от одного фрагмента к другому.
Наконец, я понимаю, что ondestroyview вызывается для фрагмента с GLSurfaceView, таким образом уничтожая представление перед анимацией перехода к следующему фрагменту, и я думаю, что это может быть проблемой.
Вот некоторый код...
Добавление фрагмента с помощью glsurfaceview
//clear all fragments from the back stack if there are any
getSupportFragmentManager()
.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
//start a new deploy fragment
getSupportFragmentManager()
.beginTransaction()
.add(R.id.container, new DeployFragment(), "Main Fragment")
.commit();
замена фрагмента glsurfaceview фрагментом списка предпочтений
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left,
R.anim.enter_from_left, R.anim.exit_to_right)
.replace(R.id.container, new SettingsFragment(), "Settings Fragment")
.addToBackStack(null)
.commit();
При переходе от DeployFragment (фрагмент glsurfaceview) к SettingsFragment (фрагмент обычного списка) GLSurfaceView немного перемещается вверх, возможно, на размер высоты двух панелей действий, расположенных друг над другом. При перемещении вверх glsurfaceview также отображается черная область на экране, где должен быть GLSurfaceView, но это не так.
Любые идеи, как решить эту проблему?
ВИДЕО ПРОБЛЕМЫ
сразу после выбора опции вы видите, что GLSurfaceView перемещается вверх, открывая черное пространство