удаление и повторное добавление линейного макета, который содержит glSurfaceView, не вызывая ничего на экране - PullRequest
1 голос
/ 20 августа 2011

У меня есть простое тестовое приложение, над которым я работаю.Позже это будет импортировано в более крупное приложение, но я хочу, чтобы оно сначала заработало, прежде чем объединить его с реальным приложением.Имеет 3 линейных разметки.Первый - это mainLayout, а два других - child1 и child2 из mailLayout.В дочернем открытии я помещаю GLSurfaceview, а child2 - в текстовое представление.

В glSurfaceView есть пользовательский рендер, который берет 2-мерное изображение и рисует на экране в течение 7 секунд (растягивая его чуть-чуть каждый onDrawFrame).Через 7 секунд следующее изображение должно быть загружено тем же рендерером и отображено на экране.это повторяется бесконечно.

Первое изображение отображается правильно.После первых семи секунд я удаляю child1 и child2 из mainlayout.Затем я загружаю второе изображение и создаю текстуру.Затем я добавляю child1 и child2 обратно.

Проблема, которую я вижу, заключается в том, что на экране ничего не отображается.Также не вызывается ни один из методов Renderers (onDrawFrame, onSurfaceChanged или onSurfaceCreated).

Если я не удаляю child1 и child2 из основного слоя, второе изображение отображается правильно.Причина, по которой мне нужно удалить все дочерние элементы из mainlayout, заключается в том, что в реальном приложении могут быть наложенные макеты / представления, которые пользователь мог перетащить на экран.Их нужно удалить перед следующим изображением.

Что я здесь не так делаю?Спасибо за вашу помощь.

1 Ответ

1 голос
/ 26 сентября 2011

Итак, я обнаружил, что GLSurfaceView разрушался, когда я удалял его с экрана.Я положил onDestroyListener на glSurfaceView и отметил его в локальном логическом значении isGLDestroyed.В следующий раз, прежде чем добавить его на экран, я заново создал GlSurfaceView.

. Дайте мне знать, если это не самый эффективный способ решения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...