追根溯源--探究Handler的实现原理 一、初识Handler要分析一个框架的源码,首先需要了解它的使用。我们就从最基础的知识开始吧! 场景1:将数据从子线程发送到主线程。我们知道Android系统中更新UI只能在主线程中进行。而通常网络请求实在子线程中进行的。在获取到服务器数据后我们需要切换到主线程来更新UI。通常在这种情况下我们会考虑使用Handler来进行线程切换。我们来模拟一个网络请求,并通过Handler将数据发送出去: 12 2017-09-10 源码分析 源码分析
Android夜间模式实现方案 对于一款阅读类的软件,夜间模式是不可缺少的。最初看到这个需求时候觉得无从下手,没有一点头绪。后来通过查阅资料发现Android官方在Support Library 23.2.0中已经加入了夜间主题。也就是只需要通过更换主题便可实现日间模式和夜间模式的切换。下面截取项目实现的夜间模式效果图:效果看起来还比较nice,没有闪屏,过度也比较平滑。那么项目中的这个日间、夜间模式切换效果是如何实现的呢?下面 2017-07-27 Android 夜间模式
RxJava+Retrofit之token自动刷新(二) 上篇文章主要对Retrofit做了封装,使之使用起来更加方便。在之前的封装中token过期再次刷新token后需要手动调用之前的请求,这种处理方式不够优雅,因此,在原有的基础上,本篇文章将基于上篇文章的封装并优化Token验证机制。使之能够实现过期自动刷新并重新调用请求。接下来将通过以下几个小节来学习如何实现token验证。 为什么要引入token机制 token机制的验证流程 RxJava+ 2017-07-27 Android RxJava Retrofit token
RxJava+Retrofit完美封装(一) 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 要说2016年最火的Android技术是什么,毫无疑问肯定是RxJava+Retrofit+Mvp。现如今2017年也已经过了快一半了。相信做android开发的小伙伴对RxJava和Retrofit也不再陌生。即使没有刻意的去学习过,也应该对RxJava和Retrofit有个一知半解。去年的时候学习了Rxjava和Retrofi 2017-04-30 Android RxJava Retrofit
BaseActivity中封装通用的Toolbar 之前写过一篇关于如何使用Toolbar的文章,最近在搭建新项目时对Toolbar做了封装。封装的预期目标是只在BaseActivity中引入Toolbar,然后子Activity通过继承BaseActivity就能显示Toolbar。接下来就看看如何实现这样的功能。因为我们使用toolbar作为titlebar,因此首先需要去掉Actionbar。在style文件下修改默认Theme的parent 2017-04-28 Android
自定义View之颜色渐变折线图 首先看下要实现的效果图。折线图的绘制主要有一下几个步骤。一、定义LineChartView类并继承View。二、添加自定义属性。以在value目录下创建attrs.xml文件,文件中我们可以定义一些用到的属性,比如折线颜色、字体大小等属性。文件内容如下: 12345678910<?xml version="1.0" encoding="utf-8"?& 2017-03-16 自定义View 自定义View
Android搜索关键字高亮显示及开发中遇到的坑 公司项目中有一个搜索功能,需求是要把搜索关键字高亮显示出来。本来觉得是一个很简单的问题,开发过程也比较顺利。但在测试阶段还是出了些Bug。而且有些问题还挺莫名其妙!最初的想法,定义一个工具类,然后封装一个处理高亮的方法,需要高亮显示的直接调用这个工具类就行了。工具类封装了一个matcherSearchContent()的静态方法,然后用SpannableStringBuilder去处理关键字高亮显 2016-12-15 Android
RecyclerView/ListView嵌套CheckBox选中状态错乱解决方案 在讨论这个问题之前应该先了解ListView的复用机制ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再为每一个Item都创建一个View对象,必将占用很多内存,创建View对象(mInflater.infla 2016-09-25 Android RecyclerView ListView
由浅入深理解Android中的回调机制 什么是接口回调?来先看看接口回调的定义吧:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。什么意思?反正我是没看懂,哈哈(#黑线),这么官方的话还是不要看的好,不如看一个具体的例子。话说有一天,奥巴马下达命令,让美国空军派轰炸机前去轰炸恐怖分子基地,并要求空军完成任务后通报轰炸详情。下达完命令后呢,奥巴马不会坐那干等空军电报吧,再说奥黑 2016-07-28 Java基础 callback
浅析Java设计模式(三) 本篇文章继续来学习Java的设计模式,这篇文章来解析行为型模式种的几种比较常用的设计模式。 一、观察者模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己。以微信推送腾讯新闻为例,用户在微信订阅了腾讯新闻后,用户会收到腾讯的新闻推送。如果用户取消了新闻订阅,那么就不会再收到推送。观察者模式定义 2016-07-26 设计模式 设计模式