Verwendung von GLSurfaceView in Aktivität
-
28-10-2019 - |
Frage
Ich habe eine Aktivität und hatte die Inhaltsansicht der Aktivität als "R.Layout.main.xml" festgelegt. Und ich habe eine andere Klasse, die mit OpenGL erstellte Animation enthält. Jetzt muss ich diese Animation im Hintergrund der Aktivität verwenden.
Der Code ist so
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_pixie);
mGLView = new ClearGLSurfaceView(this);
setContentView(mGLView);
}
Aber meine App stürzt ab. Wie kann ich das lösen.
Lösung
Wenn Sie das anrufen setContentView()
Ein zweites Mal ersetzen Sie das, was beim ersten Mal festgelegt worden war, und hinterlassen Sie nur den Hintergrund. Der Absturz ist höchstwahrscheinlich, weil Sie von den Elementen im Hauptlayout abhängig sind, das entfernt wird.
Anstatt zu rufen setContentView()
Zweimal sollten Sie die einschließen GLSurfaceView
im Hauptlayout. Unten finden Sie ein Beispiel dafür, wie dies getan werden kann:
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent>
<your.application.package.ClearGLSurfaceView
android:layout_width="match_parent"
android:layout_width="match_parent"/>
<!--put the rest of your layout here, i.e the contents of the original R.layout.main_pixie-->
</FrameLayout>
Dann können Sie dieses Layout in Ihr laden onCreate()
Wie üblich (main_pixie_new bezieht sich auf das obige XML, habe ich ihm nur diesen Namen gegeben, um die Dinge so klar wie möglich zu halten):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_pixie_new);
}