2012-03-16 50 views
0

我想知道如何處理UI旋轉。當用戶從Potrait旋轉UI到Landscape時,我有要求改變我的UI佈局,反之亦然。讓我知道我需要處理哪個事件,以及如何獲取設備高度和寬度以適應這兩種旋轉並調整我的UI。如何在Marmalade中處理UI旋轉

我也有興趣的是,如果我使用各種佈局,那麼它會在UI旋轉時自動調整。典型的例子是說我已經創建了UI,使用在主屏幕上顯示兩個組件的佈局,列表中特定項目的左側列表和右側內容(這與Windows上的瀏覽器相同)。在這種情況下,如果我旋轉我的用戶界面,那麼它會調整正確或我需要明確處理。

請儘快與大家分享您的意見。

非常感謝您的支持。

Regards, Premal Panchal 。

回答

0

Marmalade句柄PortraitLandscape反之亦然,所以你不需要編碼它。

0

註冊爲S3E_SURFACE_SCREENSIZE回調,然後在屏幕尺寸/方向已經改變,你可以得到通知:

s3eSurfaceRegister(S3E_SURFACE_SCREENSIZE, (s3eCallback)ScreenSizeOrientationChanged); 


void ScreenSizeOrientationChanged(s3eSurfaceOrientation *orien, void *pUserData) 
{ 
    s3eDebugTracePrintf("Orientation Changed: width=%d, height=%d, surfacewidth=%d, surfaceheight=%d, blitdirection=%s", orien->m_Width, orien->m_Height, Iw2DGetSurfaceWidth(), Iw2DGetSurfaceHeight(), S3E_SURFACE_BLIT_DIR_ROT180 ? "180" : "0"); 

    CGame *pGame = (CGame *)pUserData; 
    if(pGame) 
    { 
     pGame->ReCalculateScreenSize(orien->m_Width, orien->m_Height); 
    } 
} 

s3eSurfaceUnRegister(S3E_SURFACE_SCREENSIZE, (s3eCallback)ScreenSizeOrientationChanged); 

你會發現,GetSurfaceWidth /身高的方法仍然報告原來的方向值,所以使用在s3eSurfaceOrientation結構中傳遞的值