Обновление объектов макета вручную в приложении Android для ARCore - PullRequest
1 голос
/ 17 июня 2019

У меня сейчас проблема в приложении ARCore для Android (без сцены).У меня есть действие, в котором есть фрагмент, содержащий объект сеанса ARCore, а также контекст OpenGL ES, связанный с SurfaceView, и внешний класс C ++, который использует jni для связи с приложением Android.

пытаясь сохранить состояние этих объектов при изменении ориентации, но, похоже, не существует способа сохранить эти объекты как посылки в пакете действий для воссоздания после перехода в ландшафтный режим.

Учитывая это, яприбегли к использованию android: configChanges = "direction | screenSize | keyboardHidden"

в моем файле AndroidManifest.xml и переопределении onConfigurationChanged ();внутри моей Activity.

Я попытался вызвать метод внутри onConfigurationChanged (), который вызывает метод внутри класса View, который обновляет свой макет вручную, но это, похоже, не работает.

В основномто, что я пытаюсь сделать, это заставить мое приложение ARCore сохранять все его состояние после перехода в альбомную ориентацию, но у меня есть несколько объектов вида макета в приложении, которые выглядят очень по-разному в портретном и ландшафтном режиме.Поскольку действие больше не воссоздает само себя, оно не загружает автоматически файлы макетов в мои папки resources / layout или resources / layout-land.

В качестве более подробного примера я попытался перезагрузить файлы представленияв моем классе представления, но это, кажется, не обновляет должным образом существующее альбомное представление к новому портретному представлению.Часто, когда я поворачиваю телефон из портретной в альбомную ориентацию и вызываю соответствующий метод updateLandscapeLayout (), представление раздувается, но за пределами экрана.Он раздувается ниже нижней части экрана там, где я его не вижу.

Как правильно вручную заменить представления для портретного и ландшафтного во время выполнения, переопределив onConfigurationChanged ()?

...