- 博客(8)
- 收藏
- 关注
原创 Android反编译修改aar、jar包的class文件
1、新建一个工程,导入jar包到lib目录下2、如果要修改上图中的DeviceUtil.class,在新建工程建立同样包名路径的DeviceUtil.java类,并且把DeviceUtil的内容复制过来3、修改完后,build工程就可以从构建物当中找出修改后DeviceUtil的class文件4、在Mac系统下,用以下命令替换掉原来jar中的class文件jar uvf class.jar com/happlay/common/utils/DeviceUtil.class路径要对应上5、同理
2021-11-05 17:09:52 1168
原创 Java反射基础
使用反射获取类的信息反射获取类的信息是通过Class类获取的,常用方法:String getName()获取类的包名路径,如com.company.PersonString getSimpleName()获取类的名称,如PersonField[] getFields()获取类所有public访问权限的变量,包括继承父类的Field[] getDeclaredFields()获取类所有访问权限的变量,但不包括继承的Method[] getMethods()获取类所有p
2021-07-06 19:58:00 104
原创 Java注解基础
注解的本质注解的本质就是一个继承了Annotation接口的接口@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}这是注解 @Override 的定义,其实它本质上就是:public interface Override extends Annotation{ }元注解元注解就是修饰注解的注解,Java中有以下几个元注解:@Target:注解
2021-07-06 19:57:24 89
原创 深入理解Glide(一):加载图片流程分析
Glide的使用GlideApp.with(this).load("http://goo.gl/gEgYUd").into(imageView);流程分析with() public static RequestManager with(@NonNull Context context) { return getRetriever(context).get(context); }看到with()方法的入参是一个Context,并把这个context传进getRetriever()方法
2021-07-06 19:56:34 271
原创 Android动画总结
动画分为三种:View动画、帧动画和属性动画View动画View动画共有四种动画:TranslateAnimation、RotateAnimation、ScaleAnimation和AlphaAnimation。四个动画类都继承于抽象类Animation。名称标签子类效果平移动画TranslateAnimation移动View缩放动画ScaleAnimation放大或缩小View旋转动画RotateAnimation旋转View透明度动画
2021-07-06 19:55:19 85
原创 HashMap源码分析
概述本文源码针对Java8的HashMap。HashMap内部是由数组+链表或红黑树的结构实现的。HashMap默认初始化数组大小为16,负载因子是0.75,初始阀值12,每当数组元素的数量超过阀值后会扩容,每次扩容为旧空间大小的一倍,阀值也是增大一倍。put()put()先判断要放入的值是否会哈希冲突,如果不哈希冲突,则直接在hash到的位置插入。如果发生冲突,判断是是链表还是红黑树,链表的话是直接插入到链尾,如果插入后链表长度大于8,会将链表转化为红黑树(哈希数组长度>=64)或者进行扩容
2021-07-06 19:54:33 55
原创 红黑树分析笔记
阅读本文的前提1、知道二叉查找树的概念,插入、删除和查找操作;2、知道二叉树的左旋和右旋。3、了解二叉平衡树(AVL树)的概念红黑树的概念红黑树是一种自平衡的二叉查找树,查找、插入和删除的平均时间复杂度是O(logN)。红黑树的每个节点都有一个颜色值(红或黑),具有以下性质:1、每个节点不是黑色就是红色;2、根节点是黑色;3、如果一个节点是红色,则该节点的左、右孩子节点必须是黑色;4、每一个null叶子节点是黑色;5、从任一个节点到null叶子节点的所有路径上必须包含相同数量的黑色节点。
2021-07-06 19:53:58 255
原创 LruCache源码分析
LruCache的原理LruCache主要靠LinkedHashMap的一个按访问排序的特性实现的,LinkedHashMap在构造时可传入accessOrder参数,为true时,LinkedHashMap在每次get方法时,会将获取到的当前节点移至末尾,从而实现LRU的思想。LruCache源码分析1、构造函数/** 唯一的构造函数,需要传入缓存的最大值 */public LruCache(int maxSize) { if (maxSize <= 0) { throw
2021-07-06 19:52:39 131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人