自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LiveData源码解析

上一篇我们分析了Lifecycle的工作流程(不了解Lifecycle的可以先看一下Lifecycle源码解析)。这篇咱们来分析一下LiveData。 它能干什么? LiveData是一个数据持有者,在数据发生改变后根据被观察者(Activity/Fragment)的生命周期,通知观察者。 角色分配;我们一般是在Activity/Fragment去观察数据的变化,被观察者显然就是数据了,它们通过LiveData的observe方法产生关联...

2021-07-17 15:28:51 113

原创 Lifecycle源码解析

Jetpack已经推出很长时间了,相信很多组件大家都用过;今天咱们来分析分析Lifecycle,它是怎么工作的呢?Let's go! 首先,它能干什么?Lifecycle可以在我们需要的地方进行生命周期监听,需要与Activity/Fragment进行绑定,从而在Activity/Fragment生命周期改变时调用监听类的方法,从而实现资源释放。 使用呢,就简单的提一下:需要监听的类实现LifecycleObserver接口,然后在Activity/F...

2021-07-17 11:42:20 154

原创 代理模式及hook实战

上一篇大体说了一下Java中的反射技术,这篇正纳闷来讲讲代理模式和hook,最后会实战一下,hook一下Toast。代理模式(委托模式)有2种:静态代理和动态代理。其优点是扩展和隐私,对外只提供一个代理访问,只有我自己可以用真正的类做操作。安卓系统中大量用到代理模式,比如获取系统的服务,App进程只能拿到服务的代理对象。 静态代理,即在编译时已确认自己的任务。首先定义一个接口:然后会有个类实现它:在代理模式中,它将成为被代理类。然...

2021-06-28 15:08:34 475

原创 Java反射

今天咱们来聊一聊Java中的反射;反射,即在程序运行时,可以动态的知道任意Class文件中包括私有的构造函数、变量、普通函数。 一、获取class如果我们想通过反射创建某个类的实例,那么我们需要先获取它的class,然后再创建对象。先创建一个普通的javabean。获取class的方式一共有4种: 1.通过java的class获取val personClass = Person::class.java 2.通过j...

2021-06-25 14:41:31 160

原创 从源码分析PagerAdapter notifyDataSetChanged刷新数据的最佳姿势

最近在做项目的时候有个需求是ViewPager分为2页内容,2个页面都有用户的一些信息,比如vip状态等。在当前页可以充值vip,所以理所当然的,在充值成功后当前页面用户的vip状态发生变化,需要刷新。 直接撸代码,充值成功后直接调用了adapter的notifyDataSetChanged方法,发现页面没有修改;打log也发现页面没有刷新的操作,网上大概找了一些资料,有个方法是:如上,重写getItemPostion并返回POSITION_NONE,问题解决了。不过总感觉稀里糊涂...

2021-04-02 11:47:32 524

原创 安卓Navigation单Activity框架

最近在做一个小项目,项目主要是用到了安卓Jetpack中的Navigation来实现单Activity架构。网上虽然有很多介绍Navigation的文章,但是缺乏实际的开发说明介绍,本人在这次开发中因为第一次采用单Activity的方式开发,遇到了不少的坑,本片文章记录了利用Navigation来实现单Activity的一些问题,避免大家遇到同样的问题而耽误时间。 Navigation的使用这里就不展开介绍了,网上一抓一大把,入门的朋友们自行查阅。这里只记录在开发中遇到的问题。 ...

2021-02-03 14:48:00 1106

原创 最简单的签到控件

     在做新项目的时候,有个等级中心,原型图是这样的第一眼看到让少年稍稍一震..又得自定义控件了..唉..     随后创建类,继承view准备动手自己实现一个自定义控件.在想怎么实现它的时候,有个环节肯定要想想怎么去搞它的进度呢..等.等等.进度?脑袋里闪过了什么,再一细想.进度?!咱们安卓自身不就有设置进度的控件么?Progressbar???能实现么?故,继续向下思考.   ...

2018-10-15 15:10:42 294

原创 用安卓原生控件SeekBar实现拖动验证

  今天在开发的时候产品提出需要做类似拖动验证手机号码的功能,看了看原型图,大概构思了一下.脑海浮现出安卓原生的控件SeekBar应该可以实现类似功能,故动手实现了一把.再博主不断努力的3小时里,终于将其拿下.其中一些坑,在此分享以供同样需要的小伙伴们.先上效果图一睹为快.      以上是最终实现效果.先贴上xml对seekbar的属性设置:<SeekBar an...

2018-08-10 23:13:54 1031

原创 彻底搞懂自定义控件中的四个构造方法

    在上一篇博客动手实现饼图控件写完以后,有些小伙伴说讲得不够细,建议从最基本开始讲起,比如构造函数都是什么?我觉得说得很有道理,正好自己也不够了解自定义控件中的4个构造方法的具体调用时机和它们各自的参数作用,今天终于有时间把这部分内容进行学习整理,顺便分享给那些和我一样不太了解它们的同学们!    首先我们先将构造方法中的参数的作用做个说明,来看一下参数最多的构造方法:    public ...

2018-06-07 19:25:34 1286

原创 动手实现饼图控件

一直以来,对自定义控件处于模模糊糊的状态,不知道怎样去入手实现一个控件出来.前段时间leader带我们梳理了相关知识点,并且自己又巩固了一下相关的内容.俗话说还记性不如烂笔头,不动手去实践,一边学习一边也就把之前的忘得差不多了.这两天终于下定决心真正动手尝试一下,实现一个真正的属于自己的自定义控件.好了扯远了,先上效果看一下效果.        ps:第一次发帖,也是刚刚学会自定义view这一部...

2018-05-25 22:32:07 858

原创 Java基础第九讲

一、多态 1.多态的前提1)要有继承关系2)要由方法重写3)要由父类引用指向子类对象 2.访问特点1)成员变量 编译看父类,运行看父类.2)成员方法 编译看父类,运行看子类.3)静态方法 编译看父类,运行看父类. 3.多态的好处

2015-04-26 22:33:07 244

原创 Java基础第八讲

一、代码块1.局部代码块 在方法内部.限定变量的周期,更早的释放,从而提高内存的利用率.2.构造代码块 在类类的里面,方法的外面.多个构造方法中相同的代码存放在一起,每次调用构造都执行,并且在构造方法前执行.3.静态代码块 1)在类中,方法外.被static修饰. 2)用于对类进行初始化,在类加载的

2015-04-24 23:13:21 256

原创 Java基础第七讲

一、构造方法1.作用 可以给对象的属性进行初始化.2.格式 1)方法名与类名相同(包括字母的大小写) 2)没有返回值类型和void 3)没有具体的返回值3.构造方法的重载 构造方法也可以重载,就是说可以有相同名字的方法,用参数列表来区分它们.构造方法分为有参构造方法和无参

2015-04-24 00:25:27 220

原创 Java基础第六讲

一、面向对象1.属性 就是事物的描述信息,相当于事物身上的名词.2.方法 就是该事物可以做什么,相当于动词3.成员变量1)就是事物的属性,如一个人的姓名,性别,年龄.2)定义在类里,方法的外面.位置在堆内存中.3)会随着对象的创建二存在,随着对象的消失而消失.4)有默认的初始化值.

2015-04-22 12:57:53 243

原创 Java基础第五讲

一、数组 数组的概念:可以存储多个同一种数据类型的元素集合.可以存储基本数据类型,也可以存储引用数据类型.1.数组的格式: 数据类型[] 数组名 = new 数据类型[数组的长度];1)动态初始化: int[] array = new int[5];2)静态初始化: int[] array = n

2015-04-20 22:23:26 216

原创 Java基础第四讲

一、循环语句 1.for(1)for循环语句的格式: for(初始化表达式语句;判断条件语句;控制条件语句) {循环体语句;}class ForDemo {public static void main(String[] args){for(int x = 1 ; x <= 10 ; x++){System.out.println("helloworl

2015-04-19 21:21:31 247

原创 Java基础第三讲

一.运算符 1.逻辑运算符 一般用于连接boolean类型的表达式或值 &(并且) 有false则false |(或者) 有true则true !(非) 非false则true,非true则false(偶数个不会改变本身) ^(异或) 结果相同为false,结果不同则为true &&(短路与) 与&的区别:结果一样,&&具有短路效果,如果左边为false,右边将不再执行. ||(短路或) 与|的区

2015-04-17 23:08:08 217

原创 Java基础第一讲

一、计算机基础知识1.计算机的基本应用1)科学计算 2)数据处理3)自动控制 4)辅助设计5)人工智能 6)多媒体应用7)计算机网络二、计算机的软、硬件1.计算机的硬件如:鼠标、键盘、CPU、主板等。2.计算机的软件如:QQ、360等。3.人机交互1)图形化界面方式 2)命令行方式三、常用计算机快捷键如:c

2015-04-17 22:46:24 298

原创 Java基础第二讲

一.常量常量,就是在程序执行过程中,值不能发生变化的量.二.Java常量分类常量分为字面值常量和自定义常量(暂未学,面向对象时讲解)字面值常量分为:1.字符串常量:需用双引号括起来.2.整数常量:所有整数3.小数常量:所有小数4.字符常量:需用单引号引起来(需要注意的是,单引号中,智能是单个字母.数字.或符号.)5.布尔常量:取值范围只有true或false

2015-04-16 14:05:03 317

空空如也

空空如也

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

TA关注的人

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