公司的專案 的 多解析度適配 工作

2021-06-26 10:51:08 字數 2688 閱讀 4073

僅供自己平時學習和工作所用~

公司所用的框架是quick cocos 2dx的,不過感覺這種多解析度適配同樣適用於cocos2dx,也不失為是一種方法。

這裡還要考慮的東西是乙個是位置的相對定位,還有乙個是大小的相對設計。

首先我來說一下公司的專案(寶貝雲計畫)的解析度適配我們需要怎樣操作,然後再來說明這樣做的原因。

使用方法:

在quickcocos2dx專案的config.lua中,把以下的內容全部遮蔽掉:

-- design resolution

-- config_screen_width  = 640

-- config_screen_height = 960

-- auto scale mode

-- config_screen_autoscale = "fixed_width"

相當於使用的是自己的多解析度適配的方法,而遮蔽了quick自帶的方法。

(1)首先從大小入手:

資源:背景的大小一般都為1260 * 940 (這個足夠將絕大部分的手機的介面填滿),但是其他的資源都是按照960*640的這個解析度來提供的。

(2)其次再來看位置:

這又分為兩個部分:第乙個部分是所有的背景元素(互動動畫之類的東西),它們全部都被繪製在中心的960*640的區域內。這些的位置就直接使用getfixedx()和getfixedy()來進行定位就可以了。

第二部分是所有的ui元素(比如返回按鈕,上一首,下一首,重新開始這樣的按鈕),它們在繪製的同時使用getfixedx()加或減 相應的 我們定義的偏移量(如commonapi.gap_w),確定最後的位置。例如左上角的乙個ui它的定位就應該是backbtn:setposition(commonapi:getfixedx(34) - commonapi.gap_w, commonapi:getfixedy(289) + commonapi.gap_h)

ps:這裡的getfixedx()和getfixedy() 它們的引數 都是在480*320這個解析度我們量出來的值。

這樣做的好處是可以將這個螢幕全部填滿,使之沒有黑邊(不美觀),同時我們真正有用的互動部分都放在螢幕**的正方形以內,而周圍則有一圈區域是在不同手機上呈現不同的情況,這裡可以放置我們的ui,比如說我們的返回按鈕要一直放在螢幕的左上角,距離左邊界和上邊界都很近。(使用方法在**中都有體現,我這裡只是進行了乙個總結)

下面我們來說一說這種解析度適配的原理:

1.本來quickcocos2dx可以控制的縮放,但是當我們注釋掉config裡的**之後,的大小將不會有變化,也就是說縮放需要我們自己來做(通過setscale來做)。

2.(詳見寶貝雲計畫commonapi檔案calculatescale)     把960*640 的 依次往 800*480 和 1024*768裡放,根據分子和分母的比值來進行判斷,保證960*640的有超出部分,然後進行縮放。正好與相應邊重合的即為標準。

commonapi =

function commonapi:calculatescale( )

self.center_x = display.widthinpixels / 2

self.center_y = display.heightinpixels / 2

if self.base_w/self.base_h >= display.widthinpixels/display.heightinpixels then

self.scale = display.widthinpixels / self.base_w

self.fixed_width = true

self.base_image_scale = display.widthinpixels / self.image_base_w

else 

self.scale = display.heightinpixels / self.base_h

self.fixed_width = false

self.base_image_scale = display.heightinpixels / self.image_base_h

endself.gap_w = (display.widthinpixels - self.image_base_w*self.base_image_scale)/2 -- 超出顯示線外的寬度

self.gap_h = (display.heightinpixels - self.image_base_h*self.base_image_scale)/2 -- 超出顯示線外的高度

end-- 位置的縮放

function commonapi:getposscale( )

return self.scale

endfunction commonapi:getimagescale( )

return self.base_image_scale

end-- 傳進來的x是320*480下的x的距離

function commonapi:getfixedx( x )

return self.center_x + self.scale * (x - self.base_w / 2)

end--- 傳進來的x是320*480下的y的距離

function commonapi:getfixedy( y )

return self.center_y + self.scale * (y - self.base_h / 2)

end

adnriod 多解析度適配

如何將乙個應用程式適配在不同的手機上,雖然這不算是乙個技術問題,但是對於剛剛做螢幕的開發人員來說,還真不是一件多麼簡單的事情。首先 你需要在androidmanifest.xml檔案的元素如下新增子元素 android normalscreens true android anydensity tr...

android多解析度適配

前一階段開發android專案,由於客戶要求進行多解析度適配,能夠支援國內主流的解析度手機。因此經過了幾次開發走了很多彎路,目前剛剛領略了android多解析度適配的一些方法。先介紹一下所走的彎路,由於android的布局檔案存放在res的layout中,可以根據不同的手機解析度指定特定的layou...

Android 多解析度適配

標籤 android 適配多解析度 布局檔案 layout 2014 05 28 15 18 9946人閱讀收藏 舉報 android 3 前一階段開發android專案,由於客戶要求進行多解析度適配,能夠支援國內主流的解析度手機。因此經過了幾次開發走了很多彎路,目前剛剛領略了android多解析度...