本期內容包括: Google的物聯網平臺Android Things; FileProvider; Android Studio的Layout Preview使用; Retrofit2使用; Google Sign-In和SmartLock; 把敏感信息放入NDK的解決方式. 設計部分討論了調色板... ...
Android Weekly Issue #236
December 18th, 2016
Android Weekly Issue #236
本期內容包括: Google的物聯網平臺Android Things; FileProvider; Android Studio的Layout Preview使用; Retrofit2使用; Google Sign-In和SmartLock; 把敏感信息放入NDK的解決方式.
設計部分討論了調色板的靈感來源和幾個開發app的時候應該註意的問題.
ARTICLES & TUTORIALS
Getting started with Android Things
Internet of Things (物聯網, IoT), 是互聯網, 傳統電信網等咨詢承載體, 讓所有能行使獨立功能的物品之間實現互聯互通的網路.
2016年12月, Google發佈了Android Things的開發者預覽版, 這是一個專門為IoT設備定製的Android系統.
本篇文章一步一步地教你如何寫一個IoT的基本程式, 跑在Raspberry Pi 3 Model B上.
FileProvider
上次我們提到了用DownloadManager
下載的東西可以和其他應用分享, 那麼如果我們下載的時候沒有用DownloadManager
呢?
比較常見的情況是我們的應用需要分享內容到其他應用, 或者是文件的類型是我們應用不能自己處理的, 需要找一個支持這種文件類型的其他應用來幫我們打開它.
怎麼解決呢? 答案是用FileProvider
.
上一期有一篇文章也說過Android 7開始廢棄了"file://", 解決方案就是用FileProvider
, 所以實現是一樣的, 這裡就不重覆了.
Working with the Layout Preview
Layout Preview向你展示了你的xml將如何在設備上顯示. 你可以用它查看佈局在不同的配置下如何顯示, 比如可以切換橫豎屏, 語言等等.
但是它同樣也有一些問題:
Issue #1: Preview顯示空白
當你的佈局是由動態獲取的數據來填充的, preview不知道如何填充, 所以你看到的是空白的.
一個好的practice是使用tools
命名空間, 指定一些只在preview階段使用的屬性. 這樣你就可以指定一些text或src用來預覽.
Tip #2: 使得動態內容在Preview可見
如果你的圖片是動態資源, 你也可以設置一些最大寬高給parent view, 以防真實的圖片比期待的大太多或者是比例不對. 你可以設置tools:layout_height
和tools:layout_width
, 還有tools:background
在preview中查看view占多大.
本文還推薦了另一個閱讀資料: Tools of the trade — Part 1
Tip #3: 修複壞掉的Previews
當你創建一個自定義View的時候, 你需要確保你的View不需要任何外部依賴即可被實例化, 否則Preview可能看不到你的View. 因為Preview不是運行在你的app上的, 它只是運行在IDE的JVM上, 所以View framework之外的東西它是訪問不到的.
解決辦法是在你的自定義View中做一些特殊處理, 比如把依賴註入放在!isInEditMode()
里, 或者用tools:
命名空間加一些預設值.
Tip #4:
解決的辦法是使用tools:showIn="layout"
, 指定
從Android Studio 2.2開始, 你可以使用tools:parentTag
來指定parent的類型, 比如tools:parentTag="LinearLayout"
.
Tip #5: 在Preview中顯示隱藏的View
如果你在layout中把view的visibility設置為gone, 那麼它是不會在Preview中顯示的.
解決辦法: 使用tools:visibility="visible"
.
Android Things Tutorials
Android Things教程.
Get Started With Retrofit 2 HTTP Client
本篇文章以實例講述如何使用Retrofit, 雖然都是基礎內容, 但講解很詳細.
Improving sign-in experience with Google Sign-In and SmartLock
Google提供了兩種方式來幫助我們改善用戶的登錄體驗:
Google Sign-In(之前被稱為Google+ Sign-In)和SmartLock.
這篇文章舉例解釋了Google Sign-In和SmartLock的實現.
Google Sign-In的部分比較簡單.
SmartLock讓我們可以:
- 讓用戶保存credentials.
- 在打開應用的時候請求credentials.
- 使用存在Chrome上的credentials, 這樣我們的網站和app就可以共用credentials.
- 顯示Email提示, 讓用戶選擇email地址.
- 所有的這些信息都保存在Google的server里, 用戶可以保存或刪除.
Demo app: charbgr/AuthManager
Storing your secure information in the NDK
這篇文章說敏感信息放在Java代碼里不安全, 很容易被人反編譯查看出來, 如果放在NDK裡面就好一些, 你打開查看的只能是二進位文件, 很難找到.
DESIGN
Introduction to Natural palettes
作者從大自然的圖像中得到顏色組合的靈感.
文章中舉了幾個例子, 如何用相關的照片找到相關主題的調色板.
另推薦一個網站: IN COLOR
BALANCE
Make your Android app look better
讓你的App看起來更好的幾點建議:
- 使用同一個圖標集的圖標.
(這裡推薦了一些圖片工具和網站.) - 使用Material Design設計的keylines, 使用固定的格子大小.
- 使用顏色的時候小心一些. (這裡推薦了一些調色板網站)
- 選擇字體要明智一些.
LIBRARIES & CODE
Material Components
模塊化和可定製的Material Design UI組件. Android, iOS, Web.
Android-oss from Kickstarter
Kickstarter開源了他們的Android應用.
stencil
一個kotlin寫的Android庫, 實現一種文字路徑的動畫.
AuthManager
包裝了Google Sign-In和SmartLock的Manager.
FolioReader-Android
一個ePub閱讀器和解析框架.
BufferTextInputLayout
對Support Library中的TextInputLayout
的擴展, 增加了字數統計.
TextLayoutBuilder
使用Builder模式來配置創建一個Layout的屬性.