- 博客(555)
- 资源 (25)
- 收藏
- 关注
原创 Flutter之Widget构建过程详解
知识储备:Flutter之BuilderContext和Widget关系浅析Fultter之Element和Widget对应关系解析今天来详细谈谈Flutter的Element,了解了Element,Flutter的一些概念和框架就是“程序员头上的虱子,一眼看透了”(这他娘的什么比喻),话不多说,赶紧上车!在我们使用Flutter开发的时候常用的就是各种Widget,那么Element是什...
2019-11-09 22:27:45
3176
11
原创 Flutter之GlobalKey详解
博主打算通过登录功能来总结一下Flutter的相关知识点。为什么选择登陆功能呢?因为登录功能逻辑简单,很好抽象,功能也很普遍,这也是博主以此为突破口写android MVC和MVP探讨的原因。本系列应该不长,初步估计也就三篇左右,通过层层递进,慢慢地会勾勒出一个完整的登陆功能的demo,demo的源码点此可得。俗话说站在巨人的肩膀上成长的更快,当然这个俗话是我瞎篇水字数的,本系列博文的重要参考资料...
2019-11-02 14:00:40
26089
18
原创 Flutter之Widget 更新机制原理浅析
本篇博客将要分析Widget的更新机制,在阅读这篇文章之前建议读者阅读Fultter之Element和Widget对应关系解析, 从Element和Widget对应关系这篇博文中可以知道有如下的表关系:...
2019-03-25 14:36:05
3643
2
原创 从源码角度分析android事件分发处理机制
正式开始之前的准备工作: 之前也写过一篇《android事件拦截处理机制详解》的博客,通过博客的名字也可以知道那篇博客只是分析了android控件View对事件的拦截和处理,简单的总结如下: 1)父View优先拦截当前事件,拦截不成功就让子View对当前事件进行拦截。 2)如果拦截成功的话,就会沿着子view到父View的路...
2015-12-08 12:18:12
6550
1
原创 算法:有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。我用了Stack数据结构完成题解,思路很简单就是。每个右括号都有一个对应的相同类型的左括号。循环替换,直到字符串长度是0则满足要求。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。看了下别人的算法很巧妙,用。
2026-07-03 08:51:40
301
原创 算法:大数加1
给定一个表示 大整数 的整数数组 digits,其中 digits[i] 是整数的第 i 位数字。这些数字按从左到右,从最高位到最低位排列。这个大整数不包含任何前导 0。将大整数加 1,并返回结果的数字数组。
2026-07-01 14:18:12
333
原创 算法:删除有序数组的重复项
想象一下你在搬家,需要整理书架上的书。书架上的书已经按作者姓氏的字母顺序排列好了,但有些作者有多本书(重复项)。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。这是我自己的写法,也通过了。
2026-06-29 10:08:34
176
原创 力扣算法题:盛最多的水
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。后面根据提示,改用双指针法,它能将时间复杂度降低到 O(N)。输入:[1,8,6,2,5,4,8,3,7]
2026-06-12 09:47:31
175
原创 Android LinearLayout测量原理详解
而理解 layout_weight 的关键,在于认清它分配的是剩余空间而非整体空间,只有掌握这一底层逻辑,才能真正做到权重布局可控、可预期、不踩坑。既然最终大小完全由分配决定,那提前测量子 View 就没有任何意义,所以系统直接跳过,这是 Android 官方做的重要性能优化。的测量过程,只算它的上下边距。、权重、分割线、基线对齐等多种场景,在保证布局行为稳定可预期的前提下,尽可能优化测量次数,提升布局性能。,系统拿到这个高度,才能做到心里有数,才能准确计算剩余空间,保证布局高度稳定、不抖动、不变形,。
2026-04-24 09:33:57
93
原创 Android FrameLayout从onMeasure到onLayout源码简析
视图测量的核心方法,作用是:根据childView 的大小、自身的测量规则、内边距 /外边距,计算出自己最终的宽高,再重新测量设置了。默认左上角叠加,可通过 gravity 设置居中 / 靠右 / 底部等对齐方式。(测量 → 布局 → 绘制)。目的是确定childView 在父容器中的具体坐标位置,完成摆放。,作用:向上传递给父布局,让父布局知道子空间不够了,用于处理滚动、适配等逻辑。,是所有 View 测量宽高的最终 “决策方法”。方法得到最大宽和高的时候,在设置。结合上面的源码分析,我们在使用。
2026-04-22 08:33:13
64
原创 Android getSuggestedMinimumWidth和getSuggestedMinimumHeight简析
确保View最小尺寸不小于设定值,测量时参考建议最小宽高。是 Android View 中用于获取。自定义一个简单的圆形View,通过。方法设置,未设置时为 0)。共同决定,取两者中的。实现中,这两个方法是。,确保背景完整显示。
2026-04-17 13:55:59
73
原创 Android ScrollView源码简析
结合前文所有疑问和源码解析,我们可以用一句话总结ScrollViewScrollView 自身拒绝 UNSPECIFIED 模式,确保自身有明确高度;同时给childView设置 UNSPECIFIED 模式,让childView测量出真实内容高度;onLayout 完整摆放childView,scrollTo 移动画布实现滚动,最终呈现“超出部分可滚动”的效果。其中,模式的核心作用,是“解除对childView高度的限制”,让childView能突破ScrollView。
2026-04-16 10:47:05
74
原创 面试知识储备系列4:Android View的测量规则详解
所有布局(LinearLayout/RelativeLayout/FrameLayout)都靠它计算子View大小。view的测量过程中父控件会给子控件一个 “尺寸限制”,子控件根据限制计算出自己的最终宽高。不管你多大,你想多大就多大,详见后续ScrollView的工作原理!测量模式(Mode):父控件对子控件的限制规则。测量大小(Size):父控件允许的最大尺寸。打包成一个 int 值,返回给子View。子 match / wrap →。子 match / wrap →。大小已经定死了,必须遵守!
2026-04-15 10:23:56
67
原创 面试知识储备系列3:Android AMS 和 ATMS简介
一、AMS/ATMS简介1. 核心定义二、AMS 核心作用(详细拆解)1. 进程管理与资源调度(AMS 核心)2. 四大组件生命周期管控3. 任务栈(Task)与多窗口(ATMS)4. 系统稳定性与监控5. 权限与安全6. 系统全局信息与接口三、AMS/ATMS 核心工作流程(以启动 Activity 为例)四、总结五、API 31 中 AMS/ATMS 核心 API 与常用方法清单(一)AMS 核心 API(ActivityManagerService 相关)
2026-04-14 14:07:21
186
原创 面试知识储备系列2:Android系统SystemServer 简介
SystemServer = 系统服务容器 + 系统管家它启动并运行 AMS、WMS、PMS 等所有系统服务负责进程、窗口、电源、网络、安装、通知等一切系统能力API 31 上结构更清晰,AMS/ATMS 拆分更彻底,后台管控更严格Zygote 是 Android 系统的孵化器,负责创建并初始化 Java 运行时环境;SystemServer 是系统服务核心进程,由 Zygote 孵化并承载所有 Framework 服务。二者通过父子进程关系与 COW 机制实现高效、安全、统一。
2026-04-13 15:20:30
134
原创 面试知识储备系列1:Zygote 进程简介
Zygote 是Android 第一个 Java 进程所有应用进程都由它 fork 而来负责预加载系统资源,加速 App 启动没有 Zygote,就没有任何 App 能运行它不负责创建 Activity,只负责创造应用进程Activity 是应用进程里的 ActivityThread 创建的Zygote 是 Android 的“进程孵化器”,专门负责生孩子(应用进程),不负责带孩子(不管理Activity)。
2026-04-10 13:57:43
169
原创 compileSdkVersion、minSdkVersion 和 targetSdkVersion详解
影响编译能力,越高越好(获取新 API 和编译检查)。:影响用户覆盖范围,需平衡兼容性和功能需求。:影响运行时行为,需与主流系统版本同步以适配新特性。(用最新 SDK 编译)、(覆盖 Android 5.0 + 设备)、(针对 Android 13 优化)。
2025-10-31 10:12:57
236
原创 Android 中不同存储路径及 FileProvider 配置与使用
path的核心作用是在外部存储私有根目录的基础上,进一步限定别名可访问的子路径范围,既实现了路径映射的精准性,又通过限制访问范围提升了文件分享的安全性。开发中需根据实际文件存储的子目录设置path,确保仅暴露必要的文件路径。首先需在中定义的name和对应的path,这是代码使用name的基础。示例配置(关键是-- 配置 external-files-path:name:别名(自定义,如 my_external_downloads)
2025-10-30 08:59:19
386
原创 AES/CBC/PKCS5Padding的CBC是什么意思,除了CBC还有哪些?
CBC是经典模式,需 IV 且加密依赖顺序,安全性中等,仍有一定应用(如早期 HTTPS、文件加密)。现代推荐优先使用GCM或CTR,它们在安全性、效率和功能(如认证)上更有优势。避免使用ECB,因其安全性缺陷明显。
2025-10-29 09:52:33
662
原创 android APP实现指纹免密登录的实现思路
现如今,如多APP都实现了指纹登录的功能,指纹登录逻辑很简单,在豆包或者其他AI工具中输入“Android APP实现指纹登录”就可以得到详细的代码,但是代码只是初级实现,其实指纹登录还需要跟APP自身系统进行打通,怎么做呢?注意第五步有个细节,就是将PassWord字符串截取成两部分passWord1和passWord2,每一部分都需要加密然后Base64,然后将passWord1保存到服务器,将passWord2保存到本地。5、然后根据客户号和步骤4获取到的密码,调用APP的登录接口完成登录即可。
2025-10-17 14:59:51
300
原创 unable to make field private final java.io.File.path accessible: module java.base does not “opens
【代码】unable to make field private final java.io.File.path accessible: module java.base does not “opens。
2025-07-29 14:26:02
216
原创 Android Appium测试时,popupwindow控件元素无法定位问题
我看有的文章说为PopupWindow的contentView设置 setFocusable(true),试了下,没效果,只有调用。的的元素,解决方法很简单,就是将。
2025-04-22 08:54:34
195
Android ASM 代码自动化埋点
2022-04-23
ViewDragHelperDemo
2016-03-04
QQ侧滑简单实现
2016-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅