相信大家都體驗過Android通訊錄中的彈窗效果。
相關閱讀:Android UI進階之彈窗的使用 http://www.linuxidc.com/Linux/2012-01/52254.htm
如圖所示:
android中提供了QuickContactBadge來實現這一效果。這裡簡單演示下。
首先創建布局文件:
[html]很簡單,在布局中添加一個QuickContactBadge組件即可。
在Activity中配置:
[java]注意加入讀通訊錄的權限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
實現效果如圖:
但是這個組件局限性很大,彈出窗口中只能是一些contact操作。但是仔細一想,這樣的操作並不難,不就是一個帶動畫的彈窗麼。下面就來我們自己實現一個。
實現一個帶動畫的彈窗並不難,在我的之前一篇博客中有講過彈窗PopupWindow的使用,不清楚彈窗的朋友可以去看下。在這裡實現的難點主要有這些:
1.判斷基准view在屏幕中的位置,從而確定彈窗彈出的位置以及動畫。這是非常重要的一點,或許基准在屏幕上方,那麼就要向下彈出。
2.動態的添加彈窗中的按鈕,並實現點擊
3.箭頭位置的控制。箭頭應該保持在基准的下方。
4.動畫的匹配。裡面有兩種動畫。一種是PopupWindow彈出動畫,我們通過設置彈窗的style來實現(style的用法可以參考我之前的博客)。另一種是彈窗中間的布局的動畫。
了解了難點以後,寫起來就方便了。
首先實現彈窗的布局:
[html]窗體內部使用一個HorizontalScrollView可以實現一個滑動效果。我們可以動態的在這個布局中添加按鈕,我們稱作Actionitem。
寫一個ActionItem類,使得我們可以用一個ArrayList做容器,動態的添加這些actionitem。這些都是服務於第二個難點。
[java]