Colourful Day

我需要,最狂的风,和最静的海。

——顾城《第八个早晨》


  • 首页

  • 分类

  • 归档

  • 标签

  • 留言

  • 关于

Retrofit源码解析

发表于 2017-08-03 | 更新于 2019-03-05 | 分类于 Android Blog | 评论数:
Header之前对 OkHttp 进行过源码分析了,那么今天就来讲讲 Retrofit 。 Retrofit 其实是对 OkHttp 进行了一层封装,让开发者对网络操作更加方便快捷。 相信绝大多数的 Android 开发者都有使用过的经历。其 restful 风格的编程俘获了众多人的心。 废话就不多讲了,下面就要对 Retrofit 进行源码解析。 本文解析的 Retrofit 基于 v2.3.0 ,GitHub 地址:https://github.com/square/retrofit Retrofit 使用方法直接抄官网的: 第一步,声明 API 接口: 1234public interf ...
阅读全文 »

OkHttp源码解析

发表于 2017-07-25 | 更新于 2019-03-05 | 分类于 Android Blog | 评论数:
Header注:本文 OkHttp 源码解析基于 v3.8.1 。 OkHttp in GitHub:https://github.com/square/okhttp 现如今,在 Android 开发领域大多数都是选择以 OkHttp 作为网络框架。 然而,简单地会使用 OkHttp 并不能让我们得到满足。更深层次的,我们需要阅读框架的源码,才能用起来得心应手,融会贯通。 An HTTP & HTTP/2 client for Android and Java applications. 这是官网上对于 OkHttp 的介绍,简单明了。同时,也印证了那句经典的话: Talk is ch ...
阅读全文 »

可以伸缩的搜索栏,模仿华为应用市场

发表于 2017-07-03 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
本项目的 GitHub 地址:https://github.com/yuqirong/FlexibleSearchBar 关于搜索栏,可以说各种 app 都有不同的样式。影响比较深刻的就有华为应用市场的搜索栏(同样,简书的搜索栏也是类似的)。 而今天,就是带你来实现华为应用市场那样的搜索栏。 我们先放上我们实现的效果图吧: 怎么样,想不想学? 我们先来简述一下实现的思路吧,其实并不复杂。 首先,在搜索栏还未打开时,先确定半径 R ,然后假设一个变量 offset 用来动态改变搜索栏的宽度。如图所示: 所以可以得到一个公式:offset = total width - 2 * R ; 那么显 ...
阅读全文 »

一起来写OkHttp的拦截器

发表于 2017-06-25 | 更新于 2019-03-05 | 分类于 Android Blog | 评论数:
00:00一开始就不多说废话了,主要因为工作时遇到了一些使用 OkHttp 拦截器的问题,所以在此特写这篇以作记录。 现如今,做 Android 开发在选择网络框架时,大多数都会首推 Retrofit 。Retrofit 以其简洁优雅的代码俘获了大多数开发者的心。 然而 Retrofit 内部请求也是基于 OkHttp 的,所以在做一些自定义修改 HTTP 请求时,需要对 OkHttp 拦截器具有一定了解。相信熟悉 OkHttp 的同学都知道,OkHttp 内部是使用拦截器来完成请求和响应的,利用的是责任链设计模式。所以可以说,拦截器是 OkHttp 的精髓所在。 那么接下来,我们就通过一些例 ...
阅读全文 »

Kotlin入入入门(二)

发表于 2017-06-13 | 更新于 2017-06-14 | 分类于 Kotlin Blog | 评论数:
找不同之前在 Kotlin入入入门(一) 中已经介绍了如何配置 Kotlin 。另外,还把 Java 代码转换为了 Kotlin 代码。所以今天我们就来比较一下这两者代码之间的区别,从而实现快速入门 Kotlin 。 Now ,我们把之前相同含义的 Java 和 Kotlin 代码粘贴出来(上面是 Java 代码,下面是 Kotlin 代码): 1234567891011121314151617package me.yuqirong.kotlindemo;import android.os.Bundle;import android.support.annotation.Nullable;im ...
阅读全文 »

Kotlin入入入门(一)

发表于 2017-06-07 | 更新于 2018-11-11 | 分类于 Kotlin Blog | 评论数:
Android Studio 配置Android Studio 3.0 版本已经默认添加了对 Kotlin 的支持,所以以下 Android Studio 配置是针对于 3.0 版本以下的。 安装 Kotlin 插件 将 Java 代码转化为 Kotlin 代码 之后代码就变成了如下: 1234567class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInsta ...
阅读全文 »

玩转仿探探卡片式滑动效果

发表于 2017-03-05 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
讲起本篇博客的历史起源,估计有一段“历史”了。 最早可以追溯到我试玩探探这个 APP 。第一次进入软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路。不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了。 再到后来,看到许多大神也推出了同样仿探探效果的博客,从头到尾阅读下来,写得通俗易懂,基本上没什么问题。于是,实现仿探探效果的想法再次出现在脑海中。那么,还犹豫什么,趁热来一发 ...
阅读全文 »

android-architecture之todo-mvp源码分析

发表于 2017-02-22 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
Android 架构一直都是热门话题,从一开始的 MVC ,到目前火爆的 MVP ,再到方兴未艾的 MVVM 。并不能说哪一种架构最好,因为这些架构都顺应了当时开发的趋势。在这里就不对这三个架构一一解释了,如果想要了解更多的同学可以自行搜索。 自从 2015 下半年来,MVP 渐渐崛起成为了现在普遍流行的架构模式。但是各种不同实现方式的 MVP 架构层出不穷,也让新手不知所措。而 Google 作为“老大哥”,针对此现象为 Android 架构做出了“规范示例”:android-architecture 。 目前已有的架构示例如下图所示: 而今天给大家带来的就是分析 todo-mvp 项目 ...
阅读全文 »

NotificationListenerService的那些事儿

发表于 2017-02-09 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
最近在公司时接到一个需求:需要实时监听设备的通知栏消息,并可以捕获到通知的内容,然后进行对应的操作。刚看到这个需求的时候,脑子里第一反应就是使用 AccessibilityService 。 AccessibilityService 支持的事件监听类型中有 TYPE_NOTIFICATION_STATE_CHANGED ,该事件类型就是用来监听通知栏消息状态改变的,众多的抢红包插件利用的就是这个原理。 之后在 Github 上看到了 qianghongbao 这个抢红包的项目,发现代码里面有一个 QHBNotificationService 继承了 NotificationListenerSe ...
阅读全文 »

RecyclerView实现拖拽排序和侧滑删除

发表于 2017-02-03 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
在平时开发应用的时候,经常会遇到列表排序、滑动删除的需求。如果列表效果采用的是 ListView 的话,需要经过自定义 View 才能实现效果;但是如果采用的是 RecyclerView 的话,系统 API 就已经为我们提供了相应的功能。 接下来,我们就来看一下怎么用系统 API 来实现排序和删除的效果。 创建 ItemTouchHelper创建一个 ItemTouchHelper 对象,然后其调用 attachToRecyclerView 方法: 12345RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycle ...
阅读全文 »
1…567…12
俞其荣

俞其荣

向前跑 迎着冷眼和嘲笑

120 日志
11 分类
51 标签
RSS
GitHub Twitter 微博 Email
Creative Commons
© 2015 — 2021 俞其荣
由 Hexo 强力驱动
|
主题 — NexT.Muse
Hosted by Coding Pages