Android glSurfaceView с наложением с использованием XML / Java

Я запустил приложение Android OpenGL, и у меня есть следующие классы:

class A extends Activity
class B extends GlSurfaceView implements Renderer

Когда вызывается onCreate класса A, он создает объект введите класс B и позвоните:

setContentView(Bobject)

Пока это работает, и я потратил на это несколько дней.

Теперь я хотел добавить кнопки в свое приложение и нашел пример SurfaceViewOverlay. Это использует некоторый XML для создания иерархии представлений. Я хотел создать что-то очень похожее на то, что я просто вырезал и вставил XML-код:

    <android.opengl.GLSurfaceView android:id="@+id/glsurfaceview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    <LinearLayout android:id="@+id/hidecontainer"
            android:orientation="vertical"
            android:visibility="gone"
            android:background="@drawable/translucent_background"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            ...

Теперь, имея в виду мою исходную иерархию классов, как мне инициализировать свои представления? Что я должен написать в onCreate () моего класса A?

Я попытался использовать:

Bobject = new B(this);
GLSurfaceView glSurfaceView =
        (GLSurfaceView) findViewById(R.id.glsurfaceview);
    glSurfaceView.setRenderer(Bobject);

И он рисует кнопки и представление GL на экране, но представление GL не может принимать какие-либо данные от касаний / клики.

Вероятно, это связано с тем, что onTouchEvent () Bobject не вызывается, поскольку он используется только как объект:

Renderer

, а не как объект:

glSurfaceView

.

Я действительно хочу, чтобы вместо приведенного выше кода Bobject заменил glSurfaceView. Но я не знаю, как это сделать. Когда я нахожу findViewById (), кажется, что glSurfaceView уже создан. Как я могу попросить его использовать объект типа B для представления GL?

Извините за любые ошибки новичка. Совершенно новый для Android.

РЕДАКТИРОВАТЬ: Я также пробовал это:

Я также пробовал следующее: похоже, что glSurfaceView уже создан. Как я могу попросить его использовать объект типа B для представления GL?

Извините за любые ошибки новичка. Совершенно новый для Android.

РЕДАКТИРОВАТЬ: Я также пробовал это:

Я также пробовал следующее: похоже, что glSurfaceView уже создан. Как я могу попросить его использовать объект типа B для представления GL?

Извините за любые ошибки новичка. Совершенно новый для Android.

РЕДАКТИРОВАТЬ: Я также пробовал это:

Я также пробовал следующее: В моем XML-файле я изменил GLSurfaceView на:

<com.bla.bla.B
            android:id="@+id/glsurfaceview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

А в своем конструкторе класса A я вызываю:

// This returns null
Bobject = (B) findViewById(R.id.glsurfaceview);

// And this suspends the application. :(
setContentView(R.layout.surface_view_overlay);

Как мне использовать мой собственный класс, расширяющий glSurfaceView в моем XML-файле / Activity?

6
задан madiyaan damha 8 November 2010 в 05:47
поделиться