自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个学渣走向android之路

坚持做自己懒得做但是正确的事情,你就能得到别人想得到却得不到的东西。

  • 博客(111)
  • 资源 (7)
  • 问答 (3)
  • 收藏
  • 关注

原创 设计模式之观察者模式

概述观察者模式是一个使用频率非常高的设计模式。不过这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得他们的依赖性变小,甚至做到毫无依赖。它是一种定义对象间一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。使用场景关联行为场景,需要注意的是,关联是可拆分的,而不是“组合”关系。跨系统的消息交换场景,如消息队列,事件机制。需要在系统中创建一个...

2018-12-14 15:54:51 277

原创 设计模式之命令模式

概述命令模式相对于其他模式没有那么多的规定,因为它不是一个很规矩的模式。不过,正因为这一点,命令模式对比其他设计模式更为灵活。我们接触比较多的命令模式无非开关机。我们点击关机命令时,它会先暂停事件,然后结束所有进程,最后关机。也就是说我只需要点击一个关机按钮就可以做到这一系列的命令。而我们的命令模式其实也和这一样。讲一系列的动作进行请求封装,用户只需要调用一个方法,这些动作会被挨个执行。使用场...

2018-12-14 15:54:18 216

原创 设计模式之解释器模式

概述解释器模式一般来说,我们用的比较少,它提供了一种解释语言的语法或者表达式的方式,比如说1+2,我们可以通过解释器模式告诉你这是一个加法。使用场景如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。一些重复出现的问题...

2018-12-14 15:53:50 134

原创 设计模式之责任链模式

概述责任链模式,顾名思义,它是一个链式模型,这种模式给予请求的类型,对请求的发送者和接收者进行解耦。对于这种结构,每个节点可以拆分在链接,所以,这种模式有着较好的灵活性。使用场景多个对象处理同一个请求在请求处理者不明确的情况下向多个对象中的一个提交一个请求。需要动态指定一组对象处理请求。具体实现众所周知,Android中最常见的责任链模式。现在我们来实现一个简单的责任链模式。我...

2018-12-14 15:53:14 409

原创 设计模式之状态模式

概述在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。状态模式是把所有的行为包装在不同的状态对象中,意在是让一个对象在其内部改变的时候,他的行为也跟着改变。使用场景1、行为随状态改变而改变的场景。2、代码中包含大量的条件语句,比如if-else和switch-case,且这些条件依赖于该对象的状态。具体实现这边我以播放器的开始和停止举例。首先我们创建一个状...

2018-12-14 15:52:40 193

原创 设计模式之策略模式

概述策略模式在我们日常开发中也是经常遇见的。比如实现某一个功能有多种算法或者策略。我们根据具体情况去实现它。例如:排序算法,我们可以使用插入、冒泡、快排等等。针对这种情况,我们一般将多个策略写在一个工具类中去方便调用。我们需要A策略就是调用A方法,需要B策略就调用B方法。如果将这些算法或者策略抽象出来,变成一个接口,不同的策略有不同的实现类。这样我们就可以通过注入不同的对象去实现策略的动态替...

2018-12-14 15:52:07 136

原创 设计模式之抽象工厂模式

概述前面我们已经说到了工厂模式,现在我们扯扯抽象工厂模式。从字母意思理解下,工厂也就是会生产指定的产品。那么抽象工厂就意味着生产出来的产品不是指定的。往简单点说,抽象工厂就是为创建一组相关或者相互依赖的对象提供一个接口,而不需要指明他们的具体类。使用场景一个产品族有相同的约束时可以使用抽象工厂模式。是不是听起来很抽象?比如android、ios下都有短信软件和拨号软件,两者同属于软件。但是,...

2018-12-14 15:51:27 127

原创 设计模式之工厂模式

概述工厂模式在我们平常开发中应用比较广泛,或许你不知道,但你已经使用了很多次了。我们明确地计划不同条件下创建不同实例时,就会使用到工厂模式。工厂模式分为简单工厂模式和抽象工厂模式。这边我们先说简单的工厂模式。使用场景在任何需要生成复杂的对象的地方,都可以使用工厂模式。复杂对象适合使用工厂模式。而直接通过new就可以完成创建的对象无需使用工厂模式。具体实现首先,我们创建一个实体类的接口:...

2018-12-14 15:50:54 227

原创 设计模式之原型模式

概述原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。使用场景1、资源优化...

2018-12-14 15:50:23 151

原创 设计模式之建造者模式

概述建造者模式又称Builder模式,它是一步步创建一个复杂的对象然后进行构建。可以精准的控制对象的构造过程。此模式是将构建复杂对象的过程与它的部件解耦,使得构建过程和部件的表示隔离开来。一个对象有很多复杂的信息,比如人,有身高,体重,性别,姓名,年龄等等。如何将这些信息给组合起来,然后形成这个对象。比如男生很多,20岁的男生也很多。这个信息组成的过程很漫长。对于这种情况,构建过程中对外部影藏...

2018-12-14 15:49:42 170

原创 设计模式之单例模式

概述单例模式是应用最广的设计模式之一。也可能是很多初级工程师唯一会使用的设计模式。从字面意思,单例模式就是单例对象的类必须保证只有一个实例的存在,而且自行实例化并向整个系统提供这个实例。例如,创建一个对象需要消耗太多的资源,如要访问IO和数据库等资源,这时需要考虑单例模式。懒汉单例模式线程不安全当提到单例模式的时候,我们第一反应就是如下代码:public class Singleton ...

2018-12-14 15:49:10 189

原创 设计模式之六大设计原则

概述设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。而设计原则则是设计模式所遵循的规则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。在开发过程中...

2018-12-14 15:47:13 206

原创 Android的消息机制

概述说到Android的消息机制,我们肯定会想到Handler。是的,Android的消息机制主要是指Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程。当我们工作的时候我们只要接触到Handler就可以了。Android的消息机制主要是指handlr的运行机制,handler的运行需要底层的messagequeue和looper来支撑。mess...

2018-09-25 16:05:01 292

原创 android的线程和线程池

概述线程中Android中是很重要的一个概念。从用途上来说,线程分为主线程和子线程。主线程主要用于界面上的交互,而子线程主要用于一些耗时操作。除了thread之外,在Android中可以扮演线程角色的还有很多。例如Asnyctask、IntentService以及handlerthread。对于asnyctask,它的底层用了线程池,对于intentservice和handlerthread来说...

2018-09-25 16:03:14 407 1

原创 彻底理解Window的添加,删除,更新过程

概述Window表示一个窗口,但在日常开发中我们接触的不多。我们常见的如Toast和PopWindow都是属于Window。Window是一个抽象类,而Window的具体实现类是PhoneWindow。如果我们需要创建一个Window,只需要通过WindowManager去实现。而它的具体实现是在WindowManagerService中。我们需要知道Android所有的视图都是附加在Wind...

2018-09-17 14:42:23 1409 1

原创 我们熟悉的Context到底是什么?

Context基本概念先看一下Context源码,代码如下: /** * Interface to global information about an application environment. This is * an abstract class whose implementation is provided by * the Android system. ...

2018-09-14 17:44:54 420

原创 红黑树真的没你想的那么难

概述TreeMap是红黑树的java实现,红黑树能保证增、删、查等基本操作的时间复杂度为O(lgN)。 首先我们来看一张TreeMap的继承体系图: 还是比较直观的,这里来简单说一下继承体系中不常见的接口NavigableMap和SortedMap,这两个接口见名知意。先说NavigableMap接口,NavigableMap接口声明了一些列具有导航功能的方法,比如: /...

2018-07-06 23:42:18 19749 3

原创 找工作时,我们应该思考的几件事情。

现在身为跳槽高峰季,作为即将跳槽的我,在这里分享几点建议给大家。简历怎么投?众所周知,找工作的前提是面试,面试的前提是过了简历,过了简历的前提是你怎么投。这边我不分析简历怎么写。来说说怎么投。在座的各位,有在校生,有毕业生,还有工作几年的。 先说说在校生。其实,现在的在校生可能不比哪些工作了1-2年的人差。因为现在教学资料多了。老师也不是那种只知道个四大组件的了。不像我之前学Andro...

2018-04-27 16:29:00 514 1

原创 我所经历的Android面试

概述时隔一个多月,我又回来了。这段时间有不少人问我最近在干嘛,面经什么时候写,怎么这么久没更文了等等等等。当然了,最近我一直在执行了一次我计划了近半年的跳槽。总得而言还不错。说下我的情况。我是去年九月份开始计划,十一月份开始准备,投了100+家公司,拿到了20+个面试,总共面试了四家,拿到了3个offer,周期差不多是一个月时间。这个面经可能不是适合所有人,毕竟这次不是一线大厂的面经。不过...

2018-04-21 16:07:53 1270 2

原创 Activity生命周期详解

Activity是什么?Activity是用户和应用程序交互的界面,用户可以在Activity上进行点击、滚动、触摸等操作。一般来说,一个应用是由多个Activity组成,首次进入的Activity称为主Activity。至于如何判断一个Activity是不是主Activity。本篇文章我们先不讨论。后面会讲到。Activity的活动状态当我查阅关于Activity的官方文档的时候,我

2018-01-29 16:45:04 841

原创 View的绘制流程源码分析

概述View的绘制流程主要是指测量、布局以及绘制显示,在View中,measure是测量View的宽高,layout是控制View四个顶点的位置,而draw就是将布局直接绘制出来。Measure流程measure的流程氛围View的measure流程以及ViewGroup的measure的流程。之所以把View和ViewGroup分开就是因为ViewGroup不仅仅要测量自身的宽高,而

2018-01-16 14:38:26 1039

原创 开发一个数字华容道的小游戏

目的上周新一期的最强大脑出来了,虽然上季被称为最强黑幕,不过呢。我决定还是看看= =。它里面第一关是叫做数字华容道。说白了,就是和拼图差不多。一开始我准备下一个玩玩的。结果没搜到。所以决定写了一个。最后效果差不多是这样: 思路以及实现首先,我们应该考虑如何去实现这个效果。细想一下,其实和之前的2048有点像,但是又不是完全一直。于是,便又折腾了一波。这次布局和内容项参考之前2048的

2018-01-11 17:20:59 18039 10

原创 这才是真正的万能圆角ImageView

本文已授权我的公众号:我就是马云飞 独家发布不知道有没有人记得我去年写过一个圆角的imageview。不知道的可以先去看看:万能圆角imagview,本文是基于上一篇的内容进行添加以及修改的。不然直接看这篇可能会有点懵。前言我为什么要二次封装?最近公司有个需求是这样的。 同事说,不知道怎么搞,于是乎,我把之前写的imageview给过去了。他来了句,你这圆角和fitxy同时设置会有问题啊,我反手就

2017-09-26 16:23:11 5640

原创 ViewGroup源码解读

本篇文章已授权我的公众号:我就是马云飞 首发 我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析。这次我们来分析下viewgroup的。可能有人会想,怎么又是源码分析,肯定又是一大通。其实没你想的那么复杂。仔细分析一波就行了。解读ViewGroup我们都知道,一个事件完整的流程是从dispatchTouchevent–>onI

2017-08-31 11:54:59 4624 5

原创 View的事件源码解析

上次刚刚分析了view的事件拦截机制,那么这次我们通过源码来分析一波view的事件,如果对view的事件不了解的,可以先看View的事件拦截浅析解析View源码既然是分析源码,那么我们就要找准入手点,不然几万行代码看完在整理完还是很累的。既然是事件的分析,我们就应该知道从哪入手。就是touchevent了。首先,我们先了解下下面几个属性,这肯定是和事件有关的。1.clickable:控制当前view

2017-08-28 16:07:49 2225

原创 View的事件拦截机制浅析

为什么要去分析view的事件记得上周刚立的flag就是关于view的事件机制。那现在我来说说我对view的感受。关于view的事件,百度google一搜。一批又一批。但是能让人理解的少之又少。换句话说,不是那些作者不懂。只是说,他懂了,但他讲解后不一定能让别人看得懂。我记得有人问我当初是怎么接触自定义view这东西的。因为他们觉得自定义view这个东西很难。我就回了如下几句话:自定义view你把pa

2017-08-04 10:03:21 3148

原创 360插件化Replugin爬坑之路

前言继上次爬完了热修复的坑位,中途爬了各种各样的坑。今天我们来说说插件化Replugin的坑位。Replugin刚出的时候我就看过了。第一次看的时候可能心态不好。没看懂= =第二次重头在看,发现蛮简单的,可能一两个小时就搞定了。但是这玩意出来我就知道了。今天才整理。这就可想而知,坑位多的有点可怕。好了。下面,我们一一整理这些各式各样的坑。主程序接入gradle的依赖在整个项目的build.gradl

2017-08-01 10:42:17 5960 1

原创 随手一写就是一个侧滑关闭activity

刚忙完一段时间,今天刚清闲会,就把以前写的东西整理整理。于是冥冥中发现有些东西完全可以共享出来,毕竟那么常见,而且简单实用。实现原因其实侧滑关闭activity在网上也有大量的文章去介绍他,我也有去看,要么是代码实在太多看不下去,要么就是跑了项目没有反应的。唯一的方法还是自己随手鲁一个~,侧滑这个东西在android中是比较少见的,ios是最常见不过了,因为毕竟他们没有物理返回键。还有UIScrol

2017-07-27 17:40:45 4240 8

原创 百行代码打造高级联动特效

前两天突然看到一个联动效果蛮不错的,虽然不知道具体什么地方会用到。不过也随手鲁了一个。效果如下图: 效果是不是挺好玩的~~。那么让我们接下来一步步的分析一下。思路首先,让我们想象一下如何实现?自定义view?自定义layout?还是什么?首先这是多层布局的嵌套。肯定会发生的就是事件拦截和分发。我们想像一下Coordinatorlayout+Appbarlayout+CollapsingToolba

2017-07-12 11:32:38 3419 4

原创 Tinker爬坑之路

目的热修复去年年底出的时候,变成了今年最火的技术之一。依旧记得去年面试的时候统一的MVP,然而今年却变成了RN,热修复。这不得不导致我们需要随时掌握最新的技术。不然可能随时会被淘汰。记得刚进公司,技术总监就给我们布置了学习RN和热修复的任务。不过因为临时调整去了产品部。学习的时间变少了。最近抽空看了关于热修复。于是,便有了此文。概述关于热修复,说白了就是线上修复,这个基本就不用多解释了。因为如果出了

2017-06-06 11:44:34 11080 9

原创 我为什么放弃java学习Kotlin?

Kotlin简介Kotlin早已是Android开发中的热门话题了,github上越来越多的项目是用Kotlin开发。但是这门语言一直处于很尴尬的境地,一方面自己不遗余力的挖掘自己在Android开发方面的作用,一方面却不是官方支持的语言,导致很多人实际持观望态度。昨天的I/O大会上谷歌宣布Kotlin正式成为Android的官方语言。有句话叫做没图说个瘠薄,来2张高清大图先: 原本我是准备通

2017-05-19 22:21:52 55167 41

原创 Android性能优化全方面解析

目的公司的新需求终于解决完了,离测试和发布还有段时间,第一次体验了下没需求没bug的感觉,真是舒爽~然后翻了翻有什么可以学的。无意翻到了Android后期发展的五大趋势。一、性能优化。二、高级UI。三、JNI/NDK开发。四、架构师。五、RN开发。这也许将会是我的进阶趋势。早已知道在瓶颈期的我,似乎看到了突破的希望的。初级进阶中级也好,中级进阶高级也罢,现在的市场无非是根据经验规定的,根据能力的少之

2017-05-15 11:47:59 7688 6

原创 Android开发ViewDragHelper打造不一样的recyclerview

概述前面我有一篇是讲到了viewdraghelper,http://blog.csdn.net/sw950729/article/details/53352587。对viewdraghelper不了解,可以看完再说。有人说viewdraghelper这个不就是个手势处理类么,怎么打造不一样的recyclerview?不不不,不要小瞧所有的手势处理,包括那啥GestureDetector也是。但是本文

2017-05-08 11:06:12 6438 2

原创 Android开发Diffutils打造不一样的recyclerview

简述DiffUtil是recyclerview support library v7 24.2.0版本中新增的类,根据Google官方文档的介绍,DiffUtil的作用是比较两个数据列表并能计算出一系列将旧数据表转换成新数据表的操作。这个概念比较抽象,换一种方式理解,DiffUtil是一个工具类,当你的RecyclerView需要更新数据时,将新旧数据集传给它,它就能快速告知adapter有哪些数据

2017-04-11 14:08:38 9109 5

原创 android VLayout 全面解析

概述前不久,阿里新开源了2个东西,Atlas和vlayout。今天我来介绍下vlayout的使用。在介绍前,先抱怨两句,阿里放开源出来,感觉就是让我们这群人给他们找bug~~我曾遇到一个奇怪的问题,然后一直以为自己写的有问题,结果去down了官方demo跑了一下,结果官方的demo居然并没有做这个效果~不解!! 好了,话不多说,我会通过官方的介绍以及自己的写的demo一一介绍。先放上官方的gith

2017-03-28 13:18:51 35531 14

原创 android APK瘦身全面总结——如何从32.6M到13.6M

前言之前我简单介绍了关于svg图片瘦身的问题,在公司,瘦身这个问题是我提出来的,所以这锅我背了。公司项目是32.6M,我给自己的要求就是低于20M。上周花了一个星期瘦身,至于为什么花了一周,主要是svg适配问题我被搞蒙蔽了。然后发现还要改大量代码,想想也就算了,又换了另一种瘦身方法。 很多人是因为这标题而来的,怎么可能,32.6M的居然可以变成13.6M。下面容我慢慢道来。APK结构介绍class

2017-03-22 14:32:47 6748 6

原创 android APK瘦身大法——SVG图片瘦身

前两天和上家公司的上司无意聊了聊工作的事,也就顺便扯到了apk瘦身上。主要是通过SVG进行图片压缩来减少app的大小。下面我就详细介绍一下如何实现SVG的图片压缩。SVG的优点SVG 可被非常多的工具读取和修改(比如记事本),由于使用xml格式定义,所以可以直接被当作文本文件打开,看里面的数据;SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强,SVG 图就相当于保存了关键的

2017-03-13 16:32:34 3173 6

原创 android教你打造独一无二的刷新加载框架

其实早在去年七月,群里小伙伴就有让我共享这个。但我当时绝的技术不纯熟。代码有bug什么的。没有写出来。现在感觉整理的差不多了。就写出来让大家看看,有问题一起讨论解决。说到刷新加载,我们第一个想到啥,对了就是swiperefreshlayout,还有什么SuperSwiperefreshlayout,XRecyclerView等等。反正老多了,我还是之前那句话,不管用什么,我们需要知道他的原理。打造框

2017-03-05 21:47:45 5703 11

原创 你必须学会的okhttp——进阶篇

今天上一篇博客刚好在郭神公众号出现了。也有一个多月没写点什么了。今天就继上一次的okhttp继续深入了解把。在你必须学会的okhttp——入门篇中我简单介绍了okhttp的使用方法。不了解可以看完在回来看这篇文章。 好了。话不多说。这次我主要介绍下okhttp如何实现多文件断点下载。 参考博客:http://blog.csdn.net/KevinsCSDN/article/details/519

2017-01-11 10:21:02 6641 17

原创 android教你打造独一无二的图片加载框架

前言首先,最近是在忙okhttp没错。不过或许有人问为什么忙着okhttp怎么又扯到了图片加载上了。其实,最近想实现下断点续传以及多文件下载,但并不知道怎么搞。群里有小伙伴提出了控制线程池来实现。然后我就想到了图片加载需要控制线程池,所以在此巩固下。概述好了,进入正题了。优秀的图片加载框架不要太多,什么UIL,Picasso,Glide等等。但我们需要了解其中的原理。所以今天我来介绍下如何自己写一个

2016-12-08 20:32:02 3578 12

Diffutils详解

详解了recyclerview局部刷新那点事

2017-04-11

VLayout实例

这是关于阿狸开源项目vlayout的介绍

2017-03-28

独一无二的loadingview

出自博客:http://blog.csdn.net/sw950729/article/details/52239548。有问题博客留言

2016-08-18

独一无二的loading

独一无二的loading

2016-08-18

Progress实现

2016-03-30

Progress功能的实现

Progress功能的实现

2016-03-29

Progress的实现

Progress的实现

2016-03-28

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

TA关注的人

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