Подтвердить что ты не робот

Использование класса GLSurfaceView с макетами android xml

Я хочу использовать макеты Android для xroid. Я поместил glSurfaceView в макет фрейма для использования в сочетании с линейным макетом, таким образом...

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

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

</FrameLayout>

<LinearLayout android:id="@+id/gamecontrolslayout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_weight="5"
          android:background="@drawable/backdrop"> 
//some layout stuff

</LinearLayout>
<LinearLayout>

Затем я называю свой макет таким образом

setContentView(R.layout.main);
    GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.surfaceviewclass);

в onCreate();

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

glSurfaceView = new MyGLSurfaceView(this);
    setContentView(glSurfaceView);

Есть ли все-таки сочетание этих двух? Я хочу это сделать, потому что в моем классе glSurfaceView загружается множество вещей, таких как загрузка файлов и события касания. И только я только подумал о реализации этого нового макета

4b9b3361

Ответ 1

Просто укажите свой собственный класс (с полным именем пакета) в xml, так же, как вы ссылаетесь на android.opengl.GLSurfaceView. Убедитесь, что ваш подкласс реализует соответствующий конструктор и передает контекст и атрибуты родителям:

public MyGLSurfaceView(Context context, AttributeSet attrs)
{
   super(context, attrs);

Затем вы можете получить его с помощью findViewById:

MySurfaceView glSurfaceView = 
             (MySurfaceView)findViewById(R.id.surfaceviewclass);

Это должно сделать трюк.

Ответ 2

Если все кончается, как вы пишете в xml-макете, полный путь к классу Glsurfaceview: (и имя класса)

работает только в том случае, если класс GLSurfaceView написан в собственном файле. в этом файле для shure, конструкторы должны быть написаны правильно.

Я читаю о, 1 конструктор для xml-refer и один для общения между классами. конструктор для xml-refer и один для общения между классами, могут быть найдены, если они написаны корректно, внутри GLSurfaceView , GLSurfaceView, где вы устанавливаете Renderer, установить его в конструкторе xml, должен быть единственным способом, он отлично работает. (показано в андре 1)

XML-конструктор:

public MyGLSurfaceView (контекст контекста, AttributeSet attrs) {супер (контекст, attrs); setEGLContextClientVersion (2);
renderer = new Renderer (контекст); setRenderer (рендерер);

Если вы некоторые из этих народов, которые не могут работать SurfaceView, в xml-layout ore, которые покупают эту книгу из Apress - Начало 3D-Game-Development. не злитесь на руду. На странице 44-45 он записывается в одном файле. Напишите GLSurfaceView, как и в моем ответе, в собственном файле. Renderer - это собственный файл, где: onSurfaceCreated, onSurfaceChanged, onDrawFrame..может быть найдено И MainActivity