屏幕适配
FramwSize是屏幕的实际分辨率相当于画框
WinSize是设计分辨率相当于画布
VisibleSize是画布显示在画框中的部分
VisibleOrigin是VidibleSize在画框中的左下角坐标点
资源分辨率——》设计分辨率——》设备分辨率
一、一般资源分配率与设计分配率相同所以第一步可以省略,不同时可以用这条语句:director->setContentScaleFactor(0.5);
二、设计分辨率与设备分辨率的适配:
(1)第一种方法:
创建多个文件夹,里面放不同分辨率的图片,程序运行时,在根据具体设备去搜索图片路径
Size size=Director::getInstance()->getWinSize();//获得屏幕大小
if (size.width>480) {
FileUtils::getInstance()->addSearchPath("2");
}
else
{
FileUtils::getInstance()->addSearchPath("1");
}
//优点: 非常好的显示
//缺点:安装包会很大,下载可能不成功,耗流量
//(网络可以采用这种方案)
(2)第二种方法:SHOW_ALL
glview->setDesignResolutionSize(960, 480, ResolutionPolicy::SHOW_ALL);
//设备宽高比上设计分辨率的宽高,计算缩放因子,取最小作为缩放因子。
// 资源800* 480 设计800* 480 设备 960* 640
//960/800 < 640/480
//——》变成800*(960/800 ) 480*(960/800)
//优点:保证了设计区域全部显示到了屏幕上(比例小的方向铺满,比例大的方向有黑边)
//缺点:可能有黑边
(3)第三种方法:EXACT_FIT
glview->setDesignResolutionSize(960, 480, ResolutionPolicy::EXACT_FIT);
//屏幕宽与设计宽的比,进行x轴进行改变,屏幕高与设计高的比,进行y轴进行改变
// 资源800* 480 设计800* 480 设备 960* 640
//优点:铺满屏幕
//缺点:出现图像拉伸
(4)第四种方法:NO_BORDER
glview->setDesignResolutionSize(960, 480, ResolutionPolicy::NO_BORDER);
//设备宽高比上设计分辨率的宽高,计算缩放因子,取较大作为缩放因子。
// 资源800* 480 设计800* 480 设备 960* 640
//960/800 < 640/480
//——》变成800*(640/480 ) 480*(640/480 )
//在屏幕外面借部分屏幕(比例大的一个方向铺满,比例小的一个方向超出屏幕)
//不能使用winsize设置控件位置,应该使用origin+visiablesize来设置
(5)第五种方法:FIXED_HEIGHT
glview->setDesignResolutionSize(960, 480, ResolutionPolicy::FIXED_HEIGHT);
//根据屏幕宽高比,保证设计分辨率高不变,修改设计分辨率的宽(X轴)
// 资源800* 480 设计800* 480 设备 960* 640——》变成480*(960/640) 720*480
//优点:铺满屏幕
//缺点:背景图片被截取 X方向
//winSize和visiablesize一样,设置位置不用数字
(6)第六种方法:FIXED_WIDTH
glview->setDesignResolutionSize(960, 480, ResolutionPolicy::FIXED_WIDTH);
//根据屏幕宽高比,保证设计分辨率宽不变,修改设计分辨率的高(X轴)
// 资源800* 480 设计800* 480 设备 960* 640——》变成800/(960/640) 800*533
//优点:铺满屏幕
//缺点:背景图片被截取,y方向
//winSize和visiablesize一样,设置位置不用数字