自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Java 红黑树

红黑树本篇文章理解红黑树定义,以及Java红黑树的实现定义: 是一种自平衡二叉查找树,为每一个节点赋予红色或者黑色属性保持平衡。在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树性质:每个节点是红色或者黑色根节点是黑色所有叶子都是黑色 (NULL 节点)每个红色节点的两个子节点都是黑色从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点通过红黑树的性质,可以定义出一个类表示红黑树,即每一个节点有一个父节点,左子节点,右子节点,颜色(默认为黑色

2020-11-12 16:24:36 76

原创 Java 集合 容器

Java 容器单列集合顶层接口  Iterable 定义了用于迭代器循环的接口  Collection 定义的一套统一单列集合的接口。其中有isEmpty、add、remove、size等常用方法   List 接口 继承重写了Collection接口的一些函数,同时增加了一些如 sort、indexOf等函数。 其允许重复元素的一种有序的集合。   Set 接口 继承Collection,重写部分函数。 该集合不包含重复元素,不保证插入顺序的访问。   Queue 接口 定义队列

2020-11-10 16:11:47 209

原创 Android 插件化整理

插件化技术整理 前言读<<Android插件化开发指南>>总结。这篇文章不分析系统源码,只整理对加载插件apk中的一些问题的解决方案。插件化就是加载未再Android系统中注册的apk加载插件中的类 有两种方案合并dex加载类的ClassLoader中有一个DexPathList对象,里面有一个dexElements数组,专门用来存放apk中dex集合的,通过DexFile加载插件中的dex文件,将它与宿主中的dex合并形成一个新的数组,通过反射修改系统中dexE.

2020-11-06 17:14:45 228

原创 banner 轮播图

banner 轮播图控件自定义组合控件实现轮播图,内部可以用recycleview或者viewpage实现,其主要需要完成的有三个点:无限循环方式的实现指示器的实现item view的transform操作第一个实现无限循环的方式:内部用viewpager实现轮播的话,可以在数据集合的大小方面做处理。一般做法是在第一个数据之前加上最后一条数据,最后一条数据之后再加上第一条数据,即数据集合实际大小为size + 2。然后再监听到position为0 或者 是最后一条数据时,移动currentI

2020-06-03 20:50:30 290 1

原创 手势移动 圆形进度条

Android 手势移动 圆形进度条首先明确:在Android中坐标系方向为 向右X轴正方向,向下Y轴正方向。确定自定义view大小(圆弧所在矩形的大小)mCRadius: 圆弧宽度半径mOval = new RectF(getPaddingLeft() + mCRadius, getPaddingTop() + mCRadius, getWidth() - ge...

2020-04-09 21:13:06 323

原创 java 泛型

java 泛型这篇文章主要记录java 泛型中的协变,逆变情况。在kotlin 中 泛型用out in 表示协变,逆变。在java中 泛型用? extends Object // 表示 协变? super Object // 表示 逆变协变 :泛型不可以作为参数,只能作为返回值初始化时,可以用子类初始化。例:List<? extends Fruit&gt...

2020-04-01 20:41:34 64

原创 Android tcp,udp,netty 记录

tcp,udp,netty 记录udp发送广播:tcp socket链接:netty使用:注意:1.

2019-04-08 11:04:32 399

原创 LiveData 记录

LiveData 记录LiveData是一个可被观察的数据持有者类。与常规的Observable不同,LiveData能意识到应用程序组件的生命周期变化,这意味着它能遵守Activity、Fragment、Service等组件的生命周期。这种意识确保LiveData只更新处于活跃状态的应用程序组件Observer。创建livedata对象:val gatewayClick = Mutable...

2019-04-05 09:01:49 165

原创 DataBinding记录

DataBinding 记录在需要使用的module的build.gradle中Android模块下加入代码:dataBinding{ enabled = true}布局中用layout作为根布局,data导入用到的类在activity中用DatabindUtil生成对应的ViewDataBinding对象,并设置属性DataBindingUtil.setContentVie...

2019-04-05 09:00:06 169

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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