自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 碎阅:一款基于douban及ONE API开发的资讯类App

一款基于douban及ONE API开发的资讯类的开源项目。项目采取的是okhttp + MVP架构开发。Github地址:https://github.com/LRH1993/SuiYue一、效果图 二、简介碎阅分为三个主要模块:文章图书电影1.文章 API使用的是...

2018-03-16 09:37:55 452

原创 2017 Android秋招面试总结

很久没有更新博客了,一直在忙着找工作。现在已经尘埃落定,最终选择了网易。 这篇文章主要总结一下自己秋招的经历与准备。

2017-10-19 08:28:46 1770 3

原创 一篇文章,全面总结Android面试知识点

本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在Github/Gitbook,方便大家整理学习,文末附有链接。

2017-10-19 08:25:38 1211

原创 AutoFlowLayout:多功能流式布局与网格布局控件

近期工作需要用到流式布局,网上也有很多关于这方面的资料。发现流式布局与网格布局的自定义很有意思,是学习自定义控件的一个很好的方式,所以就撸了个几百行代码的控件,既实用又具有学习价值。一、AutoFlowLayout应用场景流式布局,在很多标签类的场景中可以用的;而网格布局在分类中以及自拍九宫格等场景很常见。如下所示: 如此使用频繁而又实现简单的控件,怎能不自己撸一个呢?控件,还是定制的好啊。

2017-08-09 09:23:32 705

原创 Android新手如何学习开发一款app?

毫无疑问,开发一款自己的App对于初学者来说,无论从技术学习,还是找工作(或者装x),都是一大利器。那么如何才能快速上手,开发一款属于自己的app。本篇文章仅以自己的一些经验给更多的Android新手一些建议。

2017-07-21 19:28:59 9795 5

原创 Eyepetizer-in-Kotlin:一款简约的小视频app,带你走进kotlin

Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin。作为紧跟潮流的弄潮儿,对kotlin稍做了解后,发现其有优秀的特性,所以就开始了学习,而Eyepetizer-in-Kotlin便是对kotlin进行学习后的阶段性成果。

2017-07-12 15:12:12 1830 4

原创 recyclerview_helper多功能封装,让你应用更加自如

RecyclerView作为列表使用,在项目中的应用场景实在是太普遍了。针对项目应用,主要使用了RecyclerView的单或多类型Item,点击/长按事件,ItemAnimator动画效果以及上拉加载、下拉刷新。recyclerview_helper就是针对以上应用场景进行的封装与使用,避免在项目使用中重复的敲代码以及依赖多个库或者自定义实现等复杂方式。Github地址:recyclerview

2017-05-26 14:47:48 1076

原创 SmartRecom:一款干货满满,助你进阶的App项目

SmartRecom是一款基于行为设别和个性化推荐的电影与音乐播放器。咋一听很高大上,哈哈,不过行为识别和个性化推荐的功能目前还不完善,暂时忽略。 本着学习Android技术的目的,SmartRecom使用了多款流行开源框架,以及Android中一些重要的技术点。在做SmartRecom的过程中,抱着边做边学的态度,每遇到一个问题,就进行实际解决并以写作技术文章的形式来帮助自己加深对这些技术的理解

2017-05-22 19:25:14 1312 2

原创 RxLifecycle详细解析

一、介绍RxLifeCycle目的:解决RxJava使用中的内存泄漏问题。例如,当使用RxJava订阅并执行耗时任务后,当Activity被finish时,如果耗时任务还未完成,没有及时取消订阅,就会导致Activity无法被回收,从而引发内存泄漏。为了解决这个问题,就产生了RxLifeCycle,让RxJava变得有生命周期感知,使得其能及时取消订阅,避免出现内存泄漏问题。二...

2018-07-08 10:31:54 899 1

原创 Android路由方案ARouter分析

一、路由方案原生的路由方案缺点:显式:直接的类依赖,耦合严重隐式:规则集中式管理,协作困难Manifest扩展性较差跳转过程无法控制失败无法降级ARouter的优势:使用注解,实现了映射关系自动注册 与 分布式路由管理编译期间处理注解,并生成映射文件,没有使用反射,不影响运行时性能映射关系按组分类、多级管理,按需初始化灵活的降级策略,每次跳转都会回调跳转...

2018-07-01 17:12:35 526

原创 Android多渠道打包相关介绍

一、多渠道打包概述由于国内存在着有众多的应用市场,在不同的应用市场可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的各种效果。因此,每当发新版本时,市场会提供一个渠道列表,Android RD会根据这些渠道相应地生成等量的渠道包。随着渠道越来越多,为了提...

2018-06-23 08:42:22 374

原创 ScrollView嵌套RecyclerView滑动冲突相关问题

最近实际应用中遇到了滑动冲突的相关问题,在解决过程中,有些需要注意的问题,特别记录一下。一、应用场景在解决具体问题之前,先介绍下实际应用场景及问题状况。 从图中可以看出,一个ScrollView内部嵌套三个RecyclerView,其中两个RecyclerView是横向,一个RecyclerView是纵向。在这个场景下,出现了滑动冲突问题,主要表现为横向Recycle...

2018-03-14 14:35:13 594

原创 从google todo-mvp示例再次学习MVP

已经使用了一段时间的MVP模式,今天再以google官方的安卓架构示例todo-mvp为例,再次学习MVP模式。一、MVP简介Model: 数据层,负责与网络层和数据库层的逻辑交互。View: UI层,显示数据, 并向Presenter报告用户行为。Presenter: 从Model拿数据,应用到UI层,管理UI的状态,响应用户的行为。二、MVP优势在学习t...

2018-02-28 15:09:51 430

原创 Vue封装Swiper实现图片轮播

图片轮播是前端中经常需要实现的一个功能。最近学习Vue.js,就针对Swiper进行封装,实现一个简单的图片轮播组件。一、Swiper在实现封装之前,先介绍一下Swiper。Swiper是纯Javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。Swiper能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。Swiper开源、免费、稳定、使用简单、功能强

2018-02-06 15:27:08 2555

原创 简单理解Vue中的nextTick

Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下。其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick。一、示例先来一个示例了解下关于Vue中的DOM更新以及nextTick的作用。模板div class="app"> div ref="msgDiv">{{msg}}div>

2018-01-30 10:38:53 2800

原创 JavaScript异步机制详解

学习JavaScript的时候了解到JavaScript是单线程的,刚开始很疑惑,单线程怎么处理网络请求、文件读写等耗时操作呢?效率岂不是会很低?随着对这方面内容的了解和深入,知道了其中的奥秘。本篇文章就主要讲解一下JavaScript怎么处理异步问题。一、同步与异步在介绍JavaScript的异步机制之前,首先介绍一下:什么是同步?什么是异步? 同步如果在函数返回的时

2018-01-26 15:19:16 1691

原创 CSS3的动画属性

transition、animation和transform是CSS3中三个制作动画的重要属性,本篇文章主要对其进行学习了解。

2017-12-26 22:11:21 612

原创 CSS Flexbox详解

Flexbox是一个强大而灵活的布局,本篇文章主要对其进行学习了解。

2017-12-24 09:38:31 441

原创 FloatingDragButton:炫酷的拖拽浮动按钮

IOS的Assistive Touch效果很炫酷,可以任意拖拽,同时点击后会展开菜单栏。然而,这不只是IOS的特权,Android也可以实现。但是由于悬浮窗需要申请权限,所以本文仅在app内实现,可以任意拖拽,并可以响应点击事件。一、效果图 效果还是不错的。上图看出虽然没有像IOS一样弹出菜单栏,仅仅以Toast和旋转动画的效果代替了(因为太懒了,更炫酷的效果交给你们的想象了)。但是确实支持点击

2017-08-10 20:05:33 2717

原创 Android插件化入门指南

最近在了解公司的项目,第一次接触Android插件化,了解其重要性,于是就开始了插件化的学习。本篇文章把插件化入门过程中的一些技术点整理下来,方便一些初入门的同学一起学习。一、Android插件化介绍1.含义所谓插件化,就是让我们的应用不必再像原来一样把所有的内容都放在一个apk中,可以把一些功能和逻辑单独抽出来放在插件apk中,然后主apk做到[按需调用],这样的好处是一来可以减少主apk的体积

2017-07-01 11:58:37 677

原创 手把手教你使用 RxJava 2.0(三)

本节介绍的是关于Flowabale的使用,以及RxJava 2.x中的backpressure的处理策略。这部分内容应当是RxJava 2.x中改动最大的一部分。但同时也能解决一些应用场景中的问题,使得我们的RxJava更加强大。Flowable的产生在RxJava中会经常遇到一种情况就是被观察者发送消息十分迅速以至于观察者不能及时的响应这些消息。 例如下面这种情况:Observable.cre

2017-06-02 10:03:00 911

原创 手把手教你使用 RxJava 2.0(二)

本篇文章主要介绍线程调度器,通过对线程调度器的了解,方便我们更好的处理异步操作,在合适的场景选择合适的线程。同时,结合上篇文章,我们就初步掌握了 RxJava 2.x的基本操作并可以应用在我们的项目中。在本篇文章的后半部分,会具体展示RxJava 2.x的使用。Scheduler简介在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线

2017-06-02 09:59:17 751

原创 手把手教你使用 RxJava 2.0(一)

网上有很多关于RxJava的技术文章,大多数是关于1.x版本的。随着 RxJava 2.0 的推出,有些文章也介绍了2.x版本新增的内容以及与1.x版本的对比。有些同学如果刚刚接触RxJava,仅仅看RxJava 1.x 的一些技术文章,有时候会有些出入。因此本篇文章基于RxJava 2.0 进行由浅入深的学习,逐步掌握RxJava。1.作用RxJava的目的就是异步。 RxJava的特点就是可

2017-06-02 09:55:43 1611 4

原创 设计模式详解——模版方法模式

本篇文章介绍一种设计模式——外观模式。本篇文章内容参考:《JAVA与模式》之模板方法模式,模板方法模式深度解析(三)。一、模版方法模式的定义模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。二、模版方法模式的结构

2017-06-02 09:50:45 551

原创 设计模式详解——装饰者模式

本篇文章介绍一种设计模式——装饰者模式。装饰者模式在Java中的典型应用就是IO流,在本篇文章中将有详细介绍。本篇文章内容参考《JAVA与模式》之装饰模式。一、装饰者模式的概念装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。二、装饰者模式的结构

2017-06-02 09:47:50 617

原创 设计模式详解——外观模式

本篇文章介绍一种设计模式——外观模式。本篇文章内容参考《JAVA与模式》之门面模式,外观模式,深入浅出外观模式(二)。一、外观模式概述1.定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。2.定义阐

2017-06-02 09:45:21 525

原创 设计模式详解——适配器模式

本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之适配器模式,Android设计模式源码解析之适配器(Adapter)模式。一、适配器模式简介1.定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2.定义阐述适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是

2017-06-02 09:43:57 453

原创 设计模式详解——命令模式

本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。一、命令模式的概念命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,具有请求排队或者记录请求日志,提供命令的撤销和恢复的功能。命令模式可以将请求发送者和接收者完全解耦,发送

2017-06-02 09:42:14 435

原创 设计模式详解——观察者模式

本篇文章介绍一种设计模式——观察者模式。观察者模式在Android中有着很多的应用,如按钮监听,接口回调以及很多流行框架(RxJava,EventBus)中使用。本篇文章内容参考《JAVA与模式》之观察者模式。一、观察者模式的概念观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)

2017-06-02 09:40:42 316

原创 设计模式详解——工厂模式(三)

本篇文章介绍一种设计模式——工厂模式。工厂模式是用来封装对象的创建,减少应用程序和具体类之间的依赖,促进松耦合。根据工厂模式的应用特性,一共分为三种子模式:简单工厂模式,工厂方法模式和抽象工厂模式。本篇文章主要介绍抽象工厂模式。本篇文章内容参考抽象工厂模式,【原】从头学习设计模式(四)——抽象工厂模式。一、抽象工厂模式简介1.定义抽象工厂模式(Abstract Factory Pattern):提

2017-06-02 09:38:48 512

原创 设计模式详解——工厂模式(二)

本篇文章介绍一种设计模式——工厂模式。工厂模式是用来封装对象的创建,减少应用程序和具体类之间的依赖,促进松耦合。根据工厂模式的应用特性,一共分为三种子模式:简单工厂模式,工厂方法模式和抽象工厂模式。本篇文章主要介绍工厂方法模式。本篇文章内容参考工厂方法模式,【原】从头学习设计模式(三)——工厂方法模式。一、工厂方法模式简介1.定义工厂方法模式(Factory Method Pattern)又称为工

2017-06-02 09:36:57 528

原创 设计模式详解——工厂模式(一)

本篇文章介绍一种设计模式——工厂模式。工厂模式是用来封装对象的创建,减少应用程序和具体类之间的依赖,促进松耦合。根据工厂模式的应用特性,一共分为三种子模式:简单工厂模式,工厂方法模式和抽象工厂模式。本篇文章主要介绍简单工厂模式。本篇文章内容参考《JAVA与模式》之简单工厂模式。一、简单工厂模式简介1.定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static

2017-06-02 09:35:07 532

原创 设计模式详解——迭代器模式

本篇文章介绍一种设计模式——迭代器模式。本篇文章内容参考:《JAVA与模式》之迭代子模式, 23种设计模式(13):迭代器模式一、迭代器模式定义迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。二、迭代器模式结构 迭代器模式涉及到以下几个角色:  ●  抽象迭代器(Iterator

2017-06-02 09:33:31 831

原创 设计模式详解——单例模式

本篇文章介绍一种设计模式——单例模式。本文参考文章:《JAVA与模式》之单例模式,如何正确地写出单例模式。一、单例模式1.定义作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。2.特点单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。二、创建单例模式的方式①懒汉式,线程不安全懒汉式其实是一种比

2017-06-02 09:31:32 538

原创 设计模式详解——策略模式

从本篇文章开始将开始一些列对Java设计模式的学习。Java设计模式是前任总结的优秀的经验,是编写高质量代码的学习指南。本篇文章介绍第一种设计模式——策略模式。本篇文章内容参考《JAVA与模式》之策略模式。一、策略模式的简介1.定义策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生

2017-06-02 09:29:54 798

原创 一次完整的HTTP请求与响应涉及了哪些知识?

本文以HTTP请求和响应的过程来讲解涉及到的相关知识点。一、 HTTP请求和响应步骤 图片来自:理解Http请求与响应以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。二、TCP/IP协议TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的

2017-05-25 12:40:28 5099

原创 由浅入深理解java集合(五)——集合-Map

前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap。关于Map的一些通用介绍,可以参考第一篇文章。由于Map与List、Set集合的某些特性有重合,因此观看本篇文章的会参考到之前的一些内容,最下方有链接。如果已经有这方面的基础,那么对Map的学习将会事半功倍。HashMapHashMap 是一个散列表,它存储的内容

2017-05-25 12:35:56 702

原创 由浅入深理解java集合(四)——集合-Queue

今天我们来介绍下集合Queue中的几个重要的实现类。关于集合Queue中的内容就比较少了。主要是针对队列这种数据结构的使用来介绍Queue中的实现类。Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。 这种结构就如同我们生活中的排队一样。下面

2017-05-25 12:33:47 566 1

原创 由浅入深理解java集合(三)——集合-List

第一篇文章中介绍了List集合的一些通用知识。本篇文章将集中介绍了List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList。一、List集合关于List集合的介绍及方法,可以参考第一篇文章。List集合判断元素相等的标准List判断两个对象相等只要通过equals()方法比较返回true即可(关于equals()方法的详解可以

2017-05-24 15:47:48 744

原创 由浅入深理解java集合(二)——集合-Set

上一篇文章介绍了Set集合的通用知识。Set集合中包含了三个比较重要的实现类:HashSet、TreeSet和EnumSet。本篇文章将重点介绍这三个类。一、HashSet类HashSet简介HashSet是Set接口的典型实现,实现了Set接口中的所有方法,并没有添加额外的方法,大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算法来存储集合中的元素。因此具有很好的存取和查找

2017-05-24 15:37:41 1006 1

空空如也

空空如也

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

TA关注的人

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