Roger's Blog

Boilerplate of Hux Blog

ARouter疑难杂症解析

我们都知道ARouter可以用于组件化各个模块之间的通信和跳转,在使用ARouter过程中,我产生了几个问题: 如果我们注解相同的path会怎么样?即有一个SecondActivity使用/a/b的path,而另一个ThirdActivity也使用/a/b的path,那么编译通得过吗?如果通得过的话,通过path获取的又是哪一个Activity呢? 如果不同的module下,有两...

仿造QQ的recyclerView效果实现

最近在Google官方的github库,看到了一个有意思的recyclerView效果。 像这样: 个人感觉似乎和QQ的效果差不多,只不过QQ用的是Fling动画,而这里用的是Spring动画。有意思的是,似乎关于实现该效果所使用的EdgeEffectFactory这个类网上博客介绍不多,正好看其API比较简单,于是打算写篇博客来介绍这个动画的实现效果。 EdgeEffectFac...

DCL为什么要使用volatile关键字

单例模式 饿汉模式 public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } ...

tcp连接

TCP三次握手 第一步:客户机端的TCP首先向服务器端的TCP发送SYN报文段。该报文段中不包含应用层数据,但是报文段的首部中的一个标志位(SYN比特)被置为1。另外,客户机会选择一个起始序号(client_isn),并将其放在TCP SYN报文段的序号字段中。合适的选择client_isn可以避免某些安全性攻击 第二步:一旦包含TCP SYN报文段的IP数据报到达服务器主机,服务器会从...

开源一个自己的自定义View库

前言 好久没有写博客了,主要是一直在沉淀,发现自己之前写的博客质量有点差。但无论如何,还是想督促自己去做点东西。 自己一直在总结过去写的一些自定义View和动画,并把它们汇总到了同一个开源库中。 欢迎大家star,自己也有动力继续把库完善,做的更好。 这个开源库我会一直更新。 Github地址:https://github.com/roger1245/RgView 自定义View ...

View绘制流程

在开始之前,先来一张图片梳理思路。(估计只有我自己看得懂/(ㄒoㄒ)/~~ 一,measure过程 measure()过程由measure(int, int)方法发起,从上到下有序测量View, measure过程会为一个View及其所有子View的mMeasuredWidth和mMeasuredHeight变量赋值 1.储备知识 在查看view.measure()的源码之前,...

控件属性的各种声明方式的比较[译]

理解如何声明具有特定风格的TextView TextView提供了各种各样的属性,和不同的方式去声明它们。我们可以在xml中直接定义View的属性,也可以通过style的方式去设置TextView的属性,还可以通过设置theme和android:textAppearance的方式来设置一个控件的属性。所以,我们究竟该在什么样的情境下使用它们?如果我们混合使用,会发生什么? 本...

Activity启动流程 ,基于Android 10

Activity启动流程 ,基于Android 10 先上一张图 核心类 Activity:界面展示等ui操作 ActivityThread:应用的主线程,入口 Instrumentation 负责调用Activity和Application生命周期。 ActivityTaskManagerService(ATMS):负责管理activity ActivityManagerSe...

ItemTouchHelper打造可拖拽的卡片布局

ItemTouchHelper打造可拖拽的卡片布局 这是效果 Activity.onCreate() 首先我们创建在Activity的onCreate()方法中 val itemTouchHelper = ItemTouchHelper(touchHelperCallback) itemTouchHelper.attachToRecyclerView(list) 这里的tou...

红岩第四次课课件

泛型 层次1:用Integer来写一个集合类,返回中间元素 层次2:用Object来实现复用 层次3:用泛型来实现复用 (注:集合内部还是维护着一个Object[]数组,因为泛型对象无法实例化) 层次4:对泛型变量限定 (定义一个getLargest()方法,阐述Comaparable, 选讲自定义比较器) 层次5:通配符,实现只读和只写 层次5:thr...