編輯:初級開發
本想寫在日志中的,但日志不支持上傳附件,而本代碼量比較大不適合全部帖出來,就發表在問題區了,請見諒。
第一個回帖的得到懸賞分。
順便問下V大,現在問題區只能發懸賞帖是不是就是想讓大家只發問題帖啊?我感覺壇裡分享的成果帖或共享帖量見少了。
寫這例子的初衷是想模仿通訊錄列表,實現了一些效果,也沒法做到100%相像,自己也認為還有一些不足(存在些內存上的浪費)。
這個階段先這樣了,代碼量比較大,就不貼代碼了,只上效果圖。
源碼下載:
效果圖如下:
實現功能:
1.實現根據字母進行分類。
2.實現快速滑動及修改快速滑動條的圖標。
3.實現快速滑動時的字母提示。
4.實現快捷操作框及其的動畫顯示/隱藏,上箭頭與下箭頭的選擇性顯示及位置匹配。
5.順便做了個自定義Dialog和完整的發送郵件的實現(主送、抄送、密送、附件、標題、正文)。
部分實現細節介紹:
1.快速滑動時的字母提示框
該顯示組件為TextView,實例索引名為txtOverlay,執行WindowManager.addView(txtOverlay, layoutParams)後添加於WindowManager上。通過設置ListView.OnScrollListener監聽到滾動時則將 txtOverlay設置可見性為View.VISIBLE,當滾動結束時可見性調為VIEw.INVISIBLE。
為了提升用戶體驗,避免在短時間內,用戶再次拖動時字母提示框又執行顯示和隱藏命令,將隱藏的操作設置在DisapearThread線程實例中,通過 handler.postDelayed(disapearThread, 1500)延時1.5秒後再執行字母提示框的隱藏。
2.快速滾動圖標的修改
android Api並未公開修改圖標的接口,本處通過調用Java的反射機制修改了快速滾動的圖標。替換代碼見MainAct類中的changeFastScrollerDrawable()。
補充:android對ListVIEw設置了優化,對於少於4頁內容的List即使設置了fastScrollEnabled=true也不會顯示FastScroller。
參考資料查看:<Android_Source>\frameworks\base\core\java\android\widget\FastScroller.Java:其中常量MIN_PAGES及其相關。
3.獲取List中“咧牙”ImageVIEw在屏幕中的絕對位置
代碼如下:anchor為“咧牙”ImageVIEw。
這個步驟也是為上箭頭與下箭頭的自動選擇做好鋪墊。
4.為快捷按鈕組成的LinearLayout設置反彈動畫
設置LinearLayout沿直線軌跡從從屏幕右邊滑動到左邊這個部分的動畫定義文件是res/anim/anim_actionslayout.XML,代碼如下:
需要反彈的效果還得對Animation設定Interpolator(插值器),插值器的設定需要一些數學基礎了,得找到合適的函數對動畫速率進行修正。本例中使用的插值器代碼如下:
Intent比較簡單,類似消息,發送給別的activity,別的activity會立即執行我主要說說什麼是PendingIntent以及它的執行過程以alarm ser
37.LinearLayout8在菜單裡可以動態改變LinearLayout的布局 原布局: 1: <?xml version=1
Android的服務開發中我們可能都是Activity和Service同進程處理,但想象過系統提供的各種ServiceManager嗎? 比如 SensorManage