动画不是炫技,它是用户体验的一部分。按钮点击没反馈、页面跳转太生硬,用户会觉得 App“不跟手”。 Android 动画经历过几次演进:View 动画 → 属性动画 → MotionLayout。今天把核心路径串一遍。 一、属性动画 ValueAnimator + ObjectAnimator 属性
前面聊过协程和挂起函数,实际工程中真正高频出现的是 Flow。它把响应式编程带进了 Kotlin,但很多人用了一段时间还是分不清冷流和热流。 一、冷流:只有收集者才触发发射 fun coldFlow(): Flow<Int> = flow { println("flow started")
Compose 再火,传统 View 体系也不会消失。图表、仪表盘、手写签名、游戏场景这些需求,通常还是靠自定义 View 实现。 今天这篇文章,把自定义 View 的绘制流程拆开讲清楚。 一、自定义 View 的三条路径
上一篇聊到 Compose 性能调优,很多同学反馈: “重组到底怎么触发的?为什么 remember 有时不生效?” 这其实不是性能问题,而是状态管理问题。Compose 的 UI 更新完全依赖状态,状态写不对,性能调优就是无本之木。 一、状态驱动 UI 的三个层次 @Composable fun
写到第 15 篇,这个系列已经完成了从初级 Activity 生命周期到 Gradle、Native、APM、安全的跨越。 最后一篇,我想聊聊职业成长:从“能写代码的 Android 工程师”到“能设计系统的移动端架构师”,中间到底差了什么? 一、高级工程师 vs 架构师:差别不在代码量
Android 安全是一个常被低估的领域。很多团队直到被逆向、被爬虫、被薅羊毛,才开始补课。 这篇会讲 Android 安全的几个核心层面: APK 反编译有多容易。 代码混淆、加固、VMP 的基本原理。 本地数据、密钥、通信安全。 签名机制与 APK 完整性校验。 一、APK 反编译:你的代码其实
性能优化不能只靠本地 Profile。用户手里的设备千奇百怪:低端机、老旧系统、弱网环境、后台被杀。你只有在线上真实环境中采集数据,才能发现真正的问题。 这篇会讲如何搭建 Android 性能监控体系:从指标选择、本地采集、上报策略,到最终形成 APM 闭环。 一、APM 应该监控什么? 不是指标越
Android 主流开发语言是 Kotlin,但很多场景你绕不开 C/C++: 图像处理、音视频编解码。 加密算法、安全模块。 复用已有的 C++ 库(如 OpenCV、FFmpeg、游戏引擎)。 对性能极度敏感的计算。 这篇会讲 Android Native 开发的核心:JNI、NDK、CMake
项目小的时候就几个人,编译慢点无所谓。但当模块数超过 20、CI 流水线每天跑几十次、一次全量构建要 10 分钟以上,构建优化就成了真问题。 这篇进入专家篇,讲 Gradle 构建优化和自定义插件。目标不是让你成为 Gradle 专家,而是让你能诊断和解决真实项目里的构建慢问题。 一、为什么你的 G
Android 应用几乎没有不做网络的。但“能联网”和“网络层架构好”是两件事。 我见过太多项目的网络层: 每个接口都手写 try-catch,重复代码一大堆。 错误码处理散落在 Activity 和 ViewModel 里。 Token 刷新没有统一机制,401 到处弹登录框。 一个请求失败就把整