程序亦非猿

菩提本无树,程序亦非猿。


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 友链

  • 搜索

Space源码分析

发表于 2016-12-29 | 更新于: 2021-02-08 | 分类于 Android , RTFSC | 阅读次数:
字数统计: 720 | 阅读时长 ≈ 3 分钟

简介

public final class Space extends View

Space是一个轻量的View,可以在布局中被用来创建间隙,常用于布局优化。

介于可能很多人根本不知道Space的存在!所以稍微提一下它的使用场景,比如以下场景的右侧小三角,就可以使用Space:

Space使用场景

在两个三角之间放置一个Space,两三角分别位于它的上下,控制它的高度就能控制三角之间的间隔。

阅读全文 »

ViewStub是如何实现懒加载的

发表于 2016-12-27 | 更新于: 2021-02-08 | 分类于 Android , RTFSC | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 6 分钟

ViewStub简介

public final class ViewStub extends View 

ViewStub 是一个宽高都为0,不可见的(GONE),不参与measure与layout(绝大部分情况),不绘制任何东西,可以用来做懒加载的View,常用于布局优化;

PS: 为什么说绝大部分情况不参与测量与布局呢?因为大部分ViewGroup对于GONE的View,都不会让它参与测量与布局流程(自定义的就不一定了,另外可以看一下FrameLayout的源码)。

首先需要说的是,本文涉及到两个角色,一个是 ViewStub本身,另外一个是被用来做懒加载的View,是ViewStub的作用对象,称之为『StubbedView』(本文用此称呼来替代)。

那么 ViewStub 是怎么实现懒加载的呢?

本文通过ViewStub源码来分析。

阅读全文 »

Retrofit是如何工作的?

发表于 2016-12-26 | 更新于: 2021-02-08 | 分类于 Android , RTFSC | 阅读次数:
字数统计: 2.2k | 阅读时长 ≈ 9 分钟

注:本文基于 Retrofit2.0版本,并配合 RxJava 来分析。
com.squareup.retrofit2:retrofit:2.0.0
com.squareup.retrofit2:converter-gson:2.0.0
com.squareup.retrofit2:adapter-rxjava:2.0.0

​

​ Retrofit adapts a Java interface to HTTP calls by using annotations on the declared methods to how requests are made.

本文主要通过分析 Retrofit 与 RxJava 的合作流程 来深入理解 Retrofit的工作原理,并且解答自己心中的疑惑。

阅读全文 »

strings文件中修改部分字体颜色

发表于 2016-12-06 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 118 | 阅读时长 ≈ 1 分钟

在 Android 开发中,通常会吧文本放在 strings.xml 文件中,然后再引用。

有时候,有些需求需要修改文本中的部分字的字体颜色,可以用以下方式修改:

修改原本的strings.xml:

1
<string name="hh_no_order"><![CDATA[sorry,没有任何订单,<font color="#fc2a56">前往买买买</font>]]></string>

代码中的使用需要配合Html.fromHtml(),如:

1
mTvTip.setText(Html.fromHtml(mTips))

最终效果图为:

效果图

RTFSC

发表于 2016-09-01 | 更新于: 2021-02-08 | 分类于 Android | 阅读次数:
字数统计: 730 | 阅读时长 ≈ 2 分钟

# RTFSC

Read The Fucking Source Code
RTFSC

初衷&为什么要阅读源码

随着做Android开发时间越来越久,看别人的文章博客对自己的收益越来越少,以前看10篇文章,可能9篇对自己有用,后来慢慢减少,8 7 6..1 。

再加上现在国内的风气不好,标题党特别多,质量好的文章太少,在茫茫文章中获取有用信息变得越来越困难。

投入与回报不成比例,所以需要换一种方式去学习。

现在我更推荐看书以及阅读源码。

相对于看文章,看书有利于系统的学习,看源码的好处更是多多。

书也是有好有坏,关于书籍,我有一个记录读书笔记的项目ReadingNotes,记录读书笔记,也有些扩展,对书籍也有一个相对比较客观的评价,或许可以帮到你,这里就不多说了。

阅读全文 »

访问者模式

发表于 2016-08-03 | 更新于: 2021-02-08 | 分类于 Architecture , 设计模式 | 阅读次数:
字数统计: 179 | 阅读时长 ≈ 1 分钟

设计模式专题系列: 设计模式

访问者模式

当你想要为一个对象的组合(组合模式)增加新的能力,且封装并不重要时,就使用访问者模式。

用途:

  1. 当采用访问者模式的时候,就会打破组合类的封装。

优点:

  1. 允许你对组合结构加入新的操作,而无需改变结构本身。
  2. 想要加入新的操作,相对容易。
  3. 访问者所进行的操作,其代码是集中在一起的。
阅读全文 »

原型模式

发表于 2016-08-03 | 更新于: 2021-02-08 | 分类于 Architecture , 设计模式 | 阅读次数:
字数统计: 237 | 阅读时长 ≈ 1 分钟

设计模式专题系列: 设计模式

原型模式

当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式(Prototype Pattern)。

UML

原型模式允许你通过复制现有的实例来创建新的实例(在Java中,这通常意味着使用clone()方法,或者反序列化)。

原型模式的重点在于,客户端的代码在不知道要实例化何种特定类的情况下,可以制造出新的实例。(?不太理解)

阅读全文 »

备忘录模式

发表于 2016-08-03 | 更新于: 2021-02-08 | 分类于 Architecture , 设计模式 | 阅读次数:
字数统计: 204 | 阅读时长 ≈ 1 分钟

设计模式专题系列: 设计模式

备忘录模式

当你需要让对象返回之前的状态时(例如,你的用户请求“撤销”),就使用备忘录模式。

备忘录的目标:

  • 储存系统关键对象的重要状态。
  • 维护关键对象的封装。

咦,那Activity、Fragment、View的 onSaveInstanceState 不就是备忘录模式吗?

阅读全文 »

中介者模式

发表于 2016-08-02 | 更新于: 2021-02-08 | 分类于 Architecture , 设计模式 | 阅读次数:
字数统计: 349 | 阅读时长 ≈ 1 分钟

设计模式专题系列: 设计模式

中介者模式

使用中介者模式来集中相关对象之间复杂的沟通和控制方式。

  1. 每个对象都会在自己的状态改变时,告诉中介者
  2. 每个对象都会对中介者锁发出的请求作出回应

没有中介者的情况之下,所有的对象都需要认识其他对象,也即对象之间是紧耦合的.
当有了中介者后,对象之间不需要认识,只需要跟中介者打交道,这样一来对象之间就被解耦了.

中介者包含了整个系统的控制逻辑.

阅读全文 »

解释器模式

发表于 2016-08-01 | 更新于: 2021-02-08 | 分类于 Architecture , 设计模式 | 阅读次数:
字数统计: 291 | 阅读时长 ≈ 1 分钟

设计模式专题系列: 设计模式

解释器模式

使用解释器模式为语言创建解释器.

用途:

  1. 当你需要实现一个简单的语言时,使用解释器.
  2. 当你有一个简单的语法,而且简单比效率更重要时,使用解释器.
  3. 可以处理脚本语言和编程语言.
  4. 可以处理脚本语言和编程语言.
阅读全文 »
1234…15
程序亦非猿

程序亦非猿

144 日志
11 分类
101 标签
GitHub
0%
© 2015 — 2021 程序亦非猿 | Site words total count: 122.7k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
人次 次