Android(锁屏,旋转)屏幕异常解决方案 - kyohwang/games GitHub Wiki

问题背景:

1 环境: cocos2d-x + android + 测试 华为 7X 系统 4.4.2
2. 描述: 在游戏支持重力感应旋转(横向,或者纵向 )的情况下, 在游戏运行中,锁屏 ,再解锁回到游戏中,中途旋转等若干情况,可能会引起 屏幕显示异常,比如 游戏内容错位等问题.

首先来说一下android在锁屏,或者旋转 咱们的MainActvity 经历了什么:
默认情况下(在无额外配置),旋转,锁屏,Activity 会经历 如下过程:

  1. 锁屏 onDestroy() -> onCreate()
  2. 解锁 onDestroy() -> onCreate()
    当然这并不是我们想要的
    因此android manifest.xml 中提供如下配置:
    ConfigImage

这个配置是告诉系统,在发生如图配置的时候,不要销毁咱们的 Activity,而是通过 onConfigurationChanged 来通知咱们,

  1. 首先咱们的Activity中需要实现这个方法,然后可以直接调用父类的同名方法
  2. 由于我们view(游戏)是 基于GLsurfaceView 通过surface来绘制Activity上所以在 ConfigurationChanged时候,需要通过修正我们的GLView的高和宽

FixBug

借鉴网站
http://stackoverflow.com/questions/7185644/android-opengl-crazy-aspect-ratio-after-sleep

⚠️ **GitHub.com Fallback** ⚠️