Android開發需求功能一覽表
1.框架 資料庫,網路,快取模式,H5互動(cordova)
2.帶有主題並控制元件化,而且例如輸入框這種 統一處理 有清空功能的
3.第三方服務 okhttp/XUTILS,七牛,環信,友盟分享,統計,百度定位,熱更新等
4.基礎功能 例如引導,首頁,註冊,登入,修改密碼,重置密碼,設定(關於,升級等)
5.業務功能
架構現在流行元件化,參考
http://blog.csdn.net/guiying712/article/details/55213884
https://github.com/mzule/ActivityRouter 做為跳轉
http://www.jianshu.com/p/c696acb74bd2
大的業務考慮外掛化
記憶體優化
https://www.zhihu.com/question/30138734
細節實現考慮MVP,MVVM,MVC
framework 線上看程式碼 http://androidxref.com/
看到另外一個層面的劃分結構:http://www.jianshu.com/p/42d45998117f
目前發現兩種架構方式
1.普通架構 以Activity為底,我主要用了兩個基礎activity,一個登陸前,一個是登陸後,登陸前不需要校驗直接呼叫後臺介面,登陸後需要校驗後才可以使用介面,校驗指後臺安全性校驗,封裝類似,主要封裝了網路判斷,載入動畫,隱藏鍵盤,禁止根據系統設定改變字型大小,動態申請許可權等
2.同一個activity,以fragment為底的基礎架構,每一個都是fragment,fragment會比activity輕量一些,但是也更容易出現很多坑
http://www.jianshu.com/p/38f7994faa6b
混合開發分為三種:
1.簡單,純粹展示一些靜態頁面,webview,加Js橋,自己封裝通過js傳遞string,圖片base64,檔案不怎麼傳
2.稍微麻煩點,類似cordova,封裝好了一些基礎,傳遞檔案二進位制,String等,有完善的外掛模板還有UI模板,只需要自定義一些特殊,比如自定義了七牛上傳特殊外掛等
3.完全不一樣,使用同一種語言來寫不同平臺的reactNative,類似JS語言來控制原生介面顯示和邏輯,基本上原生關係不太大了,學習成本高
元件化封裝一個 Android業務元件化之URL Scheme使用 參考:http://www.cnblogs.com/whoislcj/p/5825333.html 可以標準化引數和跳轉
VR 其實就是平鋪的openGl的球型圖片,當然視訊是怎麼做到,還沒太清楚,按道理應該是類似的,球型播放
可以利用谷歌的VR播放器。https://github.com/linglongxin24/VRDevelopVideo
AR Unity3D顯示3D圖形在螢幕上 http://www.arvrschool.com/read.php?tid=325&fid=21
UI:
1.引導介面
2.註冊介面
3.登入頁面
4.主介面(微信式下分頁,QQ式側滑分頁)
5.設定介面
6.關於介面
7.升級檢查更新 有升級標誌位,強制升級,提示升級,靜默安裝
8.意見反饋
9.其他(看需求)
a.activity 生命週期 棧模式
b.server bind模式,宣告週期 前臺服務
c.broadcastreceiver 靜態和動態註冊
d.Content Provider 對外暴露提供資料庫介面(http://www.cnblogs.com/chenglong/articles/1892029.html http://www.2cto.com/kf/201404/296974.html)
e.application
10.控制元件自寫
a.整合(已有控制元件整合在一起)
b.自寫(根據控制元件手動畫一個控制元件,沒有已有控制元件支援)
c.繼承(在已有控制元件基礎上自己新增新功能以適合獨特APP使用)
11.動畫效果
12.3D展示
其他功能:
13.JNI NDK C類庫呼叫
14.程式碼混淆 加殼編譯等 加密
15.網路互動
a.SSL()和普通HTTP請求
b.支援斷點上傳下載
c.網路狀態判斷(WIFI,移動,斷網)
d.網路傳輸(文字,檔案)
(1)文字傳輸 (XML,JSON)
(2)檔案傳輸(傳輸前壓縮,檔案流直傳)
e.代理
f.執行緒池管理
g.多執行緒互動 同步和非同步
h.HTTP與區域網內SOCKET
16.資料儲存
a.SQLITE (可以使用第三方框架greenDAO 或ActiviteAndroid)
b.檔案儲存
c.sharepreference
d.網路儲存
17.媒體播放(圖片,音樂和視訊)
18.圖片處理
a,圖片變形壓縮轉換
b.非同步下載
c.快取CACHE
19.工具包
a.常量
b.LOG分級控制記錄上傳等(http://bugly.qq.com/androidfast) ANR CRASH 其他型別LOG
日誌分為3種 Crash日誌 使用者業務操作日誌(後臺處理) 使用者行為日誌
c.本地儲存
20.地圖功能(百度SDK http://lbsyun.baidu.com/sdk/download)
21.推送功能(百度SDK http://push.baidu.com/ http://developer.baidu.com/platform/catalog/navigation-c/node/n301 也可以使用其他第三方,或者自己寫)
22.使用者統計
23.硬體裝置
a.藍芽
b.感測器(重力,加速度,方向,光線,GPRS等)
c.NFC
d.攝像頭(二維碼,人臉識別,卡號識別,拍照)
e.錄音
f.wifi
g.GPRS
24.搜尋(應用內搜尋,網路搜尋,語音搜尋)
25.即時通訊(環信 http://www.easemob.com/downloads)
26.分享和第三方賬號登入(sharesdk http://wiki.sharesdk.cn/ http://www.cnblogs.com/smyhvae/p/4585340.html)
27.支付整合(微信,支付寶,網銀)
28.APP對外的介面(AIDI,還有其他自定義廣播等)
29.輔助功能服務(例如搶紅包輔助功能http://blog.csdn.net/jwzhangjie/article/details/47205299 )
30.hybird網頁混合開發模式
最普通一種修是webview載入H5頁面,然後回撥Android或IOS原生介面(http://www.tuicool.com/articles/m6RVFfA)
當然還有其他的框架,有些針對於純前端開發者的
31.自動化編譯 Android studio 針對gralde (http://blog.csdn.net/voiceofnet/article/details/45197883) Ecplise針對ant(http://blog.csdn.net/webwalker/article/details/24796347)
32,pdf開源元件 vuAndroid 有些格式PDF不支援,例子:http://download.csdn.net/detail/z157794218/9517512
支援比較好的mupdf http://download.csdn.net/detail/z157794218/9518361
33.使用Android6.0以後許可權需要檢查後申請,參考 http://www.cnblogs.com/cr330326/p/5181283.html
別人講基礎和進階
http://blog.csdn.net/liuhe688/article/details/9494411
第三方開原始碼:
http://blog.csdn.net/shulianghan/article/details/18046021
http://blog.csdn.net/zhaihaohao1/article/category/3162599
http://blog.csdn.net/oyangyujun/article/details/43340893
http://www.open-open.com/lib/view/open1436262653692.html
https://github.com/Trinea/android-open-project
替換主題 https://github.com/burgessjp/ThemeSkinning(封裝的) https://github.com/fengjundev/Android-Skin-Loader
按鈕線上製作圖片 http://angrytools.com/android/button/
34.字型大小 不跟隨系統字型改變 http://blog.csdn.net/zhuqiang1002/article/details/38756127
自定義設定字型大小 參考 http://blog.csdn.net/u011730649/article/details/42872923 其他方面
字型適配可能需要自己定義主題來做會更好些 http://www.cnblogs.com/likeandroid/p/4501758.html
35.陰影新增 https://github.com/Hitomis/CrazyShadow
36.開始程式碼編寫簡化第三方庫檔案 事件訊息傳遞eventbus http://blog.csdn.net/harvic880925/article/details/40660137
Retrofit註解 http://www.jianshu.com/p/308f3c54abdd
rxjava http://gank.io/post/560e15be2dca930e00da1083
圖片拍照選擇器:
https://github.com/jeasonlzy/ImagePicker
https://github.com/easonline/AndroidImagePickerhttps://github.com/pengjianbo/GalleryFinal
glide 圖片快取 https://github.com/bumptech/glide
Robust 熱更新 http://tech.meituan.com/android_robust.htmlTinker熱更新 http://www.tinkerpatch.com/工具類 https://github.com/Blankj/AndroidUtilCodehttp://blog.csdn.net/dj0379/article/details/38356773 XUtils 支援下載大檔案,斷點續傳
好用吸色器http://www.getmarkman.com/#/download-modal
這只是我自己劃分以及知識點,如果有不足,期望大家補充說明
ScrollView和recyclerView巢狀,有個簡單方法。
ScrollView改成NestedScrollView,recyclerView.setNestedScrollingEnabled(false);加上這兩句問題就解決了
scrolliview一直滑到最底部 scrollto失效
scrollView.post(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_UP); } });
toast 在樂視pro3上手機無法顯示
http://blog.csdn.net/qq_25867141/article/details/52807705
記錄一個工具 ImageOptim 專門用來優化圖片大小,減小APP大小
一個有意思的移動端資料問題
http://blog.csdn.net/ceko_wu/article/details/45244295 CursorAdapter優化排序和顯示問題
如果有NDK支援,其實也使用C層直接定址排序和尋找
AndroidStuido的外掛
https://www.jianshu.com/p/d76b60a3883d
https://blog.csdn.net/zheng_weichao/article/details/72961791
gradle多渠道打包
https://www.jianshu.com/p/4677efee7214