Использование GlSurfaceview в деятельности - PullRequest
3 голосов
/ 13 января 2012

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

Код такой:

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

    setContentView(R.layout.main_pixie);

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

Но мое приложение разбивается .. Как я могу решить эту проблему.

1 Ответ

4 голосов
/ 13 января 2012

Когда вы вызываете 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);
 }
...