surfaceview + glsurfaceview + framelayout
Je suis nouveau à java et OpenGL.
Je vais essayer d'obtenir un aperçu de l'appareil photo de l'écran avec la possibilité de
affichage 3d des objets en même temps. Après avoir parcouru les échantillons à
l'api des démos, j'ai pensé que la combinaison du code pour les exemples à
l'api de démonstration devrait suffire. Mais de toute façon sa ne fonctionne pas. Les forces de moi
à l'arrêt lors du démarrage et de l'erreur qui est mentionné en tant que pointeur null
exception à la règle. Quelqu'un pourrait-il partager avec moi où j'ai fait de mal et comment
procéder à partir de là. Comment j'ai fait la combinaison pour le code comme indiqué
ci-dessous:
myoverview.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.opengl.GLSurfaceView
android:id="@+id/cubes"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<SurfaceView
android:id="@+id/camera"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout>
myoverview.java
import android.app.Activity;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.Window;
public class MyOverView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Hide the window title.
requestWindowFeature(Window.FEATURE_NO_TITLE);
//camera view as the background
SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera);
cameraView = new CameraView(this);
//visual of both cubes
GLSurfaceView cubesView = (GLSurfaceView) findViewById(R.id.cubes);
cubesView = new GLSurfaceView(this);
cubesView.setRenderer(new CubeRenderer(false));
//set view
setContentView(R.layout.myoverview);
}
}
GLSurfaceView.java
import android.content.Context;
class GLSurfaceView extends android.opengl.GLSurfaceView {
public GLSurfaceView(Context context) {
super(context);
}
}
REMARQUE :
-
Je n'ai pas de liste le reste des fichiers car ils ne sont que des copies de
l'api de démos. Le cameraView se réfère à la camerapreview.java exemple
et le CubeRenderer se réfère à la CubeRenderer.java et Cube.java
exemple. Toute aide serait appréciée. -
Désolé, je ne savais pas que le codage n'a pas lieu en raison du formatage des erreurs.
OriginalL'auteur pohtzeyun | 2010-01-21
Vous devez vous connecter pour publier un commentaire.
la raison pour laquelle vous faites une exception de pointeur null lorsque l'on travaille avec .xml est parce ur de la création de nouveaux points de Vue dans votre code java.. au lieu d'utiliser ceux de la .fichier xml pour lesquelles vous pourriez avoir passé dans les propriétés(si u fait passer dans les propriétés..).. le nouveau point de Vue, évidemment, ont une valeur null.. donc lancer une exception de pointeur null... par exemple --
cubesView = new GLSurfaceView(ce);
est en fait pas nécessaire dans le code si vous avez déjà créé dans la Vue dans l' .fichier xml contenant FrameLayout..
OriginalL'auteur bala singareddy
C'est très simple en fait...si vous souhaitez définir votre point de vue en XML, vous avez juste à mettre en œuvre
au lieu de GLSurfaceView(Context context)
Qu'est ce qui est appelé automatiquement lorsque la vue est initialisé à partir du XML. J'ai eu le même problème et c'est comment il a été fixé.
OriginalL'auteur Jlam
Trouvé comment le résoudre... via java façon... il suffit d'utiliser addContentView au lieu d'utiliser le langage xml.... eh bien au moins sa résolus. 🙂
OriginalL'auteur pohtzeyun
Que je n'ai fait qu'ici, dans cette SORTE de lien qui fournit une implémentation complète.
OriginalL'auteur bala singareddy