第一章 Android新特性
- 主要讲了一些Android 5.0、6.0、7.0新特性
1.1 Android 5.0新特性
Android 5.0 Lollipop是2014年10月发布的,那时候我刚上大一,去学校前老爸给买了一个vivo的手机,2300大洋,军训时候直接掉厕所坑了,也是服了自己,不过那估计还是4.X的手机,想一下,好像是X3L,查了一下4.3的系统,我的第二个手机oppo A59m,16年暑假买的,5.0的系统,让我们看看Android5.0给我们带来了什么
1.1.1 Android 5.0主要新特性概述
1.全新的Material Design设计风格
- 意为:材料设计、材质设计,总体来说界面有很大的提升,纸张化的体验,表面和边缘的质感
2.支持多种设备
- 手机,平板电脑,笔记本,电视,汽车,手表,家用电子产品等
3.全新的通知中心设计
- 优先显示重要信息,不重要信息隐藏起来
4.支持64位ART虚拟机
- 之前用的是Dalvik虚拟机,改用了ART虚拟机
5.Overview
- 多任务视窗,我们平时经常用到的,在各个APP来回切换
6.设备识别解锁
- 通过附近是否有可信任设备来解锁
7.Ok Google语音指令
- 手机处于待机状态,可以说一些语音指令来执行对应的程序
8.Face unlock面部解锁
- 花费较大的力气优化了面部解锁功能
1.1.2 替换ListView和GridView的RecyclerView
书中也没有特别深入,介绍了些简单的使用方法,我也就按着作者的步骤总结一下吧
1.配置build.gradle
- 导包,没啥说的
2.使用RecyclerView
- 设置布局管理器,设置动画,设置适配器等就那几个步骤
3.设置分割线
- 书中用的是继承ItemDecoration来实现分割线效果的
- 我们还可以在每一项布局的底部加一个分割线
- 或者去使用默认的分割线,直接传一个DividerItemDecoration
- 通过分割线的实例对象去setDrawable一个shape标签写的xml布局
4.自定义点击事件
- 通过回调接口来设置点击事件
5.实现GridView
- 这个设置一下布局管理器,分割线就可以了
6.实现瀑布流
- 在onBindViewHolder中通过LayoutParams去设置每一个Item的高度就可以实现了
附加:
- Adapter中的执行顺序是getItemViewType()、onCreateViewHolder()、onBindViewHolder()
- onCreateViewHolder():在这个界面首次加载Item的布局的时候执行
- onBindViewHolder():首次加载在onCreateViewHolder()之后执行,然后只要Item滚动进屏幕就会频繁调用
1.1.3 卡片CardView
- 主要是可以直接在xml中设置圆角、阴影等等
1.配置build.gradle
- 导包,没啥说的
2.使用CardView
- 这个也没啥说的
1.1.4 三种Notification
- Notification可以在状态栏,锁屏界面,甚至悬浮窗口进行通知,最直观的就是我们在打王者荣耀的时候微信有新消息会有一个悬浮窗来通知我们
1.普通Notification
- 通过PendingIntent来跳转,就那几行代码,不详细说了
2.折叠式Notification
- 和普通的Notification基本一样,只不过多了一个展开的视图,需要使用RemoteViews创建自定义的视图
3.悬挂式Notification
- 不需要下拉通知栏直接显示出来悬挂在屏幕上方,并且焦点不变,过几秒就消失,需要调用setFullScreenIntent
4.Notification的显示等级
- VISIBILITY_PUBLIC:任何情况都会显示通知。
- VISIBILITY_PRIVATE:只有在没有锁屏时会显示通知。
- VISIBILITY_SECRET:在pin、password等安全锁和没有锁屏的情况下才能够显示通知。
- 直接通过调用setVisibility方法就可以了
1.1.5 Toolbar与Palette
- Toolbar比Actionbar好用得多
- 在Android群英传已经详细介绍过这个了,这里简单说几句
1.引入Toolbar
- 导包,没啥说的
- style中把Actionbar去掉,并且自定义各种颜色
- 写布局,代码中调用
2.自定义Toolbar
- 我们还可以设置Toolbar的标题和图标以及Menu、Item等属性
- 覆盖setOnMenuItemClickListener实现点击的回调
3.添加DrawerLayout实现侧滑
- 没啥说的
4.Palette
- 意为:调色板,用来提取颜色,让主题能够动态适应当前界面的色调,
- 实现方式:将bitmap传递给Palette,调用generate即可,在onGenerated回调中得到图片的色调
1.2 Android 6.0新特性
2015年5月,Android推出了6.0 Marshmallow(棉花糖)的新系统,依旧保持Material Design风格,在软件体验与运行性能上进行来大幅度的优化,据测试,Android6.0可使续航时间提升30%
1.2.1 Android 6.0主要新特性概述
1.应用权限管理
- 应用的权限都开放给开发者和用户
2.Android Pay
- 支持4.4以后的系统设备并且可以使用指纹来进行支付
3.指纹支持
- 其实6.0之前也有部分手机厂商就实现了指纹的功能,比如我之前用的5.0的oppo手机也有指纹功能,而这一次是谷歌提供的指纹识别支持
4.Doze电量管理
- 手机静止不动一段时间后,进入Doze电量管理模式,当屏幕处于关闭状态,平均续航时间可提高30%
5.App Links
- 将app与它们的web域名关联,比如手机邮箱中收到一封邮件,点击链接中的Twitter链接,可以直接跳到Twitter应用,而不是网页
6.Now on Tap
- 这个功能可以很大的方便用户,比如在某一个程序界面长按Home键,它会识别屏幕上的内容并创建Now卡片
1.2.2 运行时权限机制
- Android 6.0之前,会在安装App的时候列出各种访问权限,那么在Android 6.0之后会在App运行的时候一个一个的来询问用户来授权
1.Android 6.0之前版本的应对之策
- Android 6.0默认为targetSDKVersion小于23的应用授予了所有的权限,如果应用的targetSDKVersion低于23,在运行时不会崩溃,如果手动取消了权限,则会提示拒绝了权限而无法运行,依赖该项授权的方法的返回值为null,所以有可能报空指针异常,所以我们要尽快着手修改App支持最新的权限系统
2.Normal Permissions与Dangerous Permission
- Google将权限分为两类:普通权限和危险权限
- 普通权限不涉及用户隐私,比如手机振动、访问网络什么的直接在AndroidManifest.xml中简单声明就可以
- 危险权限涉及用户隐私比如读取sdcard、访问通讯录、短信等就必须用户授权了
3.实现支持运行时权限
- 用打电话来举个例子,在点击按钮的时候判断是否有权限,没有权限就去申请权限,申请权限的回调中判断申请是否成功,如果拒绝了每次都会请求权限,如果拒绝并勾选了不再询问,如果想更改权限就只能到系统设置中的应用权限去开启权限了
4.处理不再询问选项
- 在权限的回调中弹个对话框出来
5.PermissionDispatcher框架的使用
- 这是一个github上的框架,然后封装了一些操作,不说太多了
1.3 Android 7.0新特性
- 2016年8月,谷歌推出Android 7.0 Nougat(牛轧糖)正式版,我们看一下有什么新功能
1.3.1 Android 7.0主要新特性概述
1.多窗口模式
- 在一个应用程序中长按Overview按钮,就可以进入分屏模式,oppo手机三指上滑也会进入分屏模式
2.Data Saver
- 流量保护机制,启用Data Saver模式时,系统将拦截后台数据使用,减少前台运行应用使用的数据量,例如限制流媒体服务的码率,下调画质,以及减少缓存等
3.改进的Java8语言支持
- 支持Java8,可以直接用Lambda表达式
4.自定义壁纸
- 可以为主屏幕设置壁纸,为锁屏设置另外一张壁纸
5.快速回复
- 通知栏快捷回复功能
6.Daydream VR支持
- 虚拟现实平台,由头盔、手柄和智能手机构成,支持Daydream的智能手机要满足一定的硬件要求
7.后台省点
- 屏幕关闭后所有的后台进程都将被系统限制活动,不会再后台持续唤醒,从而达到省点的目的
8.快速设置
- 快捷开关界面可以自定义添加/删除快捷开关,或拖动进行排序
9.Unicode 9支持和全新的emoji表情符号
- 支持Unicode 9,并且新增了大约70中emoji表情符号
10.Google Assistant
- 号称融合了谷歌搜索的深度学习技术以及Google Now的个人信息学习技术
1.3.2 多窗口模式
1.进入多窗口模式
- 每个手机进入的方式不一样,通用的是进入一个程序后长按Overview按钮
- 我用的oppo手机还有一种方式是进入一个程序,三指上滑
2.多窗口的生命周期
进入多窗口模式时,重新创建,最终会停留在onPause,如果店家窗口才会获取焦点进入onResume:
- onPause
- onStop
- onDestroy
- onCreate
- onStart
- onResume
- onPause
退出多窗口模式时,重新创建,最终停留在onResume:
- onStop
- onDestroy
- onCreate
- onStart
- onResume
- onPause
- onResume
如果播放视频时进入多窗口模式之际,视频应该播放,所以不能在onPause中关闭视频
3.禁用多窗口模式
- 有的App因为一些原因禁用多窗口模式,比如抖音,要禁用很简单,在AndroidManifest中加入禁用属性
- 如果targetSdkVersion设置的值小于24时,这一属性不会起作用,那么解决方法就是设置不可以横竖屏切换
1.4 本章小结
- 其实这些就是一些皮毛,还是很简单的,我们应该1通过一些项目或者例子尽快的熟悉它们