У меня были некоторые проблемы с пониманием иерархии представлений моего приложения/устройства (поскольку у меня возникли проблемы с заставкой моего приложения).
По сути, мое приложение представляет собой игру openGL ES 2.0 и имеет следующие элементы:
- Вид заставки (это стандартный вид Android)
- Вид основного приложения (это GLSurfaceView)
- Ресурсы загружаются в фоновом режиме (в AsyncTask)
Все, что я делаю, это:
Создание макета
layout = new RelativeLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
Добавление GLSurfaceView и экрана-заставки
layout.addView(myGLView);
layout.addView(splashscreen); //loads resources on an AsyncTask
Удаление заставки
Когда все загружено и готово, я просто удаляю Splashscreen, чтобы показать GLSurfaceView под ним:
layout.removeView(splashscreen);
При проверке иерархии представлений моего приложения я вижу следующее:
– Просмотры моего приложения
– Просмотры других приложений
Как видно из приведенного выше рисунка, в моем приложении есть RelativeLayout — макет, который я создаю в коде (см. выше). Затем он добавляется в FrameLayout с идентификатором ресурса android:id/content.
Я загрузил 3 приложения из Play Store и проверил их макеты, и все они имеют свои представления, перечисленные непосредственно под этим FrameLayout.
Мой вопрос заключается в том, что именно представляет собой этот FrameLayout и как я могу получить к нему доступ и добавить свои представления (основное приложение, рекламные баннеры, заставка) непосредственно в него?
Я осмотрелся, и ни одна из вещей, которые я прочитал, не ответила на мой вопрос.