多任务视窗,我们平时经常用到的,在各个APP来回切换
6.设备识别解锁
通过附近是否有可信任设备来解锁
7.Ok Google语音指令
手机处于待机状态,可以说一些语音指令来执行对应的程序
8.Face unlock面部解锁
花费较大的力气优化了面部解锁功能
1.1.2 替换ListView和GridView的RecyclerView
有了 ListView、 GridView, 为什么还需要 RecyclerView 这样的控件呢? 从整体上看, RecyclerView架构提供了一种插拔式的体验, 它具有高度的解耦、 异常的灵活性和更高的效率, 通过设置它提供的不同LayoutManager、 ItemDecoration、 ItemAnimator 可实现更加丰富多样的效果。 但是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
otification可以在状态栏,锁屏界面,甚至悬浮窗口进行通知,最直观的就是我们在打王者荣耀的时候微信有新消息会有一个悬浮窗来通知我们
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的智能手机要满足一定的硬件要求
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。**
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!