Использование класса GLSurfaceView с макетами Android xml
Я хочу использовать макеты Android xml. Я поместил 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 происходит много вещей, таких как загрузка файлов и сенсорные события. И только я только что подумал о реализации этого нового макета
2 ответов
просто ссылаться на свой собственный класс (с полным именем пакета) в xml, так же, как вы ссылаетесь на android.использование OpenGL.GLSurfaceView. Убедитесь, что ваш подкласс реализует правильный конструктор и передает контекст и атрибуты родительскому классу:
public MyGLSurfaceView(Context context, AttributeSet attrs)
{
super(context, attrs);
затем вы можете получить его с помощью findViewById:
MySurfaceView glSurfaceView =
(MySurfaceView)findViewById(R.id.surfaceviewclass);
это должно сделать трюк.
Если все corect, как вы пишете в xml-макете, полный путь к Glsurfaceview-class: (и classname)
Он работает только в том случае, если класс GLSurfaceView написан в собственном файле. в этом файле для shure, construktors должны быть написаны правильно.
Я читал о, 1 конструктор для xml-ссылки и один для связи между классами. конструктор для xml-refer, и один для comunication между классами, можно найти, если написано correcly, внутри GLSurfaceView . GLSurfaceView, где вы устанавливаете визуализатор, установите его в конструкторе xml, должен быть единственный способ, он работает нормально. (см. Вариант 1)
xml-конструктор:
public MyGLSurfaceView (контекстный контекст, AttributeSet attrs) { super (контекст, attrs);
setEGLContextClientVersion (2);
renderer = новый рендеринг (контекст);
setRenderer(визуализации);
Если вы некоторые из этих народов, кто не может получить работу SurfaceView, в xml-макете руда, которые покупают эту книгу от Apress-начало 3D-игры-разработки. не сердись и не причиняй себе вреда. На странице 44-45 это будет написано, в одном файле. Напишите GLSurfaceView, как в моем ответе, в собственном файле. Renderer-собственный файл, где: onSurfaceCreated, onSurfaceChanged, onDrawFrame..можно найти И В MainActivity