自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (1)
  • 收藏
  • 关注

原创 Jetpack Compose 主题样式实战:从基础到高级定制

/ 自定义颜色方案// 深色主题颜色方案),),),// 可以继续定义其他文本样式...Text(),) {Button(),),) {fun Card() {Surface(// 使用示例Text(Text(

2025-04-06 10:48:36 88

原创 Jetpack Compose 生产级语言切换架构:ViewModel + Flow 的终极实现

您可以根据实际需求调整支持的语言列表或UI样式。

2025-04-06 01:33:30 205

原创 Jetpack Compose 输入框完整解决方案

修改colors参数可以自定义输入框颜色调整modifier可以改变布局和尺寸通过和控制键盘行为使用实现特殊输入格式这个完整解决方案可以直接集成到您的项目中,或根据具体需求进行进一步定制。

2025-04-06 01:04:11 413

原创 Jetpack Compose 自定义组件完全指南

name") }使用Layout) {Layout(// 测量和布局逻辑) {) {// 手势检测逻辑}) {content()掌握 Compose 自定义组件开发可以极大提升 UI 开发的灵活性和效率。从简单的布局组合到复杂的自定义绘制和动画,Compose 提供了完整的工具链来满足各种需求。记住在实践中不断尝试和优化,你会发现 Compose 的强大之处。

2025-04-05 23:58:01 335

原创 Jetpack Compose 自定义标题栏终极指南:从基础到高级实战

本文将带你彻底掌握 Compose 标题栏开发,涵盖。

2025-04-05 23:48:19 242

原创 Compose 常用组件总结和高级组件与优化技巧

类似传统View系统中的FrameLayout- 垂直排列子项- 水平排列子项。

2025-04-04 10:16:17 1011

原创 MutableLiveData vs MutableStateFlow 深度对比与最佳实践

选择建议:新项目优先采用StateFlow,遗留项目逐步迁移。两者混合使用时,注意在ViewModel层做好状态转换。:ViewModel内部使用StateFlow,对外暴露LiveData。:UI层逐步替换为StateFlow收集。:完全移除LiveData依赖。需要生命周期自动管理?使用StateFlow。使用LiveData。Compose项目?

2025-04-04 00:22:58 872

原创 Jetpack Compose 状态管理指南:从基础到高级实践

在Jetpack Compose中,界面状态管理是构建响应式UI的核心。

2025-04-03 20:21:06 477

原创 打破界限:Android XML与Jetpack Compose深度互操作指南

在现有XML布局项目中逐步引入Jetpack Compose是现代Android开发的常见需求。本指南将全面介绍混合使用的最佳实践、技术细节和完整解决方案。替换独立UI组件(按钮、卡片等)新功能直接使用Compose。通过本指南,你可以系统性地将。实现共享ViewModel。,实现平滑过渡和高效开发。添加Compose依赖。选择非关键路径功能开始。优化Compose性能。统一工具链和构建流程。

2025-04-03 13:58:24 350

原创 (Kotlin) Android使用DialogX实现iOS风格底部弹窗(带Toggle开关)

本文将详细介绍如何使用DialogX库实现一个iOS风格的底部弹窗,包含。setAlignBottom() 确保内容对齐底部。使用RecyclerView实现高效列表。通过回调处理Toggle状态变化。顶部圆角背景优化视觉效果。自定义动画实现滑动效果。

2025-04-02 18:50:09 437

原创 (kotlin) Android 13 高版本 图片选择、显示与裁剪功能实现

要在 Android 13 上实现图片选择、显示并添加裁剪功能,我们可以使用第三方裁剪库如 UCrop。

2025-04-02 10:54:18 531

原创 (Kotlin)Android 高效底部导航方案:基于预定义 Menu 和 ViewPager2 的 Fragment 动态绑定实现

可禁用平滑滚动:setSmoothScrollEnabled(false)随时获取当前 Fragment:getCurrentFragment():让 Fragment 实现 LazyLoadFragment 接口。:使用预定义 Menu + bindPredefinedTab():在 initBottomNav() 中添加自定义动画逻辑。支持 LazyLoadFragment 接口实现懒加载。同时支持预定义 Menu 和动态添加 Tab。:使用 addTab()默认只预加载相邻页面。

2025-03-31 17:49:10 362

原创 Android BottomNavigationView 完全自定义指南:图标、文字颜色与选中状态

通过以上方法,你可以完全掌控 BottomNavigationView 的视觉和交互行为,轻松实现设计需求!:应用主题需继承 Theme.MaterialComponents。✅ 控制文字显示模式(始终显示/仅选中显示/自动隐藏):所有图标建议使用相同尺寸(如 24x24dp)。通过 Material Design 的。✅ 自定义选中与默认文字颜色。✅ 动态切换选中/默认图标。✅ 添加动画和高级样式调整。根据空间自动调整(默认)

2025-03-31 16:00:36 368

原创 Android并发编程:线程池与协程的核心区别与最佳实践指南

特性 线程池 (ThreadPool) 协程 (Coroutine)在Android现代开发中,协程已成为处理异步操作的首选方案,但合理利用线程池处理特定场景仍很重要。最小执行单元 线程(Thread) 协程(Coroutine)并发模型 基于线程的抢占式调度 基于协程的协作式调度。创建开销 较高(需分配系统线程资源) 极低(用户态调度)典型线程池大小限制在CPU核心数的2-3倍。线程切换涉及内核态/用户态转换。

2025-03-31 00:00:03 439

原创 Android Product Flavors 深度解析与最佳实践:构建多版本应用的全方位指南

维护成本降低(通过清晰的结构和智能配置)扩展性增强(支持快速新增风味和维度):利用新DSL语法实现精准依赖控制。:通过新API实现构建时智能决策。:使用多维度组合替代单维度扩展。:建立与风味匹配的测试体系。(通过精准依赖和资源控制):实现矩阵式自动化构建。(通过缓存和并行优化):分层组织+精准压缩。

2025-03-30 23:51:09 349

原创 解决 Android AGP 最新版本中 BuildConfig 报错问题

AGP 8.0+ 默认不再为库模块生成 BuildConfig。中,Google 对构建系统做了不少改动,可能会导致一些与。确认文件已生成在正确位置,并且包含你定义的字段。:AGP 现在强制要求每个模块有明确的命名空间。3.查看完整错误日志,通常会有更具体的错误提示。:AGP 8.0+ 改变了生成文件的位置。1.检查 AGP 版本是否与其他插件兼容。原因:AGP 现在要求显式声明模块依赖。:AGP 现在更严格地控制字段可见性。

2025-03-30 23:21:58 228

原创 在Android中使用Flow进行网络请求

在Android开发中,结合Kotlin Flow进行网络请求是一种现代化且高效的方式。下面我将介绍如何使用Flow与Retrofit等网络库结合进行网络请求。

2025-03-28 23:08:23 265

原创 Android高级重试策略:协程+指数退避的最佳实践

以下是几种优化后的实现方式,增加了更好的错误处理、取消机制和可配置性。:每次重试间隔时间按指数增长,避免频繁重试给服务器造成压力。:最大重试次数、初始延迟、最大延迟、增长因子都可配置。:正确处理了线程切换,UI 更新在主线程执行。已有 RxJava 的项目可以使用。:提供成功、失败和每次重试前的回调。:可以随时取消正在进行的重试任务。:提供了适当的资源释放方法。纯 Java 项目可以使用。:区分业务失败和系统异常。

2025-03-27 16:25:20 327

原创 Kotlin when 表达式完全指南:从基础到高级的12种实战用法

当作为表达式时,必须包含 else 分支(枚举或密封类除外)可以替代绝大多数条件判断场景,使代码更简洁安全。:按从上到下匹配,首个满足条件的分支执行后即退出。:编译器会将密集的整型匹配优化为 跳转表。以下是 Kotlin 中。

2025-03-27 15:40:56 321

原创 彻底解决Android中CheckBox和Button自定义背景无效问题:关键属性解析与实践

才能让自定义背景生效。下面我将提供完整的解决方案和深入解释。这样可以解除系统默认样式的束缚,让您的自定义样式完全生效。确认使用了正确的命名空间(Material组件用app:)对于 Material 组件,必须使用。即使设置了背景,也会被 tint 覆盖。默认会应用主题色着色(tint)确保drawable资源没有错误。组件中,必须正确设置。检查父布局是否覆盖了样式。尝试在代码中直接设置。

2025-03-26 18:21:57 302

原创 (Kotlin)Android 自定义蓝牙扫描动画:多波浪扩散效果

这是一个用于 Android 的自定义 View,模拟蓝牙扫描时的多波浪扩散动画效果。每个波浪的半径逐渐增大,透明度逐渐降低,形成连续的波纹扩散效果。通过调整动画的延迟时间和时长,确保波浪之间的间隙较小,动画流畅且美观。每个波浪之间的启动间隔为 500 毫秒,动画时长为 1500 毫秒,波浪之间的间隙较小。当一个圆圈的动画结束时,下一个圆圈的动画立即开始,形成连续的波纹效果。通过调整动画的延迟时间和动画时长,确保波浪之间的间隙较小。支持多个圆圈(波浪)依次扩散,形成连续的波纹效果。

2025-03-25 17:05:18 714

原创 Android WiFi 信息获取工具类(兼容高版本)

自动处理新旧 API 差异(如 NetworkCapabilities vs NetworkInfo):可根据 RSSI 值转换为百分比(如 -50dBm → 100%)空安全设计(所有可能为 null 的返回值均用?此工具类已覆盖大多数使用场景,可直接集成到项目中!动态处理 Android 6.0+ 权限申请(Android 13+ 可能需要额外申请。兼容 Android 10+ 的隐私限制。Android 10+ 必须申请。获取当前连接的 WiFi 信息(判断设备是否真正连接到 WiFi。

2025-03-25 15:31:59 413

原创 Android 简化图片加载与显示——使用Coil和Kotlin封装高效工具类

ImageLoaderUtils.loadImageWithPlaceholders(url, imageView, placeholderResId, errorResId)**方法加载图片,并设置占位图和错误图资源ID。通过这种方式,你可以轻松地在项目中复用这些图片加载逻辑,减少重复代码,并且可以根据需要进一步扩展这个工具类的功能。的过程,我们可以封装一个工具类。这个工具类将包括初始化ImageLoader的方法、加载图片到。的方法,以及可能的其他便捷方法,如加载圆形图片、设置占位图等。

2025-03-25 10:48:07 472

原创 Android实现图片循环放大缩小动画的完整方案

interpolator 动画插值器 AccelerateDecelerate。pivotX/pivotY 缩放中心点 默认视图中心(无需设置)repeatCount 重复次数 INFINITE(无限循环)repeatMode 重复模式 REVERSE(往返动画)duration 单次缩放周期时长 500-1000ms。简洁版实现(适合简单场景)最稳定高效的实现方式。项中直接使用无限动画。

2025-03-24 20:44:50 241

原创 Android Kotlin 中使用 MPAndroidChart 绘制优雅的曲线图:封装与优化实践

工具类,我们能够以更简洁的方式在 Android 应用中绘制曲线图,同时支持高度自定义配置和动态数据更新。希望本文的内容能为你的开发工作带来帮助!是一个功能强大的开源图表库,支持多种图表类型,但在实际使用中,直接调用其 API 可能会导致代码冗余和可维护性差的问题。的核心功能封装成一个工具类,提供简洁易用的接口,同时支持高度自定义配置。在 Android 开发中,数据可视化是一个非常重要的功能,尤其是曲线图的绘制。工具类,支持高度自定义配置和动态数据更新。工具类,并提供完整的使用示例。

2025-03-24 08:27:19 897

原创 Flutter 提示信息封装优化:安全、灵活、易用的解决方案

通过本文介绍的优化方案,我们实现了一个安全、灵活且易用的 Flutter 提示信息封装工具类。它避免了内存泄漏问题,支持多种提示方式,并提供了丰富的自定义选项。无论是轻量级的 SnackBar、Toast,还是弹窗提示和底部弹框,都可以通过简单的调用实现,同时保持代码的简洁性和可维护性。希望本文能为你的 Flutter 开发带来帮助!

2025-03-23 20:02:21 399

原创 Flutter 弹窗封装:支持多种常见弹框,灵活易用

在 Flutter 开发中,弹窗(Dialog)是常见的 UI 组件,用于提示信息、确认操作、输入内容等。通过封装,弹窗的调用更加简洁,代码更易维护,同时支持高度自定义样式和异步操作。通过这种封装方式,Flutter 弹窗的使用变得更加灵活和高效!

2025-03-23 19:09:03 306

原创 Flutter网络请求封装:高效、灵活、易用的Dio工具类

通过封装这样一个网络请求工具类,我们可以显著提高Flutter项目的开发效率,减少重复代码,同时增强代码的可维护性和扩展性。希望本文对你有所帮助。

2025-03-23 18:56:04 483

原创 Android Kotlin 权限工具类封装:简化动态权限管理

通过封装权限工具类,我们可以将权限申请的代码逻辑集中管理,减少重复代码,提高代码的可读性和可维护性。同时,适配高版本 Android 系统的权限要求,确保应用在不同版本设备上正常运行。希望本文的内容能帮助你在 Android 开发中更高效地处理动态权限管理!

2025-03-23 11:04:40 435

原创 Android开发:基于 Kotlin 协程的设备指令控制工具类设计与实现

通过本文,我们实现了一个基于 Kotlin 协程的设备指令控制工具类。该工具类支持指令队列、重试机制、状态管理等功能,并适配安卓平台,确保生命周期管理和主线程安全性。希望这篇博客对你有所帮助!

2025-03-23 10:34:14 358

原创 Android Aria 下载框架的优化实践:封装、任务管理与持久化存储

并通过封装、任务队列管理、网络状态检查以及持久化存储等优化手段,提升下载功能的代码质量和用户体验。通过本文的实践,你将掌握如何高效地使用 Aria 实现强大的下载功能,并优化代码结构和性能。以下是完整代码,包括封装下载逻辑、任务队列管理、网络状态检查以及持久化存储。使用 Room 数据库存储下载任务信息,以便应用重启后恢复下载任务。将 Aria 的下载逻辑封装到一个单独的类中,便于复用和维护。数据库存储下载任务信息,支持应用重启后恢复下载任务。:在下载前检查网络状态,避免在无网络时启动下载任务。

2025-03-22 20:14:13 215

原创 Hilt 实战:从零到一实现 Android 依赖注入与网络请求

Hilt 是 Android 官方推荐的依赖注入(DI, Dependency Injection)框架,基于 Dagger 构建,专为 Android 设计。它简化了 Dagger 的使用,减少了模板代码,使依赖注入更加容易上手。Hilt 是 Android 开发中依赖注入的最佳实践,特别适合中大型项目。通过本文的实战讲解,你可以快速上手 Hilt,并将其应用到实际项目中。,从基础概念到实际应用,逐步演示如何在 Android 项目中使用 Hilt 进行依赖注入。定义需要注入的依赖项。

2025-03-22 00:27:57 354

原创 Retrofit + 协程封装实战:高效处理Android网络请求与状态管理

从依赖配置、数据模型定义、API接口设计,到ViewModel中的数据管理和UI层的状态观察,一步步带你掌握现代Android开发中的网络请求最佳实践。无论是初学者还是经验丰富的开发者,都能从中受益,提升开发效率和代码质量。的结合为网络请求提供了简洁高效的解决方案。这种封装方式不仅提高了代码的可读性和可维护性,还能有效减少重复代码,适合中大型项目的开发。示例,包括网络请求的封装、错误处理、加载状态管理等。在 UI 层观察数据变化,并更新 UI。开发中,网络请求是必不可少的功能,而。

2025-03-21 23:59:15 456

原创 Kotlin在Android UI开发中的15个实用技巧

中,Kotlin提供了许多实用的技巧和工具,能够显著减少样板代码、提高开发效率,并增强代码的可读性和可维护性。无论是初学者还是经验丰富的开发者,都可以通过这些技巧提升开发体验,打造更高效的Android应用。通过以上技巧,可以显著提升Android UI开发的效率和代码的可读性。表达式比Java的switch更强大,适合处理复杂的条件逻辑。hashCode()**等方法,适合用于UI数据模型。可以简化UI组件的初始化代码,减少冗余。可以减少对同一对象的重复引用。的一个库,可以用代码代替。

2025-03-21 23:43:24 342

原创 (kotlin)Android webView工具封装

工具类,可以将常见的配置和逻辑集中管理,减少重复代码,提高开发效率。工具类支持加载 HTML 内容、远程 URL、显示加载进度、处理返回键等功能,并且可以根据需要进一步扩展。工具类可以简化代码,提高复用性,并统一处理 WebView 的常见配置和逻辑。以下是一个封装好的 WebView 工具类示例,支持加载。可以根据需要扩展工具类,例如添加缓存配置、处理混合内容等。如果需要更复杂的逻辑(例如拦截特定 URL),可以自定义。方法,用于在 Activity 中处理返回键逻辑。启用 JavaScript。

2025-03-20 22:41:29 268

原创 Android 轮播图实现

(this):将 Banner 与 Activity 的生命周期绑定,避免内存泄漏。:确保导入的类是 com.youth.banner 包下的类,而不是其他库的同名类。运行后,你会看到一个带圆点指示器的轮播图,圆点会根据当前显示的图片位置自动更新。库,并支持加载本地图片和圆点指示器。我们将从布局文件到代码实现一步步完成。代码中配置 Banner,并加载本地图片和圆点指示器。:自定义适配器,用于加载本地图片。:确保使用的是最新版本(

2025-03-20 19:47:50 337

原创 Kotlin 常用二进制操作封装:高效处理位运算与数据解析

通过封装二进制操作,可以提高代码的可读性和复用性。你可以根据实际需求选择工具类或扩展函数的方式。

2025-03-20 08:40:56 259

原创 (Java和kotlin)Android Blufi低功耗BLE蓝牙协议解析封装工具类

是一项基于蓝牙通道的 Wi-Fi 网络配置功能,适用于 ESP32。它通过安全协议将 Wi-Fi 的 SSID、密码等配置信息传输到 ESP32。BluFi 流程的关键部分包括数据的分片、加密以及校验和验证。此处,我们采用 DH 算法进行密钥协商,128-AES 算法用于数据加密,CRC16 算法用于校验和验证。(Characteristics),而具体的通信协议则由设备厂商定义。我们可以通过封装一个协议解析和生成的工具类来简化BLE通信的开发。中,协议的理解和封装是非常重要的。通常,BLE设备会通过。

2025-03-19 22:32:43 795

原创 Android Kotlin:TextView 部分文字变色与粗体效果实现指南

在 Android 中,可以通过以下几种方式实现TextView部分文字变色和粗体效果。

2025-03-19 20:48:23 889

原创 (kotlin)Android SharedPreferences 工具类封装:高效、简洁、易用

使用 throw IllegalArgumentException 抛出异常,提示不支持的类型。Kotlin 的 when 表达式替代了 Java 的 if-else 链,使代码更简洁。:使用双重检查锁定(Double-.Checked Locking)优化单例模式。如果有其他问题,欢迎随时提问。使用泛型方法 get,支持自动类型推断。每个方法返回 this,支持链式调用。:支持链式调用,提升代码可读性。:提供更灵活的默认值处理方式。:减少冗余代码,提升可维护性。:通过泛型方法减少重复代码。

2025-03-18 13:42:03 201

history.zip

android 开发

2019-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除