#新科技# Android 簡報 (No.1)

眼瞅著這個 Blog 一天天的長了草,為了不枉費那麼多的關注數,決意要在 2015 年保持更新,太深度的不可能太持續就寫點簡單的吧。平時會讀一些 Android 相關的技術文章,大約按周整理起來做份簡報,加上我的理解做點解讀,歡迎互相討論。

是時候用 RecyclerView 來取代 ListView 了

在 Android 5.0 正式推出了 RecyclerView(在 support library 中),一言以蔽之,RecyclerView 就是用來取代 ListView 和它的兄弟們的。一方面,RecyclerView 更易用,完全限定面向 ViewHolder 來編程(也就是採納了 ListView 編程中常用的 View 緩存),更方便且不會用錯;另一方面,RecyclerView 更靈活,從動畫到排版等諸多細節,均可以自定義,媽媽再也不怕我用各種奇技淫巧來寫 ListView 了。

一篇不錯的簡介,先開個胃,適合了解 RecyclerView 的基本概念,近期,還有一些文章更詳細的介紹了 RecyclerView 的更細節的使用:

  • RecyclerView Animations (I, II)。RecyclerView 將每個 Item 分成了若干種狀態,在狀態切換時,可以通過實現 ItemAnimator 來注入動畫,使得整個列表呈現變得極度生動。這個系列文章,從原理說起,大致介紹了要如何實現一個 Item 動畫(但看上去博主也很忙文章寫得也很慢...),其實在 Github 中,有大量的 RecyclerView 的動畫實現,可以根據需求來選用。

  • Building a RecyclerView LayoutManager (I, II, III)。和 ListView 不一樣,RecyclerView 的排版不是寫死的,而是通過 LayoutManager 來控制的,默認的排版實現是線性垂向滾動的列表,開發者可以通過重新實現 LayoutManager 來定製所需的排版樣式,比如網格的,橫向的,甚至其他各種。但 LayoutManager 的定製,絕對屬於 RecyclerView 的高級用法,需要透徹理解 RecyclerView 的工作原理才能寫出穩定可靠的版本,在這個系列文章中,介紹了如何實現一個網格列表,有代碼有詳解,是學習的範本。額外提一句,Android TV 的 Leanback 界面庫中,也定製了一個 RecyclerView 的 LayoutManager (GridLayoutManager),可以實現出 Android TV 那樣的網格交互效果。

以上,只是 RecyclerView 的一部分介紹而已。簡單用,RecyclerView 比 ListView 更親切方便;複雜用,RecyclerView 具有非常好的可擴展能力,更能滿足當下產品對交互實現的要求。不僅 Google 系列的 App 已經大量使用 RecyclerView 來取代 ListView 了,在貴莢,也開始用 RecyclerView 來做新的功能實現了,順滑愉悅。

Android 界面開發的七種武器

好吧,這是標題黨。在 Android 開發中,也許有超過 80% 的代碼/時間都在處理界面交互相關的各種細節,從數據、到界面、再到邏輯策略。因此,積累自己的方法論和工具庫,都是非常有必要的事情。

  • A useful stack on android (I, II)。這個系列文章,就是整理 Android 交互開發相關的 「技術棧」 的,第一篇討論的是設計方法,所謂的 「架構」,提到了 MVP 模式和 Event Bus(有空我找些相關的文章來);第二篇是具體介紹和界面相關的庫。文章結構略零散,但是裡面有不少不錯的引文值得一讀。

其實,Android 近期推出的一些新平台界面庫,比如 Android TV 的 Leanback,更體現了 Android 在界面框架上的一些新想法,建議讀讀相關源碼。有空的話後續我整理一篇介紹 Leanback 的,以及貴莢在這個問題上的一些思考。

快一點,再快一點

性能優化,尤其是交互上的性能優化是開發一款優秀 App 的必經之路。前段時間,Facebook 發過一篇 Blog 來介紹他們是如何優化首頁性能的:

  • Fast Rendering News Feed on Android。雖然,Facebook 的 News Feed 依然非常的卡頓,但是他們做的優化還是很值得參看的。性能優化這事,家家有本難念的經,只能因地制宜,Facebook 碰到的問題是:卡片大,類型多,內容豐富,採取的優化手段是把大卡片劈開成平級的小卡片促進回收,用預處理來分攤初始化開銷,這些思路都還頗有意思,是不錯的參考。

雖說優化這事是要根據約束來擬定策略的,但是基本的原理和工具都是相同的,說到這裡就需要推薦下面這個系列的視頻,可以看做是 Android 性能優化的 101:

  • Android Performance Patterns。講的很有意思,風趣快速,一個視頻三兩分鐘,信息量足夠,從原理到方法到工具都有涉及,是很好的性能優化入門指南。目前,這個系列視頻涉及到的性能點包括:界面渲染,內存優化,電量優化,期待後續的更新。

推薦閱讀:

TAG:Android科学院 | RecyclerView | ViewHolder | 简介 | RecyclerViewAnimations | I | II | ItemAnimator | BuildingaRecyclerViewLayoutManager | III | LayoutManager | Ausefulstackonandroid | FastRenderingNewsFeedonAndroid | AndroidPerformancePatterns |