À l'aide de GLSurfaceView classe avec android xml mises en page
Je veux profiter de l'android xml mises en page. J'ai mis un glSurfaceView dans un cadre de mise en page à utiliser en conjonction avec un linéaire de la mise en page comme si...
<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>
Je téléphone alors à ma disposition comme
setContentView(R.layout.main);
GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.surfaceviewclass);
dans onCreate();
Comment puis-je appeler mon glSurfaceView afin que je puisse utiliser des layouts xml comme ceci et aussi référence à mon propre GLSurfaceView classe (ci-dessous est le code qui fait référence à mon propre GLSurfaceView classe)...
glSurfaceView = new MyGLSurfaceView(this);
setContentView(glSurfaceView);
Est-il de toute façon de la combinaison de ces deux? Je veux le faire parce que j'ai tout un tas de choses qui se passent dans ma glSurfaceView classe comme le chargement de fichiers et les événements tactiles. Et seulement, j'ai juste pensé à la mise en œuvre de cette nouvelle disposition
OriginalL'auteur Jack | 2011-10-26
Vous devez vous connecter pour publier un commentaire.
Simplement la référence de votre propre classe (avec tout le paquet) dans le fichier xml, de la même manière que vous avez de référence android.opengl.GLSurfaceView. Assurez-vous que votre sous-classe implémente le bon constructeur, et passe le contexte & attributs de la mère:
Alors vous pouvez le récupérer à l'aide de findViewById:
Cela devrait faire l'affaire.
Juste implementend ci-dessus dit qu'il a du mal à gonfler classe. L'erreur vient du fichier xml
Est votre classe public?
public class MyGLSurfaceView extends GLSurfaceView {
et le constructeurpublic MyGLSurfaceView(Context context){ super(context);
Bizarre Son tous les travail maintenant. S'avère que vous faites tout ce que vous avez dit sauf qu'il faut chercher la glSurfaceView avec
glSurfaceView = new MyGLSurfaceView(this);
et puis définissez le fichier xml que l'affichage du contenu gênant. pourriez-vous mettre à jour vous répondre pour s'adapter s'il vous plaît.OriginalL'auteur svdree
Si tout est corect, comme vous l'écrivez dans le fichier xml-mise en page, le Chemin d'accès complet à la Glsurfaceview-classe : (et classname)
il ne fonctionne que si la classe, GLSurfaceView, écrit dans un Fichier propre.
dans ce fichier pour shure, le construktors doivent être écrits correctement.
j'ai lu ,de 1 constructeur de xml, reportez-vous, et un pour la communication entre les classes.
constructeur de xml, reportez-vous, et un pour la communication entre les classes, peut être trouvé, s'écrit correcly, à l'intérieur de GLSurfaceView
.
GLSurfaceView, est l'endroit où vous définissez le moteur de Rendu,
régler le xml constructeur, doit être la seule façon, il fonctionne très bien. (indiqué dans la réponse 1)
xml-constructeur:
public MyGLSurfaceView(Context context, AttributeSet attrs) { super(context, attrs);
setEGLContextClientVersion(2);
renderer = nouveau moteur de Rendu(contexte);
setRenderer(moteur de rendu);
Si vous avez certains de ces peuples,
qui ne peux pas obtenir SurfaceView de travail, dans le format xml-mise en page de minerai, qui achètent ce livre de Apress - Début 3D - Développement de Jeu.
ne soyez pas en colère minerai de vous blesser.
À la page 44-45 il sera écrit dans un fichier.
Écrire GLSurfaceView, comme dans ma réponse, dans un fichier propre.
Moteur de rendu est propre fichier, d'où:
onSurfaceCreated,
onSurfaceChanged,
onDrawFrame..peut être trouvé
Et Le MainActivity
OriginalL'auteur azuztekztorem