我有一台800x480分辨率的设备。当我创建GLSurfaceView时,我得到一个onSurfaceChanged
调用533x320(显然应用了1.5 HDPI修改器)并且表面被放大了。因此,当我绘制1像素粗线时看起来非常糟糕,而且我无法进行像素完美渲染。
我想要的是原始分辨率表面(800x480)。
以这种方式创建视图(例如在NDK OpenGL示例中),在Activity onCreate
中创建
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
view = new MyGLSurfaceView(this);
setContentView(view);
我没有使用任何布局等。
答案 0 :(得分:4)
我找到了解决方案:当我添加
时<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"/>
到AndroidManifest.xml,我得到了适当的解析。说实话,Android在iOS上使用几年后对我来说是一个非常奇怪的平台......
答案 1 :(得分:0)
问题的根源似乎在于onSurfaceChanged命令向下传递(可能是改变的)宽度和高度。
构建视图的代码可能没有任何问题,但我们希望确保它是在实际的设备分辨率下构建的。
也许明确地用所需的宽度和高度调用setLayout (int width, int height)
可以让你获得更好的里程......
显然,在执行此操作之前,您必须确定实际的屏幕尺寸。获得实际物理像素的最佳选择是使用DisplayMetrics的widthPixels和heightPixels:http://developer.android.com/reference/android/util/DisplayMetrics.html
如果这不起作用,或许在不同的设备上尝试您的代码可能会产生正确的结果。在这种情况下,它可能是与设备相关的问题......