第一週【UI基礎】
第1天: Android環境搭建及工程目錄介紹
1.1 Android開發(版本:SDK21及以上版本)環境搭建
1.2 Android發展史、移動設備操作系統、四層系統架構等理論知識
1.2.1 Android發展史介紹
1.2.2 移動設備操作系統介紹
1.2.3 Android四層系統架構的介紹
1.3 HelloWorld程序
1.3.1 編寫HelloWorld程序
1.3.2 APP的目錄結構介紹
1.4 adb shell簡介(install uninstall)
第2天: 常用UI佈局與控件
2.1 View與ViewGroup
2.1.1 View 的概念
2.1.2 ViewGroup 的概念
2.1.3 View的樹形結構
2.2 LinearLayout【重點講解】
2.2.1 View常用屬性
android:id
android:background
android:onClick
android:padding
android:visibility
android:alpha
android:layout_height
android:layout_width
android:layout_margin
2.2.2 Android中長度單位的概念、區別及轉換公式(sp、dp、dip、px、dpi)
2.2.3 LinearLayout特有屬性
android:orientation
android:layout_weight
android:gravity
android:layout_gravity
android:weightSum(權重總和)
2.3 RelativeLayout
2.3.1 RelativeLayout內的子控件特有屬性(16個)
A、第一組:指兄弟控件之間的相對位置。該組屬性的值是另一個控件的id。
layout_toRightOf
layout_toLeftOf
layout_above
layout_below
B、第二組:指兄弟控件之間的對齊關係。該組屬性的值是另一個控件的id。
layout_alignRight
layout_alignLeft
layout_alignTop
layout_alignBottom
layout_alignBaseline
C、第三組:指控件與父佈局之間的對齊關係。該組屬性的值是true或者false。
layout_alignParentRight
layout_alignParentLeft
layout_alignParentTop
layout_alignParentBottom
layout_centerInParent
layout_centerVertical
layout_centerHorizontal
2.4 FrameLayout
2.5 GridLayout
2.5.1 GridLayout 特有屬性
android:layout_column
android:layout_row
android:layout_columnSpan
android:layout_rowSpan
android:layout_gravity
2.6 TextView
2.6.1 TextView屬性
android:text
android:textColor
android:textSize
android:singleLine
android:gravity
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom
android:autoLink
第3天: 表單UI控件及控件的事件處理
3.1 EditText、Button、ImageView
3.1.1 EditText常用屬性介紹
android:inputType
android:hint
android:imeOptions
3.1.2 Button常用屬性介紹及監聽器使用
android:onClick
Button綁定監聽器方式
3.1.3 ImageView常用屬性介紹
andorid:src
android:adjustViewBounds
android:maxHeight
andorid:maxWidth
android:scaleType
3.2 RadioButton及RadioGroup的用法
3.2.1 RadioButton、RadioGroup的常用屬性
3.2.2 綁定RadioGroup特有監聽器
3.3 CheckBox的多選效果及監聽
3.3.1 CheckBox的常用屬性
3.3.2 綁定CheckBox特有監聽器
3.4 Toast的基本用法
第4天: Spinner、AutoCompleteTextView、ScrollView及適配器、數組資源
4.1 Spinner
4.1.1 Spinner的常用屬性
android:entries=""
4.1.2 Spinner的常用方法
4.2 適配器
4.2.1 適配器的介紹
4.2.2 ArrayAdapter的介紹及使用
4.3 數組資源
4.3.1 定義數組資源
4.3.2 獲取數組資源
4.4 AutoCompleteTextView
4.4.1 AutoCompleteTextView的常用屬性
4.4.2 AutoCompleteTextView的常用方法
4.5 ScrollView
4.5.1 垂直ScrollView的使用
4.5.2 HorizontalScrollView的使用
4.6 ProgressBar、SeekBar、RatingBar
4.6.1 ProgressBar的基本用法
4.6.2 SeekBar的基本用法及美化
4.6.3 RatingBar的基本用法及美化
第5天: UI美化及Android資源
5.1 Style的簡單用法
5.1.1 style的基本使用
5.1.2 style的繼承
5.1.3 利用selector及shape修改多選框的顯示效果
5.1.4 利用selector實現選中與否、改變默認RadioButton的顯示效果
5.2 Android資源彙總
5.2.1 id、字符串資源、顏色資源、尺寸資源、佈局資源、字符數組資源、樣式和主題資源
5.2.2 菜單資源、圖像資源、動畫資源
5.2.3 其他資源
原生xml資源
raw資源
特殊Drawable資源
動畫資源
自定義屬性資源
第2周:【應用核心組件初識】
第6天:Activity及頁面跳轉
6.1 Activity的聲明和使用
6.1.1 創建Activity
6.1.2 在清單文件中配置Activity
6.1.3 啓動Activity
6.2 Activity生命週期
6.2.1 Activity生命週期的作用
6.2.2 Activity生命週期方法
6.2.3 Activity生命週期方法執行順序
6.2.4 橫豎屏切換時Activity生命週期變化(Manifest.xml設置configChange)
6.3 Activity現場保護
6.4 Activity基本頁面跳轉及傳值
6.4.1 使用Intent實現頁面跳轉
6.4.2 使用Bundle實現傳遞對象
6.4.3 使用Application全局對象傳值
6.5 Activity具有返回值的頁面跳轉
6.5.1 啓動Activity回傳數據
第7天:Activity啓動模式及Intent
7.1 Task和Back Stack的基本概念
7.1.1 Task的介紹
7.1.2 Back Stack的介紹
7.1.3 Task和Back Stack的關係
7.1.4 退出APP時銷燬回退棧中所有Activity(context.finishAffinity())
7.2 Activity的啓動模式
7.2.1 啓動模式的簡介
7.2.2 啓動模式的應用
7.3 Intent屬性的特點及用法
7.3.1 Intent中的ComponentName屬性
7.3.2 Intent中Action屬性
7.3.3 Intent中Category屬性
7.3.4 Intent中Data屬性
7.3.5 Intent中Type屬性
7.3.6 Intent中Extra屬性
7.3.7 Intent中Flags屬性
第8天: AsyncTask異步任務
8.1 使用異步任務的原因
8.1.1 Android中線程使用規則
8.1.2 異步任務使用步驟
8.2 異步任務的應用
8.2.1 AsyncTask中範型參數說明
8.2.2 AsyncTask中方法的說明
8.2.3 異步任務與線程池
8.2.4 異步任務的取消
第9天: ListView基本用法及適配器介紹
9.1 AdapterView與Adapter簡介
9.1.1 AdapterView的範疇
9.1.2 Adapter的作用
9.2 ListView基本用法
9.2.1 ListView常用屬性
9.2.2 ListView常用方法
setEmptyView()
addHeaderView()
addFooterView()
9.2.3 ListView常用監聽方法
9.3 SimpleAdapter
9.3.1 ListView與ArrayAdapter的使用
9.3.2 ListView與SimpleAdapter的使用
9.3.3 SimpleAdapter與ViewBinder結合使用
9.4 BaseAdapter
9.4.1 BaseAdapter中的四個方法的說明
9.4.2 ListView的ConvertView複用
第10天:ListView優化及分頁、GridView
10.1 ListView優化
10.1.1 內存空間優化(ConvertView)
10.1.2 運行時間優化(ViewHolder)
10.1.3 ListView的item多佈局的複用
10.2 ListView滾動監聽實現分頁加載數據
10.2.1 ListView滾動事件OnScrollListener
10.2.2 ListView實現分頁效果
10.3 GridView加載圖片
10.3.1 GridView的常用屬性
10.3.2 GridView的基本用法
10.3.3 GridView的事件
擴展部分- ExpandableListView – 錄視頻
第3周:【Menu、Dialog、數據存儲】
第11天:菜單及對話框
11.1 OptionsMenu
11.1.1 OptionsMenu創建方式(菜單資源、Java程序)
11.1.2 菜單項點擊事件(onMenuItemSelected()、onOptionsItemSelected())
11.2 ContextMenu
11.2.1 ContextMenu創建方式
11.2.2 上下文菜單項點擊事件
11.2.3 上下文菜單綁定註冊
11.3 PopupMenu
11.3.1 PopupMenu的創建
11.4 PopupWindow
11.4.1 PopupWindow實現自定義菜單
11.4.2 PopupWindow常用方法(showAsLocation()、showAsDropDown())
11.5 AlertDialog
11.5.1 AlertDialog的創建及點擊事件
11.6 ProgressDialog
11.6.1 ProgressDialog的創建及樣式
11.7 列表對話框
11.7.1 列表對話框的創建
11.8 自定義Dialog
11.8.1 自定義Dialog的實現
第12天:數據存儲
12.1 SharedPreferences
12.1.1 SharedPreferences使用場景;
12.1.2 SharedPreferences的常用方法
12.2 內部存儲
12.2.1 內部存儲的概念
12.2.2 內部存儲的實現
12.3 外部存儲
12.3.1 外部存儲的概念
12.3.2 外部存儲的存儲目錄
12.3.3 外部存儲的實現
12.4 存儲Bitmap圖片到外部存儲
12.4.1 封裝外部存儲工具類
12.4.2 存儲圖片到外部存儲空間
12.4.3 對圖片存儲質量進行設置
第13天:SQLite數據庫與CursorAdapter適配器
13.1 回顧SQLite
13.1.1 SQLite數據庫的特點
13.1.2 SQL常用語法
13.2 SQLiteOpenHelper的用法
13.2.1 SQLiteOpenHelper類介紹
13.2.2 數據庫和表的創建
13.2.3 SQLiteDatabase數據庫的升級
13.2.4 SQLiteDatabase實現CRUD的少參方法(rawQuery、execSQL)
13.2.5 SQLiteDatabase實現CRUD的多參方法
13.3 CursorAdapter
13.3.1 CursorAdapter的用法
13.3.2 CursorAdapter結合ViewBinder
第14天:ContentProvider
14.1 ContentResolver實現系統數據庫的操作
14.1.1 ContentProvider與ContentResolver的概念及關係
14.1.2 利用ContentResolver實現系統數據的操作(聯繫人【查詢】、媒體庫文件、通話記錄、短信記錄);
14.2 自定義ContentProvider
14.2.1 自定義ContentProvider的實現步驟
第15天:Loader
15.1 CursorLoader的用法
15.1.1 CursorLoader的使用場景
15.1.2 CursorLoader的用法
15.2 AsyncTaskLoader加載本地數據
15.2.1 AsyncTaskLoader與CursorLoader對比
15.2.2 AsyncTaskLoader的用法
週末案例:對本週知識點綜合練習【帶離線閱讀的新聞系統】
第4周: 【移動開發主流界面實現】
第16天:動畫資源
16.1 幀動畫
16.1.1 幀動畫的具體實現
16.2 補間動畫
16.2.1 補間動畫的類型(透明度、縮放、旋轉、平移、AnimationSet)
16.2.2 補間動畫的動畫資源的常用屬性及實現方法
16.2.3 補間動畫的Java代碼實現方法
16.2.4 補間動畫的監聽方法
16.3 屬性動畫
16.3.1 屬性動畫介紹
16.3.2 屬性動畫與補間動畫的區別
16.3.3 屬性動畫資源文件的常用屬性
16.3.4 屬性動畫的具體實現方法
第17天:Fragment
17.1 Fragment基本用法
17.1.1 Fragment簡介
17.1.2 Fragment生命週期
17.1.3 靜態Fragment
17.1.4 動態Fragment
17.1.5 FragmentTransaction
17.1.6 Fragment的回退棧
17.2 Fragment傳值
17.2.1 Fragment與Activity之間的傳值
17.2.2 Fragment之間傳值
17.3 Fragment性能優化
17.3.1 Fragment優化的必要
17.3.2 Fragment優化相關方法
add、remove、show、hide、attach、detach
第18天:ViewPager
18.1 ViewPager與適配器
18.1.1 ViewPager的基本使用(ViewPager實現歡迎引導頁)
18.1.2 ViewPager的適配器
PagerAdapter
FragmentPagerAdapter
FragmentStatePagerAdapter
18.2 ViewPager加載網絡圖片
18.2.1 ViewPager加載網絡圖片實現廣告效果
18.3 PagerAdapter的優化
18.3.1 PagerAdapter優化的必要和實現
第19天:書籤導航
19.1 書籤導航多種實現效果展示
19.1.1 Fragment + FragmentTabHost
19.1.2 Fragment + RadioGroup
19.1.3 Fragment + ActionBar
19.1.4 Fragment + ViewPager + ActionBar
19.1.5 Fragment + ViewPager + PagerTabStrip
19.1.6 Fragment + ViewPager + TabLayout(5.0新技術)
19.1.7 ViewPageIndicator(第三方技術)
19.2 RadioGroup + ViewPager + Fragment實現導航
19.3 HorizontalScrollView + ViewPager + Fragment實現導航
第20天:Handler、Looper消息傳遞機制
20.1 Handler、Looper消息傳遞機制的原理
20.1.1 Handler簡介
20.1.2 Handler具體用法
20.1.3 Handler、Looper消息傳遞機制的原理分析
20.2 Handler、Looper源碼
20.2.1 Handler、Looper源碼分析
週末綜合練習【涵蓋前四周所有知識點】
週末作業包括:安裝Android Studio。
第5周:【應用核心組件進階】
【注】必須使用Android Studio開發環境教學
第21天:ActionBar (Action View、SearchView)+ ToolBar
21.1 ActionBar
21.1.1 ActionBar介紹(支持V7的ActionBar:android.support.v7.app.ActionBar)
21.1.2 AppCompatActivity、ActionBarActivity介紹
21.1.3 ActionBar的用法
21.1.4 Action View的介紹
21.1.5 SearchView的用法
21.2 ToolBar
21.2.1 ToolBar介紹
21.2.2 ToolBar的用法
第22天:BroadcastReceiver及Notification
22.1 Notification (普通通知、大視圖通知、進度條通知、自定義通知)
22.1.1 Notification的作用
22.1.2 普通通知的用法
22.1.3 PendingIntent的用法
22.1.4 Notification的Flag屬性
22.1.5 大視圖通知
22.1.6 進度條通知
22.1.7 自定義通知
22.2 廣播接收器
22.2.1 廣播接收器的概念、作用及註冊
22.2.2 廣播的分類(粘性廣播、非粘性廣播、設置廣播外部APP是否可接收、有序廣播、無序廣播)
22.2.3 本地廣播 LocalBroadcastReceiver
22.2.4 廣播接收器實現系統開機監聽
22.2.5 廣播接收器實現來短信監聽
22.2.6 廣播接收器實現來電和播出電話監聽
22.2.7 廣播接收器實現耳機插入及拔出監聽
22.2.8 廣播接收器實現網絡狀態改變監聽
22.2.9 廣播接收器實現電量改變監聽
22.3 自定義發送廣播
22.3.1 自定義發送廣播的做法
22.3.2 動態註冊廣播
第23天: Service基礎
23.1 Service介紹
23.1.1 Service的概念及使用場景
23.1.2 Service的分類
23.1.3 Service生命週期
23.1.4 Service註冊
23.2 Start Service
23.2.1 Start Service實現音樂播放器
23.2.2 粘性服務與非粘性服務
23.3 IntentService
23.3.1 IntentService介紹
23.3.2 IntentService實現網絡視頻文件下載
23.3.3 DownloadManager實現網絡視頻文件下載(系統下載)
23.4 Bind Service
23.4.1 Bind Service實現音樂播放器
23.5 兩種服務混合使用實現MediaPlayer音樂播放
第24天: 跨進程的Service
24.1 AIDL
24.1.1 AIDL的概念
24.1.2 AIDL的用法(Parcelable)AS上面的案例
24.2 Messenger
24.2.1 Messenger的概念
24.2.2 Messenger的用法
第25天:LruCache與Bitmap二次採樣
25.1 LruCache
25.1.1 LruCache的概念
25.1.2 LruCache的用法
25.2 二次採樣
25.2.1 二次採樣的意義
25.2.2 封裝二次採樣生成縮略圖工具類
週末綜合作業 音樂播放器
第6周:【View深入探究】
第26天: 百度地圖
26.1 百度地圖基本用法
26.1.1 百度地圖API概述
26.1.2 百度地圖密鑰申請
26.1.3 百度地圖配置
26.1.4 顯示基本地圖(交通地圖、衛星地圖、熱力地圖)
26.1.5 百度地圖定位
26.1.6 百度地圖覆蓋物基本用法
26.1.7 混淆的意義及地圖的混淆配置
26.2 百度地圖搜索
26.2.1 POI檢索
26.2.2 出行線路規劃(公交、步行、自駕)
26.2.3 公交路線查詢
第27天: 自定義View(一)
27.1 自定義View介紹
27.1.1 爲什麼自定義View
27.1.2 View和ViewGroup的職責回顧
27.1.3 自定義View的常規做法
27.1.4 自定義View的構造方法規則
27.2 NotePad 繼承已有控件方式的自定義View
27.2.1 繪製 onDraw的說明
27.2.2 onDraw方法的注意事項 不要創建對象
27.2.3 Canvas, Paint, drawLine 簡介
27.2.4 自定義屬性
第28天:自定義View(二)
28.1 繼承於ViewGroup的自定義View
28.1.1 重寫View中的onLayout()方法
28.1.2 實現自定義流式佈局FlowLayout
28.2 自繪製的自定義View
28.2.1 重寫View中的onDraw()方法
28.2.2 畫布畫筆(Canvas、Paint)
28.2.3 重寫View中的onMeasure()方法
第29天:滑動視圖
29.1 PullToRefresh框架
29.1.1 配置
29.1.2 事件回調
29.1.3 多種控件
29.1.4 PullToRefreshBase重寫
29.2 SlidingPaneLayout
29.2.1 左側或右側滑動
29.3 DrawerLayout 使用
第30天: 機型適配及Git
30.1 機型適配介紹
30.1.1 Android中機型適配出現的原因(系統碎片和屏幕碎片)
30.1.2 機型適配的思路
30.2 屏幕相關重要概念回顧
30.2.1 屏幕尺寸
30.2.2 屏幕分辨率
30.2.3 屏幕像素密度及密度比值
30.2.4 dp、dpi、sp、px
30.2.5 mdpi、hdpi、xhdpi、xxhdpi
30.3 機型適配的解決方案
30.3.1 屏幕適配
相對佈局、尺寸限定符、最小寬度限定符、屏幕方向限定符、自動拉伸位圖
30.3.2 版本適配
30.3.3 語言自適應
30.4 Git的使用
30.4.1 Git介紹
30.4.2 使用Git的必要性
30.4.3 Git的使用
二、Android項目實戰階段:
1. 32.1 MVC與MVP設計模式
2. 開發流程
3. glide圖片加載
4. JSON
5. AsyncTask
6. HTTP( okHttp+Handler)
7. SQLite
8. ListView 多佈局
9. Service
10. MediaPlayer
11. Notification
12. ViewPager
13. Fragment
14. TabLayout
14.1 與ViewPager配合
14.2 自定義Tab
15. BroadcastReceiver 耳機拔出
16. SharedPreferences
17. 打包,混淆、多渠道打包
第8周:【Android新技術】
第36天:視頻播放器
36.1 視頻播放器VideoView
36.2 SurfaceView及MediaPlayer
36.2.1 SurfaceView介紹與View區別
36.2.2 SurfaceHolder與CallBack
36.2.3 MediaPlayer.setDisplay
36.2.4 MediaPlayer加載網絡視頻
36.3 播放器全屏顯示與恢復
36.3.1 VideoView 全屏顯示 onMeasure重寫
36.3.2 Activity 點擊切換橫屏方法
36.4 ListView的item實現視頻播放
36.4.1 Item顯示視頻
36.4.2 單Item播放
36.4.3 Item滾出時停止播放
第37天:RecyclerView
37.1 5.0新技術介紹(Material Design)
37.1.1 設計理念
37.1.2 新增控件
37.2 CardView 用法
37.2.1 CardView: cardElevation, cardMaxElevation, cardCornerRadius
37.3 RecyclerView的用法
37.3.1 RecyclerView:LayoutManager, Adapter, Adapter.ViewHolder
37.4 RecyclerView與ListView比較
37.4.1 setOnItemClickListener
37.4.2 ViewHolder, Adapter
37.5 SwipeRefreshLayout
37.5.1 配置
37.5.2 事件回調
37.5.3 與RecyclerView的配合
擴展部分:第三方 UltimateRecycerView
第38天:Material Design全新設計風格
38.1 TextInputLayout
38.1.1 錯誤監聽
38.2 CoordinatorLayout
38.2.1 Toolbar與CoordinatorLayout
38.2.2 Behavior
38.2.3 AppBarLayout
38.2.4 NestedScrollView
38.2.5 CollapsingToolbarLayout
38.3 Snackbar
38.3.1 監聽Action
38.4 FloatingActionButton
38.4.1 屬性介紹
38.4.2 onClick事件處理
第39天:拍照、傳感器、ZXing二維碼
39.1 利用Intent實現攝像頭拍照
39.1.1 Intent拍照返回Bitmap方式
39.1.2 Intent拍照保存文件方式
39.2 加速度傳感器實現《搖一搖》
39.2.1 傳感器獲取:傳感器類型、默認傳感器、傳感器列表
39.2.2 傳感器監聽註冊
39.2.3 加速度傳感 搖一搖
39.3 ZXing實現生成二維碼(容錯等級、二維碼正中心Logo)
39.3.1 二維碼生成,生成BitMatrix轉Bitmap
39.3.2 配置生成時的容錯等級
39.3.3 形成帶有中心Logo的二維碼
39.4 ZXing實現二維碼掃描
39.4.1 導包
39.4.2 附加代碼包含掃描Activity
39.4.3 ZXing Activity ACTION 與 掃描操作;
第三方框架 zxing-android-embedded
第40天:JPush推送、第三方登錄、友盟統計分析
40.1 JPush極光推送的原理及用法
40.1.1 [官方文檔](http://jpush.cn)
40.1.2 通知推送
40.1.3 消息推送
40.1.4 推送原理
40.2 第三方登錄
40.2.1 第三方登錄說明
40.2.2 友盟API的使用
40.3 友盟統計分析
40.3.1 應用的創建與申請
40.3.2 統計API的說明,啓動統計與頁面統計
【第8周綜合案例】
第9周:【流行技術雜項】
第41天:加密解密
41.1 對稱加密(AES 、DES、3DES)
41.2 非對稱加密(RSA)
41.3 消息摘要(MD5、 SHA-1 )
41.4 編碼解碼(Base64、URLEncode、URLDecode)
第42天:網絡支付
42.1購物車
42.2 [Alipay支付](https://b.alipay.com/newIndex.htm)
42.3 [微信支付](http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1)
第43天: 事件分發原理
43.1 事件分發消費機制原理
43.1.1 事件分發消費機制的原理分析
43.1.2 事件分發三大方法
43.2 事件分發消費機制的應用場景
43.2.1 如何解決ScrollView、ListView的嵌套
43.2.2 解決ListView中item的Button事件衝突
43.2.3 DrawerLayout及其中的事件衝突問題的解決
第44天: 高性能ORM框架與WebApp
44.1 ORM框架
44.1.1 Dagger2/ormlite
44.1.2 Dagger2與Retrofit組合應用— 選講
擴展 greenDao —錄視
44.2 Android WebView 應用
44.2.1 網頁的加載
44.2.2 WebClient 網址攔截
44.2.3 WebChrome 網址進度、標題接收 簡介
44.2.4 網址導航 前進、後退、歷史管理
44.2.5 Web頁面與本地代碼的通信
44.2.6 JS 與 Java 間的交互
44.2.7 WebApp 混淆的配置
第45天 項目管理工具
45.1 SVN、抓包工具
45.2 項目前分組與選型