自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 Kotlin协程分析(三)——理解协程上下文

Kotlin协程分析(三)——理解协程上下文一、简单介绍 CoroutineContext二、CoroutineContext 的数据结构1."put"(进一步了解CoroutineContext的数据结构)1.1 EmptyCoroutineContext协程上下文——CoroutineContext 是协程中很重要的环节,可以这么说,几乎整个协程的业务能力都是由它去完成的。说实话,这段源码不是很好看,要具体解释出来也比较困难,如果在接下来的阅读过程中有任何疑惑,我们一起探讨学习。一、简单介绍 Co

2022-07-20 18:56:02 986

原创 Android Kotlin 使用协程取代回调函数(suspendCoroutine 的用法)

文章目录一、简述二、示例2.1 普通写法2.2 协程写法三、带有成功和失败的回调3.1 普通写法3.2 协程写法3.3 使用协程上下文处理异常一、简述如果说大家对于协程已经有些熟悉了,但是手拿一把未开封的 绝世好剑,却无法发挥真正的威力!或者大家不是很熟悉协程,还不清楚协程所带来的好处是啥?这篇文章会为大家带来 通窍级别 的体验。二、示例2.1 普通写法以获取一个 View 的宽高为例。通常我们获取一个 View 的宽高,都是这么做的:view.post { val height = vi

2020-10-24 18:39:11 6525 2

原创 Android singleInstance栈内打开Activity的方法

我们都知道,被标记了 singleInstance 的 Activity 会开启一个新的 Activity栈,并且该栈只允许这一个实例存在!在应对某些需求的时候,这样的特性可能会带来阻碍性的麻烦,所以我们

2020-10-12 12:27:32 532

原创 Kotlin协程分析(二)——suspendCoroutineUninterceptedOrReturn

文章目录一、简介二、分析三、suspendCoroutineUninterceptedOrReturn 怎么做到的?四、战略作用(重点)!!!1、两个`resume()` 为啥没有走两次回调2、为啥里边的**continuation**的`resume()` 会在返回值里呢?3、返回值为什么是 COROUTINE_SUSPENDED五、简单的用例(必读)六、小结一、简介这个函数的作用 至关重要。我们先回想之前创建 协程(Continuation) 的过程,是通过一个 suspend<R>()

2020-10-04 00:08:50 2094

原创 Jetpack篇——LiveData扩展之Transformations

文章目录一、简单介绍二、map1、普通实现2、转换类型3、Kotlin 扩展4、源码分析三、switchMap1、普通实现2、对比 Map3、Kotlin 扩展4、源码分析四、distinctUntilChanged1、普通实现2、Kotlin 扩展3、源码分析五、小结一、简单介绍Transformations 类是 LiveData 的一个功能扩展类,其是一个私有化构造方法的工具类,且只提供 3 个方法使用,虽然数量不多,但胜在实用,这三个方法分别是:mapswitchMapdistinctU

2020-08-24 00:11:26 3675

原创 Jetpack篇——LiveData扩展之MediatorLiveData源码分析

文章目录一、分析内容二、为什么 MediatorLiveData 需要激活才能够接管 LiveData 的响应事件?三、怎么激活 MediatorLiveData?**路线 1**一、分析内容在 上篇文章 中有了解过 MediatorLiveData 的使用过程,虽然使用的过程很简单,但是却出现了一个又一个的疑问……所以本篇文章就和大家一起来刨根问底,解疑答惑:为什么 MediatorLiveData 需要激活才能够接管 LiveData 的响应事件?怎么激活 MediatorLiveData ?

2020-08-04 19:43:33 1140

原创 Jetpack篇——LiveData扩展之MediatorLiveData

文章目录一、导入一、导入其官方def lifecycle_version = "2.2.0"implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"

2020-08-03 22:51:46 1374 3

原创 Jetpack篇——LiveData

文章目录一、简介一、简介

2020-07-14 22:48:26 213

原创 Jetpack篇——LiveData源码分析

文章目录一、分析内容二、生命周期的管理三、值的传递1、初始化的值2、setValue 和 postValue四、setValue和postValue的区别五、总结一、分析内容在 Jetpack 中,LiveData 的源码是最简单的,整个 core 只包含 3 个文件,而且主类 LiveData 也不超过 500 行的代码,但其重要性却不言而喻……对于 LiveData 的源码,我们需要分析的有以下几个地方:其生命周期的管理值的传递(setValue和postValue)setValue和po

2020-07-12 16:47:00 772

原创 Android自定义View——RecyclerView 滚动条

Android 自定义View,适合 RecyclerView 的滚动条

2020-07-09 23:31:15 2972 10

原创 设计模式篇(十)——访问者模式

文章目录一、简介二、实现3、对比三、相关源码四、小结一、简介访问者模式(Visitor Pattern) 属于 行为型设计模式,看名字我就知道需要建立 访问者 和 被访问者 之间的关系。一般情况下,被访问者 都是不变的,比如说:书本、电脑等,而 访问者 可以是你或者其他人,这样就会导致一个现象:一千个人有一千个哈姆雷特;你拿电脑肝游戏,别人拿电脑生产力。定义: 某个行为,因为不同的 访问者 产生不同的效果;访问者 也能够访问多种行为。使用场景: 如果你需要对某个集合进行循环遍历并且因为元素有差异,

2020-07-09 22:08:04 215

原创 Android UVCCamera 拔出USB摄像头闪退问题

这是 native 的错误,因为手机连接摄像头,地狱级的调试体验,找了很久才找出这个问题,然后根据issue修改了c代码,重新编译了so库。使用下面的so库即可。看链接:so库

2020-07-04 11:18:10 2112 31

原创 设计模式篇(九)——代理模式

文章目录

2020-06-22 00:25:39 204

原创 设计模式篇(八)——策略模式

文章目录一、简介一、简介

2020-06-16 22:58:57 168

原创 Jetpack篇——Lifecycle

文章目录 图解Python数据结构与算法-实战篇

2020-06-14 23:25:02 240

原创 Jetpack篇——总览

全篇目录后面有待补充……目录结构每讲解一个组件,会先讲解其用法,后面可能会再涉及源码的分析,那么就会在标题中加上【源码分析】,源码分析是个很重要的过程,希望我能够描述的很清楚……怎么将学习效率提高这里引用郭霖老师的一番话送给大家:所以我们没必要给自己一个潜意识:我要一次性学会某样东西。你可以一直学一直学某个东西,直至你学会并且记牢为止。...

2020-06-12 18:25:07 259

原创 设计模式篇(七)——状态模式

文章目录一、简介一、简介状态模式(State Pattern) 在生活中充满很多个例子,一样物品会根据它不同的状态来直接改变其功能,在我们实际代码中,也充斥着这样的需求。定义:类的行为会根据不同的状态发生改变。使用场景:...

2020-06-11 21:40:54 232

原创 设计模式篇(六)——观察者模式

文章目录一、简介二、实现一、简介在 Android 中,一提到 观察者模式,肯定联想到 RxJava,这种响应式编程号称是十分解耦的操作,对于这样一个牛逼的设计模式,我们很有理由要好好学习之。定义: 一个对象通过 “观察” 另一个对象的某个行为,而进行响应操作。使用场景:如果 观察者模式 用于对象之间存在一对多的关系时,能够发挥最大的优势。在 RecyclerView 中,如果数据发生变化,需要通知列表更新UI;通过观察 Avtivity 的生命周期,来管理一些对象或者逻辑。实现要素:理解 被观察

2020-06-07 01:16:53 310

原创 设计模式篇——创建型设计模式小结

创建型设计模式 已经全部书写完毕,总共有5个,分别是:单例模式(Singleton Pattern)建造者模式(Builder Pattern)工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)原型模式(Prototype Pattern)所谓 创建型设计模式 即是创建对象的设计模式。1、在实际的阅读源码的时候你完全可以根据关键词来判断作者是否使用了设计模式,然后在脑海里大概有个该类的代码框架轮廓。例如:单例模式Xxx.g

2020-06-05 22:45:27 264

原创 Android秀翻天的操作——使用协程进行网络请求

文章目录一、前言一、前言古往今来,时代顺应潮流,潮流引领时代。Android 网络界发展至今已经出现过无数风流框架,看先祖 HttpURLConnection 老矣,HttpClient 也早已隐退,而那 android-async-http 力不从心却也封刀,但江湖却还流传着它的故事,有那谷歌亲儿子 volley 独占中州,笑迎四面八方来客,OkHttp 不慌不急,稳占其余大洲,更有它那亲爹 Retrofit 默默支撑着它,使得各位风骚侠客能够有安稳的栖身之地。是年三月(瞎编的),异步界 RxJa

2020-05-30 16:21:57 649

原创 设计模式篇(五)——原型模式

文章目录一、简介二、实现三、相关源码四、小结一、简介原型模式(Prototype Pattern) 是我们即将要学完的 创建型模式 的最后一个模式,该模式是为了优化性能而存在。定义:通过 克隆 的方式创建一个已有对象的复制品。使用场景:当我们对数据库进行耗时查询而得到了一个对象,我们可以将其缓存,等下次再进行同样的操作时,返回其复制后的对象。实现要素:在 Java 或者 Kotlin 中,使对象实现 克隆接口。注意 浅拷贝 和 深拷贝 的区别。原型模式 其实就是使一个类能够实现 克隆 ,

2020-05-30 13:14:42 199 1

原创 设计模式篇(四)——抽象工厂模式

文章目录一、简介一、简介抽象工厂模式(Abstract Factory Pattern) 区别于 工厂模式,后者是单个工厂work for单个或者多个 Product 的实现类,而前者就是单个工厂work for多个抽象工厂的实现类(禁止____!)。定义:抽象工厂模式 将工厂类抽象出来,抽出来的类(或者接口)用于创建具体的工厂类。使用场景:构建复杂的对象,在 Android 中有 Notification 和 Dialog 等。实现要素:将所有的构造相关的方法,置于 Builder 中。

2020-05-27 22:42:45 176

原创 设计模式篇(三)——工厂模式

文章目录一、简介一、简介工厂模式(Factory Pattern) 同属于创建型模式,

2020-05-24 17:31:11 180 5

原创 五分钟速读RxJava源码

文章目录一、前言二、代码展示三、名词概念四、源码分析1、直接看第一句代码 `Observable.just("hello")`:2、最后一句代码`subscribe()`五、总结一、前言RxJava 是一个功能强大的三方库,其源码看起来也十分的 “复杂”,为什么看起来会 “复杂”呢?那是因为其 Observable 有 N 多个的实现,使人眼花缭乱。这样往往使得想深究其源码的人,打开 Android Studio 后,点击 更新,十分钟后,点击 Observable源码,五分钟后,点击右上角❌。但其

2020-05-23 16:34:58 286 2

原创 type _SyncIterable<Widget> is not a subtype of type List<WIdget>

在学习 Flutter 的时候,官方 Demo 会报这个错误。官方代码截取部分: final divided = ListTile.divideTiles(context: context, tiles: tiles); return new Scaffold( appBar: new AppBar( title: new Text("收...

2020-03-22 18:54:23 804

原创 设计模式篇(二)——建造者模式

文章目录一、简介二、实现1、角色介绍2、普通类实现3、通过建造者模式实现4、修正5、常见变种三、相关源码四、小结一、简介建造者模式(Builder Pattern) 也比较常见,该模式与单例模式同属于创建型模式,当我们需要构建一个复杂的对象,就可以利用该模式,达到精简优化的效果。定义:建造者模式将复杂对象的构造与其表示分离,以便同一个构造过程可以创建不同的表示。使用场景:构建复杂的对象,在...

2020-03-21 17:31:34 208

原创 如何写好Android代码(通篇总览)

文章目录一、为什么写这个系列二、学习路线三、为什么选择付费一、为什么写这个系列即使我们没有去了解过关于 “写好代码” 这件事,在现在的学习过程中,亦或是在工作过程中,总会潜意识的想到:我这个实现该如何去写才能够更漂亮?然而事实确是:我没有能力,我没有头绪,产品催的好急!算了,先实现再说。而后,你的代码可能会越写越乱,越来越看不懂,难以维护,进入一个恶性循环。相反,如果一开始你就书写很漂亮富...

2020-03-17 12:28:27 311

原创 设计模式篇——总览

全篇目录六大基本原则(必学)单例模式建造者模式目录排序我会以设计模式的使用频率及其重要程度,来进行优先级的排序。使得在你们精力最旺盛的时候,能够吸收更多有用的知识,希望你们能够坚持学习完全篇系列……文章结构每一篇文章的结构基本是一样的:先讲解设计模式的作用,其使用场景如何如何。再进行简单的实现。结合 Android 源码或者三方框架源码,进行分析。最后来个小总结什么的。...

2020-03-17 12:02:03 171

原创 设计模式篇(一)——单例模式

文章目录一、简介二、实现1、经典实现2、加一层安全3、急切实例化4、双重检查(推荐)5、Kotlin实现三、相关源码四、小结一、简介单例模式是最简单也比较常见常用的设计模式。我们通常建立一个类,通过该类来创建实例,而有时候,我们仅仅需要这个类的一个实例就够了,例如各种工具类,其实现的效果都是一样的,我没有必要创建多个实例来占用系统资源。定义:单例模式是一种将类的实例化限制为一个对象的设计模式...

2020-03-17 12:01:07 178

原创 设计模式篇(零)——面向对象的六大设计原则

文章目录零、简介一、单一职能原则(Single Responsibility Principle)二、开闭原则(Open Closed Design Principle)三、里氏替换原则(Liskov Substitution Principle )四、接口隔离原则(Interface Segregation Principle)五、依赖倒置原则(Dependency Inversion prin...

2020-03-16 17:22:45 144

原创 Android动画全篇系列(十二)——ViewPager滑动动画

文章目录一、前言二、实现1、参数的介绍2、实现三、ViewPager2四、小结一、前言ViewPager的作用很多,一般会结合Fragment来构成能左右滑动的视图结构。ViewPager还能够撸成一个Banner轮播图,只需要自定义一个PageAdapter即可。当我们将ViewPager与Fragment相结合,我们不需要太多花里胡哨的滑动效果,简单的左右滑动就能够满足我们的要求。而V...

2020-02-23 19:21:29 1449

原创 Android动画全篇系列(十一)——Activity转场动画

文章目录一、前言二、利用Animation一、前言Activity的转场动画一共有两种:1、利用Animation;2、利用Transition。通过之前的学习,我们知道Animation就是补间动画,而Transition是过渡动画框架中的角色,且其底层的实现就是Animator。在Android 5.0之后,才支持Transition。二、利用Animation...

2020-02-21 13:47:52 1686

原创 Android动画全篇系列(十)——场景过渡动画

文章目录一、场景过渡动画(Scene Transition)动画简介一、场景过渡动画(Scene Transition)动画简介借助 Android 的过渡框架,您只需提供起始布局和结束布局,即可为界面中的各种运动添加动画效果。您可以选择所需的动画类型(例如,淡入/淡出视图或更改视图尺寸),而过渡框架会确定如何为从起始布局到结束布局的运动添加动画效果。——亲爸爸谷歌...

2020-02-19 12:52:47 1904 6

原创 Android动画全篇系列(九)——ViewPropertyAnimator

文章目录一、ViewPropertyAnimator简单介绍二、初探三、简单使用四、小结一、ViewPropertyAnimator简单介绍这个可怜的动画,它不像CircularReveal一样,有个时髦的中文名字:揭露动画。——鲁迅为什么它没有中文名字?因为你翻译过来就是:视图属性动画~这不和老大哥重名了嘛?所以姑且我们称呼它的英文名:维域 · 怕破题 · 俺尼梅特。或许就是因为名...

2020-02-14 14:48:42 312

原创 Android动画全篇系列(八)——揭露动画

文章目录一、揭露动画(CircularReveal)介绍一、揭露动画(CircularReveal)介绍当您显示或隐藏一组界面元素时,揭露动画可为用户提供视觉连续性。让您能够为裁剪圆形添加动画以揭露或隐藏视图。此动画在 ViewAnimationUtils 类中提供,适用于 Android 5.0(API 级别 21)及更高版本。——亲爸爸谷歌揭露动画的实现比较简单,只需要几行代码就可以...

2020-02-12 13:54:21 1017

原创 Android动画全篇系列(七)——矢量动画

文章目录一、矢量动画介绍一、矢量动画介绍

2020-02-10 18:23:07 1680

原创 Android动画全篇系列(六)——状态动画

文章目录一、状态动画介绍一、状态动画介绍

2020-02-09 12:56:20 470 1

原创 Android动画全篇系列(五)——估值器

文章目录一、估值器(TypeEvaluator)介绍一、估值器(TypeEvaluator)介绍

2020-02-08 21:56:09 619 2

原创 Android动画全篇系列(四)——属性动画

文章目录一、属性动画(Animator)介绍二、ValueAnimator1、创建ValueAnimator实例2、设置动画的相关属性3、值已经设置好了,队长,下一步怎么办?4、改进三、ObjectAnimator一、属性动画(Animator)介绍属性动画系统是一个强健的框架,用于为几乎任何内容添加动画效果。——亲爸爸谷歌我们知道,在Android中,补间动画对应的类为Animatio...

2020-02-08 13:37:13 353

原创 Android动画全篇系列(三)——插值器

文章目录一、插值器(Interpolator)介绍一、插值器(Interpolator)介绍

2020-02-07 10:09:08 486 1

Kotlin协程分析(一)——协程的创建过程和执行过程.pdf

Kotlin协程分析(一)——协程的创建过程和执行过程,资料参考Kotlin v1.4.0 源码及stdlib

2020-08-30

uvclib.zip

uvclib 解决Android 9.0 拔出USB闪退问题。

2020-07-04

场景过渡动画示例.zip

Android 场景过度动画的Demo,学习更多动画:https://blog.csdn.net/catzifeng/article/details/104179061

2020-05-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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