zoukankan      html  css  js  c++  java
  • 实现状态面板的显示与隐藏

    实现状态面板的显示与隐藏

    下午练习了一下状态面板的显示与隐藏,参考的代码是把 container 做为一个控件,放到 view 中,然后 在 AknViewAppUi 中创建 view ,基中在资源文件中定义  view 的 menu_bar,通过写这个代码又复习了一下 view 的写法

    1. 引用 aknviewappui.h
    2. 写一个类从 CAknViewAppUi 继承
    3. 重写 TUid Id() const 方法
    4. 重写  void DoActivateL (const TVwsViewId &aPrevViewId, TUid aCustomMessageId, const TDesC8 &aCustomMessage) 
    5. 重写 void DoDeactivate () 方法
    6. 写 NewL 与 NewLC 及 ConstructL 方法,实现二阶构造
    7. void HandleCommandL (TInt aCommand)  这个方法本身不做处理,而是让 aknViewAppUi 去处理
    8. void HandleStatusPaneSizeChange () 这个是在状态面板改变时要处理的方法

    其中绕了一个很大的圈,代码都写在了资源文件中及 把新建的工程转成 view 模式了,等到写面板时发现代码只有几句,如下

    CEikStatusPane* pan = StatusPane();
    这样可以得到一个面板,然后通过
    if (pan->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_EMPTY)
        {
         pan->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_EMPTY);
        }
        else
        {
         pan->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_IDLE);
        }
    即可实现状态面板的显示与隐藏

    上面的代码写在 AknViewAppUi 中的 HandleCommandL 中,找一个菜单,把代码加到那个菜单中就行

    如果直接通过向导生成一个传统模式的工程,可以在 AppUi 中写如下代码

    case EStatusLxCmdAppTest:
                {
                //iEikonEnv->InfoMsg(_L("test"));
        CEikStatusPane* pan = StatusPane();
        if (pan->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_EMPTY)
        {
         pan->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_EMPTY);
         iAppContainer->SetRect(ClientRect());
         iAppContainer->DrawNow();
        }
        else
        {
         pan->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_IDLE);
         iAppContainer->SetRect(ClientRect());
         iAppContainer->DrawNow();
        }
                break;
                }
    iAppContainer->SetRect(ClientRect()); 目地是重新设定大小,并通过 DrawNow 去重绘,否则会留下上次的面板,看起来没有隐藏掉


    可以实现状态面板的显示与隐藏

    关于 R_AVKON_STATUS_PANE_LAYOUT_EMPTY 的 layout 的说明

    一共有 4 种 layout
    R_AVKON_STATUS_PANE_LAYOUT_IDLE   实现一个带时钟的状态面板
    R_AVKON_STATUS_PANE_LAYOUT_USUAL (default)  默认的
    R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE  默认的,就是系统启动后的(我测试是那种),看英文是电源关闭在充电中
    R_AVKON_STATUS_PANE_LAYOUT_EMPTY  实现关闭面板

    上面几种通过 SwitchLayoutL 去设定



    安平2009@原创
    qi_jianzhou@126.com

  • 相关阅读:
    opencv实现录屏
    numpy.where() 用法详解
    spring 配置quartz定时任务及时间设置
    http网络请求 返回不同的状态码
    28行代码带你理解机器学习原理
    sigmoid函数
    numpy运算简介(二)
    数论代码整理
    数论整理
    树状数组
  • 原文地址:https://www.cnblogs.com/zziss/p/1663068.html
Copyright © 2011-2022 走看看