触摸屏UI下的全屏模式


Contents
[hide]
 1 简介
 2 MMP文件
 3 Header file
 4 源文件
 5 后记
 6 See also

简介
S60第五版手机触摸屏API没有CBA按钮支持,因此如果我们想要全屏模式我们必须要隐藏control pane.否则用户将无法访问访问菜单等功能。
为了计算全屏模式下应用程序区域(如control pane的区域大小。我们可以使用Avkon helper类AknLayoutUtils来获取。

MMP文件
LIBRARY avkon.lib
LIBRARY eikcore.lib
CAPABILITY could be self-signed

Header file
class CAknViewClass: public CAknView ...
{
...
public:
   void ConstructL();
   void SetFullRect();
private:
   void CalculateFullscreenRect();
private:
   TRect iFullRect;
...
};
class CAknAppUiClass: public CAknAppUi
{
...
protected:
void HandleResourceChangeL( TInt aType );
 
private:
   CAknViewClass* iViewInstance;
...
};

源文件
#include <AknUtils.h>
...
void CAknViewClass::ConstructL()
{
   ...
   // Calculate actual full-screen mode rect
   CalculateFullscreenRect();
   // Set view extent
   SetRect(iFullRect);
   ...
}
 
void CAknViewClass:SetFullRect()
{
   SetRect(iFullRect);
}
...
void CAknViewClass::CalculateFullscreenRect()
{
   // Window that fills the entire screen
   TRect temp_rect;
   AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, temp_rect);
   iFullRect = temp_rect;
 
   // Rect that occupied by control pane (i.e. CBA)
   AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EControlPane, temp_rect);
 
   // Calculate final rect which depends on CBA location
   AknLayoutUtils::TAknCbaLocation cba_location = AknLayoutUtils::CbaLocation();
 
   switch(cba_location) {
      case AknLayoutUtils::EAknCbaLocationBottom:
         iFullRect.iBr.iY -= temp_rect.Height();
      break;
 
      case AknLayoutUtils::EAknCbaLocationLeft:
  iFullRect.iTl.iX += temp_rect.Width();
      break;
 
      case AknLayoutUtils::EAknCbaLocationRight:
  iFullRect.iBr.iX -= temp_rect.Width();
      break;
 
      default:
      break;
   }
}
CAknAppUiClass::HandleResourceChangeL( TInt aType )
{
   ...
   iViewInstance->CalculateFullscreenRect();
 
   iViewInstance->SetFullRect();
   ...
}

后记
全屏模式将可以在程序中使用,并支持触摸UI

See also
How to make a full-screen application using Symbian C++

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值