福利篇:快速入门Android编程

  • Post author:
  • Post category:其他


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