[TOC]android
本文主要面向筆者在Web、iOS、Android、WP等移動端開發中的經驗總結出在現有以及將來的全部客戶端的學習中應該掌握的知識脈絡圖。通俗來講,就是幫着梳理學習筆記的目錄結構。歡迎你們一塊兒補充,Git地址:這裏git
Advanced:高級內容
Architect:架構設計
MVC
MVC,全稱是 Model View Controller,是模型 (model)-視圖 (view)-控制器 (controller) 的縮寫。它表示的是一種常見的客戶端軟件開發框架。github
MVP
MVVM
MVVM 是 Model-View-ViewModel 的簡寫。相對於 MVC 的歷史來講,MVVM 是一個至關新的架構,MVVM 最先於 2005 年被微軟的 WPF 和 Silverlight 的架構師 John Gossman 提出,而且應用在微軟的軟件開發中。當時 MVC 已經被提出了 20 多年了,可見二者出現的年代差異有多大。數據庫
MVC框架若使用不當不可避免的會存在着Controller過於臃腫而且解耦不當的問題,所以不少人都會推崇MVVM,貶斥MVC,不過這篇文章筆者認爲講的仍是很不錯的,值得思考。編程
Reactive
Reactive自己是異步數據流的一種實現方式,這裏也便是所謂的FRP,即響應式函數編程。Reactive部分放在這邊是由於它是一套從UI開始到後面響應中的完整的機制,以Android中的RxJava、Web中的RxJS以及iOS中的ReactiveCocoa爲典型表明。緩存
Core:框架底層原理分析
此部分主要包含對於框架的底層原理分析,譬如Android領域的AOSP的源代碼分析,各類各樣的什麼底層通訊框架等等的分析。網絡
Language:框架經常使用語言
Objective-C
Swift
筆者看過的語法特性最早進齊全的語言之一,足以玩上好多天。架構
Dart
Java
Network(網絡)
Socket
HttpClient
以okHttp(Android)、Volley、AFNetworking(iOS)爲例。併發
Request Manage(請求管理)
Parallel Request(併發請求)
Storage(存儲)
DataBase(數據庫)
CoreData
這是iOS提供的相似於SQLite的存儲方式。mvc
SQLite
Realm
File(文件)
Props(配置文件)
Resources(資源文件)
Cache(緩存)
UserDefaults(iOS),SharedPreference(Android),localStorage(Web)
SysProc(系統與進程)
Components Communication(組件通訊)
Notification(iOS)、postMessage(Web)、Handler(Android)
Concurrence
Thread(線程)
GCD/NSOperation(iOS)、AsyncTask(Android)
Promise
PromiseKit(iOS)
EventBus
Otto(Android)
Service(服務)
RPC(遠程與本地調用)
NDK(Android)
TestRelease(測試與打包發佈)
Debug(調試與記錄)
Log(日誌)
Monitor(線程與Crash監控)
Release(發佈)
Signature(Android)
Ad-hoc/AppStore(iOS)
Confusion(混淆與加密)
Test
Unit Test(單元測試)
UI Test(界面測試)
External Test(第三方測試)
Optimization(優化)
Plugin & Dynamic Patch(插件化與動態更新)
譬如如今Android領域很火的多APK聯合發佈以及部分更新等功能。
APM(應用狀態追蹤與評分等)
Rating(在AppStore或者各大應用市場中的應用評分)
UI
用戶交互與界面部分是最經常使用也是最複雜的一個部分。
UI.md(界面呈現的基本原理)
Screen & Coordinate(屏幕與座標系)
Layout(佈局)
AutoLayout(iOS)
AbsoluteLayout(Android)
Responsive(響應式)
Basic View(基本的視圖提供與控制)
UIView/UIViewController(iOS)
Activity(Android)
iFrame(Web)
Container(常見的做爲容器的View/Panel)
ScrollView(滾動視圖容器)
CoordinatorLayout(Android)
RefreshLayout:提供下拉刷新或者上拉加載的Layout
NavigationView(導航視圖)
TabBarView(頁卡視圖)
Router(頁面路由)
Interaction(用戶交互)
Event&Gesture(事件與手勢操做)
Event Bind(事件監聽與綁定)
Event Dispatcher(事件捕獲傳遞與分發)
Gesture Recognize(手勢監聽與識別)
Multiple Touch(多點觸控)
Drag&Drop(拖拽)
Scroll(滾動)
Zoom(縮放)
Shake(搖晃)
Media(音頻視頻播放、錄製與相關操做)
Camera(照相機)
Audio
音頻的錄製與播放,就像iOS與Android下的語音交互,須要統一轉碼成AMR或者其餘格式。
Video
Sensor(傳感器,包括陀螺儀、重力傳感器)
HealthKit(iOS)
Notification(通知欄,包括本地通知與遠程推送)
Widgets(插件)
Dialog(對話框)
Modal Dialog(模態對話框)
譬如iDialog(Web)
Popup:彈出與提示層
HUD
Tooltip
Popover:覆蓋層
Empty/Error 空或者錯誤提示
Action Sheet:底部彈出操做欄
Indicator(指示器)
Introduction(介紹或者引導頁)
Splash(閃屏)
Guide/Tour(導引與教程)
DateTimer(時間顯示)
TimeLine(時間軸效果)
CountDown(倒計數以及倒計時效果)
ProgressBar(進度條)
Text(文本顯示以及效果)
Rich Text(富文本)
TypeWriter:打字機效果
文字的切入切出效果
Label(標籤)
Tags(標籤或者等效的流列表)
Badge(徽標數)
Loading(加載效果)
Picker(輸入器)
Button(按鈕)
FAB(浮動按鈕、回到頂部按鈕)
Menu(菜單)
Drawer:抽屜菜單(Android)
Toolbar/StatusBar(狀態欄或者工具欄)
Select(選擇器)
Segment(分段輸入器)
Ratio Button
Check
Text(文本輸入,泛指全部用戶的自主輸入的內容)
TableGrid(網格與表單)
List(列表)
ListView(Android)、UITableView(iOS)
ListView-Animation
Grid(網格)
UICollectionView(iOS)、RecycleView(Android)
CardView(卡片式)
Gallery(畫廊)
ImageView(圖片加載、呈現以及處理)
LazyLoad(圖片懶加載)
Filter(圖片濾鏡)
Label(圖片標籤)
Sticker(圖片貼紙)
Crop(圖片裁剪與美化)
PhotoBrowser(圖片瀏覽)
album(相冊)
Carousel(圖片輪播)
Waterfall(瀑布流方式)
LightBox(圖片點擊放大)
WebView
Native Interaction(本地交互)
DVisual(繪圖以及數據可視化)
Graphics(基本的繪圖相關)
Color(顏色與取色)
Style&Theme(樣式與主題)
Filter(過濾/濾鏡)
這裏的View指的是對於通用的View的效果。
Chart(圖表相關)
Map(地圖相關)
Barcode(二維碼以及條形碼相關)
Animation(動畫與變換)
View Transition(基本視圖的經常使用切換)
Animation Framework(動畫構造庫)
android控件的動畫分爲三種,property animation,tween animation,frame animation。可是由於在Web和iOS中分類不一樣,所以不作詳細分類。
KeyFrame(幀動畫)
Animation Collection(常見動畫彙總)