You are on page 1of 9

前言

1、入门准备
1.1 学习这门课程需要准备的东西->java 基础,为什么选择 java 语言而不是 kotlin?
1.2 Android 对新手的友好程度->不友好 上学时我们老师的建议 和我一路走来的经历
以及现在培训班培训 Android 的数量
1.3 后面的课程安排->由浅到深
1.4 课程目标->以最接地气最容易理解的方式讲解课程的知识点,在讲解完知识点之
后尽量每一个知识点都有实战环节帮助大家加深记忆和理解
1.5 Android 开发者官网 https://developer.android.google.cn

2、Android 系统的整体架构和 Android 历史版本


2.1 Android 是一种操作系统还是一个编程语言?
2.2 Android 整体架构的认知 Android1->Android12 早期的 Android 版本系统漏洞较多
容易被搞一些黑科技 加上一些无良开发者或者公司
导致大家有一种印象 Android 手机很垃圾很卡。随着谷歌不断的对 Android 系统的
更新,越来越完善,体验越来越好
百 度 百 科 参 考 资 料 :
https://baike.baidu.com/item/Android%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC/15784
50?fr=aladdin

第一章
1 Android 应用的整体架构
百 度 百 科 资 料 参 考 :
https://baike.baidu.com/item/Android%E7%B3%BB%E7%BB%9F%E6%9E%84%E6%9E%B6/15591
610?fr=aladdin
我们日常开发的就是在应用层
2 搭建 Android 开发环境(Android Studio),搭建开发环境是我们的基础,如果开发环
境不能搭建成功,那么也就不能继续往下学习了
Android Studio 下载地址:https://developer.android.google.cn/studio?hl=zh_cn
3 创建第一个应用并且运行起来
官 网 文 字 教 程 ->https://developer.android.google.cn/training/basics/firstapp/creating-
project?hl=zh_cn
4 详解工程目录结构
主要讲解一些常用的目录,对于一些不常用的目录,尽管讲了大家也不常用,过几
天就又忘记了。不要死记硬背这些东西
开 发 者 文 档 : https://developer.android.google.cn/guide/topics/resources/providing-
resources?hl=zh_cn
清 单 文 件 AndroidManifest.xml 开 发 者 文 档
https://developer.android.google.cn/guide/topics/manifest/manifest-intro?hl=zh_cn
5 Android 日志输出系统 Log 的使用
5.1 简单使用
5.2 log 等级
5.3 log 控制台的讲解
5.4 log 过滤方式
5.5 自定义过滤方式

第二章 常用 Ui 的详解
1 View 和 ViewGroup 的区别和详解
1.1 View 是所有空间的子类,用于创建交互式的组件
从另外一个层面上讲,View 不能包含其它控件,不是一个容器
1.2 ViewGroup 继承自 View,是一个容器,其中可以包含其它 View
1.3 layout_width 和 width 的区别
layout_width 只有三种选择一个是 wrap_content 二是 match_parent,三是具体值。
使用这个属性的前提条件是这个 View 必须有父 View,否则 layout_开头的相关属性不生
效。
layout_width 就是父布局允许 view 所占的宽度,而 width 是 view 的自身宽度。在
layout_width 和 width 都设置为具体数值的时候,width 其实就无效了,这也不难理解,父
布局已经给你分配了具体的空间,
不论 view 怎么设置 width,view 的宽度也只能是 layout_width。
width 这个是用来 view 的具体宽度的,以像素为单位。
2 常见的 View
2.1 TextView
用途:显示文本的控件
参考文档:https://developer.android.google.cn/reference/android/widget/TextView
常用属性:
1 、 id-> 为 控 件 设 置 一 个 ID , 方 便 根 据 id , 我 们 可 以 在 Java 代 码 中 通 过
findViewById()的方法获取到该对象,然后进行相关属性的设置。又或者 XML 文件进行摆
放,参考组件用的也是 id!
2、gravity->设置控件的方向
3、text->设置显示的文本内容,比较规范的写法是把字符串放在 string.xml 文件里
面,然后去引用资源
4、textColor->设置文本颜色
5、textStyle->设置字体风格 默认是没有效果,有三个选项可以选 bold(粗体)
italic(斜体)
6、background->控件的背景,可以设置颜色,图片,其它资源文件
7、maxLines->最多可以显示几行文本
8、android:ellipsize=”start”—–省略号显示在开头 "...pedia"
android:ellipsize=”end”——省略号显示在结尾 "encyc..."
android:ellipsize=”middle”—-省略号显示在中间 "en...dia"
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时) 这个
等会讲解案例使用 TextView 实现跑马灯效果会用到
9、includeFontPadding->当我们设置文字时,间距上下左右的间距会变大 那我们
可以使用这个属性 缩小边距 达到更好的 Ui
10、drawableStart|end|top|bottom ->引用一个资源在改文本的对应的
11、autoLink ->控制是否自动找到 url 和电子邮件地址等链接并将其转换为可点
击的链接。默认值为“none”,禁用此功能。
2.2 Button
用途:按钮控件,用来响应按钮的点击事件,不一定使用这个控件来响应
简介:继承自 TextView 拥有 TextView 的所有属性
参 考 文 档 :
https://developer.android.google.cn/guide/topics/ui/controls/button?hl=en
点击事件:点击事件的四种响应方式,常用的几种方式。视频详解,
相 关控 件 :ImageButton 显 示一 个 带有 图像 ( 而不 是 文本 ) 的按 钮 其 它用 法和
Button 类似,不详细解释,大家举一反三

2.3 EditText
用途:输入框,用来输入文本。 参 考 文 档 :
https://developer.android.google.cn/reference/android/widget/EditText?hl=en
简介:继承自 TextView 拥有 TextView 的所有属性
常用属性:
1、inputType->输入类型
android:inputType=”none”
android:inputType=”text”
android:inputType=”textCapCharacters” 字母大写
android:inputType=”textCapWords” 首字母大写
android:inputType=”textCapSentences” 仅第一个字母大写
android:inputType=”textAutoCorrect” 自动完成
android:inputType=”textAutoComplete” 自动完成
android:inputType=”textMultiLine” 多行输入
android:inputType=”textImeMultiLine” 输入法多行(如果支持)
android:inputType=”textNoSuggestions” 不提示
android:inputType=”textUri” 网址
android:inputType=”textEmailAddress” 电子邮件地址
android:inputType=”textEmailSubject” 邮件主题
android:inputType=”textShortMessage” 短讯
android:inputType=”textLongMessage” 长信息
android:inputType=”textPersonName” 人名
android:inputType=”textPostalAddress” 地址
android:inputType=”textPassword” 密码
android:inputType=”textVisiblePassword” 可见密码
android:inputType=”textWebEditText” 作为网页表单的文本
android:inputType=”textFilter” 文本筛选过滤
android:inputType=”textPhonetic” 拼音输入
//数值类型
android:inputType=”number” 数字
android:inputType=”numberSigned” 带符号数字格式
android:inputType=”numberDecimal” 带小数点的浮点格式
android:inputType=”phone” 拨号键盘
android:inputType=”datetime” 时间日期
android:inputType=”date” 日期键盘
android:inputType=”time” 时间键盘
2、hint->提示文本
3、android:textColorHint ->设置提示文本的颜色
4、android:background="@null"
5、android:editable="false" 设置 EditText 不可编辑

2.4 ImageView
用途:用来显示图片
参 考 文 档 :
https://developer.android.google.cn/reference/android/widget/ImageView?hl=en
常用属性:
1、src 设置图片的资源,src 填入图片时,是按照图片大小直接填充,并不
会进行拉伸。
2、ScaleType 属性,这边介绍几个常用的属性,其它不常用的大家可以课后
去试一下:
2.1 centerCrop 包持横纵比缩放图片,直至完全覆盖 ImnageView 为止,
缩放后的图片如果超过 ImageView 则做
2.2 fitXY 将图片缩放至整个控件大小,这边的缩放的比例是不一样的,
会导致图片变形

3 常见的 ViewGroup
3.1 FrameLayout(帧布局)
帧布局可以说是最简单的 ViewGroup。当我们往里面添加控件的时候,会默认把
控件放在左上角,如果放多个会有叠加效果,这种布局没有任何的定位方式。
参 考 文 档 :
https://developer.android.google.cn/reference/android/widget/FrameLayout?hl=ch

3.2 LinearLayout (线性布局)


android:orientation 布局方向,有两个值可选,horizontal 水平,vertical 竖直
layout_weight 设置控件的比例
参 考 文 档 :
https://developer.android.google.cn/reference/kotlin/android/widget/LinearLayout?hl=en

3.3 RelativeLayout(相对布局)
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父控件完全居中
android:layout_alignParentBottom 贴紧父控件的下边缘
android:layout_alignParentLeft 贴紧父控件的左边缘
android:layout_alignParentRight 贴紧父控件的右边缘
android:layout_alignParentTop 贴紧父控件的上边缘
android:layout_marginBottom 离某控件底边缘的距离
android:layout_marginLeft 离某控件左边缘的距离
android:layout_marginRight 离某控件右边缘的距离
android:layout_marginTop 离某控件上边缘的距离
android:layout_below 在某控件下方
android:layout_above 在某控件上方
android:layout_toLeftOf 在某控件的左边
android:layout_toRightOf 在某控件的右边
android:layout_alignTop 本控件的上边缘和某控件的上边缘对齐
android:layout_alignLeft 本控件的左边缘和某控件的左边缘对齐
android:layout_alignBottom 本控件的下边缘和某控件的下控件对齐
android:layout_alignRight 本控件的右边缘和某控件的有边缘对齐
注意:
官方提示为了获得更好的性能和工具支持(更多的功能),我们要使用
ConstraintLayout ,这个布局我们后面再来讲

第三章 Activity 的使用


参 考 文 档 : https://developer.android.google.cn/guide/components/activities/intro-
activities?hl=zh_cn
1.什么是 activity?
翻译成中文:活动
视觉上讲:用来做界面展示的,比如。。
代码上讲:继承自 Activity 及其子 View
2.创建自己的 activity
创建 Activity 的两种方式:
1、新建类
2、使用 as 提供的代码模板
注意点:
清单文件,此元素唯一的必要属性是 android:name,该属性用于指
定 Activity 的类名称。
3.activity 的跳转
显示跳转:
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
隐式跳转:
3.1 通过 action 进行跳转
//需要在 AndroidManifest.xml 中配置 action
Intent intent = new Intent("android.intent.action.mydialog");
startActivity(i);
3.2 通过 uri 进行跳转
//拨打电话程序
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL,uri);
startActivity(intent);
3.3 通过 startActivityForResult()启动 Activity

4.使用 Intent 传递数据和接收数据


intent.putXXX(key,value);

5.activity 的生命周期

onCreate()
必须实现这个回调方法,它会在系统首次创建 Activity 的时侯触
发。
onStart()
当 Activity 进入 Started 状态时,系统会调用此回调。调用 onStart
时对用户可见的,但是用户不可交互,也不会停留在这个页面。该方法完成的
非常快,并且与 onCreate()
一 样,不会停留在界面。完成这个回调之后,系统紧接着会进
去 Resumed 状态。
onResume()
此时,该 Activity()位于 Activity()的栈顶。并且会捕获所有用户输入,此时用
户可以和应用程序做交互。
onPause()
当用户点击返回或者切换到别的页面时,Activity 失去焦点并进入'onPause()'
状态。
onStop()
系统调用此方发作为用户离开你的 Activity 的第一个指示(尽管这并不总意味
着活动正在被销毁);表明 activity 已经不在前台展示。停止动画和刷新 UI
onDestroy()
onDestroy()在活动被销毁之前调用。系统会除掉这个生命周期的原
因是:
1、由于用户关闭 Activity 界面,或者开发者自己调用 finish()函数
关闭 Activity 导致的。总之是 Activity 被关闭的时候调用的。
2、由于配置更改,比如说屏幕发生旋转。
这是 Activity 最后一个方法。可以用 isFinishing()来判断它,如果有
dialog 在运转,要在这个界面将 dialog 给 cancel 掉,不然抛异常。
6.切换 activity 的生命周期
1、ActivityA 切换到 ActivityB 的生命周期变化:
onPause() ->onStop()
2、ActivityB 返回到 ActivityA 的生命周期变化:
onStart()->onResume()
3、ActivityA 回退到桌面的生命周期变化
onPauser() ->onStop() ->onDestroy()

7、Actiivty 的回退栈

8、actiivty 的启动模式
在清单文件中声明 Activity 时,我们可以使用<activity>元素的 launchMode 属
性指定活动的启动模式。默认的启动模式为“standard”

standard (默认模式)
这种模式下 Activity 可以有多个实例,每次启动 Activity 不管堆栈中是否有
Activity 这个实例,系统都会创建一个实例。

SingleTop
SingleTop 和 standard 模式非常相似,主要区别就是当一个 Activity 已经位于
栈顶,再去启动它时,不会再创建新的实例,如果不位于栈顶,就会创建新的实例。

SingleTask
这种模式下 Activity 在同一个 Task 内只有一个实例,如果 Activity 位于栈顶,
系统不会创建新的实例,和 SingleTop 模式一样,但 Activity 已经存在或者 Activity 不位于栈
顶时,会
把 activity 移到栈顶。
测试:调用函数的不同 onNewIntent()

SingleInstance
SingleInstance 模式也是单例,但与 SingleTask 不同,SingleTask 只是任任务栈
内单例。使用 singleInstance 的 Activity 在整个系统中只有一个实例。启动一个模式为
singleInstance 的
Activity 时 , 系 统 会 创 建 一 个 新 的 任 务 栈 , 并 且 这 个 任 务 栈 只 有 它 一 个
Activity。
SingleInstance 模 式 并 不 常 用 , 如 果 我 们 把 一 个 Activity 设 置 为
singleInstance 模式,你会发现它启动时会慢一些,切换效果不好,影响用户体验。

9、知晓当前是在哪个 Activity
我们可以创建一个自己的 BaseActivity,在其中的 Activity 打因日志。
好处:在项目比较复杂且项目不熟悉的情况下我们可以快速定位当前的页面
10、启动 Activity 的最佳方式
当前类定义一个静态函数,需要传的参数写在这个函数里面

好处,协同开发中。对于不熟悉业务的人来说,别人可以更好的去使用你的
activity

第四章 Fragment 的使用


这篇是我前端时间写的文章,这部分的课程就根据我写的文章来说
https://juejin.cn/post/7042134750542168100

第五章 BroadcastReceiver(广播)的使用
以我前段事件写的博客来讲解
https://juejin.cn/post/7043453750886793230

第六章 数据持久化存储
1.文件存储
2.SharedPreferences(SP)存储
2.1 使用 so 实现记住密码
3.数据库存储

//适合存储一些比较大比较复杂的数据
//前面学到 sp 适合存储一些较小的数据,一些配置信息

//缺点:比较麻烦

第六章 Android 权限机制详解

第六章 ContentProvider 详解

You might also like