Добавление представлений в пользовательский GLSurfaceView - PullRequest
0 голосов
/ 29 июля 2011

(обратите внимание, что я абсолютный новичок в программировании Android)

У меня есть класс, производный от GLSurfaceView.

То, что я хотел бы, это поместить некоторые виды (изображение, текст) поверх него. Мне удалось заставить текстовое представление правильно позиционировать, используя textView.setPadding(300,0,0,0);

Проблема в том, что я не могу правильно расположить изображение. Я пробовал imageView.layout(), imageView.setPadding().

Вот код:

 ImageView imageView=new .... // Create and set drawable

 // Setting size works as expected
 RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(200,200);
 imageView.setLayoutParams(lp);

 surfaceView = new MySurfaceViewDerivedFromOpenGLSurface(...);

 setContentView(surfaceView);

 addContentView(textView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 addContentView(textView2, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 addContentView(imageView, lp); // Add the image view

Можно ли даже правильно расположить его таким образом, не указав содержимое в файле XML?

Я видел пример на веб-сайте sdk dev, который показывает, как создавать представления в представлении поверхности openGL, но проблема в том, что у меня есть производный класс, и я не знаю, могу ли я указать его в файле XML ( У меня 0% опыта работы с XML, Eclipse все для меня уже обработал).

1 Ответ

2 голосов
/ 29 июля 2011

Вы сэкономите массу головной боли позже, узнав, как использовать XML-макет.Задание макета для пользовательского представления меня тоже смутило.Вот как это работает:

<view class="complete.package.name.goes.here.ClassName"
    android:id="@+id/workspace"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >        
</view>

Таким образом, очень простой вертикальный макет для вашего приложения будет выглядеть так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <ImageView android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <view class="package.name.to.MySurfaceViewDerivedFromOpenGLSurface"
        android:id="@+id/mySurfaceView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">        
    </view>     
</LinearLayout>

Вы можете получить ссылку на что угодно вваши файлы макета, пока есть идентификатор:

ImageView myImageView = (ImageView ) findViewById(R.id.imageView1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...