Android開發技術周報 Issue#105

馬嚴子 8年前發布 | 6K 次閱讀 安卓開發 Android開發 移動開發

新聞

  1. Night Mode有望回歸Nexus設備

  2. 谷歌模塊手機Project ARA上手圖賞:像掰巧克力一樣

  3. CyanogenMod 14.1 Nightly Builds發布:基于Android 7.1

  4. Android Nougat新彩蛋:可實現任意部分截圖

  5. 發布兩個月之后 Android N安裝率達到0.3%

  6. 為Android/Chrome融合打基礎? 谷歌收購模擬器團隊

 

教程

  1. Android 復雜的列表視圖新寫法: MultiType 詳解篇

    在開發我的 TimeMachine 時,我有一個復雜的聊天頁面,于是我設計了我的類型池系統,它是完全解耦的,因此我能夠輕松將它抽離出來分享,并給它取名為 MultiType.從前,比如我們寫一個類似微博列表頁面,這樣的列表是十分復雜的:有純文本的、帶轉發原文的、帶圖片的、帶視頻的、帶文章的等等,甚至穿插一條可以橫向滑動的好友推薦條目。不同的 Item 類型眾多,而且隨著業務發展,還會更多。如果我們使用傳統的開發方式,經常要做一些繁瑣的工作,代碼可能都堆積在一個 Adapter 中:我們需要覆寫 RecyclerView.Adapter 的 getItemViewType 方法,羅列一些 type 整型常量,并且 ViewHolder 轉型、綁定數據也比較麻煩。一旦產品需求有變,或者產品設計說需要增加一種新的 Item 類型,我們需要去代碼堆里找到我們原來的邏輯去修改,或者找到正確的位置去增加代碼。這些過程都比較繁瑣,侵入較強,需要小心翼翼,以免改錯影響到其他地方。

  2. 如何構建Android MVVM 應用框架

    說到Android MVVM,相信大家都會想到Google 2015年推出的DataBinding框架。然而兩者的概念是不一樣的,不能混為一談。MVVM是一種架構模式,而DataBinding是一個實現數據和UI綁定的框架,是構建MVVM模式的一個工具。之前看過很多關于Android MVVM的博客,但大多數提到的都是DataBinding的基本用法,很少有文章仔細講解在Android中是如何通過DataBinding去構建MVVM的應用框架的。View、ViewModel、Model每一層的職責如何?它們之間聯系怎樣、分工如何、代碼應該如何設計?這是我寫這篇文章的初衷。

  3. WebP原理和Android支持現狀介紹

    目前網絡中圖片仍然是占用流量較大的一部分,對于移動端更是如此,因此,如何在保證圖片視覺不失真前提下縮小體積,對于節省帶寬和電池電量十分重要。然而目前對于JPEG、PNG、GIF等常用圖片格式的優化已幾乎達到極致,因此Google于2010年提出了一種新的圖片壓縮格式 — WebP,給圖片的優化提供了新的可能。WebP為網絡圖片提供了無損和有損壓縮能力,同時在有損條件下支持透明通道。據官方實驗顯示:無損WebP相比PNG減少26%大小;有損WebP在相同的SSIM(Structural Similarity Index,結構相似性)下相比JPEG減少25%~34%的大小;有損WebP也支持透明通道,大小通常約為對應PNG的1/3。

  4. 一觸即發——App啟動優化最佳實踐

    其實最早的時候,閃屏是用來在App未完全啟動的時候,讓用戶不至于困惑App是否啟動而加入的一個設計。而現在的很多App,基本上都把閃屏當做一個廣告、宣傳的頁面了,貌似已經失去了原本的意義,但閃屏,不管怎么說,在一個App啟動的時候,都是非常重要的,設計的事情,交給UE吧,開發要做的,就是讓App的啟動體驗,做到最好。

  5. 微信mars 的高性能日志模塊 xlog

    mars 是微信官方的終端基礎組件,是一個使用 C++ 編寫的業務性無關,平臺性無關的基礎組件。目前接入平臺:Android、iOS、Mac、Windows、WP等 。現正在籌備開源中。可以這么說,接入 mars 之后,開發一個應用只需要把開發重心放在業務層和 UI 層上,底層的日志模塊和網絡模塊在 mars 中都已經提供。在使用用戶數上有月活躍8億的微信用戶幫忙背書(數據來源于財報)。 在數據監控上,純網絡監控,長連接有18項 短連接7項。接下來我重點講今天的主角mars的 xlog 部分。我們先來思考一下為什么需要日志,日志什么時候能顯示其作用。

  6. 攜程 React Native 實踐與性能優化

    React Native(下文簡稱 RN)開源已經一年多時間,國內各大互聯網公司都在使用,攜程也在今年 5 月份投入資源開始引入,并推廣給多個業務團隊使用,本文將會分享我們遇到的一些問題以及我們的優化方案。

  7. 大幅提高Android開發效率之Android項目模板化(下)

    在《 大幅提高Android開發效率之Android項目模板化(上) 》中我們了解了如何用 Android Studio Template 大幅減少寫業務代碼前的工作量,同時也稍微提了下用 Live Template 減少寫業務代碼過程中的“樣板式代碼”。可能有朋友會問,我們這么緊張這點效率真的必要么?這個問題我先不回答,我們先來看看一個場景:寫一個單例。單例模式應該是開發過程中最常見的設計模式之一了。寫單例前總得先糾結一下吧,單例模式這么多種實現方式該用哪種好呢?選定了實現方式后,老老實實寫一堆代碼,然后你會突然發現除了類名不一樣外,其他代碼都是一模一樣,這時你心里會不會隱隱約約覺得這是可以優化的?

  8. 微信 Tinker 熱不丁修復框架分析 -- Diff

    從微信公眾號介紹 Tinker 開始就一直關注 Tinker,自己也一直在做熱修復相關的開發,但一直都是在踩坑的狀態,在 MDCC 的時候也和邵文同學聊了一下,從看到框架代碼開始就覺得其穩定性相當的好,而整個框架里我在意的幾部分是: 1. DexDiff 我覺得這是最體現微信做事風格的一個模塊:要把一個技術做到極致,像之前開源的幾種方案里 Andfix 的補丁粒度是方法,像 nuwa、rocoofix 類似的補丁粒度是類,其他有很多采用 bsdiff 的,其實上述的方法都會由于一些的情況造成補丁包變得很大(這個后面會講原因),而 Tinker 是基于 Dex 的文件結構來下手,將產生變化的結構提取出來,產生的補丁非常小,而且在 diff 的過程中也處理了一些會造成補丁包很大的場景,這個后續再談。之前有同學跟我說這個是反編譯過程,其實并不是如此。

  9. Android 7.1 新特性之 Shortcuts 介紹

    Android 7.1 允許 App 自定義 Shortcuts,類似 iOS 的 3D touch。通過在桌面長按 App 彈出 Shortcut 列表,點擊某個 Shortcut 快速進入某項操作,同時 Shortcut 可以拖動到桌面進行固定,由于 7.1 SDK 的 Sources 尚未開放,目前大部分內容還是根據官方 API 文檔而來,還有些細節和可能的 Bug 還得等 Sources 開放。Shortcuts 全面介紹分為兩篇,本文是基礎介紹,關于 Shortcuts 一些不錯的實踐和目前的問題可訪問 trinea.cn 最新文章。

  10. OKHttp3源碼解析

    鑒于一些關于OKHttp3源碼的解析文檔過于碎片化,本文系統的,由淺入深得,按照網絡請求發起的流程順序來講解OkHttp3的源碼。在自己學習的同時,給大家分享一些經驗

  11. 安卓AOP三劍客:APT,AspectJ,Javassist

    AOP:面向切面編程(Aspect-Oriented Programming)。如果說,OOP如果是把問題劃分到單個模塊的話,那么AOP就是把涉及到眾多模塊的某一類問題進行統一管理。Android AOP就是通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,提高開發效率。

  12. 途牛APK壓縮最佳實踐

  13. The key concepts of app tracking for developers

    Valuable information for Android developers about mobile analytics

開源庫 & App

  1. XLog

    一個易用可擴展的 Android 日志庫。在實現主流日志庫幾乎所有功能的前提下,專注于代碼架構和擴展性方面的設計,堪稱史上最強的 Android 日志庫。

  2. DeepLinkDispatch

    A simple, annotation-based library for making deep link handling better on Android

  3. tinker-manager

    微信tinker補丁管理,后端代碼+客戶端sdk

  4. ReView

    一個輔助設計師方便 review UI 的 view 組件集合

  5. BigImageViewer

    Big image viewer supporting pan and zoom, with very little memory usage and full featured image loading choices. Powered by Subsampling Scale Image View, Fresco, Glide, and Picasso.

  6. FastAccess

    A tiny launcher or as Samsung likes to call it Floating Toolbox.

  7. ActivitySwitcher

    一個基于 Activity 視圖操作管理庫,可以實現 Activity 之間任意跳轉、關閉任意一個 Activity 以及結束應用程序等功能

  8. dynamic-load-view

    能夠動態加載外部apk中的View以及資源,能夠熱修復線上View,以及模塊化更新

  9. RippleLayout

    A layout that implemented ripple effect for transition animation.

  10. GetWordTextView

    一個可以取詞的TextView

  11. SQLiteOnWeb-Android

    一個可以讓你在瀏覽器里管理應用 SQLite 數據庫的庫

工具

  1. Android Studio 2.3 預覽版發布啦

    Bug Fixes、IntelliJ 2016.2.5、URL Assistant、Lint Enhancements(Many new checks, and baseline support)、WebP Support、Pixel & Pixel XL device definitions、Search for Vector Asset Wizard、ConstraintLayout Editor support - Ratio and Chains support。

    墻內下載地址: http://www.androiddevtools.cn/#android-studio

  2. gradle-build-properties-plugin

    External properties files support for your build scripts.

設計

  1. 不要只給你的 Android 應用準備一個圓形圖標

    隨著 Google Pixel 的發布, 很多應用都已經 (或者開始考慮) 給自己添置了一個圓形的 launcher icon. 加入圓形圖標后, 在 Google Pixel 的主屏上就產生了還算不錯的一致性. 這個圓形圖標至少目前是只在 Google Pixel 上支持的, 所以就算你沒做這樣一個圖標, 大部分情況其實也是無所謂的。

  2. UI設計中下拉刷新有什么講究?

    最早的下拉刷新設計源自于Tweetie 這款應用的設計,設計師Loren Brichter 是這種令人欲罷不能的交互的締造者。現在,下拉刷新的交互幾乎無處不在,但即便如此也讓人無法輕易忽視它帶來的快感。從推ter 到 Gmail,從QQ到新浪微博,它幾乎存在于你觸手可及的每一個應用當中。

  3. 移動端用戶體驗:底部導航

    設計師都知道,設計不只是為了好看。設計也決定用戶如何融入一個產品,無論是網站還是app。這是一種交談。導航就是一種交談。因為如果用戶不明白使用方式,你的網站或app再漂亮都沒用。

活動

  1. 北京GDG DevFest 2016 開放報名!

    北京 GDG 一年一度的開發者大會 DevFest 2016 再度來襲,現已正式開放報名!今年是北京 GDG 第五次舉辦 DevFest 大會,最近四屆一直保持 500 人的規模。DevFest 是完全由社區組織者、志愿者獨立籌備的活動,是國內少數高質量、無廣告、免費的開發者大會。本次大會分兩個會場主要面向 Android 和 Web 開發者,由國內資深工程師給大家帶來分享。此外,還有 TensorFlow 的介紹內容。

  1. 我的Java后端書架 (2016年暖冬版)

  2. 一堆免費的開發相關的書

 

 

來自:http://www.androidweekly.cn/android-dev-weekly-issue-105/

 

 本文由用戶 馬嚴子 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!