<style type="text/css"> <!-- .pcb {margin-right:0pt} --> </style>
android ActionBar與Menu - 1 - api demos 學習 android ActionBar與Menu - 2 - email中ActionBar分析 這里以Email為例,簡單分析一下ActionBar在實際中的應用
2012-6-9 12:46:15 上傳
下載附件
(41.52 KB)
上面是在模擬器上登錄原生Email的截圖 這里說一下所謂的原生: 原生不是指大家買來手機之后沒有修改過任何內容,軟件本身的樣子。也不是指google的各種親兒子本身的樣子,因為無論是前者還是后者,最起碼都是要經過優化和修復bug的,不是親兒子那就很有可能進行了整容,讓你看不出原來的樣子 這里的原生是用google發布的源碼編譯出來的apk,安裝到手機或模擬器上面大家就可以看到 我們主要看看Email如何使用ActionBar和menu的 頁面可以發現,Email既有AcionBar又有menu,menu被放在了底部,先看ActionBar Email的主Activity是EmailActivity,我就不畫類圖了,因為總是畫不明白,怕誤導大家,所以就用類似堆棧log的形式來介紹
這里初始化了一個UIController,其中的關系是這樣的 UIControllerBase為父類,是一個抽象類,下面有兩個實現類分別為UIControllerOnePane和UIControllerTwoPane(實在理解不了為什么這么命名。。。) UIControllerOnePane為手機UI實現,UIControllerTwoPane為平板UI實現,我們這里只考慮UIControllerOnePane
這里包含了一個ActionBarController,createActionBarController是抽象方法,下面是UIControllerOnePane的實現
最關鍵的就是ActionBarController了,它包含ActionBar所有內容
從上面可以看出,ActionBar實際上也不復雜,只是設置了顯示選項和一個CustomView,復雜的內容幾乎全部集中在這個CustomView上了
當點擊CustomView時候會有彈出下拉框,mAccountDropdown就發揮作用了
2012-6-9 12:46:15 上傳
下載附件
(39.36 KB)
設置了mAccountSpinner.setOnClickListener,調用到mAccountDropdownshow() mAccountDropdownshow顯示由mAccountsSelectorAdapter提供
其中的數據由CursorWithExtras com.android.email.activity.ActionBarController.mCursor提供 mCursor只在一個地方進行刷新,那就是加載賬戶郵箱信息的時候
我們可以發現,加載完畢之后Cursor更新了,然后updateTitle,不用去看函數也能猜出這里是更新ActionBar 為了刷新列表,調用了下面語句
updateTitle就不再進行分析了,里面幾乎都是刷新那個CustomView的內容 下面看看底部的菜單,之前的學習中,api demos里并沒有演示這種情況,我們用hierarchyviewer查看,發現頁面上下都是一個ActionBarContainer的容器 上面的ActionBar我們已經知道它是怎么來的了,那下面的呢?原因在于manifest的配置
splitActionBarWhenNarrow使得ActionBar被拆分成上下兩個部分 splitActionBarWhenNarrow用于顯示Activity在窄屏設備(如豎屏手機)上運行時的所有menu項。當然,如果手機有menu鍵的時候,當menu項過多而顯示不下的時候按Menu鍵即可 這時迷題已解,沒有什么神秘的地方了,看看menu配置,一目了然
當我們橫屏的時候,menu就會跑到上面去了
2012-6-9 12:46:15 上傳
下載附件
(43.73 KB)
下面是帶回退導航的
2012-6-9 12:46:15 上傳
下載附件
(8.44 KB)
他能使用戶回到上一個頁面(并不是上一個activity,回到上一個activity可以通過按back鍵實現)
在之前的refreshInernal中已經設置過了 當我們打開或新建一個郵件的時候,頁面會跳轉到新的activity
2012-6-9 12:46:15 上傳
下載附件
(24.7 KB)
這里我們看到了,頁面依然有回退導航,點擊之后能回退到上一個頁面,當然,不再是當前的activity了 那么它是如何做到的,代碼如下
點擊回退導航時,觸發的menu是android.R.id.home 剩下的事情就好辦了,這里交給了onBack來處理 至此Email應用的ActionBar和menu就基本分析完了,如果有不準確的地方還希望大家指正 |
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
