【发布时间】:2015-05-10 22:31:31
【问题描述】:
在我的应用程序中,我创建 SurfaceView 并使用 ANativeWindow API 从 NDK 使用它:ANativeWindow_lock,然后是 ANativeWindow_unlockAndPost。
表面的大小由ANativeWindow_setBuffersGeometry 设置为320x480。屏幕尺寸更大 - 480x800。
使用 LayoutParams 将 SurfaceView 拉伸到几乎全屏。
我看到的问题是我的帧仅在 320x480 区域内刷新。
只有在顶部有另一个视图动画或者我在表面视图上显式调用postInvalidate 时,才会刷新表面的其他部分。但是,postInvalidate 会延迟工作。
这种情况仅发生在带有 2.3.6 且 ROM 来自 https://developers.google.com/android/nexus/images (2.3.6 (GRK39F)) 的 Nexus S 上。 4.0.4的同一个设备没有这个bug。
在带有 2.3.6 的三星 Ace-2 上运行良好。也可以在更高版本的 android 上完美运行。
有人见过这样的错误吗?很确定这是该特定手机上的错误。有什么建议可以解决这个问题吗?
【问题讨论】:
-
我不会真正关注 Android 2.3.6 了。它仅占所有 Android 设备的 6% 左右:developer.android.com/about/dashboards/index.html。
-
对于我的应用统计数据有点不同。我在 2.3.6 上仍有 24% 的用户。但是,不确定其中有多少人拥有 Nexus S。
-
好吧,我只是提醒你一下,以防这是较新的项目。
标签: android android-ndk surfaceview surfaceholder nexus-s