这里给出的博客都是对于学习非常有用的博客,向大神牛人们学习。
Volley源码解析
Android P SharedPreferences解析
SharedPreferences
作为Android
常用的存储方式,它适合存储小数据量,特别是键值对数据。
原理的文章可以参考:
深入理解Android中的SharedPreferences
SharedPreferences源码解析
细节绘图就不上了,这里会从Android 9.0的源码去重新捋一遍过程,也算是自我的学习review。
SharedPreferences 接口
SharedPreferences
是一个接口,其中包含了Editor
接口与OnSharedPreferenceChangeListener
接口
AsyncTask
关于AsyncTask的解析文章,网上有很多:
https://blog.csdn.net/liuhe688/article/details/6532519
我这里对于怎么使用就不赘述了,直接进到源码中看(API 28)
从调用开始
1 | new AsyncTask<Void, Void, Void>() { |
对ScrollBar设置padding
开发的过程中,遇到了一个问题:如何使ScrollBar往里面缩10dp,而不影响下面内容的展示?
在官方的控件中没有可以使用的api,那只能看源码了。
主要的绘制放在View的onDrawScrollBars方法里面,主要是下面的方法调用:
1 | onDrawVerticalScrollBar(canvas, scrollBar, left, top, right, bottom); |
然后我们发现,这个方法是protected的:
1 | /** |
那么,一个简单的方式,就是自定义一个子类继承ScrollView或ListView。重写onDrawVerticalScrollBar方法:
1 | @Override |
然后使用这个自定义控件,那么ScrollBar就能如我们所愿缩进啦。记得要设ScrollBarStyle为insideOverlay
。
安装Hexo
ContentObserver监听媒体库变化
在Android中,我们可以使用ContentObserver监听ContentProvider数据的变化。
实例
1 | mPhotoObserver = new PhotoObserver(new Handler()); |
使用AccessibilityService自动授予权限
AccessibilityService是Android中的无障碍功能,可以用来监听屏幕事件。
关于AccessibilityService的使用:参考 Building Accessibility Services
在Android6.0(API 23)以上,会要求动态权限的授予,此时系统会弹出提示框,我们如何自动跳过授予这些权限呢,一种方式使模拟点击,即本文的方法。
仿QQ手机锁屏回复功能
在现在版本手Q的功能当中,可以提供在锁屏时直接回复的功能。如图所示
QQ实现了在收到消息的时候,自动把屏幕置亮,并提供快捷回复的操作。
那么,我们就研究下该功能是如何实现的。
FileObserver文件监听研究
在Linux系统中,使用inotify监控文件的变更。Android在这个基础上封装了一个FileObserver类来方便使用inotify机制。FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件。