Создание правильного экрана Android Splash / Loading - PullRequest
3 голосов
/ 21 января 2010

У меня есть приложение, которое использует OpenGL на GLSurfaceView. Эта проблема является то, что начальная загрузка занимает много времени, обработки текстур готовлю вещи.

То, что я хочу сделать, это отобразить простой PNG (с небольшим анимация), пока GLSurfaceView готовится. Как только это готов сделать, я хотел бы снести заставку.

Как правильно это сделать? Я пробовал ViewFlipper, ViewSwitcher и кучу других вещей для переключения между моим представлением R.layout.main и мой GLSurfaceView, но я не могу понять это правильно.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 21 января 2010

Шаг # 1: Сделайте ваш GLSurfaceView быть android:visibility="invisible" в вашем макете XML

Шаг # 2: Поместите это GLSurfaceView внутрь FrameLayout

Шаг # 3: Добавить ImageView в качестве другого потомка того же FrameLayout

Шаг # 4: Когда GLSurfaceView готов, сделайте ImageView невидимым и GLSurfaceView видимым

3 голосов
/ 26 февраля 2012

Вот что я сделал, чтобы преодолеть эту ситуацию ...

Я создал пользовательский макет с именем loader.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/selectLevelID"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/loader"
    android:orientation="vertical" >
</RelativeLayout>

после этого я использовал это при создании рендерера для glSurfaceView

    public GlRenderer(Context ctx)
            {
loader_dialog = new Dialog(context,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
loader_dialog.setContentView(R.layout.loader);
loader_dialog.show()
//do your initializations....
loader_dialog.dismiss();
}

;

или просто позвоните loader_dialog.dismiss(); после загрузки всех ваших объектов, текстур и т. Д.

...