- 博客(8)
- 问答 (1)
- 收藏
- 关注

原创 Android热修复及插件化原理
1.前言热修复一直是这几年来很热门的话题,主流方案大致有两种,一种是微信Tinker的dex文件替换,另一种是阿里的Native层的方法替换。这里重点介绍Tinker的大致原理。2.类加载机制介绍Tinker原理之前,我们先来回顾一下类加载机制。我们编译好的class文件,需要先加载到虚拟机然后才会执行,这个过程是通过ClassLoader来完成的。双亲委派模型:1.加载某个类的时候,这个类加载器不会自己立刻去加载,它会委托给父类去加载2.如果这个父类还存在父类加载器,则进一步委托,直到最
2021-01-26 14:26:49
2846
6

原创 用贝塞尔曲线画画
什么是贝塞尔曲线一句话解释:它可以将任何平滑曲线转化为精确的数学公式。例如PS中的钢笔工具,它的原理就是二阶贝塞尔曲线。一阶贝塞尔曲线一阶贝塞尔曲线描述的是从p0到p1的连续点,是一条直线。公式如下:B(t)=(1−t)p0+tp1,tϵ(0,1)B(t)=(1-t)p_{0}+tp_{1},t\epsilon (0,1)B(t)=(1−t)p0+tp1,tϵ(0,1)写成下面这...
2020-04-27 14:44:31
1361
原创 Gson源码解析(二)
Gson源码解析(二)反射机制详解接着上篇留下来的问题,Gson是怎么序列化我们自己创建的JavaBean对象?还记得在gson初始化时添加的一系列Factory吗,我们可以看到它添加了一个factories.add(new ReflectiveTypeAdapterFactory( constructorConstructor, fieldNamingStrategy, excluder, jsonAdapterFactory));看名字我们应该也可以猜出来这个Factory的作用,没错,它可以根
2021-06-25 17:45:28
173
原创 Gson源码解析(一)
Gson源码解析(一)Gson序列化流程我们从fromJson开始。public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException { Object object = fromJson(json, (Type) classOfT); return Primitives.wrap(classOfT).cast(object);}经过几个fromJson重载方法后,会将我们
2021-06-25 17:44:06
446
1
原创 Android RecyclerView SnapHelper解析
SnapHelperSnapHelper是一个RecyclerView的工具类,本身是抽象类,默认有两种实现LinearSnapHelper和PageSnapHelper。他们的主要作用是帮助ReyclerView自定义滑动方式,可以实现像ViewPage或者Gallery的滑动方式(一次翻一页或者一次翻多页)。PagerSnapHelper效果:一次只能滑动一个Item,总是中心对齐。使用方法: rv.let { it.layoutManager = L
2020-09-30 16:45:03
1950
原创 郭神Glide学习笔记
GlideGlide.with(context).load(url).into(imageView) 如果传入的是activity或是Fragment,则会向当前的视图中添加一个隐藏的Fragment,用来感知宿主生命周期。宿主死亡关闭图片加载,防止内存泄漏目录缓存Glide回调图片变换Generated API缓存Glide处理的图片分两种类型:RESULT(处理后的图片)、SOURCE(原图),它默认只显示处理后的图片,对图片进行了压缩、旋转等操作。内存缓存Glide默认是
2020-07-01 10:24:34
1254
原创 通过JitPack发布你的Android库
虽然官方也有很详细的文档(官方文档),但我还是要水一篇(因为这个过程很容易出错,一找就是半天,在这里记下我遇到的坑)。1.创建一个项目并New一个Module。将你封装好的代码放入module中,例如这里的loadingview。2. 在你的project / build.gradle中添加android-maven插件。buildscript { dependencies { ...
2020-04-24 11:35:20
630
1
空空如也
为什么我的FragmentStatePagerAdapter返回空值
2017-07-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人