0

我想知道如何处理 UI 旋转。当用户将 UI 从 Potrait 旋转到 Landscape 时,我需要更改我的 UI 布局,反之亦然。让我知道我需要处理哪个事件以及如何获取设备高度和宽度以进行两种旋转并调整我的 UI。

我也很感兴趣,如果我使用各种布局,那么它会在 UI 旋转时自动调整。典型情况是,假设我使用在主屏幕上显示两个组件的布局创建了 UI,左侧一个列表和特定列表项的右侧内容(这与 Windows 上的资源管理器相同)。在这种情况下,如果我旋转我的 UI,那么它会正确调整还是我需要明确处理。

请尽快分享您对此的意见。

非常感谢您的支持。

问候, Premal Panchal。

4

2 回答 2

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/Height 方法仍报告原始方向值,因此请使用在 s3eSurfaceOrientation 结构中传递的值

于 2012-11-30T21:44:45.763 回答
0

Marmalade自动处理Portrait移动Landscape,反之亦然,因此您无需编写代码。

于 2012-04-06T12:35:46.210 回答