众所周知,函数节流(throttle)是 JS 中一个非常常见的优化手段,可以有效的避免函数过于频繁的执行。举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库btn.addEventListener('click', _
2022-12-12 michael007js 68
前言主要用于color整型、rgb数组、16进制互相转换(-12590395 <—> #3FE2C5 <—> [63,226,197])代码分析color的int类型值转16进制类型值包括两种方案:方案一:思路:计算&16777215的值,然后通过字符串获取16进制数值。/**Color的Int整型转Color的16进制颜色值【方案一】 * colorInt - -
2022-11-24 michael007js 67
注意:本文中所有源码分析部分均基于 API23(Android 6.0) 版本,由于安卓系统源码改变很多,可能与之前版本有所不同,但基本流程都是一致的。为什么要有事件分发机制?安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这一个问题,就有了事件分发机制。如下图,View是一层一层嵌套的,当手指点击 View
2022-12-09 michael007js 65
/JNI定义/JNI全称:Java Native Interface。它是Java本身的一种特性,用来在Java里面调用C/C++代码的。看下面的一个程序:public static void main(String[] args) throws Exception { PrintStream ps = new PrintStream(new FileOutputStream("wor
2022-12-26 michael007js 59
泛型出现之前没有泛型的时候,只有所谓的原始类型。此时,所有的原始类型都通过字节码文件类Class类进行抽象。Class类的一个具体对象就代表一个指定的原始类型。泛型出现之后泛型出现之后,扩充了数据类型。从只有原始类型扩充了参数化类型(ParameterizedType)、类型变量类型(TypeVariable)、泛型限定的参数化类型 (含通配符+通配符限定表达式)(WildcardType)、泛型
2022-12-06 michael007js 59
ViewPager2是在RecyclerView的基础上构建而成的,意味着其可以复用RecyclerView对象的绝大部分特性,比如缓存复用机制等。作为ViewPager2系列的第一篇,本篇的主要目的是快速普及必要的前置知识,而内容的核心,正是前面所提到的RecyclerView的缓存复用机制。RecyclerView,顾名思义,它会回收其列表项视图以供重用。具体而言,当一个列表项被移出屏幕后,R
2022-12-20 michael007js 58