Ich entwickle mit Nexus 4 KitKat 4.4 und versuchen, IMMERSIVE MODE
zu meinem Spiel hinzuzufügen. Ich brauche Bildschirmhöhe, um glViewport
richtig einzustellen. ZuvorAndroid, GL, Bildschirmgröße in IMMERSIVE-Modus
benutzte ich
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static int getScreenHeight() {
if (Main.m_activity == null)
return -1;
Display display = Main.m_activity.getWindowManager()
.getDefaultDisplay();
int height = -1;
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
//width = display.getWidth(); // deprecated
height = display.getHeight(); // deprecated
}else{
Point size = new Point();
display.getSize(size);
height = size.y;
}
return height;
}
Es ist nicht die wirkliche Höhe des Bildschirms in IMMERSIVE MODE
zurückzukehren.
Also begann ich von Werten zu verwenden
private static class Renderer implements GLSurfaceView.Renderer {
public void onSurfaceChanged(GL10 gl, int width, int height) {
und es funktionierte gut, wenn app beginnt. Wenn ich nach Hause Taste drücken und zurück zum Startbildschirm und dann zurück zum Spiel onSurfaceChanged
wieder aufgerufen, aber mit alten falschen Werten (nicht eintauchend Modus Bildschirmgröße, kleine, regelmäßige)
IMMERSIVE Bildschirmgröße 800x1280 REGULAR Größe 800x1184 ist
Wenn ich normale Größe bekomme und setze es in glViewport
dann bekomme ich schwarze Linie oben auf dem Bildschirm.
PS Auch IMMERSIVE MODE
geht verloren, wenn ich die Lautstärketasten drücke.
PS2
Ich habe folgende Methode Impl. Es hilft nicht bei der Bildschirm-/Fenster-Größenanpassung.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
@payeli, bitte unterlassen Sie unnötige "Verbesserung" Tags. Wir haben bereits zwei * -Tags für Kitkat, wir brauchten kein drittes. – Charles