自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小金子的专栏

成功是坚持

  • 博客(142)
  • 资源 (7)
  • 收藏
  • 关注

原创 一篇文章弄懂 RxJava

前言RxJava 是 ReactiveX 在 Java 上的一个实现.官网为:http://reactivex.io/笔者是一个做 Android 的开发者,RxJava 从入门到现在的水平已经过了两年的时间.其实这东西入门真的挺难的.很多人看了几篇介绍的博客就觉得自己会了.其实并不是这样的.因为很多人看了之后依然不明白内在的很多东西,比如:线程切换切换订阅线程信号分发线程操...

2019-07-23 09:05:23 1476 3

原创 Android 组件化的实现

前言 哈哈哈哈,我又回来了,小金子又回来了,好久没写博客了,是时候更新一波了 最近项目在做组件化,然后这次给大家带来组件化的实现和应用组件化方案地址下面这张图我们很熟悉,我们今天要做的事情就是实现如下的架构组件化带来的问题Activity 之间的交互业务组件内的服务如何提供业务组件的声明周期怎么解决 我们带着上面的几个问题,我们来实现我们的组件化...

2018-08-17 16:33:55 2269

原创 Android 全面适配

前言 我们都知道哈,Android适配这块一直在困恼着我们.而之前的适配方案也很多 1.比如鸿洋的适配方案: 采用在Activity 创建转换xml的时候把系统的Layout换成自定义的,或者直接在xml中写自定义的>Layout.然后在onMeasure方法中直接遍历整颗树来调整 视图的大小 上面的这个方案还有一种就是写成一个工具类,在Activity setC...

2018-06-16 09:00:38 730

原创 ActivityLifecycleCallbacks能做哪些事情?

前言 从Api14开始,系统在Application类中提供了一个关于Activity声明周期回调的方法(如下). 所以我们可以在一个统一的地方就可以监听到所有的Acitivy的声明周期方法的回调,这个Api特别重要,他能实现很多我们以前写的很烦的代码. 那么现在我们可以通过它实现什么样子的效果呢?容老夫和你们掰扯掰扯public void registerActivityLife

2017-11-16 11:33:25 550 2

原创 如何更优雅的实现标题栏

前言 做Android这么久了,目前见过实现标题栏的方式无非两种1.在每一个Activity的xml中include一个共有的标题栏xml,然后在Activity的生命周期方法onCreate方法中完成标题栏的初始化 2.在每一个Activity的xml中使用自己写的标题栏控件 第二种方式明显比第一种方式好一些,因为这种方式你能在布局文件中通过自定义属性就可以完成整个标题栏的初始化,而不

2017-11-10 16:23:55 733

原创 ButterKnife 完全解析

前言 使用 ButterKnife 也有一段时间了,还记得我们从最开始的findViewById到现在使用注解来帮我们注入控件。其实这中间还有一个使用反射实现注入的一个阶段,真是因为在追求性能和今天,ButterKnife才会被广泛的使用.那么到底ButterKnife高效在哪里?今天博主带你全面了解ButterKnife本文针对版本8.8.0讲解首先在build.gradle中添加以下依赖必

2017-08-06 16:27:46 1427 2

原创 Retrofit 源码分析流程

前言 Retrofit 框架使用了有一年多了,但是说来惭愧,一直都是处于使用的状态,不会用的地方利用百度或者谷歌搜索一下.一直没有去摸索里面的源代码.这几天我对源代码进行阅读之后,不仅理顺了Retrofit 框架的实现,而且对泛型的认识提升到了一个新的高度.因为里面很多代码是对泛型进行处理的.下面就容许我给大家梳理一下Retrofit 的工作原理源码分析首先我定义一个接口文件public in

2017-07-30 18:03:13 961

转载 GitFlow使用

这节介绍的Gitflow工作流借鉴自在nvie的Vincent Driessen。 Gitflow工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。 Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。除了使用功能分支,在做准备、维护和记录发布也

2016-12-05 10:48:52 1688

原创 面试总结

前言以下是本人面试过程中被问到的一些问题,这里做一个记录基础普及区Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念 你是如何理解MVC的M 就是数据源.所有的数据来源都可以视

2016-11-21 11:55:13 992

原创 ListView复用和优化之多布局详解

前言在上一篇文章中,我已经非常详细的阐述了ListView的复用原理和几个大家不太明白的地方.也同时重现了复用的问题并告诉大家如何去解决.如果你没有看上一篇,请先移步,这篇基于上一篇的知识继续讲解ListView中多布局是个什么原理ListView复用和优化详解需求:实现联系人列表的展现形式先随便放一个联系人列表的效果图,博主随便找了一张图给大家看看效果先我们可以看到,这里肯定是一个列表来实现的,如

2016-11-11 11:36:25 5090 6

原创 ListView复用和优化详解

前言我们每一个Android开发人员对ListView的使用肯定是很熟悉的,然而多少人能真正的懂ListView的缓存机制呢,说白了就是ListView为了提高效率而内部实现的一种优化,而这种优化就需要复用ItemView(也就是item对应的View).那么下面楼主来对ListView和RecyclerView的item复用问题做一个深入的讲解

2016-11-09 17:09:34 17784 16

原创 Retrofit 原理 运行机制详解

阅读此篇博客,你需要备Java动态代理的知识、反射和注解相关的知识,不然你阅读可能有些困难回忆Retrofit的适应场景在使用Retrofit的时候,我们经常通常看到有一个用于请求的接口,然后使用Api api= retrofit.create(Api.class);这样子创建了以后,这个接口Api里面的方法就能正常使用了,博主之前也是很好奇,之前误以为是,这里创建的时候是帮我实现了接口中所有的方法

2016-11-06 18:58:30 3507

原创 Android 属性动画详解

Component 是一个强大的、完善的组件化框架. 欢迎大家使用请尊重别人劳动成果 转载请注明出处:http://blog.csdn.net/u011692041/article/details/51471743前言 The property animation system is a robust framework that allows you t...

2016-05-21 21:47:53 4051 1

原创 Android Handler消息处理机制详解

前言从我们学习android开始,几乎每天都在和handler打交道.有了它,我们在子线程中处理好了耗时的操作,可以利用它来更新UI.它为我们在线程间的通信提供了很大的方便,而今天博客就来详细的介绍一下Handler的消息循环机制,一步一步的了解其中的奥妙,本文不介绍Handler的详细使用,探究的是内部的原理.所以看这篇博客的童鞋需要有handler的基本使用能力先抛出一个简单的

2016-05-11 10:48:24 12866 6

原创 Python 脚本之 模板替换

template.py, 此 Python 脚本, 意在对模板文件的占位符的内容进行更换.这个用户的名称为:{name}, 密码为:{pass}表示对输入文件的内容进行占位的替换 -f 后面跟格式化的键值对, key 和 value 成对出现, 表示对内容中的 name 替换为 test, pass 替换为 123这个用户的名称为:test, 密码为:123# 参数解析# 添加参数"-f",type=str,help="格式化的键值对","-ms",type=str,

2023-04-23 11:27:44 337

原创 Android 如何使用 KComponent 完成自动登录验证

今天我们利用KComponent实现一个自动登录验证的功能. 我们很多的页面在进入之前都可能需要前置条件. 而我们常见的就是进入之前需要登录、权限等今天就带大家实现一个自动完成登录的功能。

2022-12-13 10:50:35 291

原创 维护4年的组件化框架 Component 升级到 KComponent 啦

KComponent它来啦. 从 2018.8 开始,Component项目正式开源. 到目前已经 4 年的时间了. 这几年中, Component 不断升级优化. 最后趋于稳定.为了组件化框架更好的发展,KComponent继承了Component的优点, 升级为一个纯Kotlin的项目. 不再支持Java, 注解驱动器也升级为KSP如果想要兼容Java, 还请继续使用Component, 如果你的项目是纯Kotlin项目, 请使用KComponent。

2022-12-08 14:14:37 329

原创 如何快速的将下载的一组 mipmap 图片转化成 drawable

干就完了当我们使用蓝湖 UI 设计的时候, 我发现下载的 png 的一组图都是 mipmap 命名的.下载之后. 我需要对五个目录重命名, 并且将内部的文件统一重命名这个十分浪费我的时间, 所以博主必须解决!!!项目 mmtdAndroid 就是解决这个问题的. 内部帮助你重命名了目录和文件. 使用很方便.下图就是我下载一组图. 我们进入图二的命令行, 输入:mmtdAndroid res_alipaymmtdAndroid 是命令的名称, 事先配置了环境变量, res_alipay 是文件的

2022-03-23 17:45:14 2362 2

原创 Jetpack Compose ScrollableTabRow 如何调整最小宽度

前言Jetpack Compose ScrollableTabRow 在使用的时候, 会发现无论怎么样, 最小的宽度始终不是自己设置的. 每个 Tab 之间间隔的很大. 而我们的 UI 上的效果是比较紧凑的. 所以这里给出解决方案问题原因在 ScrollableTabRow 的实现中, 使用了一个叫做 ScrollableTabRowMinimumTabWidth 的值, 他的值是:90.dp由于这个值外部没法修改. 导致任何情况下你的 Tab 最小的宽度都是 90.dp如何解决目前的解决方

2022-03-18 15:05:42 2817

原创 对 Android 的 LiveData 网传的数据倒灌做一个深层次的解释

描述问题我是一个 MVVM 架构和响应式编程深度使用的一个开发者. Github 上刷到你的这个仓库. 我还是想对你们所说的数据倒灌进行解释说明一下.你所说的数据倒灌其实根本不是一个问题或者 bug.LiveData 设计就是如此. 接受最近一个信号. 对应流的 Behavior 模式.我们有知名度一点的流的实现有 RxJava 和 Kotlin 的 Flow. 在他们的实现中, 分别对应 BehaviorSubject 和 StateFlow他们的图示如下, 你们可以看到, 在不同的时间点发生订

2022-03-02 22:43:38 3197

原创 一个完整的 Android MVVM 架构落地的记账项目

一个 MVVM 架构的 App 开源啦.Github 地址:https://github.com/xiaojinzi123/TallyApp这是一个记账 App, 包含很多功能. 使用的技术栈有:Component 组件化框架(非常重要!!!)常用扩展和工具库 (有用!)Android ComposeAndroid JitpackAndroid Room 数据库KotlinKotlin Flow 作为响应式架构的底层支持图片服务器 Gitee、GithubUI灵感来源于各个相关的记账

2022-03-02 14:39:17 1997

原创 Mac 如何安装 [email protected]

使用 brew 安装 [email protected] install [email protected]使用 brew services start [email protected] 启动使用 mysql_secure_installation 进行安装. 重设密码等等

2022-02-15 14:32:24 880

原创 Android 如何保证逻辑业务类只初始化一次

前言我们的 Activity 由于系统配置更改等原因, 有可能会重建. 如果重建的时候, 业务逻辑类也是重新创建的, 那么也还可以接受.但是由于我们现在 ViewModel 用的人已经很多了, 在正确使用 ViewModel 的情况下, 业务逻辑类都会被 ViewModel 持有, 那么 Activity 重建的时候, 重新走 onCreate 就会导致有些初始化会走两次. 但是有 ViewModel 的作用下, 其实不用初始化了, 因为配置更改不会导致 ViewModel 中的任何数据被销毁和重建.

2021-10-25 17:06:00 1371

原创 如何用 MVVM 的思想落实到项目中

前言MVVM 我相信大家也都听得多了. 但是我感觉还是有大部分人是理解不够到位的.下面呢, 我就用一个实际的例子来具体的讲述一下.要实现的功能一个标签列表一个添加标签的界面数据存储用了 Room 数据库普通思路// 相关接口LabelService { // 获取所有的标签 suspend getAllLabel(): List<LabelDTO>}// Room 数据库实现LabelDao { @Query("select * from label

2021-09-16 14:52:32 206

原创 Kotlin Inline 的原理和注意点

前言你的项目中, 是否写了很多的工具类? 比如 StringUtils, SPUtils, SystemUtils 等等那么此篇文章, 我来介绍一个关键词:inline, 我翻译为内联. 那么让我们来看一下内联函数的实现原理及其使用它的注意点普通扩展函数这里写了一个 SharePrefence 编辑的扩展函数fun SharedPreferences.edit( commit: Boolean = false, action: SharedPreferences.Editor.(.

2021-06-09 11:49:10 615

原创 你应该知道的协程中的挂起转化小技巧

前言相信很多小伙伴都在 Android 中使用了协程去处理各种异步的场景. 更有甚者 Flow 也能玩的如鱼得水. 这篇文章呢, 主要普及我们在使用协程的过程中, 如何转化其他代码为挂起函数, 让你的协程用起来更舒适.另外我们应该知道的是, 协程本质上是一个线程工具.suspendCoroutine & suspendCancellableCoroutine当我们开启了一个协程, 如果我们遇到了其他人写的代码或者某些 sdk 中的代码. 它是以 Callback 的形式提供了结果. 那么可.

2021-06-07 20:18:49 195

原创 你应该知道的 Flow 的 shareIn 和 stateIn 操作符

前言Flow 的 shareIn 和 stateIn 操作符可以转化一个 Cold Flow 到 Hot Flow:它可以把从上游 Cold Flow 中收到的数据广播给所有的订阅者(collectors/subscriber). 它通常用来提升性能, 甚至内部有缓存机制.知识点普及:Cold Flow 一被订阅或者被观察的时候, 就会产生数据. 通常订阅者可以观察到所有的数据. 而 Hot Flow 是不管有没有订阅者订阅, 它都保持活跃, 并且可能发射数据.在这个博客中, 你可以通过例子熟悉 s.

2021-06-04 17:49:30 2743 1

原创 Kotlin Flow 一种更安全的 UI 层收集流的方式

前言在我们的 Android App, Kotlin flows 通常用来收集 UI 层需要展示的那些数据. 但是你在收集数据的时候, 你得确保它不会做很多额外的事情、不会浪费资源、不会因为视图层退到后台或者销毁而引起内存泄漏.正因为 Kotlin flows 和 RxJava 都可能有上述的问题, 所以官方的 LiveData 是一个比较好的选择. 但是 LiveData 的局限性比较大, 它缺少了 flows 和 RxJava 的可组合性, 也缺少了很多的好用的链式操作符的支持.所以本文就是介绍如

2021-06-04 11:01:50 1968 3

翻译 我应该为 Android 学习 Kotlin 吗

这么好看的你, 来都来了. 关注我. 了解更多最新知识点, 每天学习一点点前言自从 Google在 2017 宣布支持 Kotlin, 我们收到了很多 Android 上关于 Kotlin 的问题. 比如:我应该从什么时间开发学习它什么是学习 Kotlin 的最好的课程或者文档是否 Google 内部已经使用了 KotlinGoogle 对 Java 语言的计划是什么.这篇文章中, 我来回答这些问题.问题1:我应该学习 Kotlin 在 Android 中使用吗?相关的一些问题比如:.

2021-05-31 19:42:25 161

原创 Why Kotlin

从 2020.11 开始全面使用 Kotlin 开发. 以前没有使用 Kotlin 之前, 我一直以为只是在 Java 的基础上多了很多的语法糖. 但是随着使用的深入, 我发现 Kotlin 是一门新的语言.现在的我已经喜欢上 Kotlin 了, 相对 Java 来说. Kotlin 的优势是巨大的. 我这边就简单的总结一下, 为什么我现在推荐 Kotlin 了. 如果你还在使用 Java 没有使用 Kotlin, 那你一定要仔细的看完文章哦参数默认值这个特性, 直接让 Java 中的大量重载的方法都

2021-05-29 13:55:31 189

原创 Android ViewModel 并不是直接写业务的讨论

前言Android 中的 ViewModel 出来已经有不少的时间了. 我作为一个忠实的使用者. 从开始用它, 到用错它, 到理解它. 还是走了不少冤枉路. 所以本次的内容会围绕 ViewModel 的正确使用. 并且如何融入到 MVVM 架构中官方 ViewModel 的作用解释Google ViewModel 的解释. 如果喜欢看官方的, 可以点链接去看. 这里我做一个总结:ViewModel 可以让你分离你 UI 上的数据. 比如某个视图的是否可见、比如 Adapter 的数据、比如某个 T

2021-01-26 10:15:12 688 4

原创 单 Activity 多 Fragment 架构如何使用路由进行统一跳转

前言有一些公司的项目, 采用的架构是单 Activity, 多 Fragment 的形式.核心就是依赖标记到静态方法上实现. Component 支持这种形式, 所以下面是以 Component 为例讲解的正文跳转一个 Activity, 多数框架都可以支持. 但是现在市面上所有的框架, 跳转 Fragment 只是一个名词, 只是通过服务发现获取到一个 Fragment 而已.比如下面的代码:Fragment fragment = Router.with("xxxFragment").putX

2020-09-17 21:43:15 950

原创 Component 组件化框架

前言大家好, 此文用一个较详细的叙述来介绍 Android 的组件化框架 Component, 我从 17 年开始设计并且研究组件化框架的. 以及和其他框架相比, 为什么更优秀, 更好用。下文且听我细细道来~什么是组件化其实最简短的介绍就是下面几件事:代码的隔离资源的隔离当代码和资源隔离的时候, 各个平行的业务模块如何进行交互跨模块的调用路由跳转 Activity 跳转 和 ...

2019-11-07 11:12:29 1635

原创 Android 开发中的一些痛点解决方案

痛点我们团队在整个开发过程中, 会有几个很恶心的痛点, 代码不能不写, 但是写了有恶心. 所以在组件化过程中, 发现这些是可以被解决的的.于是 Component 从最早的设计上就考虑了一些痛点你有没有因为在 Adater 或者 Dialog 或者其他没有 Activity 的地方需要 startActivityForResult. 痛点解决方式,0入侵你有没有因为进入一些界面有前置条件...

2019-10-14 15:46:33 663 1

原创 组件化为什么选择 Component 而不是 ARouter

目录前言评判标准组件化你到底想解决什么问题?除了核心问题其他的痛点路由跳转失败的降级处理路由拦截器页面拦截器全局拦截器路由接口用户自定义的部分的执行线程都是主线程获取跳转目标的 `ActivityResult` (贼好用!!!!!!)自定义目标界面的 `Intent`扩展支持 `RxJava2`请相信 Component前言我们很多人都知道 ARouter, 也会优先选择 ARouter, 这...

2019-09-16 10:57:52 1044

原创 什么是 Android 组件化

前言我希望阅读本片博客的童鞋都是有一定的 Android 基础的,并且近期想实施组件化方案的.希望这篇文章能帮助到你,让你知道什么是组件化,有哪些可选的方案什么是组件化下面这幅图相信大家平常多多少少都能看见类似的.最下面一层是 基础组件层, 包括但不止以下方面存储本地存储数据库存储文件存储SP 存储…网络请求实体对象基础类BaseActivity、BaseF...

2019-06-17 11:22:47 3243 5

原创 Mac有哪些软件可以显著提高生产力?

前言个人使用 Mac 三年了,在这三年中滚打摸爬,有好几个大神教我如何提高生产力,现在我觉得我是时候分享一下啦,让刚接触 Mac 的人可以使用到一些很好的软件首先,Mac 系统本身对于开发是非常友好的,个人本身结合了 Linux 和 Windows 的优势,对于开发人员真的是非常的友好,这句话真的是肺腑之言效率提升包管理器 HomeBrewhttps://brew.sh/这个我就不多...

2019-04-26 22:22:26 1438 1

原创 RxJava2 进阶之Observable 的种类及其对应的场景

目录前言Observable 的种类真实代码中如何辨别使用哪种 **Observable**前言这篇文章主要讲述一件事情,如何正确的定义我们程序中的 Observable,下文中所有说到的信号,和我们常说的 RxJava发射的元素、Item、Error、Complete是同一类东西,但是我习惯叫它信号,在ObjectC中的Rac中也称之为信号Observable 的种类在 RxJava2...

2019-04-13 17:30:49 1134

原创 Android 组件化应该做什么

前言Android 任何一个组件化方案都要对项目进行一定程度的整改,下面会对所有需要整改的地方进行说明,以及会说到如何整改资源文件资源文件在准备组件化的过程中就得做,不会影响正常的开发,一旦后续需要彻底剥离的时候,就直接把对应的文件拖到指定的模块就可以了公用的资源一个项目中肯定有一些是每一个地方都可能用到的资源,所以会有一个模块去存放这些东西,我可能新建一个 “ModuleResou...

2019-04-04 09:41:45 169

原创 Android 组件化的使用

当前博客新地址http://xiaojinzi.tpddns.cn:18888/post/Android组件化的使用.html前言其实组件化方案很多很多,让人选择也是很多很多,但是为什么每一家有技术积累的公司都会参考别人的组件化方案自己去修修改改或者自己实现一套呢?往下看吧技术的选型使用开源的库的缺点和优点缺点缺乏一些自定义的操作,总是会受制于人的出现问题不能及时解决有些...

2018-12-09 23:30:16 446 1

服务器请求可视化工具

这个工具能帮你实现所有请求的可视化查看,并且支持socket连接和普通表单请求上传请求信息

2018-04-10

仿QQ主界面选项卡

这是QQ主界面的选项卡的自定义实现

2017-03-07

ListView的demo

ListView单布局和多布局的使用demo

2016-12-06

listdemo.zip

ListView复用,优化问题的demo

2016-11-09

recyclerViewAdapter

是recyclerViewk控件的一个通用适配器,提供添加头部和尾部的功能,封装了点击事件和item内部控件的点击事件和筛选点击事件的功能

2016-11-09

retrofit服务器测试代码

便于测试不会写服务器端代码的童鞋,便于测试retrofit框架的功能

2016-06-10

okhttp服务器测试接口项目

可供测试Post提交文件和post提交普通键值对,当然get也是可以的

2016-06-09

空空如也

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

TA关注的人

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