Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 屏幕高度(像素)的奇怪行为?_Java_Android_Screen_Android Notification Bar - Fatal编程技术网

Java 屏幕高度(像素)的奇怪行为?

Java 屏幕高度(像素)的奇怪行为?,java,android,screen,android-notification-bar,Java,Android,Screen,Android Notification Bar,在我的android应用程序中,有一个OpenGL渲染器覆盖在画布上。我正在测试的设备是Droid x 我正在将所有绘图函数移到OpenGL,但我注意到一个奇怪的问题 画布似乎在通知栏之后立即开始绘制,但GL渲染从屏幕顶端开始 这有点重要,因为我的游戏的物理特性是基于画布上绘制的屏幕指标 理想情况下,我认为我可以通过某种方式将GLview向下移动通知栏的高度来解决这个问题,但我不确定该如何做,或者是否可能 更改以下代码似乎可以使其在我的应用程序中看起来正确,但我需要一种方法使其更跨平台安全 我通

在我的android应用程序中,有一个OpenGL渲染器覆盖在画布上。我正在测试的设备是Droid x

我正在将所有绘图函数移到OpenGL,但我注意到一个奇怪的问题

画布似乎在通知栏之后立即开始绘制,但GL渲染从屏幕顶端开始

这有点重要,因为我的游戏的物理特性是基于画布上绘制的屏幕指标

理想情况下,我认为我可以通过某种方式将GLview向下移动通知栏的高度来解决这个问题,但我不确定该如何做,或者是否可能

更改以下代码似乎可以使其在我的应用程序中看起来正确,但我需要一种方法使其更跨平台安全

我通过改变

gl.glViewport(0, 0, width, height)


您是否使用多个可绘制文件夹?在我的一个应用程序中,我使用了以下代码,这是基于获取手机所选择的可绘制屏幕的尺寸

image = bgtile.getWidth();

if (image == 32) {
        gl.glViewport(0, -19, width, height) 
    }
    if (image == 42) {
        gl.glViewport(0, -25, width, height) 
    }
    if (image == 64) {
        gl.glViewport(0, -38, width, height) 
    }
如果手机选择了ldpi图像,则会执行第一个
If
,第二个是mdpi,第三个是ldpi。只需将
32
42
64
更改为图像的大小即可

image = bgtile.getWidth();

if (image == 32) {
        gl.glViewport(0, -19, width, height) 
    }
    if (image == 42) {
        gl.glViewport(0, -25, width, height) 
    }
    if (image == 64) {
        gl.glViewport(0, -38, width, height) 
    }