Кнопка и GLSurfaceView - PullRequest
       18

Кнопка и GLSurfaceView

7 голосов
/ 28 августа 2010

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

Теперь я хочу добавить кнопку в это представление. Как это достигается?

Можно ли это сделать без использования макета xml?

1 Ответ

18 голосов
/ 06 сентября 2010

Вы можете вручную создавать и добавлять представления в представление содержимого действия. В методе onCreate в Activity после выполнения setContentView в GLSurfaceView или с помощью XML-макета вы можете сделать следующее, добавив кнопку в верхнюю часть GLSurfaceView в верхнем левом углу:

 Button b = new Button(this);
 b.setText("Hello World");
 this.addContentView(b,
            new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

Если вы хотите, чтобы кнопка находилась где-то еще на экране, вам нужно добавить ее в макет, а затем добавить этот макет в представление содержимого. Чтобы кнопка находилась в центре экрана, вы можете сделать следующее:

LinearLayout ll = new LinearLayout(this);
Button b = new Button(this);
b.setText("hello world");
ll.addView(b);
ll.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
this.addContentView(ll,
            new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

Если вам нужна кнопка в нижней части экрана, вы можете использовать Gravity.BOTTOM вместо Gravity.CENTER_VERTICAL и т. Д.

Убедитесь, что вы вызываете метод return super.onTouch ... в методах событий касания, если ваш GLSurfaceView перехватывает касания или ваша кнопка не будет получать события касания.

...