6 童心未泯佐为

尚未进行身份认证

编程来源于生活,服务于生活,生活就是需求。

等级
TA的排名 17w+

Launcher3源码解析

由于工作的原因,开始了Launcher的学习和开发。我拿到的源码是AndroidN的Launcher3的源码。想的是一步一步对Launcher3的源码进行分析并记录,也是为了让自己遗忘的时候可以看看。下面正式开始Launcher3的源码分析,首先介绍一下主要的几个类:Launcher:主界面Activity,最核心且唯一的Activity。LauncherAppState:单例对象...

2018-12-28 10:03:55

工作总结及建议

1.先需求评审,让相关人员了解自己的需求,和谁配合,有问题及时反馈,产品好及时调整方案。2.只认文档不认人。一个成功的项目不在于它带来了多少价值,而在于任何人的离职请假都不影响项目的正常运作。如何做到,写好文档是基础。(接口文档,产品需求文档,UI标注图,UI切图...,代码注释)    2.1文档共享    2.2文档及时更新,谁负责谁维护3.产品经理应及时或者提前告知开发人员以...

2018-06-05 18:08:42

理财,预期收益

项目中,标的付款方式有,到期本息、先息后本、等额本息、等额本金四种。这就意味着客户端在计算预期收益时要根据这一状态执行不同的算法。通过分析,到期本息、先息后本为第一种算法,等额本息为第二种算法,等额本金为第三种算法。之后,在对这块代码进行了三次重构重构1:将三种算法写到工具类里,对应三种静态方法。重构2:将算法提取为接口,提供三种策略类。重构3:通过简单工厂返回具体算法类。预期收益接口publ...

2018-04-28 16:36:13

Spring Ordered接口

        Java中的对象排序都会跟ComparableComparator这两个接口扯上关系,下面我们要说说Spring排序接口Ordered。publicinterfaceOrdered{ /** *Usefulconstantforthehighestprecedencevalue. *@seejava.lang.Integer#MIN_VALU...

2018-04-11 14:25:23

带边框(Border)的LinearLayout

先看一下这样一个简单的布局,所展示的内容很少,上下两条分割线,两个文本。1.普通做法<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_par...

2018-03-29 15:01:41

适配器模式,手机充电器

        充电器、变压器、转接头这些都是我们所熟悉的。他们的作用都是将一些现有的、不匹配的、无法改变的进行转换,以满足我们的需求。以手机充电器为例,上世纪60年代后期,中国统一使用220V电压,手机充电一般5V左右,两者无法匹配。我们也无法改变现有的条件。于是充电器就发挥了它的作用,它可以将220V转换为特定的电压以满足手机充电所需。中国家用电压publicclassChinaPower...

2018-03-27 17:21:51

一个Key对应多个Value

Map一个key对应一个value,它可以满足大部分需求。但有时我要用到一个key对应多个value怎么办?1.普通做法 Map<Object,List<Object>>map=newHashMap<>();2.apachecommons工具包里有个org.apache.commons.collections.map.MultiValueMap。3.开...

2018-03-27 14:53:44

备忘录模式,拍电影

大家都知道拍电影的时候如果某段拍的不好演员会NG多次,当导游说重拍的时候场记会记录这段的布景,台词,演员的动作表情。等到重拍的时候恢复到开始状态。

2017-08-08 10:28:18

规格模式,对象筛选

规格模式已经是一个非常具体的应用框架了(相对于23个设计模式),大家遇到类似多个对象中筛选查找,或者“业务规则不适于放在任何已有实体或值对象中,而且规则的变化和组合会掩盖那些领域对象的基本含义”,或者是想自己编写一个类似LINQ的语言工具的时候就可以照搬这部分代码,只要实现自己的逻辑规格书即可代码:抽象规格书publicinterfaceISpecification{//

2017-08-04 09:47:25

Volley,核心架构生产者消费者模式

晚上母亲做烙饼,熟了就放到桌子上,我和姐看到桌子上有饼就拿来吃,没了就等着。这就是生产者消费者模式母亲           生产者          做饼桌子           产品容器      放饼我和我姐   消费者           吃饼生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通

2017-07-20 13:36:54

DataProvider为项目提供基础信息

基础信息提供者接口publicinterfaceIDataProvider{/***项目环境类型(开发,测试,正式)**@return*/EnvironmentgetAppEnvironment();/***项目context对象**@return*/

2017-07-19 09:45:48

Activity,Fragment绑定生命周期,实现EventBus的自动注册、自动注销。

Glide中一个重要特性是Request可以随Activity或Fragment的onStart而resume,onStop而pause,onDestroy而clear,从而节约流量和内存,并且防止内存泄露。在阅读Glide源码后,果断将相关代码引入项目中并实现EventBus的自动注册、自动注销,其核心使用观察者模式。侦听生命周期事件的接口。publicinterfaceLifecy

2017-07-18 15:59:17

桥接模式下的本地数据加载

项目中我们可以加载assets文件夹下的xml文件、txt文件、图片文件,也可加载sd卡下xml文件、txt文件、图片文件。如图这里有两个变化的维度,文件来源和数据格式。我将抽象与实现分离实现本地数据加载。代码:数据publicinterfaceData{/***加载数据流*@paraminputStream*/vo

2017-07-17 16:14:32

总结TextWatcher两种使用场景

1.根据观察多个输入框(必填)是否输入内容,控制按钮点击状态。publicclassButtonWatcher{privatefinalButtonbtn;//控制按钮privatefinalEditText[]views;//输入框数组publicButtonWatcher(Buttonbtn,EditText...editTex

2017-07-17 10:32:58

通过递归与访问者模式过滤文件

在看Fresco源码时发现了一个遍历文件夹的小模块,职责清晰、设计精妙、并有着很高的拓展性,在研究之后果断代码收藏。思路:首先利用递归遍历整个目录,如果是文件,访问者执行访问。文件树publicclassFileTree{/***遍历目录的文件树,并接收一个访问者访问每一个文件。*@paramdirectory要遍历的文件

2017-07-12 10:13:08

利用模板模式封装APP版本更新模块

在项目中做版本检查模块流程如下1.检查版本2.显示版本提示3.下载apk4. 安装于是我将相关代码进行重构,定义版本更新流程的骨架而将一些方法延迟到子类去实现。publicabstractclassCheckVersion{publicstaticfinalStringAPK_FILE_PATH="";//apk保存路径

2017-07-11 16:37:00

利用中介者模式与观察者解决购物车与商品列表联动问题

由于项目保密性只介绍出现的问题以及我解决的思路。说明:商品分类列表:显示商品分类名称以及此分类下放入购物车商品的总数量。商品列表:显示商品信息和两个操作按钮“+”,“-”以及加入购物车数量。购物车列表:显示购物车商品信息和两个操作按钮“+”,“-”以及数量。搜索列表:显示商品信息和两个操作按钮“+”,“-”以及加入购物车数量。问题:商品列表、购物车列表、搜索列表都可

2017-07-11 10:14:57

利用责任链模式构建数据校验模块

这是一个比较简单的表单校验,利用责任链模式将多个数据校验以“链”的形式串联起来。目前支持三种数据校验(可拓展)1.空数据校验2.数据格式校验3.非必填项校验代码:定义校验器publicinterfaceVerify{//校验booleandoVerify();//设置下个校验器voidsetNextVerify(Verifyve...

2017-07-03 11:57:42

访问者模式,记者街访

访问者模式,记者街头访问

2017-06-26 10:14:09

状态模式,运动员比赛

状态模式,运动员比赛

2017-06-26 10:13:17

查看更多

勋章 我的勋章
    暂无奖章