有一段時間沒有上來折騰這個專題了,一來項目的確緊張,二來自己一慣是很懶的。
今天想與大家分享的是一個QuickAction的東西,模樣其實就是通訊錄中點擊頭像後彈出的那個提供可操作按鈕的窗口。
這個效果其實我們也用過,就是QuickContactBadge。顯然,它很有意思,但是爲什麼只能由系統決定上面的按鈕呢?
所以今天我們要做的事情就是做一個自己的QuickAction類。
第一步:收集資源
去Android的源代碼網站 http://android.git.kernel.org/ 下載 Contacts 應用的源代碼。在它的drawable目錄裏可以找到那些以quickcontacts_XXXXX的圖片,就是我們需要用
來構造這個彈出窗口的圖片資源。在layout目錄裏有quickcontact.xml則是我們需要的佈局文件模板。當然,你也可以參考看看src/.../QuickContactsWindows.java文件。因爲裏
面就有今天我們要實現的內容,只是它太複雜了,已超出我們想要的功能。
第二步:設計佈局
我們的佈局文件quickaction.xml如下:
裏面很多東西都好理解,無非就是把圖片堆砌一下罷了。重點說說放在中間的那個HorizontalScrollView裏面的那個叫qa_tracks的LinearLayout。我們將來的所有按鈕都是放在它
上面的,現在已經放了兩個按鈕(就是兩邊帶點點的裝飾按鈕)。
第三步:現在開始寫代碼了,封裝按鈕的動作
代碼超簡單,只需要兩樣東西:圖標和事件監聽器。
第四步:現在可以做QuickAction了
其實原理就是利用PopupWindow來顯示quickaction佈局文件,構造多個ActionItem實例放在qa_tracks裏面就OK了。
具體實現如下:
不多解釋了,注意事項參考代碼中的註釋即可。
那些漂亮的動畫是必不可少的,而這又是GOOGLE已經提供了的,拿來用就是了。
最後的步驟:用它
在你要使用的地方(即原來放badge 位置上,修改成這樣):
現在,在你的代碼中手工構造並填寫Action即可: