CrossApp屏幕適配方案

2018-08-27 15:26 更新

我們在開發(fā)移動端應(yīng)用時(shí),首先會面臨一個很棘手的問題,就是市場上的手機(jī),平板等設(shè)備的屏幕尺寸、分辨率各有不同,屏寬比也多種多樣,如何來解決這個問題呢?
想要解決這個問題,我們需要了解一下關(guān)于顯示的一些基礎(chǔ)概念,已經(jīng)市場上我們常見的尺寸及分辨率。
常見的分辨率
1136*640,1920*1080,960*640,1280*720,800*480。
常見的屏幕尺寸
3.5英寸、4英寸、5英寸、5.5英寸、7英寸等等。

PX:pixels,就是絕對像素。大小固定,不會隨著屏幕不同而改變

PPI:Pixels Per Inch所表示的是每英寸所擁有的像素(Pixel)數(shù)目。因此PPI數(shù)值越高,即代表顯示屏能夠以越高的密度顯示圖像。當(dāng)然,顯示的密度越高,擬真度就越高。

DPI:每英寸所包含的點(diǎn),在Android設(shè)備上,通常以DPI來表示設(shè)備屏幕的顯示精細(xì)度。通常情況下,PPI和DPI可以表示同一個概念,PPI主要針對顯示設(shè)備,DPI更多應(yīng)用于打印輸出設(shè)備,但都表示每英寸所包含的像素點(diǎn)

PPI

iphone4iPhone5 PPI

CrossApp為我們提供的解決方案:

CrossApp輔助適配方案適配的原則是盡量保持UI的物理尺寸相近,但仍舊可能會有細(xì)微變化,具體的變化值由系統(tǒng)決定。在不同設(shè)備下,ppi值會有所不同,在保持UI的物理尺寸不變的情況下,在不同設(shè)備上的顯示效果會有所差別。屏幕尺寸大的設(shè)備,顯示的內(nèi)容會相對較多,ppi值越高,則畫面越精細(xì)。

CrossApp提供的Dip類型數(shù)據(jù)

DPoint:點(diǎn)
DSize:面積
DRect:區(qū)域(包含一個點(diǎn)位點(diǎn)和面積)

推薦適配方案

盡量避免固定值
使用比例值
使用基準(zhǔn)值
為了防止拉伸變形,多用CAScale9ImageView控件
字體大小推薦使用 (10)
例如:
DSize(100,200);//不推薦這樣寫
DSIze(屏幕寬度/2,屏幕高度/2);//使用比例值
DPoint(父節(jié)點(diǎn)的寬度 -100,父節(jié)點(diǎn)的寬度-200);//使用基準(zhǔn)值


CrossApp 橫屏豎屏切換方法

ios方法:

打開ios目錄下RootViewController.mm文件

// Override to allow orientations other than the default portrait orientation.
// This method is deprecated on ios6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    //豎屏
    //return UIInterfaceOrientationIsPortrait( interfaceOrientation );
    //橫屏
    //return UIInterfaceOrientationIsLandscape( interfaceOrientation );
}
// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
     
#ifdef __IPHONE_6_0
    //豎屏
    //return UIInterfaceOrientationMaskPortrait;
    //橫屏
    //return UIInterfaceOrientationMaskLandscapeRight;
#endif
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    //豎屏
    //return UIInterfaceOrientationPortrait;
    //橫屏
    //return UIInterfaceOrientationLandscapeRight;


更改Device Orientation 屬性為Landscape Right 如圖:

更改Device Orientation 屬性為Landscape Right

Android 方法:


AndroidManifest.xml中 activity 找到 android:screenOrientation屬性。

        "unspecified":默認(rèn)值 由系統(tǒng)來判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會有不同的顯示方向. 

        "landscape":橫屏顯示(寬比高要長) 

        "portrait":豎屏顯示(高比寬要長) 

        "user":用戶當(dāng)前首選的方向 

        "behind":和該Activity下面的那個Activity的方向一致(在Activity堆棧中的) 

        "sensor":有物理的感應(yīng)器來決定。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會橫豎屏切換。 

        "nosensor":忽略物理感應(yīng)器,這樣就不會隨著用戶旋轉(zhuǎn)設(shè)備而更改了("unspecified"設(shè)置除外)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號