Max*_*Max 5 android opengl-es android-gui android-4.4-kitkat
我正在使用Nexus 4 KitKat 4.4开发并尝试添加IMMERSIVE MODE
到我的游戏中.我需要glViewport
正确设置屏幕高度.
以前我用过
@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;
}
Run Code Online (Sandbox Code Playgroud)
它不会返回屏幕的真实高度IMMERSIVE MODE
.
所以我开始使用来自的值
private static class Renderer implements GLSurfaceView.Renderer {
public void onSurfaceChanged(GL10 gl, int width, int height) {
Run Code Online (Sandbox Code Playgroud)
应用程序启动时它工作正常.如果我按下主页按钮并返回主屏幕,然后返回游戏onSurfaceChanged
再次调用,但使用旧的错误值(非沉浸式模式屏幕尺寸,更小,常规)
IMMERSIVE SCREEN尺寸为800x1280,常规尺寸为800x1184
当我获得常规尺寸并将其设置为时,glViewport
我会在屏幕顶部显示黑线.
PSIMMERSIVE MODE
按下音量按钮时也丢失了.
PS2
我有以下方法impl.它无助于处理屏幕/窗口调整大小.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
Run Code Online (Sandbox Code Playgroud)
好文章,但还不够。 http://developer.android.com/training/system-ui/immersive.html
现在我们得到屏幕尺寸
public void onSurfaceChanged(GL10 gl, int width, int height) {
Run Code Online (Sandbox Code Playgroud)
如果高度降低,我们会再次启用沉浸式模式,延迟 1 秒。这可行,但很老套,我自己寻找规范的解决方案。
恐怕这只是 KitKat 中的 bug。我不知道任何实施沉浸式模式的著名游戏。(当然我们的应用程序除外)))
归档时间: |
|
查看次数: |
2640 次 |
最近记录: |