<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[YB1375的专栏]]></title><description><![CDATA[YB的程序人生]]></description><link>https://blog.youkuaiyun.com/u010505364</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010505364]]></copyright><item><title><![CDATA[kotlin中闭包特性]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/170048212</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/170048212</guid><author>u010505364</author><pubDate>Mon, 09 Nov 2026 16:54:26 +0800</pubDate><description><![CDATA[Kotlin 闭包允许函数捕获并修改外部作用域的变量，通过 Ref 包装类实现，比 Java 的“仅读取 final 变量”更灵活。闭包是函数式编程（如柯里化、高阶函数）的基础，但修改捕获变量不保证线程安全，需手动同步（如 Mutex、Atomic）。Java 限制修改捕获变量以避免并发陷阱，而 Kotlin 将选择权交予开发者：语法自由，责任自担。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画AnimationSpec]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/170194599</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/170194599</guid><author>u010505364</author><pubDate>Fri, 06 Nov 2026 15:23:48 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 AnimationSpec 是动画行为的核心，定义动画的驱动方式与数学模型。主要类型包括：tween（时间驱动，支持缓动）、spring（物理驱动，具弹性）、keyframes（关键帧精确控制）、repeatable/infiniteRepeatable（重复循环）、snap（瞬时切换）及 exponentialDecay（惯性衰减）。其中，Easing 仅用于控制 tween 等动画的速度曲线，如 FastOutSlowIn、Linear 等。]]></description><category></category></item><item><title><![CDATA[kotlin中的高阶函数]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169843502</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169843502</guid><author>u010505364</author><pubDate>Mon, 02 Nov 2026 17:17:03 +0800</pubDate><description><![CDATA[高阶函数是将函数作为参数或返回值的函数，源于数理逻辑中的“高阶”概念。在Kotlin中，它与Lambda表达式紧密结合，实现行为参数化，提升代码灵活性与可读性。标准库如filter、map及自定义函数均体现其应用，结合inline优化更可提升性能。高阶函数提供框架，Lambda提供具体逻辑，二者协同构建简洁、高效的函数式编程范式。]]></description><category></category></item><item><title><![CDATA[kotlin与函数式编程]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169541440</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169541440</guid><author>u010505364</author><pubDate>Fri, 30 Oct 2026 18:36:48 +0800</pubDate><description><![CDATA[函数式编程（FP）强调纯函数、不可变数据与声明式思维，通过高阶函数、Lambda 表达式和不可变集合实现代码的可预测性与可维护性。Kotlin 作为多范式语言，融合 OOP 与 FP，以 val、作用域函数、尾随 Lambda、内联函数等特性，实现高效、安全、简洁的代码编写，尤其在集合处理、DSL 构建与并发编程中优势显著，既保留了面向对象的结构组织能力，又提升了代码表达力与性能。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画Modifier.animateItem()]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169368413</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169368413</guid><author>u010505364</author><pubDate>Thu, 29 Oct 2026 00:03:58 +0800</pubDate><description><![CDATA[Jetpack Compose 1.7.0 引入 Modifier.animateItem()，为 LazyColumn/LazyRow 提供开箱即用的平滑动画，支持位置重排、出现（淡入）与消失（淡出）三种动态变化。使用时需在 items() 中指定稳定 key（如数据 ID），否则动画失效。可通过 fadeInSpec、fadeOutSpec 及 placementSpec 自定义动画效果，实现流畅的交互体验。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画Modifier.animateContentSize()]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169368350</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169368350</guid><author>u010505364</author><pubDate>Wed, 28 Oct 2026 23:57:12 +0800</pubDate><description><![CDATA[Modifier.animateContentSize() 为 Jetpack Compose 中组件尺寸变化提供平滑动画，避免界面突变。它自动捕获内容尺寸变化，在旧尺寸与新尺寸间插值，实现自然过渡。适用于展开/收起卡片、文字增减等场景。使用时需注意调用顺序：若需内边距参与动画，应置于 padding() 前；若仅内容区域动画，则放其后。区别于 AnimatedVisibility，它更适用于同一容器内整体尺寸变化的流畅过渡。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画Animatable]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169165651</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169165651</guid><author>u010505364</author><pubDate>Mon, 26 Oct 2026 17:29:31 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 Animatable 是基于协程的低级动画 API，提供命令式精确控制。相比声明式的 animate*AsState，它支持在协程中手动驱动动画，实现多步骤串行动画（如弹性放大、抖动反馈），并可无缝响应手势与事件中断。其内置边界限制与类型安全，适用于复杂交互场景，如拖拽、惯性滑动及错误输入时的震动反馈，显著提升动画灵活性与用户体验。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画AnimatedContent]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/169070428</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/169070428</guid><author>u010505364</author><pubDate>Sun, 25 Oct 2026 23:27:15 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 AnimatedContent 是 Crossfade 的进阶版，支持自定义入场与出场动画。它可根据状态变化动态调整动画方向（如数字增大时从下滑入，减小时从上滑入），并自动处理组件尺寸变化的平滑过渡。通过 transitionSpec 可组合滑动、缩放、透明度等效果，适用于计数器、引导页、标签切换等场景，实现高度可定制的视觉交互体验。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画Crossfade]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/168978594</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/168978594</guid><author>u010505364</author><pubDate>Sat, 24 Oct 2026 23:14:06 +0800</pubDate><description><![CDATA[Jetpack Compose 的 Crossfade API 用于实现不同内容间的平滑交叉淡入淡出动画。通过指定状态键（如枚举值），当状态变化时，自动触发旧内容淡出、新内容淡入的无缝过渡，代码简洁高效。相比手动控制 Visibility，Crossfade 更适合“多选一”场景，如 Tab 切换或页面状态切换，显著提升界面流畅性与开发效率。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画rememberInfiniteTransition]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/168874531</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/168874531</guid><author>u010505364</author><pubDate>Fri, 23 Oct 2026 14:33:38 +0800</pubDate><description><![CDATA[rememberInfiniteTransition 是 Jetpack Compose 中专为无限循环动画设计的 API，无需外部状态触发，组件进入组合即自动播放。支持多属性协同动画（如缩放、颜色），并可通过 RepeatMode.Reverse 或 Restart 实现呼吸灯、脉冲等效果。示例中通过 animateFloat 与 animateColor 配合 infiniteRepeatable，实现加载卡片的动态缩放与渐变，适用于加载指示器、骨架屏等场景。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画AnimatedVisibility]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/168742996</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/168742996</guid><author>u010505364</author><pubDate>Thu, 22 Oct 2026 09:53:41 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 AnimatedVisibility 用于声明式控制组件的显示与隐藏动画。通过 visible 状态驱动，支持淡入淡出、滑动、展开收缩等组合动画，并自动管理布局空间与生命周期。底层基于 updateTransition，实现平滑过渡与状态机管理。示例中结合 fadeIn() 与 expandVertically() 实现流畅入场效果，简洁高效地构建动态界面。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画updateTransition]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/168554405</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/168554405</guid><author>u010505364</author><pubDate>Tue, 20 Oct 2026 15:55:03 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 updateTransition 是管理多属性联动动画的高级 API，通过状态机实现尺寸、颜色、透明度等属性的同步平滑过渡。相比 animate*AsState，它更适合复杂状态（如折叠/展开）下的协同动画，自动处理中途状态切换的平滑过渡，代码结构更清晰，逻辑更统一，显著提升交互体验与可维护性。]]></description><category></category></item><item><title><![CDATA[Jetpack Compose 动画animate*AsState]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/168450263</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/168450263</guid><author>u010505364</author><pubDate>Mon, 19 Oct 2026 17:51:15 +0800</pubDate><description><![CDATA[Jetpack Compose 中的 animate*AsState 系列函数（如 animateDpAsState、animateColorAsState）是实现单值动画的轻量级首选方案。它支持声明式动画，无需手动管理动画流程，状态变化时自动平滑过渡，并可无缝中断重叠动画。适用于尺寸、颜色、透明度等属性的动态变化，如按钮缩放与变色，代码简洁高效，提升交互流畅性。]]></description><category></category></item><item><title><![CDATA[Android开发中库（Library）的选择]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/167388105</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/167388105</guid><author>u010505364</author><pubDate>Fri, 09 Oct 2026 15:50:08 +0800</pubDate><description><![CDATA[在 Android 开发中，库的选择需遵循“四步筛选法”：优先采用 Google 官方推荐的 Jetpack 架构（如 Compose、ViewModel、Hilt、Room 等）构建核心基座；按功能需求精准引入模块（如 Coil 处理图片，Adaptive Navigation 支持折叠屏）；评估库时坚持“维护性、生态兼容性、学习成本”三原则；最后通过 BOM 管理版本，避免冲突，遵循最小化原则，提升开发效率与稳定性。]]></description><category></category></item><item><title><![CDATA[Kotlin 引用操作符::]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/166904060</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/166904060</guid><author>u010505364</author><pubDate>Wed, 30 Sep 2026 22:53:44 +0800</pubDate><description><![CDATA[Kotlin 中的 :: 操作符用于获取函数、属性或类的引用，实现延迟执行与反射。它支持属性引用（如 User::name）、类引用（如 MyActivity::class）和构造函数引用（如 Person::class.primaryConstructor），常用于依赖注入、动态调用与函数式编程。相比 { appState.navigateBack() } 的匿名函数，appState::navigateBack 不创建闭包，性能更高，但灵活性较低，适用于参数匹配且无需额外逻辑的场景。]]></description><category></category></item><item><title><![CDATA[jetpack compose 主题MaterialTheme]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/166373424</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/166373424</guid><author>u010505364</author><pubDate>Tue, 22 Sep 2026 22:37:32 +0800</pubDate><description><![CDATA[在 Jetpack Compose 中，MaterialTheme 是实现 Material Design 3 的核心组件，通过 colorScheme、typography 和 shapes 三大支柱统一应用视觉风格。它支持动态颜色、语义化排版与可扩展形状，提升个性化与一致性。开发者可通过自定义主题（如 LightColorScheme、Typography、Shapes）灵活配置样式，并在组件中通过 MaterialTheme 轻松获取当前主题属性，实现高效、一致的 UI 构建。]]></description><category></category></item><item><title><![CDATA[kotlin 关键字data]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/165120790</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/165120790</guid><author>u010505364</author><pubDate>Sat, 12 Sep 2026 16:14:27 +0800</pubDate><description><![CDATA[data 关键字在 Kotlin 中通过编译期生成 equals()、hashCode()、toString()、copy() 及 componentN() 等方法，减少模板代码，确保字段变更时自动同步，提升可维护性。它不改变内存布局，也不引入运行时开销，仅用于标注数据模型意图，便于 IDE 和库优化（如解构、序列化）。object 加 data 仅增强 toString()。核心价值在于：消除重复代码、降低出错率、明确语义。]]></description><category></category></item><item><title><![CDATA[kotlin 构造函数]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/164985736</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/164985736</guid><author>u010505364</author><pubDate>Fri, 11 Sep 2026 14:38:31 +0800</pubDate><description><![CDATA[Kotlin 中，若未显式定义构造函数，编译器会自动生成公开的无参主构造函数。一旦定义任何构造函数（主或次），则不再自动生成无参构造函数。主构造函数是类属性定义与初始化的中心，次构造函数必须通过 this() 委托给主构造函数，以确保 val 属性的唯一初始化和 init 块的正确执行顺序。相比 Java 的多构造函数重载，Kotlin 更推荐使用主构造函数的默认参数来实现灵活实例化，避免冗余次构造函数。]]></description><category></category></item><item><title><![CDATA[kotlin 关键字expect/actual的作用]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/164849808</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/164849808</guid><author>u010505364</author><pubDate>Thu, 10 Sep 2026 15:28:31 +0800</pubDate><description><![CDATA[Kotlin 多平台中，expect 与 actual 实现跨平台代码共享与原生能力结合。expect 在通用模块声明接口规范，actual 在各平台提供具体实现，编译期完成链接，零运行时开销且类型安全。支持函数、类、属性、枚举及类型别名，适用于底层平台调用或复用原生类。建议仅用于基础 API，复杂逻辑优先使用接口+依赖注入。]]></description><category></category></item><item><title><![CDATA[Kotlin 三类关键字]]></title><link>https://blog.youkuaiyun.com/u010505364/article/details/164747331</link><guid>https://blog.youkuaiyun.com/u010505364/article/details/164747331</guid><author>u010505364</author><pubDate>Wed, 09 Sep 2026 16:34:11 +0800</pubDate><description><![CDATA[编译器不是靠"认出这个词"来区分,而是靠语法位置:出现在类型参数列表后面、声明末尾,就是约束关键字;出现在标识符该出现的地方,就是普通名字。where 是 Kotlin 声明泛型上界约束的语法,用途是限制类型参数必须是哪些类型的子类型。多个约束时:必须用 where。]]></description><category></category></item></channel></rss>