1. 程式人生 > >android技術選型(持續更新中...)

android技術選型(持續更新中...)

log列印

網路請求

我希望達到的目標是,對著介面文件,api鏈式呼叫著配置一下,一個請求就完成了.
懶得去記具體框架裡的類啊註解啊什麼的,
甚至,http協議的一些複雜內容我也不想涉及,比如快取控制->把常用的那些快取模式變成幾個int值給我選就行了,我才懶得用的時候考慮請求頭響應頭什麼的.
一句話,傻瓜式使用.
所以,從這個角度看,retrofit不是好的選擇.

工具

模擬請求: postman (需要翻牆到chrome商店內下載安裝)
手機/電腦抓包: fiddler.
https抓包: fiddler4.4.9.2(https抓包成功率最高的一個版本) 請翻牆google下載,國內沒有.

圖片載入

包括普通圖片載入和大圖載入,以及大圖輪播,以及圖片的一些特殊效果,比如圓角,圓形,高斯模糊等等.
https://github.com/hss01248/ImageLoader
此庫基於glide和fresco封裝,實現了圖片的常見特殊效果.
優化了sumsamplingImageView的大圖輪播,使輪播時記憶體佔用也一直維持在20M的水平.
配置全部鏈式api呼叫

本地圖片選擇,裁剪,壓縮

系統intent被國產rom搞得不能用,各種相容性bug,必須用框架
https://github.com/hss01248/PhotoOut 用鏈式api串起幾個優秀的開源庫,從而串起了整個流程.

提示性UI

toast:

Toasty : https://github.com/hss01248/Toasty
帶有狀態的toast,有succes.error,warn,info,normal 五種,以及debug一種(只在debug模式下彈出).

dialog :

notification

必用的UI小元件

選擇器:

內建時間日期選擇器,UI自定義配置很豐富
還有三級,二級,一級聯動選擇器

各種豐富的內建選擇器:
包括日期選擇器、時間選擇器、單項選擇器、城市地址選擇器、車牌號選擇器、數字選擇器、星座選擇器、生肖選擇器、顏色選擇器、檔案選擇器、目錄選擇器等

多條件篩選選單

優惠券效果

輪播圖

https://github.com/youth5201314/banner
多種模式 Android廣告圖片輪播控制元件,支援無限迴圈和多種主題,可以靈活設定輪播樣式、動畫、輪播和切換時間、位置、圖片載入框架等!

快速分組側邊欄

給圖片打標籤

滾動刻度尺

加減號控制數字增減

廣告彈窗

狀態列變色

檔案下載

資料庫

頁面狀態管理

工具類庫

Rx全家桶

為什麼沒有retrofit? 因為它的api太難用了啊.設計很優美,但是使用起來坑太多,又繁瑣.

RxAndroid

讓你隨意地切換執行緒

RxBinding

從此擺脫頻繁點選導致的重複操作的煩惱

RxLifecycle

生命週期管理,減少記憶體洩漏

RxPermissions

6.0執行時許可權

Rx Preferences

通過 RxJava 的方式來訪問 SharedPreferences

鍵盤監聽

鍵盤監聽是android一大坑.
防止自動彈出鍵盤:
activity 標籤里加android:windowSoftInputMode=”stateHidden|stateAlwaysHidden”

網路變更事件監聽

螢幕適配

UI特效

陰影效果

第三方庫相容性總還是存在一定問題,最靠譜的還是用drawable: 看這個: shadow.xml

水波紋效果

動畫

https://github.com/airbnb/lottie-android
parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile

loading動畫

https://github.com/race604/WaveLoading : provides a wave loading animation as a Drawable. 也就是說,可以設定給任意一個view當背景

換面板主題

把textview 玩出花來

檔案和快取相關

https://github.com/vincentbrison/dualcache
This android library provide a cache with 2 layers, one in RAM in top of one disk.

content-provider

原生元件的擴充套件

edittext

原生EditText在不同android版本上效果不一樣,絕對不能用.

  • 可以用appcompat包裡的AppCompatEditText,
  • 或者用design包裡的TextInputEditText.
  • 如果UI是自己搞,那麼直接用TextInputLayout+TextInputEditText,各種提示UI,顯示隱藏密碼,基本的校驗都集成了.
    使用很簡單,看這裡:TextInput詳解 · Material Design Part 1

button

viewpager

禁止左右滑動

@Override
    public boolean onTouchEvent(MotionEvent event) {
        return this.isCanScroll && super.onTouchEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        return this.isCanScroll && super.onInterceptTouchEvent(event);
    }

當各page型別一致時,內部迴圈利用四個page

shape 和selector

listview和recycleview

下拉重新整理

第三方分享和登入,統計

使用友盟的sdk,然後再封裝一層
參見第三方登入/分享最佳實踐
自己封裝的一個:
https://github.com/hss01248/UmengUtil
對umeng分享,第三方登入以及統計的api的封裝,避免再出現api大幅改動而到處改原始碼.真正的一行程式碼完成分享和登入
注:上面最佳實踐的一些好的思路還沒有整合到這個庫中,目前只集成了qq,weixin,sina三家.

第三方推送

整合第三方推送最佳實踐
一句話來,小米rom就用小米推送,其他用友盟推送,更細緻一點,還可以華為rom用華為推送

許可權申請

二維碼掃描

基本上都是基於z-xing封裝

音訊錄製和播放

音訊錄製

當然是錄製成跨平臺的mp3格式:

基於start最多的AndroidMP3Recorder專案改進,經受了一個實際線上專案兩年的考驗
特點: 邊錄邊轉碼,暫停可播,方法安全,回撥豐富,6.0以下許可權也適配了

音訊播放

mediaplayer 難用得你想死,有木有?路徑設定很多rom互相不承認.操作方法不安全,各種異常.都給你封裝好了:

視訊相關

## 短視訊錄製和播放:

第三方的趣拍已經收費了,一年5萬,略貴.下面這個是開源中比較好的,不過沒有特效.

有特效的要收費,比如這個,錄製過程中有濾鏡,錄製後貼圖,加音樂.

視訊播放

android上建輕量級http伺服器

本質上是提供http通訊渠道
下面的庫,是用java原生的serversocket來接收資訊,然後用org.apache.http包來解析http相關資訊,然後自己像寫severlet一樣處理.

程序保活

對比了github的幾個star數較多的庫,最終選擇HelloDaemon,這個庫是在其他兩個庫基礎上的改進.

程式碼優化

渠道打包

  • 360加固寶 : 神速,還會加上360自己的一些統計功能
  • packer-ng-plugin : 號稱下一代Android打包工具,100個渠道包只需要10秒鐘.但沒有具體用過

crash日誌統計

想避免崩潰 用 https://github.com/jenly1314/NeverCrash ,但程式碼後續的一些邏輯要考慮清楚
日誌統計: 騰訊的bugly,或者友盟統計.360加固時也可選日誌統計功能,實時傳送而不是下一次傳送,比友盟的要全一些

apk更新和熱修復

自己搞

可以自己搭建伺服器,寫後臺管理apk版本,並提供檢測新版本和下載新版本的api,
app端核對版本號,下載apk,校驗md5,安裝.
android端基本邏輯封裝:
https://github.com/hss01248/ApkUpdater

熱更新: tinker 配置稍顯繁瑣

利用bugly的更新和熱修復功能

雲端儲存

  • 七牛雲: 雲端圖片處理功能真是牛逼上了天.之前還根據他們的api封裝了個工具類:QiniuUtils
  • 阿里雲: 看api文件,該有的雲端處理功能也有,但沒有實際用過.有用過的嗎?說說看

一些牛逼的小技巧

提升開發效率工具彙總

以下不算技術選型,僅做備忘

幾個全套型快速開發框架 -學習coding skill 用

別人總結的開源專案大禮包