- 博客(417)
- 资源 (4)
- 收藏
- 关注
原创 Arduino 开发esp32的教程
2、esp32在Arduino上面的支持库安装方式,还有一些库的使用方式。1、Arduino工具使用教程,ESP-IDF教程也有,带视频。记录下 Arduino开发esp32的过程。
2026-07-18 10:17:49
239
原创 使用thonny在esp32上面驱动st7789渲染图片
这里使用python进行开发。图片显示的话暂时只能显示bmp格式的图片。需要将图片转换为240x240大小的bmp格式(也就是安装了st7789芯片的显示器的大小).以下是转换地址还需要一个st7789的驱动还有另外一种使用bin的方式驱动的,比较复杂就没尝试。
2026-07-12 18:46:29
217
原创 四位数码板5461AS电路原理图解析
从图中可以看到 12、9、8、6 针脚控制着千位、百位、十位、个位(这里分别编号1、2、3、4位,后文要用到)的数码管的亮与灭。虽然从电路图上看针脚排列很无规律,但是物理元件上的针脚分布却很简单,见下图。将数码管正面朝向自己,正放(小数点显示在右下方),那么针脚的分布将如下图所示(左下角为1,逆时针方向旋转一周则转到针脚12。即左下角为1,右下角为6,右上角为7,左上角为12)。如果你不想记住,可以用记号笔在数码管的侧面写上针脚,方便以后使用。四位数码管5461AS是共阴型数码管,电路图如下。
2026-06-28 12:52:10
356
原创 IOS中的SwiftUI的滑动监听方式,使用GeometryReader + PreferenceKey
本文介绍了在SwiftUI中使用GeometryReader+PreferenceKey监听ScrollView滚动位置时遇到的关键问题及解决方案。核心问题在于多子视图场景下,默认reduce方法会因后续视图返回0而覆盖正确值。 解决方案分两步: 修改PreferenceKey的reduce方法,仅当新值非空时才更新 在onPreferenceChange中处理负坐标转换 文章提供了两种实现示例: 单Key垂直滚动监听(ScrollMonitorDemoView) 嵌套滚动监听(垂直+水平独立Key的Nes
2026-06-15 09:55:43
233
原创 ESP32开发板环境安装
ESP32开发板有很多型号,记录一下淘宝上买到开发板后如何搭建环境。下面涉及的关键词可以通过ai进行解释回答,然后就能找到关键信息。
2026-06-12 22:31:51
316
原创 iOS / SwiftUI 输入法(键盘)布局处理总结(AI版)
输入框切换时键盘闪烁键盘弹出/收起动画不自然无法像 Android WindowInsetsAnimation 一样平滑跟随。
2026-04-06 21:58:43
210
原创 Swift 中的 Combine 框架完整指南(含示例代码 + 实战)
debounce → 输入优化throttle → 防止重复点击Future → 异步封装AnyPublisher → 类型擦除。
2026-04-06 21:50:38
413
原创 UiKit中使用DiffableDataSource进行数据差异化更新
在使用的过程中,使用进行差异化数据更新,可以更好的优化性能,并且简化数据更新时候的动画效果。但是代码有一点问题,是关于并发的问题时候使用了进行解决,暂时不知道更好的方式。
2025-10-10 16:48:27
354
原创 UITableView的简单使用方式
极简的列表实现 - 几行代码就能创建功能完整的列表最佳性能 - 专门为垂直列表优化丰富的内置功能 - 编辑模式、索引、刷新控制等成熟的生态系统 - 大量第三方库和社区支持对于简单的垂直列表需求,UITableView 通常是最简单、最高效的选择。
2025-10-10 11:08:26
468
原创 UIKit中使用UICollectionView实现简单列表
在UIKit中可以使用实现较复杂的列表,以下是此布局的简单使用,效果如下这里面使用自定义实现了滑动缩放的效果,如果不需要可以使用系统默认效果。
2025-10-10 10:45:04
377
原创 UIkit中使用新版UICollectionViewCompositionalLayout进行复杂布局(二)
此前使用进行了简单使用,下面对此进行复杂布局使用,效果如下。
2025-10-10 10:35:07
396
原创 UIkit中使用新版UICollectionViewCompositionalLayout进行简单布局(一)
是 UIKit 在 iOS 13 中引入的一种全新的、功能强大的布局系统,用于。它是一种声明式的布局方式,让你能够通过组合不同的布局组件来创建复杂的界面布局,取代了之前需要子类化的复杂过程。将布局分为cell、group、section、CompositionalLayout四部分,每一部分都可以单独定制,这样使布局达到了极强的灵活性优势特点声明式语法 - 更直观易读组合性 - 通过组合简单组件创建复杂布局灵活性 - 每个 section 可以有完全不同的布局性能优化 - 内置了性能优化机制。
2025-10-10 10:29:29
455
原创 Swift中数据库GRDB的使用方式记录
本文记录一下Swift数据库GRDB的简单实用方式,这是一个第三方的数据库。开源地址如下:GRDB:里面记录了基本的使用方式。
2025-08-16 12:17:02
43
原创 X-Requested-With,一个少见且难以修复的问题
从Android 12开始部分移除,Android13开始完全移除,本文记录如何在低版本移除修改的部分参考代码。在Android 12以下,使用WebView请求数据会添加请求头。
2025-03-30 10:33:51
934
原创 Android中使用Robolectric测试点击事件(不需要手机)
Robolectric 是一个由 Google 维护的开源 Android 测试框架,它允许你以 Android 运行时环境运行单元测试。Robolectric 提供了一个模拟 Android 运行时环境,允许你测试你的代码是否正确地使用 Android API。所以在不依赖于手机的情况下可以对android项目进行测试。当然也可以在有手机的时候对Android项目进行测试。
2025-02-28 20:21:17
1021
原创 Android RecycleView触摸事件记录
在开发中有时候需要对RecycleView的触摸事件进行拦截和处理,RecyclView本身事件比较复杂,直接使用View的事件体系不能完成特定业务。比如区分滑动和点击事件。
2024-05-31 19:57:05
1642
原创 Compose中的重组、state、remember
在Compose中UI采用State状态来控制UI变化,根据状态的不同来显示不同的内容,每次UI的重新变化成为重组。通过remember可以将state的数据保存起来(或者实例对象,毕竟条件不改变的话默认只会执行一次remember中的函数,哪怕重组无数次),避免在重组期间进行重置。下面记录下三者的关联。
2024-02-01 15:30:55
1379
原创 Android源码中示例代码的查看方式
由此可知其余示例也是找到相关的官方仓库,然后去查看示例代码。在实际开发中查看官方api定义的时候会看到如下内容。
2024-02-01 12:18:50
458
原创 Android Room数据库异常(线上两个版本之间结构无变动): Room cannot verify the data integrity.
在Room数据库结构变动的情况下,如果没有进行Room数据库升级迁移,则会报错。在实际开发过程中,数据库结构会经常变化,直到发版。一般来说卸载即可重新安装,但是有时候即使卸载了再安装依然会出现这个错误。这时候通常重启设备再重新安装即可,然而再后面即使数据库没有更改多次安装还是有概率出现,一旦出现,只能重启。查阅多种资料,最终发现通过禁用备份功能可以解决该问题。猜测是备份功能会自动把之前旧的数据库版本更新下来然后与当前新版本数据库产生了冲突。
2024-01-30 16:27:25
1516
原创 在Compose中控制组件中数据的流速
在Compose中设计思想是分为状态和组件的,组件由状态控制。这个操作和传统的AndroidView不太一样。在Compose中对话框Dialog也是一个组件,其显示和隐藏由外部状态控制。这里有一个场景,假设显示和关闭的时间间隔过短的话,需要将时间延长至两秒后再隐藏。针对这种问题有两种写法,一种是外部控制显示隐藏时机,一种是内部控制。外部控制较为简单,这里不再记录。本文记录下内部控制方式。
2024-01-29 20:04:42
810
原创 gradle构建项目速度优化及排查方式
gradle构建优化分为两部分,分别为Android上面的优化和gradle项目通用优化,使项目编译速度提升,节省开发时间。在此前提保持良好的编码习惯并减少代码和资源,也有利于提高编译速度。
2023-11-26 16:31:50
4468
原创 Could not resolve all files for configuration ‘:app:androidJdkImage‘.
解决办法为,修改java版本为17。本地重新下载Java17的jdk,这样本地就会有21、17两个版本,然后在项目中指定依赖的java版本17并配置路径(也可以配置环境变量)可以看出使用的sdk版本为34,java版本为21.
2023-11-26 13:00:28
5033
原创 使用ListenableFuture进行异步任务执行并进行线程切换
在程序中会经常需要做一些异步任务,但是由于部分操作其实很简单,仅仅是短暂的进行异步操作,然后在结果成功或失败的时候切换回主线程进行下一步处理,这期间不能阻塞主线程。这里记录一下使用google的guava库里面的并发类进行处理,也可以,只是在Android上最低支持API23版本,但是项目最低支持21。使用来进行Java高版本兼容的话,改动比较多,一直有R8/D8兼容性错误。估计要升级jdk、gradle等等版本,在协作开发中不太合适。项目中本身就有guava。所以使用这个进行开发。
2023-11-23 11:15:57
1387
原创 开发中各个工具的版本变化速查链接
该文档虽然是官方文档,但是不会把实验功能写出来,比较好的地方就是看起来整齐简洁,下一条文档也是官方的,很全面,但是文档写的复杂。可以从这个文档有个简单了解,具体每个版本细分特性可以查阅https://docs.oracle.com/en/java/javase/21/index.html 这个链接,然后将版本号修改下即可。可以选择不同的版本查看,比较不好的是,没有列出每个版本的新增变化。groovy的版本变化相较于其余更加难读主要位于官网的最下面。
2023-10-29 20:14:59
627
百分比适配库的jar
2015-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
3