日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现状态面板的显示与隐藏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現狀態面板的顯示與隱藏

下午練習了一下狀態面板的顯示與隱藏,參考的代碼是把 container 做為一個控件,放到 view 中,然后 在 AknViewAppUi 中創建 view ,基中在資源文件中定義? view 的 menu_bar,通過寫這個代碼又復習了一下 view 的寫法

  • 引用 aknviewappui.h
  • 寫一個類從 CAknViewAppUi 繼承
  • 重寫 TUid Id() const 方法
  • 重寫??void DoActivateL (const TVwsViewId &aPrevViewId, TUid aCustomMessageId, const TDesC8 &aCustomMessage)?
  • 重寫 void DoDeactivate () 方法
  • 寫 NewL 與 NewLC 及 ConstructL 方法,實現二階構造
  • void HandleCommandL (TInt aCommand)? 這個方法本身不做處理,而是讓 aknViewAppUi 去處理
  • 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

    轉載于:https://www.cnblogs.com/zziss/archive/2010/02/03/1663068.html

    總結

    以上是生活随笔為你收集整理的实现状态面板的显示与隐藏的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。