哆啦A梦小短腿

Compose 键盘与面板切换时,ActionBar 如何做到零抖动

页面底部有一条固定 48dp 高的操作栏(ActionBar)。点击「字体」按钮时,需要在软键盘和字体样式面板之间来回切换。朴素实现是「先收键盘,等收完再展开面板」——结果 ActionBar 会先跟着键盘掉到屏幕底部,再被面板顶回来,切换过程明显上下跳动。 目标效果是切换全程 ActionBar 在屏幕上的绝对位置纹丝不动,键盘和面板在它下方无缝互换,类似 iOS 邮件客户端的观感。本文...

彻底搞懂 Android 事件分发与拦截机制(含 Compose)

一句话概括:Android 的触摸事件从上往下「派发」,每一层容器都可以选择「自己截胡」还是「继续往下发」,子控件处理不了还能「退回」给上层。 这套机制就是事件分发与拦截。它是自定义 View、解决滑动冲突的地基,也是面试必考题。本文从一个比喻讲起,把三个核心方法、传递规则、源码脉络一次讲透,最后补上 Jetpack Compose 里对应的实现原理。 先用一个比喻建立直觉 把一次触摸想...

Android 与 Web 的 JS 交互原理与 JsBridge 定制开发

混合开发(Hybrid)里绕不开一个问题:运行在 WebView 里的网页(JS)和运行在 Android 虚拟机里的原生代码(Java/Kotlin),怎么互相调用? 本文从底层原理讲起,梳理官方提供的几种交互方式,拆解 JsBridge 到底是什么、如何自己实现一个,最后给出目前推荐的两套现代方案及完整代码。 WebView 是两个世界的边界 Android 里的 WebView 内...

《凡尘问道》文字修仙小游戏产品方案

版本:V1.0 | 类型:文字模拟 + 轻策略 + Roguelike 修仙 | 引擎:Cocos Creator(2D) 定位:个人开发者产品,无内购,广告激励变现,长线内容迭代 一、产品概述 1.1 产品定位 《凡尘问道》是一款以中国修仙文化为背景的文字驱动型模拟养成游戏。玩家扮演一名资质平平的凡人,从引气入体开始,历经练气、筑基、金丹直至飞升,在数百年的修行岁月中做出无数抉...

Android开发者的Claude Code实战心得:需求描述、省Token与多Agent工作流

用 Claude Code 写 Android 项目大半年了,从最初”当高级搜索引擎用”,到现在日常开发的大部分编码工作都交给它,中间踩了不少坑,也攒了一套自己的工作流。这篇文章把这些心得系统整理一下:怎么描述需求才高效、Token 怎么省、缓存命中率是怎么回事、会话什么时候该重开、Agent / SubAgent / Hook / MCP 这些概念到底是什么、有哪些常用命令和隐藏功能、以及...

企业级协同办公 Android 客户端架构复盘

这篇是对近一年在一款企业级 IM / 协同办公 Android 客户端上做的几项架构改造的系统复盘。产品形态可以概括为「IM 即时通讯 + 音视频会议 + 组织架构 + 轻量办公套件(日历 / 文档 / 邮箱 / 待办)」,代码按「应用宿主层 → 业务插件层 → 通用组件层 → 基础能力层」分层,采用 Kotlin + Jetpack Compose + MVI。 下面每个专题都按「背景与...

基于 Media3 的视频缓存与完整文件导出实践

在视频播放场景里,我们经常会遇到两类需求:一类是播放时尽量复用本地缓存,减少重复网络请求;另一类是当缓存已经足够完整时,将缓存内容导出成一个完整的视频文件,供离线使用或后续处理。 Media3 已经提供了缓存、下载、播放器接入等基础能力,但“把缓存导出为一个完整文件”这件事,仍然需要业务层做一次封装。本文结合一套可落地的实践方案,系统梳理以下两个问题: 如何用 Media3 配置视...