BigImageViewer 详解:模块化、可插拔引擎的大图查看库
BigImageViewer 详解:模块化、可插拔引擎的大图查看库上一篇聊了 SherlockGougou 的 BigImageViewPager,这篇来看名字相近、思路却不同的另一个库——Piasy/BigImageViewer。两者都解决"大图预览",但 BigImageViewer 更像一个"引擎中立"的底层组件:它以 Subsampling Scale ImageView(SSIV)为渲染
分类
开源项目与三方库的深度拆解:Android 组件库(BigImageViewer、CalendarView、AvatarView、FoldableLayout)、图表引擎(Mermaid)、虚拟化工具(ExHyperV)等。逐一分析设计思想、核心实现与源码结构,看懂一个库为什么这样写,而不只是怎么用。
共 108 篇文章
BigImageViewer 详解:模块化、可插拔引擎的大图查看库上一篇聊了 SherlockGougou 的 BigImageViewPager,这篇来看名字相近、思路却不同的另一个库——Piasy/BigImageViewer。两者都解决"大图预览",但 BigImageViewer 更像一个"引擎中立"的底层组件:它以 Subsampling Scale ImageView(SSIV)为渲染

Android-Universal-Image-Loader 详解:Android 图片加载库的先驱与退场在 Glide、Coil、Fresco 一统天下的今天,可能很难想象 2012–2015 年 Android 图片加载的"事实标准"是另一个库——nostra13/Android-Universal-Image-Loader(简称 UIL)。它以 16.8k Star 的体量,定义了一代人对"
FoldableLayout 详解:Android 纸张折叠动画你能想象在 Android 上实现"一张纸对折展开"的真实物理动画吗?不是简单的缩放或淡入淡出,而是像真实纸张一样沿折痕折叠、有光影变化、有厚度感的 3D 动画。Alex Vasilkov 的 FoldableLayout 就是实现这种效果的开源库——1.6k+ Star,Android 上最经典的"纸张折叠"动画组件。虽然库已停止维

CalendarView:纯 Canvas 绘制的高性能可定制日历库日历是很多 App 的刚需——签到、预约、酒店预订、账单、打卡。但 Android 上做日历有两个老大难:性能差(传统基于 RecyclerView/GridView 的日历,一个月视图就要几百个 View,滑动卡顿)和难定制(UI 千篇一律,改源码成本高)。huanghaibin-dev 的 CalendarView 用一个反直

AvatarView 详解:支持 Coil/Glide 的 Android 头像组件库社交、通讯、协作类 App 里,头像是个高频又琐碎的组件——要支持圆形 / 圆角、边框、在线状态点、首字母兜底,还要能在一个头像里塞多张图(比如群聊头像)。GetStream/avatarview-android(AvatarView)把这些都打包好了,并同时支持 Coil 与 Glide 两种图片引擎。本文从依
AndroidUtilCode 详解:33k Star 的 Android 工具类库做 Android 开发,几乎每个项目都要重复写一遍尺寸换算、吐司、日志、SP 存取、权限申请、文件读写、加解密等"样板代码"。AndroidUtilCode(作者 Blankj)正是为消灭这些重复劳动而生——它把 Android 开发里最常用的功能封装成一个个工具类,并配有完整 demo 与单元测试,是目前 Gi
Context-Menu.Android 详解:炫酷上下文菜单库Android 原生的上下文菜单(ContextMenu)大家都用过——长按弹出一个朴素的列表,白底黑字,毫无设计感。如果你的 App 想做出 iOS 那种"长按弹出带图标动画的华丽菜单",原生 API 基本帮不了你。Context-Menu.Android 是知名开源团队 Yalantis 出品的一个库,专门解决这个问题:它提供了一

ExHyperV 详解:让凡人也能玩转 Hyper-V 的"神器"Windows 自带的 Hyper-V 虚拟化平台功能强大,但它的"高级功能"——GPU 直通(DDA)、GPU 分区(GPU-PV)、PCIe 设备直通——配置门槛极高,需要深入 WMI、HCS(Host Compute Service)等底层接口,手搓命令行,普通人望而却步。ExHyperV(GitHub 开源,作者 Justs

ToggleButton 详解:手搓自定义 View每个 Android 开发者,在成长路上都应该手搓一次 ToggleButton——那个看起来简单的"iOS 风格开关",其实浓缩了自定义 View 的全部核心:测量、绘制、触摸事件、属性动画、自定义属性。zcweng 的 ToggleButton(及同作者的 SwitchButton)是 GitHub 上最经典的开源实现之一,既是拿来即用的 U
Android 开发都要会的侧滑删除:AndroidSwipeLayout 实战侧滑删除是 Android 列表交互的经典模式——微信、QQ、系统短信、邮件 App 都在用:手指左滑列表项,露出"删除/置顶"按钮。但手写一个健壮的侧滑并不简单,要处理多 item 互斥(一次只开一个)、嵌套水平滑动冲突、展开收起动画、RecyclerView 复用状态等一堆细节。而 daimajia 的 Andro
智能刷新控件 SmartRefreshLayout:下拉刷新与上拉加载实战下拉刷新 + 上拉加载是几乎所有列表页的标配。但 Android 官方只给了 SwipeRefreshLayout——功能简陋、不支持上拉加载、Header 无法定制。而 SmartRefreshLayout 是国内最流行、最成熟的刷新框架:强大稳定,集成了各种炫酷、多样、实用、美观的 Header 和 Footer,支持所

你能想象一段文字看起来像"浮在水面上",随着波浪上下起伏、半沉半浮吗?这不是特效视频,而是 Titanic——一个由 Romain Piel 开发的 Android 动画库。它通过对 TextView 的 TextPaint 应用动画化的 BitmapShader,让文字呈现出冰山浮水般的波浪效果。虽然项目已归档(DEPRECATED),但它展示的"Shader + Matrix 动画"技巧至今仍
BRVAH(BaseRecyclerViewAdapterHelper)使用详解BRVAH(BaseRecyclerViewAdapterHelper)是一个强大而灵活的 RecyclerView Adapter 框架,托管在 https://github.com/CymChad/BaseRecyclerViewAdapterHelper,截至目前已获得 24.6k Star、5.2k Fork,
Coil ImageRequest 的 Target 与 ImageResult.image 的关系在 Coil 中,ImageRequest 的 target 设置与否确实会影响 ImageResult 中 image 的可用性,但行为是符合预期的逻辑,而非"不设置才有 image"。以下是关键点解析。1、设置了 target 的情况当你显式设置 target(如 binding.palette

DiskLruCache 源码深度解析1、DiskLruCache 概述DiskLruCache 是一种基于 LRU(Least Recently Used)算法的磁盘缓存实现,由 Jake Wharton 开发,广泛应用于 Android 应用中。它提供了高效的文件系统缓存机制,特别适合缓存网络请求结果、图片等大型数据。核心特性: - 基于 LRU 算法,自动管理缓存大小 - 支持多线程并发操作