如题,按照推断,不光微信登录,还有支付,以及一些其他所有竖屏界面的第三方sdk调用后返回,应该都有类似问题.

在游戏的Activity里监听onConfigurationChanged,会发现回调游戏后,屏幕朝向变成了SCREEN_ORIENTATION_PORTRAIT,将会导致游戏变成只显示一半,而且界面被缩放的奇葩情况.

大致解决思路如下(如无特殊说明,都在游戏的Activity中处理):

1).在onResume里重设this.mUnityPlayer.getView().getLayoutParams()的width和height(仅限Unity).暂时没去尝试cocos.我使用的FairyGUI在C#层会监听长宽变化,从横屏sdk切换回来之后监听到的宽高会对调,需要在这里重设.

2).本来以为重设正常之后就ok了,然而虽然宽高对了,表现上还是没区别.最后用了个比较莽的方法.在微信接收onResp的地方,即demo中的WXEntryActivity里,onResp里面一般会调用返回业务的主Activity,在游戏里即为游戏的Activity,在调用之后,finish掉WXEntryActivity之前,调用一下切换横屏的方法:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

需要特别注意的是,只有在竖屏的Activity这边调用才有效果,在游戏那边的onConfigurationChanged 里面调用是不生效的,不知道是bug还是本身就有这样的设定,对安卓研究不深,暂时不去深查了.