7 Silly_Monkey

尚未进行身份认证

Github:https://github.com/liuyanggithub

等级
TA的排名 7w+

悬浮窗一个怎么够?微信新版本满足你的一心多用

在你看公众号文章的时候有没有这样的烦恼?正在看文章--->来了消息--->想退出去回--->待会儿又要重新找。这可真是要逼死人,岂不是我要看完了才退出去。所以微信在之前的版本,加入了悬浮窗功能。点击右上角或者左滑,可以将当前文章缩小为一个悬浮窗,之后在任意地方再点击就可以随时回去。不过呢,对于同时想看多个文章的我,这还有一个问题,...

2019-07-19 10:28:07

What?EventBus的核心竟然只是这两个Map?

简单介绍一下EventBus其实EventBus大家都很熟悉了,就不过多去说它了。通常我们叫它事件总线,其实它更像是广播,观察者模式,一方发送消息多方接收。在EventBus的创建订阅过程中,最重要的就是有两个关键的Map,这两个键值对里面存储了我们定义的订阅方法和相关的类,那到底是具体是怎么操作的呢,来源码一探究竟。下面的代码基于EventBus3.1.1创建和订阅消息注册Even...

2019-04-26 11:47:22

Retrofit2.5怎么做到网络请求的处理的?

Retrofit对请求方法的解析Retrofit对我们在接口类中定义的方法是如何转换成了请求,又如何处理响应。这一切都在它的loadServiceMethod方法中代码基于Retrofit2.5.0 ServiceMethod<?> loadServiceMethod(Method method) { ServiceMethod<?> result = ...

2019-04-08 14:19:49

Retrofit2.5是如何解析在接口类中定义的方法?

前言Retrofit的核心在于它的create方法中使用了动态代理,在这里面主要是loadServiceMethod方法:以下代码基于Retrofit2.5.0(跟2.3.0代码存在明显不同) public <T> T create(final Class<T> service) { //省略无关代码 return (T) Proxy.newPr...

2019-04-03 16:14:14

Retrofit是如何创建的?为什么要用动态代理

Retrofit的出现让Android的网络请求变得异常简单,同时可以很好的配合后台的REST接口。非常值得我们去探究一下它的原理。Retrofit的使用通常我们是Retrofit是和Rxjava配合使用,这里我们不做用法上的过多研究,主要看原理,所以下面的代码都是Retrofit的自身API,没有用Rxjava。下面是一个普通get请求1.新建接口新建接口API.java文件:p...

2019-04-02 09:52:18

一个线程可以有几个Looper?几个Handler?从Looper.prepare()来看看关于Looper的一些问题

前言之前我有篇文章里面写到了Android的消息机制,Handler发送消息的一些原理。链接如下:从Handler.post(Runnabler)再一次梳理Android的消息机制(以及handler的内存泄露)在消息机制里面,有一个非常重要的东西,那就是Looper,Looper的作用主要是从消息队列里面取出消息交给Handler处理,不过不仅限于此,在这里面还有很多东西值得我们去...

2019-02-18 11:06:14

解决RecyclerView在ScrollView中会置顶它上面的控件

通常情况下,需要在RecyclerView上加布局可以通过自己定义adapter然后add header来添加。但是也还有一种方法来实现,那就是用ScrollView来嵌套,比如这样的代码:<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"...

2019-02-14 10:56:14

底部Tab+FrameLayout嵌套CoordinatorLayout+Viewpager切换时布局错乱

顶部伸缩效果现在要实现这么一个效果,有一个标题栏(或者其他控件),下面是tablayout+viewpager,然后在viewpager里面的内容滑动的时候tab悬浮,有点像微博热搜的界面####向下滑动之前####向下滑动之后CoordinatorLayout实现头部布局滑动时隐藏在5.0之后,Google推出了一系列md控件,其中用的最多的就是CoordinatorLayout,...

2019-01-19 15:54:41

OkHttp3.9拦截器原理与区别

接上回传送门上回我们讲到,OkHttp的请求过程中有个非常重要的东西-“拦截器”,而且拦截器又分为interceptors和networkInterceptors两种,那它们具体有何区别呢?又要怎么来使用?现在来一探究竟拦截器工作原理在弄清楚区别之前,要先知道他们工作的原理,还是来到RealCall.execute方法里面的getResponseWithInterceptorChain...

2018-05-21 10:37:46

OkHttp3.9请求过程源码解析

首先来看看OkHttp的基础创建一个普通的同步get请求代码如下:OkHttpClient client = new OkHttpClient();//1String run(String url) throws IOException { Request request = new Request.Builder().url(url).build();//2 Respons...

2018-05-10 18:03:46

消息语音播报,微信语音自动播放,有点儿意思,可以看看这个应用

我们谈谈技术,当然,主要也是给自己做的应用打打广告,谢谢大家支持,下载用用,提提意见。先上个二维码,感兴趣的现在就可以去看看:点击下载方便聊,下方二维码扫描直接下载看看这个可爱的二维码说说初衷一个月之前,朋友给我说了一个很有意思的需求:在骑单车的时候(开车同理,反正就是手没空的场景),希望能够来了微信消息能够语音朗读出来(如果是语音就自动播放),然后啊,这时候如果带了耳机,...

2018-02-23 11:25:39

解锁Android点击事件分发机制

开头说说初衷网上关于点击事件分发的文章一搜一大堆,标题一看,不是“30分钟让你弄明白XXX”就是“这是讲解XXX最好的文章”,满怀憧憬与信心,忍不住兴奋的点进去一看,发现不是代码就全是图,我基本上看完了所有相关的文章,结果硬是看了三个小时也没搞懂。所以最后还是决定自己去试一试,看一看点击事件分发到底是怎么个流程

2017-12-19 15:06:43

【开源项目】Material Design的MVP图片裁剪视频选择器

SuperSelector项目地址基于MVP的图片视频选择器+Material+Glide+leakcanary+butterknife简介一款遵循Material Design风格的图片视频选择器 - MVP模式,基于API25(7.1.1)开发,加入动态权限 - 使用RecycleView展示Grid列表 - 支持选择后预览,选择一张图片时可以裁剪 - leakcanary简单引入 -

2017-06-30 14:42:02

从源码来看ItemTouchHelper实现RecyclerView列表的拖拽和侧滑

RecyclerView是一个用来替换之前的ListView和GridView的控件,使用的时候,虽然比以前的ListView看起来麻烦,但是其实作为一个高度解耦的控件,复杂一点点换来极大的灵活性,丰富的可操作性,何乐而不为呢。不过今天主要说说它的一个辅助类ItemTouchHelper来实现列表的拖动和滑动删除。

2017-05-12 11:35:04

Activity界面的加载和绘制

初探窗口在知道Activity的生命周期调用时机之后,这些都太抽象了,到底我们看到的界面是怎么加载出来的才是最感兴趣的,这里面就主要涉及Activity的Window对象了,具体是什么机制呢?

2016-11-22 16:33:33

Android Activity启动流程源码全解析(2)

接上之前的分析++Android Activity启动流程源码全解析(1)++

2016-10-21 14:50:23

Android Activity启动流程源码全解析(1)

前言Activity是Android四大组件的老大,我们对它的生命周期方法调用顺序都烂熟于心了,可是这些生命周期方法到底是怎么调用的呢?在启动它的时候会用到startActivty这个方法,但是这个方法的背后是怎样来实现的呢,来看看源码一探究竟(API23,无关代码省略)

2016-10-21 14:49:13

Android应用进程启动流程(Zygote进程与SystemServer进程)

Android系统是基于Linux的,所以它的所有应用也是基于Linux的Init进程创建出来的,首先Init进程启动Zygote(受精卵)进程,然后再fork出其他进程(包括SystemServer),最后开启各种应用进程。

2016-09-23 16:38:34

梳理Android的IPC进程间通信(最新AndroidStudio的AIDL操作)

前言前面梳理了Android的线程间的通信《Thread、Handler和HandlerThread关系何在?》,这些都是在同一个进程中,那进程间的通信,或者说不同的应用间的通信该如何实现呢?这个时候就要用到AIDL(*Android Interface Definition Language*Android接口定义语言 )。使用方法(AndroidStudio)我发现现在AIDL的教程基本上还是e

2016-09-12 16:33:22

Thread、Handler和HandlerThread关系何在?

前言前几天看到一道面试题:Thread、Handler和HandlerThread有什么区别?,这个题目有点意思,对于很多人来说,可能对Thread和Handler很熟悉,主要涉及到Android的消息机制(Handler、Message、Looper、MessageQueue)

2016-09-02 15:56:13

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!