现在的位置: 首页 > 综合 > 正文

如何找出功能键的正确位置?(转)

2012年10月23日 ⁄ 综合 ⁄ 共 1047字 ⁄ 字号 评论关闭

设备, 软件 版本: S60 3rd Edition and FP1

Nokia E70, Nokia E90, Nokia N93, Nokia N95

  • 详细描述

Command Button Array(CBA)一般位于S60手机屏幕的最下方,如果手机支持横屏竖屏切换的话,那CBA的位置就不固定了(根据屏幕而定)。当S60 UI中的控制面板被正确放置后,可缩放程序应该知道CBA键的正确位置。

  • 解决方案

在有些手机中(如Nokia E70, Nokia E90, Nokia N93, Nokia N95),在横屏模式下功能键将在屏幕左边或右边出现。如果程序需要基于方位对UI(功能键位置)做调整,可以通过

AknLayoutUtils::CbaLocation();

来获取CBA位置。

我们将会得到下列放回值:

enum TAknCbaLocation
 
{
 
EAknCbaLocationBottom, // landscape and portrait
 
EAknCbaLocationRight, // only landscape
 
EAknCbaLocationLeft // only landscape
 
};

当CBA定位在屏幕下部时,OK/Options键总是定义在左边,而相反的Cancel/Back键总是定义在右边。

当CBA键在屏幕两端时,大部分设备的左功能键总是在下部,但也有列外,如Nokia E90,他就是在上部的位置。

没有API可以直接解决功能键的顺序问题,但可以通过如下方法来监测出按键的位置:

TBool IsOptionsButtonOnTop()
 
{
 
CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
 
if( !cba )
 
{
 
return EFalse;
 
}
 
 
 
// Assumes that CBA has Options and Exit commands
 
CCoeControl* options = cba->ControlOrNull( EAknSoftkeyOptions );
 
CCoeControl* exit = cba->ControlOrNull( EAknSoftkeyExit );
 
 
 
if( options && exit )
 
{
 
if( options->Position().iY < exit->Position().iY )
 
{
 
return ETrue;
 
}
 
}
 
return EFalse;
 
}

Related Wiki Articles

No related wiki articles found

抱歉!评论已关闭.