2012-01-13 3 views
2

У меня есть активность, и у меня было представление содержимого активности как «R.layout.main.xml». И у меня есть другой класс, который содержит анимацию, созданную с помощью openGL. Теперь мне нужно использовать эту анимацию на фоне Activity.Использование GlSurfaceview в действии

Код как этот

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main_pixie); 

    mGLView = new ClearGLSurfaceView(this); 
    setContentView(mGLView); 
} 

Но мое приложение сбои ..How я могу решить это.

ответ

3

Когда вы вызываете setContentView() второй раз, вы заменяете то, что было установлено в первый раз, оставив только фон. Сбой, скорее всего, потому, что вы зависеть от элементов основного макета, который удаляется.

Вместо того, чтобы звонить в setContentView() дважды, вы должны указать GLSurfaceView в главном макете. Ниже приведен пример того, как это можно сделать:

<?xml version="1.0" encoding="UTF-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent> 
    <your.application.package.ClearGLSurfaceView 
     android:layout_width="match_parent" 
     android:layout_width="match_parent"/> 
    <!--put the rest of your layout here, i.e the contents of the original R.layout.main_pixie--> 
</FrameLayout> 

Затем вы можете загрузить этот макет в вашем onCreate() как обычно (main_pixie_new относится к выше XML, я просто дал ему это имя, чтобы держать вещи как можно более ясно):

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main_pixie_new); 
} 
Смежные вопросы