从动态缩放自定义View,聊聊为什么不要把问题复杂化
由繁至简的过程,其实是一种不一样的体验,“笨办法”或许有时候才是真正聪明的做法,真正的经验往往不是“多高明的技巧”,而是什么时候该停下折腾,选择最合适的平衡点。
从一个Bug深入WindowInsets 的传递机制演化
Android低版本中的 WindowInsets 分发机制是「懒惰式且缺乏自动性」的 —— 依赖 ViewRootImpl.performTraversals() 调用链的主动触发,无法在布局未完成的场景中保证完整、时机正确地分发 Insets
为什么开启底部导航栏(三大金刚键)后,全屏或沉浸式模式会出现布局异常
在我们的项目中有一个场景,类似系统相册中点击全屏预览,再次点击退出全屏,其中顶部toolbar要处理全屏时的对状态栏的计算,原本以外只要对状态栏的处理和计算即可,但是发现一个神奇的现象,在开启底部三个金刚键之后,toolbar的计算却出现问题
解决ViewTreeObserver引发的一个问题
在最近的项目开发中,遇到了一个关于布局的BUG。最开始以为这只是一次酣畅淋漓,非常麻烦的问题修复,慢慢深入发现了,只需要简单的适配即可。
Android Room 数据库版本升级踩坑:解决跨版本升级冲突
Room 数据库的版本升级虽然提供了自动迁移机制,但在复杂的跨版本场景中仍然可能踩坑
Android Room 数据库踩坑:手动升级和自动升级一起使用导致数据库报错
在最近的项目开发中,我有个产品需求,需要修改到原来的数据库,增加一个字段,对于数据库操作原本以为很简单,但是没想到踩了一个巨大的坑,今天有空对这个问题进行分析,在这过程中学习到了很多,成长的代价总是惨痛的。
WorkManager 任务链详解:优雅处理云相册上传队列
通过 WorkManager 的 beginUniqueWork 和 APPEND_OR_REPLACE 策略,我们可以优雅地管理云相册的上传任务队列
深度解析:如何用 Paging3 优雅地处理复杂数据源切换
Paging3 提供了强大的工具,能够帮助我们优雅地实现数据加载和切换逻辑。然而,对于一些复杂的场景,例如在线数据与本地数据的动态切换,或者在没有在线数据时优雅降级到本地数据,这些仍然需要我们做一些额外的处理和优化。
Android分页查询数据库方案
在项目中,经常会有展示本地数据的设计,如果我们不采用分页,当数据量大时,加载的速度就会大幅下降,用户Loading的时间大幅增加,对于体验感来说非常不友好
深入浅出:Android Paging3 实现在线与本地数据的高效融合与动态布局解析
最近项目有个需求是实现类似百度网盘和一刻相册的云盘相册效果,刚好有时间就可以解析一下实现的思路
从forEach理解一下kotlin的inline
在Android开发中有很多语法糖,其中forEach可以替代for循环,简洁的语法是很常用的
从findViewById失效的问题到深入setContentView
findViewById是Android中的定位函数,主要作用是引用xml布局中的组件id,每个Android工程师应该都不陌生,在Android studio3.6推出ViewBinding后,更方便的ViewBinding开始替代findViewById。
深入浅出Android系列之从ViewToBitmap延伸到View的绘制全过程
我们的项目有个需求,是将当前的布局生成图片并保存到本地,最近遇到的一个Bug,当我们应用将View生成图片后,布局会出现布局错乱的现象,经过一系列的检查找出了问题,同时延伸到了View的绘制全过程
深入浅出系列之从new一个Activit的操作延伸到Activity启动流程
前段时间在公司一个老项目中,看到有个惊为天人的操作——直接new 了一个activity,当然最后他没有调用,估计是调用后发现崩溃了,当时的第一反应是怎么敢这样干的啊,activity的创建应该是AMS干的,自己new的activity系统就没办法进行管理,关于activity的生命周期等等全部都乱套了,然后就在想,那Android的activity是如何启动的,甚至与Android系统是如何启动的?
深入浅出Android系列之Android进程间通信
在所有使用Linux内核的衍生系统中,都离不开通信,其中又分为进程间(跨进程,又称为IPC)和线程间(进程内)。而Android作为基于Linux的系统,在开发中更是离不开进程间的通信。
Android中invalidate
在Android自定义View的开发中,Invalidate是非常常用的一个方法,这边对这个方法的相关步骤进行一个解析
Android自定义view中,onDraw和onLayout对比
在Android的各个view中,onDraw和onLayout其实都有改变布局位置的作用,那么在使用中,两者的区别大吗?
Android音频可视化操作
Android音频可视化操作中Visualizer和傅里叶变换
MediaExtractor初解
MediaExtractor字面意思是多媒体提取器,它在Android的音视频开发里主要负责提取视频或者音频中的信息和数据流
MediaRecord初解
在音频处理方面,Android提供了AudioRecord和MediaRecorder两种都可以录制音频,MediaRecorder的优势是已实现大量的封装,操作起来更加简单