在我的应用程序中,我创建了SurfaceView,并使用ANativeWindow API:ANativeWindow_lock和ANativeWindow_unlockAndPost从NDK中使用它。
表面尺寸由ANativeWindow_setBuffersGeometry设置为320x480。屏幕尺寸更大- 480x800。
SurfaceView正在使用LayoutParams扩展到几乎全屏幕。
我看到的问题是,我的帧只能在320x480的范围内刷新。

只有在顶部有另一个视图被动画,或者我在表面视图上显式调用postInvalidate时,曲面的另一部分才会被刷新。但是,postInvalidate可以延迟工作。
这只发生在Nexus和2.3.6与ROM从https://developers.google.com/android/nexus/images (2.3.6 (GRK39F))。与4.0.4相同的设备没有这个错误。
工作良好的三星Ace-2与2.3.6.在更高版本的android上也能很好地工作。
有人见过这样的虫子吗?很确定这是那个电话上的窃听器。有什么建议来解决这个问题吗?
发布于 2015-05-10 23:27:11
经过一些调试和SurfaceView源代码的阅读,我找到了解决方案。显然,ANativeWindow_setBuffersGeometry是不够的,大小也应该从java设置。这帮了我:
public void surfaceCreated(SurfaceHolder holder) { holder.setFixedSize(BuildConfig.VIDEO_WIDTH, BuildConfig.VIDEO_HEIGHT); }
https://stackoverflow.com/questions/30157321
复制相似问题