自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

依生依世

一只纠结的程序猿

原创 RxJava2.0 源码剖析

RxJava2.0 源码剖析一.Observable(被观察者/发射器)二.Subscribe(订阅事件)三.Observer(观察者) 这里我们先以一个最基础的使用case,来分析RxJava的实现原理。 Observable.create(ObservableOnSubscribe<In...

2019-12-26 21:53:54

阅读数 16

评论数 0

原创 Android AnnotationProcessor

Android AnnotationProcessor一.项目结构二.定义注解三.实现注解处理器(一)依赖(二)注解处理器(三)处理注解四.使用注解处理器(一)依赖(二)使用注解(三)生成的代码五.注意事项 注解处理器通常可以用在模块间解藕、自动生成代码等地方,比如router路由或者butter...

2019-12-26 20:59:42

阅读数 18

评论数 0

原创 Android Locale语言设置

Android Locale语言设置一.系统设置二.应用级设置(一)更新Locale1.updateConfiguration2.createConfigurationContext(二)获取Locale(三)Locale.getDefault()(四)WebView的坑三.实践 Android系...

2019-12-26 17:34:02

阅读数 46

评论数 0

原创 Android App Bundle

Android App BundleAABAPKSDynamic Feature ModuleAndroid 5.0以下设备注意事项 Android项目中会有针对不同设备的资源文件,比如根据分辨率不同,drawable会分为drawable-ldpi、drawable-hdpi、drawable-...

2019-12-26 17:22:45

阅读数 29

评论数 0

原创 Android R文件生成

Android R文件生成AAR主工程 Android在打包时,通过AAPT工具,对主工程和引入的依赖里的所有资源文件进行编译压缩,并会对res/里的资源文件如drawable、layout、values等生成唯一的id,同时生成R.java文件,保存所有的id值,以及生成resource.ars...

2019-12-26 16:36:37

阅读数 45

评论数 0

原创 Android SharedPreferences实现原理

Android SharedPreferences实现原理一.简介二.实现原理1.创建2.取值3.更新4.应用(1)commit()(2)apply()三.总结 一.简介 在Android中,我们通常会需要存储一些数据,有一些大型的数据诸如图片、JSON数据等,可以通过读写File的方式实现;有一...

2019-09-03 19:11:40

阅读数 147

评论数 0

原创 Android 代理拦截系统层代码

Android 代理拦截系统层代码一.手动代理1.溯源2.手动代理二.动态代理1. 溯源2. 动态代理 有时我们的项目会遇见如下所示的崩溃堆栈: android.app.RemoteServiceException: Context.startForegroundService() did not...

2019-08-06 11:31:10

阅读数 45

评论数 0

原创 ReactNative For Android 之六:组件生命周期

ReactNative For Android 之六:组件生命周期一.周期方法二.基本流程 一.周期方法 getDefaultProps: 在组件类创建的时候调用一次(一般app启动时会加载组件类),里面返回的对象是定义的props的初始值,没有被覆盖时就是用这个默认值; 返回的pro...

2019-08-01 19:16:47

阅读数 23

评论数 0

原创 ReactNative For Android 之五:自定义module

ReactNative For Android 之五:自定义module一.创建自定义module类二.创建自定义的Package三.JS中调用四.回调方法和native主动发送消息1.回调方法2.native主动发送消息 JS是如何调用到native的特性的,可以通过定义自定义Module和自定...

2019-08-01 18:44:42

阅读数 32

评论数 0

原创 ReactNative For Android 之四:自定义组件

ReactNative For Android 之四:自定义组件一.自定义View二.添加到自定义package三.JS中调用四.native事件的处理 ReactNative已经包含很多常用控件,并在持续更新,但仍然不可能包含全部控件,比如很多第三方的已经我们自定义的控件,不过提供了方法让我们将...

2019-08-01 18:36:18

阅读数 32

评论数 0

原创 ReactNative For Android 之三:工程结构

ReactNative For Android 之三:工程结构一.目录二.入口三.入口文件四.创建组件(参考上面例子) 一.目录 初始化项目后会自动带有 android文件夹:android项目文件夹 ios文件夹:ios项目文件夹 node_modules:源码 index.a...

2019-08-01 18:25:59

阅读数 22

评论数 0

原创 ReactNative For Android 之二:基本组件和API

ReactNative For Android 之二:基本组件和API一.基本组件1.DrawerLayoutAndroid2.Image3.ListView4.Navigator5.ProgressBarAndroid6.PullToRefreshAndroid7.ScrollView8.Tex...

2019-08-01 18:06:56

阅读数 29

评论数 0

原创 ReactNative For Android 之一:环境搭建

ReactNative For Android 之一:环境搭建一.ReactNative官方文档二.环境搭建三.调试四.升级版本 一.ReactNative官方文档 英文:https://facebook.github.io/react-native/docs/getting-started....

2019-08-01 17:46:16

阅读数 25

评论数 0

原创 Android Gradle Transform使用

Android Gradle Transform使用一.概述二.使用(一)引入(二)API1.QualifiedContent2.TransformInput3.TransformOutputProvider4.TransformInvocation5.ContentType6.SCOPE7.Tr...

2019-08-01 17:02:45

阅读数 21

评论数 0

原创 Android Gradle插件断点调试

Android Gradle插件断点调试一.配置命令行参数二.配置debug三.运行调试 有时我们需要调试gradle插件来解决问题,比如我们写了一个gradle插件的项目,还有一个引用该插件的项目,需要在编译该项目时断点调试插件项目的流程,应该怎么办呢? 一.配置命令行参数 在我们执行项目的某个...

2019-08-01 16:43:21

阅读数 114

评论数 0

原创 Android Gradle 使用

Android Gradle 使用一.Gradle(一)简介(二)项目结构(三)基本概念(四)脚本执行过程1.配置阶段2.执行阶段二.Task(一)创建(二)定义执行代码1.配置阶段代码2.doFirst3.doLast(三)配置1.property2.configure3.Project的配置(...

2019-08-01 16:39:27

阅读数 23

评论数 0

原创 Javassist使用

Javassist使用一.简介二.使用(一)class1.获取2.新建3.内部类4.更新(二)constructor1.获取2.新建3.修改方法体(1)insertBefore/insertAfter(2)setBody(3)修饰符(三)field1.获取2.新建3.setter/getter(四...

2019-08-01 15:51:50

阅读数 32

评论数 0

原创 AspectJ 使用及原理

AspectJ 使用及原理一.简介二.原理三.使用(一)基本概念1.连接点(JoinPoint)2.切点(PointCut)3.插入逻辑(Advice)4.切面(Aspect)(二)类型匹配表达式1.注解2.修饰符3.返回值4.类5.方法名6.方法参数7.组合使用(三)切入点组合表达式1.call...

2019-08-01 15:08:57

阅读数 36

评论数 0

原创 Android 6.0 View行为变更适配

Android 6.0 View行为变更适配一.相关知识参考二.异常现象分析(一).正常情况(二).异常情况(三).异常行为分析1.为何ScrollView滑动不上去了,而RecyclerView可以自己滑动2.为何RecyclerView的高度发生改变3.UNSPECIFIED的size如何影响...

2019-08-01 11:33:05

阅读数 27

评论数 0

原创 Android 8.0/8.1 screenOrientation适配

Android 8.0/8.1 screenOrientation适配一.问题二.原因1.Android 8.02.Android 8.13.Android8.0以下和Android9.04.总结三.解决1.设置targetSdkVersion为26及以下2.修改Activity的style3.修...

2019-08-01 10:29:57

阅读数 167

评论数 1

原创 Android 8.0/8.1 channel适配

Android 8.0/8.1 channel适配一.背景二.问题三.原因8.0系统源码8.1系统源码四.解决 一.背景 Android 8.0(target=26)的适配中,有一个关于Notification的适配点:8.0开始使用Notification时候,需要指定一个渠道channel,用...

2019-08-01 10:16:01

阅读数 116

评论数 0

原创 Android 9.0适配

Android 9.0适配一.新功能1.WiFi RTT室内定位2.刘海屏支持(1)调试(2)页面的刘海使用模式(3)刘海相关API(4)适配方式3.解码图片4.动画二.所有应用的变更1.访问受限2.非SDK接口访问限制3.安全行为变更4.UTF解码5.xt_qtaguid文件访问6.FLAG_A...

2019-08-01 10:08:26

阅读数 362

评论数 0

原创 Android launchMode的特殊行为

Android launchMode的特殊行为1.被其他app调起时,launcheMode的行为2.点击Home键,再点击app图标,回到app的行为 1.被其他app调起时,launcheMode的行为 被调起的app如果没有初始化,那么Application一定会被初始化,且一定为新的进...

2019-07-31 19:42:45

阅读数 23

评论数 0

原创 Android View位置跳动问题

Android View位置跳动问题 有时我们会遇到当页面刷新后,类似NestedScrollView和RecyclerView这种可滑动View的滚动位置会变化一下,和原先不一致 通过调试我们发现,是因为页面里有RecyclerView这种可以获取焦点的View,跟踪代码得知,当这种Vi...

2019-07-31 19:34:46

阅读数 55

评论数 0

原创 Android View 获取焦点

Android View 获取焦点 有时我们需要某些View获取焦点,比如EditText获取焦点弹出键盘,我们有以下几种方式可以做到 1.在页面初始化的时候调用view.requestFocus() override fun onCreate(savedInstanceState: Bundle...

2019-07-31 19:26:52

阅读数 379

评论数 0

原创 Android AppBarLayout吸顶位置错误问题

Android AppBarLayout吸顶位置错误问题 我们通常会用AppBarLayout来做一些复杂滚动和吸顶的效果,比如如下代码: <?xml version="1.0" encoding="utf-8"?> <android.su...

2019-07-31 19:22:01

阅读数 128

评论数 0

原创 Android 添加系统级窗口

Android 添加系统级窗口 1.通过WindowManager可以添加一个系统层的window,覆盖在整个屏幕的最上层,可以用来实现悬浮窗、覆盖层等功能,但是不同android系统行为不一致 系统版本 type 权限 <23(6.0) TYPE_SYSTEM_ALERT ...

2019-07-31 18:22:00

阅读数 92

评论数 0

原创 Android View clipChildren属性

Android View clipChildren属性 ViewGroup的clipChildren属性,决定其children是否要绘制超过其区域的部分 默认为true:意为裁剪children,如果children边界超出parent,则会被裁减掉不显示,和正常一样 设置为false...

2019-07-31 18:10:52

阅读数 31

评论数 0

原创 Android View clipToPadding属性

Android View clipToPadding属性 view的clipPadding属性,决定绘制时,是否将其content(自身内容、children),绘制到其padding位置 默认为true:意为裁剪padding,绘制时padding区域的content将会被裁剪掉,也就是会...

2019-07-31 17:55:06

阅读数 31

评论数 0

原创 Android WebView加载本地url

Android WebView加载本地url 通常我们使用WebView的loadUrl()方法加载一个远程html,也可以加载一个本地html文件,通常我们把本地html会放在assets目录下。 加载assets文件夹下的文件: webview.loadUrl(" file:///a...

2019-07-31 17:19:56

阅读数 421

评论数 0

原创 Android H5调用WebView选文件

Android H5调用WebView选文件 H5页面可以通过< input type=‘file’ accept=‘image/*’/>来调用WebView的方法,进行图片选择,这里调用的方法在WebChromeClient中,不同版本系统需要做兼容 系统版本 overrid...

2019-07-31 17:15:44

阅读数 241

评论数 0

原创 Android 调用系统应用选文件

Android 调用系统应用选文件 我们通常会通过Intent调起系统应用进行选择文件,包括图片、视频、音频等,但是需要考虑不同系统版本的兼容性问题 系统版本 action accept_type(选择文件类型) <19(4.4) Intent.ACTION_GET_CONT...

2019-07-31 17:04:30

阅读数 470

评论数 0

原创 Android 动画 原理解析

Android 动画 原理解析一.View动画(一)基本使用1.代码实现2.xml实现(二)原理解析1.实现原理2.源码分析(1)Animation类(2)流程分析二.布局动画(一)基本使用1.xml实现2.代码实现(二)原理解析1.实现原理2.源码分析(1)解析设置LayoutAnimation...

2019-07-31 16:35:00

阅读数 67

评论数 0

原创 Android 动态权限机制详解

Android 动态权限机制详解一.权限系统(一)6.0之前(二)6.0之后(三)8.0二.兼容适配(一)TargetSdkVersion(二)适配方法1.检查权限2.请求权限3.请求权限的结果4.适当的提示5.Fragment的权限请求6.流程图总结 一.权限系统 (一)6.0之前 Androi...

2019-07-31 15:47:45

阅读数 362

评论数 0

原创 Android 编码解码的原理解析

Android 编码解码的原理解析一.字符集1.字符集的由来2.字符集的演变(1)ISO-8859-1字符集(2)GB2312/GBK字符集(3)Unicode字符集(4)UTF-8编码方式二.编码解码1.编码和解码2.Java中的编码解码3.URL的解码编码三.android中的编码解码 一.字...

2019-07-31 15:33:49

阅读数 161

评论数 0

原创 Android 屏幕旋转使用

Android 屏幕旋转使用一·Manifest配置1.configChanges2.screenOrientation3.总结二.回调方法 一·Manifest配置 如需实现转屏效果,我们需要在manifest文件中对Activity进行一些属性配置 <activity and...

2019-07-31 14:44:21

阅读数 26

评论数 0

原创 Android 输入法键盘使用

Android 输入法键盘使用一.设置页面输入法展示方式1.adjustXxx2.stateXxx3.代码调用二.动态调用键盘1.调起键盘2.隐藏键盘 一.设置页面输入法展示方式 我们经常会在项目中遇到输入法展示的情况,有时希望进入页面时自动展示输入法,有时希望页面不展示输入法直到用户主动点击Ed...

2019-07-31 14:36:54

阅读数 131

评论数 0

原创 Android Binder 原理解析

Android Binder 原理解析一.跨进程通信1.进程隔离2.用户空间/内核空间3.系统调用/内核态/用户态4.内核模块/驱动二.为何使用Binder三.Binder通信原理四.Binder实现1.IBinder/IInterface2.Binder/BinderProxy(1)Binder...

2019-07-31 11:45:52

阅读数 210

评论数 13

原创 Android ButterKnife 使用及原理解析

Android ButterKnife 使用及原理解析一.引入依赖二.简单使用1.绑定view、views、resources2.view事件绑定3.设置view或一组view的操作4.执行ButterKnife的绑定三.实现原理1.实现原理2.工作流程3.bind流程及实例四.其他说明 Butt...

2019-07-31 11:19:07

阅读数 17

评论数 0

原创 Android Glide 原理解析

Android Glide 原理解析一.提供的功能特性二.简单使用三.源码结构1.内存缓存(1)MemoryCache(2)BitmapPool(3)二级内存缓存2.磁盘缓存3.图片对应的Key4.Glide对象5.RequestManager—绑定生命周期6.GenericRequestBuil...

2019-07-31 10:50:33

阅读数 420

评论数 0

提示
确定要删除当前文章?
取消 删除