自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 静态代理这么用?剖析BannerViewPager中Indicator的设计思想

很高兴又和大家见面了,本篇文章是《BannerViewPager系列》的第三篇。就在不久前BannerViewPager发布了2.5.0版本,在这个版本中针对Indicator部分的代码进行了重构。本篇文章带大家一起来了解下本次重构Indicator中用到的设计思想,顺便回顾及加深认识一下静态代理...

2019-11-24 12:05:21

阅读数 85

评论数 0

原创 打造一个丝滑般自动轮播无限循环Android库

最近公司项目在升级AndroidX,由于项目中用到的一些比较老的库都已停止更新维护,因此需要将这些库替换掉,其中就包括自动轮播的Banner库。恰逢笔者在之前写过一个轮播图,因此就在此基础上重构,打造出了一个全新的支持多种样式的轮播库---[BannerViewPager](https://git...

2019-09-01 22:14:13

阅读数 384

评论数 0

原创 Java编译时注解处理器(APT)详解

上篇文章我们使用注解+反射实现了一个仿ButterKnife功能的示例。考虑到反射是在运行时完成的,多少会影响程序性能。因此,ButterKnife本身并非基于注解+反射来实现的,而是用Annotation Processor在编译时处理注解的。Annotation Processor是javac...

2019-08-24 03:18:44

阅读数 8842

评论数 3

原创 学不动也要学!探究Fragmen延迟加载的前世今生

上周在[《学不动也要学!深入了解ViewPager2》](https://juejin.im/post/5df4aabe6fb9a0161104c8eb)一篇文章的留言中,大家普遍对于Fragment懒加载的问题比较关心。其实,对于Fragment懒加载问题的处理由来已久,网上不乏相关的优秀文章。...

2020-01-02 17:31:50

阅读数 51

评论数 1

原创 学不动也要学!深入了解ViewPager2

就在上个月20号(2019年11月20号),期待已久的ViewPager2 1.0.0正式版终于发布了!不知道你是否已经蠢蠢欲动着手去改造你项目的ViewPager了?什么?你还不知道什么是ViewPager2?那么请你马上系好安全带,本篇文章将带你一览ViewPager2的风采。 一、ViewP...

2019-12-14 16:47:19

阅读数 177

评论数 0

原创 干货满满,整理给程序员的十五款开发利器

一、文档篇 1.PDF神器–Easy PDF 2.在线文档编辑器–腾讯文档 3.笔记与文档知识库–语雀 4.JSON处理工具–Bejson 二、图片篇 1.GIF神器–ezgif 2.图片压缩神器–TinyPNG 3.在线作图–ProcessOn 4.Android .9阴影图生成器–Androi...

2019-12-05 00:27:23

阅读数 97

评论数 0

原创 这可能是全网最好用的Banner轮播库

自上篇文章《打造一个丝滑般自动轮播无限循环Android库》发布之后BannerViewPager又迎来了众多功能更新(还不了解BannerViewPager的同学可以戳上边链接查看)。现在的BannerViewPager已经具有非常丰富的API接口,同时可以支持市面上百分之九十以上的样式。还不了...

2019-11-15 23:19:10

阅读数 98

评论数 0

原创 RecyclerView/ListView嵌套CheckBox选中状态错乱解决方案

在讨论这个问题之前应该先了解ListView的复用机制 ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再...

2019-09-22 17:51:31

阅读数 8302

评论数 4

原创 基于Arouter的路由实现方案

这本是一篇应该写在去年的文章,但仅仅因为...懒,这篇文章在草稿箱里静静的躺了一年多,被无限期推迟到了现在。最近刚好完成了公司项目的路由改造,借此机会来对这篇文章做一个了结。 # 一、为什么要在项目中引入路由? 在开始之前我们先来思考一下这个问题。为什么要在项目中引入路由?相信大家的答案可能会有...

2019-09-18 01:33:29

阅读数 60

评论数 0

原创 BannerViewPager源码剖析

产品的需求千变万化,你永远也猜不到下一步产品会给你提一个什么样的需求。因此对于一个比较人性化的Banner库来说,它也应该支持开发者去自定义任意的Item页面布局。BannerViewPager就是本着这样的思路来做的。那么究竟其内部是如何实现的呢?

2019-09-08 15:06:16

阅读数 165

评论数 0

原创 手撕黄油刀--探究ButterKnife实现原理

上篇文章我们提到属性动画中由一个setInterpolator(TimeInterpolator value)的方法,这个方法是为动画设置一个插值器,可以去控制动画的速率,那么本篇文章就承接属性动画继续探究属性动画插值器用法。 插值器的用法非常简单,系统给我们提供了setInterpolator(...

2019-08-26 10:02:12

阅读数 56

评论数 0

原创 Android动画那些事儿---属性动画(Property Animation)

上篇文章详细讲解了视图动画,也提到了视图动画存在的先天不足,即补间动画不具有交互性。动画改变的只是显示效果,其响应事件却依然还在原来的位置。在Android3.0之后引入了属性动画, ...

2019-08-19 15:48:01

阅读数 42

评论数 0

原创 Android动画那些事儿---视图动画(View Animation)

在Android系统中,谷歌提供了大量的动画Api来满足开发者产品中各式各样的动画需求。从Android 2.0时期的View动画到Android3.0时期的属性动画,再到Android5.0之后引入的转场动画以及后来为了能够让开发者快捷的实现弹性动画在support25中引入的SpringAni...

2019-07-20 04:01:55

阅读数 48

评论数 0

原创 我回来啦

差不多快一年没写过博客了,这段时间挺颓废,没有学习也没有进步,将近一年的时间止步不前。这样的日子不是我想要的。我的生活应该是充满激情,充满奋斗的!从今天起对安逸的日子说拜拜! ...

2019-07-19 22:34:31

阅读数 37

评论数 0

原创 Android面试题总结

Handler机制原理 https://blog.csdn.net/qq_20521573/article/details/77919141 Activity相关问题 1. Activity的生命周期 1)启动Activity:系统会先调用onCreate方法,这是生命周...

2018-09-08 19:14:40

阅读数 266

评论数 0

原创 Java基础面试题总结

上篇文章我们实现了LockView的弹性滑动效果,那么本篇文章我们承接上篇来实现LockView的中心View。当然,LockView上下的两个圆也是自定义View,但是由于过于简单,我们就不再讲解了。 那么对于中心View的实现,主要有一下点: - 一.定义CircleWaveView...

2018-09-08 02:08:30

阅读数 246

评论数 1

原创 Java自定义注解在Android中的实例应用

Java注解在我们项目开发 中是非常常见的。比如经常用到的几种java内置的注解: @Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,表示当前方法即将废弃,不推荐使用。 @SuppressWarnings,表示忽略编译器的警告信...

2018-08-25 18:34:47

阅读数 440

评论数 0

原创 自定义View之弹性滑动的LockView

本篇文章我们来实现一个带有弹性滑动效果的自定义View。当然,文章的侧重点依然是自定义View。但是还会涉及到一些其他方面的知识,比如View的事件分发以及如何实现带有弹性的滑动。还是老规矩,看下最终实现效果。 ...

2018-07-14 20:30:41

阅读数 727

评论数 5

原创 Android列表小部件(Widget)开发详解

Widget是Android应用小部件,它可以作为一个微型视图嵌套在其他应用程序中(比如可以放置在桌面),并接收周期性更新。通常来说,小部件可以通过与App交互更方便的将App的内容展示给用户,同时它也是App的一个便捷入口。本篇文章来一起来探讨Android小部件的相关知识,并通过一个在Widg...

2018-06-21 13:35:28

阅读数 10891

评论数 11

原创 当Retrofit遇上HTTPS--关于HTTPS的那些事

* 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 由于前不久苹果公司已经强制IOS应用必须使用HTTPS协议开发,虽然Google没有强制开发者使用HTTPS,但相信不久的将来Android也会跟随IOS全面转向HTTPS。因此,HTTPS的学习也是相当重要。本篇文章涉及到...

2018-02-12 01:24:11

阅读数 3908

评论数 5

原创 (三)Rxjava2+Retrofit之文件上传与下载

* 本文同步发表在简书,转载请注明出处。 上篇文章主要对Retrofit做了封装,使之使用起来更加方便。本篇文章将根据上篇文章的封装架构实现文件上传服务器的功能。文章将从以下几点实现对Retrofit上传文件的讲解 一 使用Retrofit上传文件时遇到的坑 二 实现单文件上传的两种方法 三 ...

2017-10-26 17:45:01

阅读数 1838

评论数 13

原创 Android消息机制—— Handler实现原理深度解析

一、Handler的使用场景 Android系统中更新UI只能在主线程中进行,如果在子线程中访问UI程序会抛出CalledFromWrongThreadException的异常。而且Android又不建议在主线程中进行耗时操作,不然有可能会出现ANR问题。因此对于像网络请求、数据库查询这样的...

2017-09-10 02:27:27

阅读数 611

评论数 0

原创 Android夜间模式的实现方案

对于一款阅读类的软件,夜间模式是不可缺少的。最初看到这个需求时候觉得无从下手,没有一点头绪。后来通过查阅资料发现Android官方在Support Library 23.2.0中已经加入了夜间主题。也就是只需要通过更换主题便可实现夜间模式的切换。下面截取项目实现的夜间模式效果图: 效果看起来...

2017-07-27 23:45:44

阅读数 14482

评论数 23

原创 (二)Rxjava2+Retrofit之Token自动刷新

* 本文同步发表在简书,转载请注明出处。 上篇文章主要对Retrofit做了封装,使之使用起来更加方便。在之前的封装中token过期再次刷新token后需要手动调用之前的请求,这种处理方式不够优雅,因此,在原有的基础上,本篇文章将基于上篇文章的封装并优化Token验证机制。使之能够实现过期自动...

2017-07-27 00:34:26

阅读数 7663

评论数 5

原创 (一)Rxjava2+Retrofit完美封装

* 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 要说2016年最火的Android技术是什么,毫无疑问肯定是RxJava+Retrofit+Mvp。现如今2017年也已经过了快一半了。相信做android开发的小伙伴对RxJava和Retrofit也不再陌生。即使没有刻意...

2017-04-30 03:29:43

阅读数 21714

评论数 28

原创 BaseActivity中封装通用的Toolbar

之前写过一篇关于Toolbar的文章,最近在搭建新项目时对Toolbar做了简单的封装。封装的预期目标是只在BaseActivity中引入Toolbar,然后子Activity通过继承BaseActivity就能显示Toolbar。话不多说,看看效果如何实现。 因为我们使用toolbar作为ti...

2017-04-28 23:35:33

阅读数 6165

评论数 3

原创 建造者模式打造随心所欲的Android对话框

可能有人要说不就是自定义dialog吗,网上一搜案例demo多得是,而且也不难,没什么好讲的。确实百度一下自定义的dialog数不胜数。但是大多数文章都是单一的布局实现单一的样式。假如说项目中有多个不同布局的dialog,比如三种、五种甚至十种,当然我只说假如。如果你的项目只有一种样式的对话框。那...

2017-04-15 00:11:45

阅读数 600

评论数 0

转载 【Android 性能优化】—— 详解内存优化的来龙去脉

APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精。 本文是【Android 性能优化】系列的第二篇文章,我们在第一篇【Android 性能优化】—— UI篇中主要介绍了Android界面的优化的原理以及方法,这...

2017-04-13 23:09:46

阅读数 1178

评论数 0

转载 【Android 性能优化】—— UI篇

原文链接:http://m.blog.csdn.net/article/details?id=61920222 1. 前言 随着最近几年移动市场蓬勃发展,引来大批人员投入到Android、IOS的开发前线,与此同时全国各大培训机构每月都培养出成千上万名号称拥有2到3年工作经验的开发者。当然,这...

2017-03-27 16:33:56

阅读数 660

评论数 0

原创 自定义View之颜色渐变折线图

首先看下要实现的效果图,图片录制效果不好,渐变颜色没有完全显示出来,以至于下半部分渐变色变成了白色。 一、定义LineChartView类并继承View。 二、添加在定义属性。以在value目录下创建attrs.xml文件,文件中我们可以定义一些用到的属性,比如折线颜色、字体大小等属性。文...

2017-03-16 14:14:16

阅读数 3500

评论数 9

原创 Android 搜索关键字高亮显示及开发中遇到的坑

公司项目中有一个搜索功能,需求时要把搜索关键字高亮显示出来。本来觉得是一个比较简单的问题,开发过成也比较顺利。但在测试阶段还是出了些问题。而且有些问题还挺莫名其妙!下面分析开发中遇到的几个问题。最初的想法,定义一个工具类,然后封装一个处理高亮的方法。嗯!没问题,就这样! /** * Create...

2016-12-15 14:53:52

阅读数 2847

评论数 7

原创 Android数据库SqLite实现增删改查

数据库操作的一般流程有以下步骤: 1.首先,写一个自己的数据库操作帮助类,这个类继承自Android自带的SQLiteOpenHelper. 2.在自己的DAO层借助自己的Helper写数据库操作的一些方法 3.Activity调用DAO层的数据库操作方法进行操作下面通过一个存储搜索记录的简...

2016-12-12 17:10:03

阅读数 386

评论数 0

原创 ExpandableListView实现可展开的ListView

最近朋友公司的一个项目中用到了一ListView的Item嵌套ListView的功能,朋友向我求助这种效果该怎么实现。ListView嵌套ListView的情况在实际开发中用到的还是比较多的。谷歌也给了我们一个这样的控件叫ExpandableListView,它可以实现item的展开效果。Expa...

2016-09-26 00:16:47

阅读数 2565

评论数 0

原创 Android中的CoordinatorLayout初体验

之前写过一篇关于material design控件的文章《Android中的Toolbar详解》,本篇文章将继续介绍material design中一个最重要的控件CoordinatorLayout。 CoordinatorLayout,音:靠迪内特雷奥特;意:协调者布局。它是support.d...

2016-09-17 23:39:00

阅读数 1452

评论数 0

原创 EventBus在项目中的简单应用

首先来了解下EventBus EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(P...

2016-09-07 01:45:36

阅读数 1693

评论数 0

原创 自定义View之继承ViewGroup

今天来完成一个自定义View继承ViewGroup的实例。先看效果图,如下: 该自定义View中有三个子控件组成,分别是TextView、EditText和ImageView。当EditText为空时不显示ImageView,当EditText不为空时显示ImageView,此时点击Imag...

2016-08-02 21:21:11

阅读数 684

评论数 0

原创 自定义View之自定义圆

通过一个简单的实例来了解自定义View的流程 新建CircleView继承View,并重写onDraw方法package com.example.smily.customview01;import android.content.Context; import android.content.r...

2016-08-01 14:41:19

阅读数 276

评论数 0

原创 自定义View之onMeasure()方法

在学习自定义View之前先对onMeasure()方法做下了解。 1.为什么要重写onMeasure()方法? 我们拿一个例子来看。自定义一个MyView类并继承View,代码如下:package com.example.smily.myview;import android.content....

2016-08-01 12:26:15

阅读数 302

评论数 0

原创 RecyclerView/ListView嵌套CheckBox选中状态错乱解决方案

在讨论这个问题之前应该先了解ListView的复用机制 ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再为...

2016-07-30 16:35:00

阅读数 775

评论数 0

原创 由浅入深理解Android中的回调机制

什么是接口回调?来先看看接口回调的定义吧:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。什么意思?反正我是没看懂,哈哈(#黑线),这么官方的话还是不要看的好,不如看一个具体的例子。

2016-07-28 14:08:42

阅读数 1264

评论数 2

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