屏幕高度的奇怪行为(以像素为单位)?

时间:2011-12-25 16:14:09

标签: java android screen android-notification-bar

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

我正在将所有绘图功能移到Open Gl上,但我注意到了一个奇怪的问题。

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

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

理想情况下,我认为我可以通过某种方式将GLview向下移动通知栏的高度来解决问题,但我不确定如何执行此操作或是否可能。

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

我通过改变......来解决这个问题。

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

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

1 个答案:

答案 0 :(得分:2)

您使用多个可绘制文件夹吗?在我的一个应用程序上,我使用以下代码,该代码基于获取手机选择的可绘制尺寸。

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执行第三个。只需将324264更改为您图片的大小。