2010-01-21 6 views
3

У меня есть приложение, которое использует OpenGL для GLSurfaceView. Проблема заключается в том, что начальная нагрузка занимает довольно много времени при обработке текстур, а - все готово.Создание экрана Android Splash/Loading

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

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

Любые идеи?

ответ

4

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

Шаг 2: Положите что GLSurfaceView внутри FrameLayout

Шаг 3: Добавьте ImageView, как еще одного ребенка того же FrameLayout

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

+0

Я пытался сделать это, но я должен делать что-то неправильно, потому что каждый раз, когда я добавить GLSurfaceView к main.xml, это сбой при попытке запустить мою деятельность. У вас есть образец или ссылочная ссылка, на которую вы можете указать мне? – cjserio

+3

На самом деле, я смог заставить это работать, но проблема в том, что Renderer не проснулся и не создал свою поверхность, если вид невидим ... – cjserio

+1

Это не работает, поскольку поверхностное представление не вызывается, так как его невидимое – Guy

3

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

Я создал пользовательский макет с именем 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(); после загружены все ваши объекты, текстуры и т.д. ...

+0

Отличная идея, спасибо! –

Смежные вопросы