Android屏幕适应问题[已解决]

这两天遇到一个奇葩的问题。
现象:
在Android上游戏运行时始终屏幕上显示的内容会多出一部分。
director->getOpenGLView()->setDesignResolutionSize(640,960,ResolutionPolicy::FIXED_WIDTH);
这句会没有效果,我这只了一张尺寸为640 * 960的图片,在显示时在手机竖屏时的右侧会有黑边(华为P6),图片并没有占满宽度。

终于解决了:
找到的出现问题的代码,为什么还没有去探寻。
有问题的代码
boolAppDelegate::applicationDidFinishLaunching(){
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect(“Setting”, Rect(0, 0, 640,960));
director->setOpenGLView(glview);
director->getOpenGLView()->setDesignResolutionSize(640, 960, ResolutionPolicy::FIXED_WIDTH);
}
没问题的代码
boolAppDelegate::applicationDidFinishLaunching(){
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect(“Setting”, Rect(0, 0, 640,960));
director->setOpenGLView(glview);
}
director->getOpenGLView()->setDesignResolutionSize(640,960,ResolutionPolicy::FIXED_WIDTH);
不知大家在有没有遇到过类似的问题,也可以一起探讨一下为什么会出现这种情况,在Win32下,两种代码都是正常的。

在Win32下,两种代码都是正常的。
说明可能在android中if语句可能没运行。

这个估计不应该 如果if语句没运行的话,那么glview就是空了

各种坑。感觉3.8.1就是一个实验版本。

楼主用的是cocos的哪个版本,我在3.8.1下面自动生成的代码不是你这样的
director->getOpenGLView()->setDesignResolutionSize(640,960,ResolutionPolicy::FIXED_WIDTH); 本身就在if外面。

win32下面没问题。
只要移植到android下面,一点效果都没有。
我的是3.8.1–c++

android下面不会进if里面的, 因为android下用的是自身GLview (java层就已经创建了), 不需要在c++层去创建。 你可以再if里面打印下日志, 然后用android工程运行下, 就知道了。