Cocos2dx Android螢幕適配方案

2022-09-02 10:45:06 字數 2808 閱讀 8844

本文**於

先感嘆一下吧~~android的各種解析度各種適配虐我千百遍,每次新專案我依舊待它如初戀····

每家公司都有自己專案工程適配的方案,這種東西就是沒有最好,只有最適合!!!

這次新專案專項針對android,目的性強,適配方案我覺得2套圖去相容android各種解析度;

我們先了解一下android手機上的螢幕密度:

android主要有以下幾種屏:

qvga和wqvga屏density=120;

hvga屏density=160;

wvga屏density=240....更多 density值表示每英吋有多少個顯示點;

和解析度不一樣,大部分做應用的就可以通過螢幕密度走,那麼遊戲中也可以類似走這種路線;

但是現在的出現了超高清螢幕,諸如小公尺,三星稍微比較高階一點新出的機型解析度都非常之高達到fhd;

fhd級別就是我們所謂的螢幕畫素達到了1920*1080p格式,也就是全高畫質螢幕的簡稱了,要適應這種螢幕得單獨適配;

廢話不多了就直接上解決方案吧:

思路1:背景適配,然後往背景裡面add部分ui原件的方法。先解決背景適配;

思路2:根據螢幕尺寸,去適應「螢幕視窗ui原件」,不屬於任何原件直接add到cclayer中的;

**如下:

先建立乙個visiblerect類去通過cceglview拿到螢幕尺寸,然後再取八個點作為靜態方法以後直接當做目標定位使用

#ifndef __visiblerect_h__

#define __visiblerect_h__

#include "cocos2d.h"

using_ns_cc;

class visiblerect

;#endif /* __visiblerect_h__ */

visiblerect.cpp

#include "visiblerect.h"

ccrect visiblerect::s_visiblerect;

void visiblerect::lazyinit()

}ccrect visiblerect::getvisiblerect()

ccpoint visiblerect::left()

ccpoint visiblerect::right()

ccpoint visiblerect::top()

ccpoint visiblerect::bottom()

ccpoint visiblerect::center()

ccpoint visiblerect::lefttop()

ccpoint visiblerect::righttop()

ccpoint visiblerect::leftbottom()

ccpoint visiblerect::rightbottom()

有了這個工具類可以做很多事情了;

下面我們需要去適配背景,具體方法如下:

ccsprite* publicshowui::settagscale(ccsprite* tagsprite)

800*480 一套

1136*640 二套

hd高畫質 第三套 1920 * 1080 目前手機上面比較高的,據說三星的超過2000,可以自己去設定!

/******************

*獲取螢幕解析度

*根據解析度計算使用哪一套資源

******************/

int publicshowui::getinch(void)

else if(winsizeinpixels.width>960&&winsizeinpixels.width<=1136)

else if(winsizeinpixels.width>1136&&winsizeinpixels.width<=1920)

else

return lastinch;

}/******************

*根據自定義路徑去取不同套圖的路徑

*imgres 格式:imgdir%d/imgname.png

******************/

ccstring* publicshowui::getresimgpath(char* imgres)

獲取螢幕解析度screensize:

cceglview* peglview = cceglview::sharedopenglview();

pdirector->setopenglview(peglview);

ccsize screensize = peglview->getframesize();

使用:

view_room = new view_room(this, publicshowui::getresimgpath(img_room_background), 1, visiblerect::center());
背景圖一定要居中顯示:

visiblerect::center()
ok以上便是我適配的方案和思路;

下面我上2張ios模擬器上的圖,我故意再背景圖的邊框加了綠線,來顯示區別顯示全屏,然後用了兩套圖去適配!

3.5寸ios的解析度如下: 

4寸解析度如下:

cocos2dx android 環境 搭建

1.搭建環境 windows 7 cocos2dx 2.1.4 下面 記錄 我 搭建 android 環境 所遇到的 報錯 和 解決 方案 遇到 program bash is not found in path 問題,解決 方案 解決方案 遇到 cocos2dxactivity cannot be...

cocos2d x android環境問題

進入cocs2d x目錄,用文字編輯器開啟create android project.bat 將 cygbin 設定為cycgwin bin安裝的的絕對路徑。將 androidtools設定為android sdk 的tools絕對路徑 將 ndkroot設定為android ndk的絕對路徑 修...

cocos2d x android 字型的設定

cocos2d x 的優點之一 就是跨平台 我們知道 ios 自帶的字型 和 android 自帶的字型不同 為了使我們開發的遊戲中的字型統一 我們就需要自己的字型 包括從mac 拷貝出來的 字型 從 mac 中 copy 出 thonburi.ttf 檔案 這個字型在我的 win8 下打不開 但是...