Android開發技術周報 Issue#19
教程
-
由@Trinea發起的Android開源項目源碼解析項目, 目前已校對發布的分析有:Volley源碼解析、Android Universal Image Loader源碼分析、Dagger源碼解析、EventBus 源碼解析、xUtils源碼解析、ViewPagerindicator源碼解析、HoloGraphLibrary源碼解析、 CircularFloatingActionMenu源碼解析、PhotoView 源碼解析、Android Lock Pattern源碼解析以及公共技術點:Java動態代理、Java注解Annotation、View繪制流程、依賴注入和View時間傳遞等。
-
有不少朋友都問過我,怎樣才能寫出高性能的應用程序,如何避免程序出現OOM,或者當程序內存占用過高的時候該怎么樣去排查。確實,一個優秀的應用 程序,不僅僅要功能完成得好,性能問題也應該處理得恰到好處。為此,我也是閱讀了不少Android官方給出的高性能編程建議,那么從本篇文章開始,我就 準備開始寫一個全新系列的博文,來把這些建議進行整理和分析,幫助大家能夠寫出更加出色的應用程序。
-
這篇文章是前Firefox Android工程師(現在跳槽去非死book了) Lucas Rocha所 寫,文中對Android中常用的四種自定義布局方案進行了很好地分析,并結合這四種Android自定義布局方案所寫的示例項目講解了它們各自的優劣以 及四種方案之間的比較。看完這篇文章,也讓我對Android 自定義布局有了進一步的了解,于是趁著興頭,我把它翻譯成中文,原文鏈接在此。
-
巧用Drawable 實現Android UI 元素間距效果
在大部分的移動UI或者Web UI都是基于網格概念而設計的。這種網格一般都是有一些對其的方塊組成,然后它們組合成為一個塊。使用網格這樣的設計原則可以有助于對齊UI元素,提升 UI的一致性,同時還能讓用戶更加容易的獲取UI上面包含的內容。簡而言之,網格是一個相當的強大的設計工具。
-
模塊間的緊耦合是一種很糟糕的設計,而耦合的最壞表現就是模塊間的循環依賴。幸運的是,有幾種方法可以用來消除循環依賴,分別是回調函數,代碼上移,代碼下移。 接下來,我會為大家展示一個小例子。示例中,我會分別使用上述幾種技術來消除循環依賴。
-
你的Android應用完全不需要那么多的權限
Android系統的權限從用戶的角度來看有時候的確有點讓人摸不著頭腦。有時候可能你只需要做一些簡單的事情(對聯系人的信息進行編輯),卻申請了遠超你應用所需的權限(比如訪問所有聯系人信息的權限)。這很難不讓用戶對你保存戒備。 -
Android App 性能優化實踐
本文從工具、布局優化、代碼、View的繪制、電量、和Apk的大小等幾個方面記錄了Android App優化需要用到的工具和以及在實踐中的Tips。 -
復雜的軟件必須有清晰合理的架構,否則無法開發和維護。MVC(Model-View-Controller)是最常見的軟件架構之一,業界有著廣泛應用。它本身很容易理解,但是要講清楚,它與衍生的 MVP 和 MVVM 架構的區別就不容易了。
-
接前一篇文章<使用Android Studio查看Android Lollipop源碼> , 我們知道,僅僅看代碼,提高是比較有限的,而且理解起來也比較膚淺,往往過目就忘. 而自己寫過的代碼,往往會印象比較深刻,在寫的時候也會比較容易理解流程. 所以我們在看代碼的同時, 如果能修改代碼, 在手機上跑起來并看到修改的效果,這無疑會加快看代碼的效率和積極性.
-
經常有這樣的應用場景,我們需要Client端調用Service完成一些事情,Service也可以通過回調通知客戶端。
-
這篇文章介紹通過Gradle把開源項目發布到公共倉庫JCenter中,方便你我他的事情,我們都是很懶的嘛。JCenter現在是 Android Studio中repositories的默認節點了,之前是Maven的,不過JCenter是兼容Maven的,所以放心使用。
代碼&開源庫
-
Material Design的兼容實現,支持Android 2.1+。
-
一個ORM框架,核心功能:
- 自定義字段 - 輕松實現定制字段,以便任何對象都可以被序列化到數據庫
-
表關系
- 一對一
- 一對多
- 保存一個父對象會自動保存與之相關關聯的子對象
- 文件 - 輕松的保存長文本, JSON and bitmaps
- 升級 - 數據庫升級支持通過注解去刪除和重命名列名。
-
圖案密碼解鎖庫。

-
可以顯示Gif動畫的自定義View。
-
JavaCPP provides efficient access to native C++ inside Java, not unlike the way some C/C++ compilers interact with assembly language. No need to invent new languages such as with SWIG, SIP, C++/CLI, Cython, or RPython as required by cppyy. Instead, it exploits the syntactic and semantic similarities between Java and C++. Under the hood, it uses JNI, so it works with all implementations of Java SE, in addition to Android, Avian, and RoboVM (instructions).
-
Genius-Android 是 Android 中一些常用的的方法集合, Genius 提供6個基本板塊:app(Ui)、animation(動畫)、widget(Material控件)、command(命令行)]、net tool(Ping、Dns...)、util(常用方法,類)等。
-
5+ Runtime是DCloud推出的HTML5強化引擎,性能和功能都大幅領先phoneg*p,可以使用JS調用40W原生API,可以在低端機上流暢運行。點擊視頻觀看低端機上如何流暢運行App。http://download.dcloud.net.cn/FastAndroid-mini.m4v 也可直接下載App在手機上體驗:
功能演示:http://dcloud.io/helloh5/ UI演示:http://dcloud.io/hellomui/
-
對ViewPager進行了擴展,支持垂直切換page、垂直無限切換page、水平無線切換page和即可以垂直又可以水平無限切換page,支持ndroid 2.1.x (API 7) +系統。
-
一個自定義的,向后兼容的Material Design風格的Preference實現。
-
模仿Android Lollipop Contacts滾動效果的容器View。
-
一個Android平臺的事件總線框架, 它簡化了Activity、Fragment、Service等組件之間的交互,很大程度上降低了它們之間的耦合,使得我們的代碼更加簡潔,耦合性更低,提升我們的代碼質量。
工具
-
添加了對單元測試的支持以及修復了一些Bug。
-
gradle-eclipse-aar-plugin
一個可以讓你在Eclipse中使用Android AAR格式庫的Gradle插件。 -
一個代碼片段搜索工具。
視頻
-
本課程帶領大家更加深入地學習Java多線程機制,深入理解創建線程的兩種方式之間的差異,掌握線程的生命周期和守護線程的概念。
-
本課程將帶領大家實現個性的ViewPager切換動畫,首先介紹通過PageTransformer結合 ViewPager.setPageTransformer來實現動畫效果,然后教大家如何讓其兼容到3.0以后,其中會涉及到屬性動畫等知識點;最后將 介紹通過自定義ViewPager的方式來實現動畫切換效果。
-
Android應用的卡頓問題非常突出,所有用戶都能感覺得到卻又很難做量化卡頓的嚴重程度,過去的做法只是零星地發現和解決一些小點。DAU超億 級的UC瀏覽器在卡頓優化的過程中建立了一套衡量卡頓嚴重性的數據指標與監控分析機制,并藉此有針對性地落實了200+個性能優化點。這里會介紹卡頓監控 與分析的方法、常見的卡頓案例與原因