最后
题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
【Android进阶学习视频】、【全套Android面试秘籍】
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
优先显示重要信息,不重要信息隐藏起来
4.支持64位ART虚拟机
之前用的是Dalvik虚拟机,改用了ART虚拟机
5.Overview
多任务视窗,我们平时经常用到的,在各个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主要新特性概述
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Android 7.0主要新特性概述
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!