- 博客(73)
- 资源 (2)
- 收藏
- 关注
原创 Activity的setContentView分析
概述MeasureSpecsetContentView概述理解View如何工作的,对于掌握自定义View非常有必要,在整个View的绘制过程中,需要进行三个大的流程,首先是要理解为何View要设置三个大流程,然后从理解的角度适当结合源码进行流程的梳理,才能形成较为清晰的脉络。 一个View从创建到在显示到屏幕,个人理解决定其显示效果的因素有三个:自身的大...
2018-09-03 23:04:05
559
原创 隐式Intent解析
回顾Android中的隐式Intent的相关知识点。概述使用action标签category标签data标签概述隐式启动主要解决了界面间的跳转解耦,主要涉及intent-filter中的三个标签:categoryactiondata它们构成了隐式启动的匹配项,通过不同的配置完成不同的路由跳转。使用列一个例子,新建一个APP有两...
2018-08-21 13:51:59
2978
原创 属性动画使用解析(三):理解TimeInterpolator插值器和TypeEvaluator估值器
回顾TimeInterpolator插值器和TypeEvaluator估值器的使用方式。
2018-08-13 23:43:51
393
原创 属性动画使用解析(二):ValueAnimator
概述ofFloat方法ofInt方法ofArgb方法ofObject方法ofPropertyValuesHolder方法setInterpolator方法setEvaluator方法其他概述ObjectAnimator实际上继承了ValueAnimator,能够直接操作对象属性来改变动画的执行效果,而ValueAnimator主要是提供在执行动画过程...
2018-08-12 23:58:14
736
原创 属性动画使用解析(一):ViewPropertyAnimator和ObjectAnimator
回顾集合体系中LinkedList的源码实现,查看的源码为Android系统中的java源码实现,和JDK中的实现可能有一定区别。
2018-08-11 22:29:19
1292
原创 LinkedList源码浅析
回顾集合体系中LinkedList的源码实现,查看的源码为Android系统中的java源码实现,和JDK中的实现可能有一定区别。
2018-08-08 00:34:07
174
原创 ArrayList源码浅析
回顾下集合体系中,ArrayList的一些主要操作的原理。成员变量构造方法add方法get方法set方法remove方法clear方法其他成员变量首先看下成员变量://如果不给定ArrayList的初始容量,那么默认为10 private static final int DEFAULT_CAPACITY = 10; //如果初始化容量设...
2018-08-06 22:00:54
204
原创 HandlerThread的使用及原理浅析
对HandlerThread的一些总结。概述使用原理总结概述HandlerThread提供了一种能在子线程进行异步操作的消息处理机制,本质上它封装Thread和Looper来在子线程进行消息的存储和分发。 涉及到Handler的相关知识Handler 原理知识点回顾 。使用简单的例子:HandlerThread handlerThread =...
2018-08-03 16:12:28
2029
原创 LocalBroadcastManager知识点回顾及原理浅析
概述使用原理总结概述LocalBroadcastManager作为Android系统广播机制的一种高效方案,可以有效地保护数据的安全性和隐秘性,能够让数据只能在自身应用中传播,不同与系统广播比较复杂的实现机制,因此回顾下其使用方法和原理。使用//比如在Activity中使用//创建IntentFilter,指定触发的action,可以指定多个a...
2018-08-02 18:11:38
674
原创 SharedPreferences知识点及原理浅析
概述调用方式存储方式存储对象修改存储位置概述SharedPreferences作为Android系统的数据存储方式之一,现回顾下其实现原理。调用方式SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIV...
2018-08-02 00:39:22
808
原创 Handler 原理知识点回顾
handler作为android消息处理的重要机制,全面回顾下其涉及的知识点。关键类整个消息处理机制中涉及到的主要类有: Message 负责消息封装 MessageQueue负责将消息封装为消息队列 Looper负责从消息队列中获取消息并分发 Handler负责消息发送及处理Message看看代码中的类注释: 定义包含描述和任意数据对象的消息,发送到Handl...
2018-07-31 22:28:32
332
原创 EventBus3.0源码分析
概述关于EventBus3.x的用法,本文不再赘述,只分析其实现原理,官方的流程图: 上图是EventBus基于观察者模式的事件发布流程的高度概括,经过下文的源码分析后,再来体会该流程会比较清晰。订阅流程需要订阅事件的对象首先需要进行注册,比如Activity中:EventBus.getDefault().register(activity);看看EventBus这个类中做了什么: /** C
2017-06-02 23:23:02
621
原创 自定义View:仿GitHub的提交活跃表格
说明本文可能需要一些基础知识点,如Canvas,Paint,Path,Rect等类的基本使用,建议不熟悉的同学可以学习GcsSloop安卓自定义View教程目录,会帮助很大。 上图就是github的提交表格,直观来看可以分为几个部分进行绘制: (1)各个月份的小方格子,并且色彩根据提交次数变化,由浅到深 (2)右下边的颜色标志,我们右对齐就可以了 (3)左边的星期,原图是从周日画到周六,我们
2017-01-17 17:01:29
7473
原创 xUtils3源码分析(二):事件的绑定
本篇是xUtils3源码解析的第二篇,主要分析xUtils3的事件绑定机制,上一篇主要分析了view的绑定机制,感兴趣的同学可以阅读: xUtils3源码解析(一):View的绑定 另外阅读本文需要动态代理的基本知识,请参阅亦山: Java动态代理机制详解个人认为讲的较为简单清晰,但鉴于本人对动态代理并不精通,因此不做说明,请读者见谅。 下面还是通过xUtils3的项目例子作为解析,事件绑定的
2016-12-25 00:54:44
667
原创 xUtils3源码分析(一):view的绑定
概述xUtils3是国人开发的一款功能丰富的Android快速开发框架,值得研究下。 zip包下载:[ZIP] xutils主要分以下几个模块 - 视图绑定模块 - 网络请求模块 - 数据库模块 - 图片加载模块我们将逐一透过源码分析,本文分析视图绑定模块,包含View的注入和View事件的注入。 我们将项目导入AndroidStudio,项目结构:xutils为项目源码,sample
2016-12-25 00:53:26
534
原创 Universal-Image-Loader的图片加载流程源码分析
概述Universal-Image-Loader是经典的图片加载框架,虽然现在该项目不再维护,但对于初学者依旧是值得学习的开源项目之一,本文就该框架的加载图片流程做简要梳理,希望读者有所收获。 该文参考了【codeKK】 Android Universal Image Loader 源码分析一文,该文详细分析了Universal-Image-Loader的设计思想,想深入了解,可以祥读此文。基本工
2016-10-24 08:12:26
611
原创 Android ThreadLocal及InheritableThreadLocal分析
因为在android中经常用到handler来处理异步任务,通常用于接收消息,来操作UIThread,其中提到涉及到的looper对象就是保存在Threadlocal中的,因此研究下Threadlocal的源码。 分析都是基于android sdk 23 源码进行的,ThreadLocal在android和jdk中的实现可能并不一致。 在最初使用Threadlocal的时候,很容易会产生的误解就
2016-04-21 22:47:28
2112
原创 不考虑事务隔离可能产生的问题
脏读:A事务中读取到了B事务中未提交的数据,造成数据错误不可重复读:A事务中读取到了B事务中已提交的数据,在特定情景下会产生影响,比如生成统一的数据报表虚读(幻读):A事务中读取到了B事务中已提交的新插入的数据,影响同上
2015-01-25 17:04:56
3078
1
原创 JAXP技术解析XML文件
package com.franky.xml;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.
2015-01-04 23:57:36
477
原创 JUnit测试框架的使用实例
测试主类:import junit.framework.Assert;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;/** * @描述 JUnit测试框架的使用 * @
2015-01-04 00:38:18
695
原创 类似spring的AOP框架,动态获得代理类或目标类
六部分组成:1.BeanFactory:package com.franky.aopframework;import java.io.InputStream;import java.util.Properties;import com.franky.proxy.MyAdvice;/** * @描述 Bean工厂,用来返回实体bean,或者代理bean * @作者 fran
2015-01-03 12:12:27
1715
原创 自定义类加载器的使用实例
自定义的类加载器必须继承ClassLoader抽象类,并覆盖findClass方法。测试的需要被加密使用的类:package com.franky.classloader;import java.util.Date;/** * @描述 加密的测试类,需要用自定义的类加载器加载 * @作者 franky * @日期 2015-1-1 下午9:51:38 * */pu
2015-01-02 00:19:49
624
原创 通过反射获取变量泛型参数化的类型
package com.franky.generic;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @描述 通过反射获取泛型
2015-01-01 17:30:00
763
原创 注解的使用实例
package com.franky.annotation;/** * @描述 注解的应用实例 * @作者 franky * @日期 2014-12-31 下午3:16:00 *///显式指定注解值,如果数组属性只有一个元素那么可以省略大括号@MyAnnotation(color = "red",value = "hello",arrValue=1,metaAnnotation
2014-12-31 17:02:11
500
原创 利用BeanUtils与PropertyUtils进行javabean的内省操作
package com.franky.bean;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.PropertyUtils;/** * @描述 BeanUtils与PropertyUtils的使用 * @作者 franky * @日期 2014-12-31 下午12
2014-12-31 12:09:18
2898
原创 通过PropertyDescriptor和Introspector对JavaBean的简单内省操作
package com.franky.bean;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * @
2014-12-31 11:13:09
427
原创 使用类加载器加载配置文件
package com.franky.reflex;import java.io.InputStream;import java.util.Collection;import java.util.Properties;/** * @描述 使用类加载器加载配置文件 * @作者 franky * @日期 2014-12-31 上午10:15:58 */public class
2014-12-31 10:31:29
995
原创 利用反射加载配置文件中的类动态生成集合
/** * */package com.franky.hashcode;import java.io.FileInputStream;import java.io.InputStream;import java.util.Collection;import java.util.Properties;/** * @描述 利用反射,生成集合添加对象元素 * @作者 fran
2014-12-30 23:15:47
471
原创 hashcode的实例说明
package com.franky.hashcode;import java.util.Collection;import java.util.HashSet;/** * @描述 关于hashCode的说明实例 * @作者 franky * @日期 2014-12-30 下午9:37:42 * */public class HashCodeTest { /**
2014-12-30 22:16:49
724
原创 数组的反射使用实例
package com.franky.reflex;import java.lang.reflect.Array;import java.util.Arrays;/** * @描述 数组的反射 * @作者 franky * @日期 2014-12-30 下午5:16:41 */public class ArraysReflex { /** * @param args
2014-12-30 17:50:52
480
原创 利用反射调用指向其他类的main方法
package com.franky.reflex;import java.lang.reflect.Method;/** * @描述 用反射调用其他类的main方法 * @作者 franky * @日期 2014-12-30 下午5:01:16 */public class InvokeMainWithReflex { /** * @param args 传入的参数列表
2014-12-30 17:49:34
374
原创 反射的基本使用实例
package com.franky.reflex;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * @描述 反射的基本使用实例 * @作者 franky * @日期 2014-12-30 下午4:08:34 */
2014-12-30 17:48:19
395
原创 java基础加强知识点
1.增强的for循环: 循环对象必须实现Iterable接口 内部变量可以使用修饰符;2.可变参数: 必须放在方法参数列表最后 public static int add(int i,int... args),可变参数以数组方式使用;3.override 和 overload区别:override(重写) 1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的
2014-12-30 17:36:19
432
原创 策略设计模式:父类持有接口成员变量,动态设定接口成员实现类,动态改变方法
Duck抽象父类:package com.franky.strategy;/** * 策略设计模式 * 定义Duck鸭子抽象类 * @author Administrator * */public abstract class Duck { /** * 内部持有飞行行为(FlyBehavior)的接口对象 */ private FlyBehavior flyB
2014-12-30 00:08:32
540
原创 URL的使用实例
package com.franky.net.http;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;/** * URL的使用实例 * @author Administrator * */public class
2014-12-29 23:25:24
1036
原创 HTTP:浏览器请求实例,自定义服务器
package com.franky.net.http;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/*
2014-12-29 23:16:45
895
原创 TCP:客户端和服务端的使用实例
客户端:package com.franky.net.tcp;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;/** * TCP客户端 *
2014-12-29 21:39:23
726
Root Explorer-4.0.2M 适用于Android7.0以上root后查看系统文件
2017-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人