2010-08-27 8 views
7

Ho una GLSurfaceView dove mostro alcune animazioni usando OpenGL.Button e GLSurfaceView

Ora desidero aggiungere un pulsante a questa vista. Come è stato realizzato?

Può essere eseguito senza coinvolgere il layout xml?

risposta

18

È possibile creare manualmente e aggiungere viste alla visualizzazione del contenuto dell'attività. Nel metodo onCreate nella vostra attività dopo aver fatto setContentView sul GLSurfaceView o tramite un file XML di layout è possibile effettuare le seguenti disposizioni, che aggiunge un pulsante sulla parte superiore del GLSurfaceView nell'angolo in alto a sinistra:

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

Se si desidera che il per essere da qualche altra parte sullo schermo, sarà necessario aggiungerlo a un layout e quindi aggiungere tale layout alla vista del contenuto. Per avere un pulsante che si trova nel centro dello schermo è possibile effettuare le seguenti operazioni:

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)); 

Se si desidera che il pulsante nella parte inferiore dello schermo, è possibile utilizzare al posto di Gravity.BOTTOM Gravity.CENTER_VERTICAL ecc

Assicurati di chiamare return super.onTouch ... nei tuoi metodi di evento touch se GLSurfaceView sta intercettando tocchi, altrimenti il ​​tuo pulsante non riceverà gli eventi touch.

+1

Per chiunque altro si imbatta in questo, prova 'ViewGroup.LayoutParams' quando necessario; questo aiuterà (almeno per Android Studio) a trovare l'importazione necessaria. –