第一周【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 项目前分组与选型