- 博客(70)
- 收藏
- 关注
原创 给 compose draw 绘制的非规则图形添加点击监听
上一节简单介绍了怎么给 composable 添加监听,那么问题来了,怎么给我们自己绘制的内容添加呢?答案是,一样的,但是也不完全一样。怎么监听按钮点击?要知道,绘制的作用域是DrawScope而不是Compose了。并且,在DrawScope中也没有提供任何触摸相关的 API。如果想要监听触摸事件,我们只能在compose作用域中的 Modifier 中添加。你可能会说,那还不简单,那我们直接给提供了DrawScope的 composable 加上监听不就得了?就像这样") }) {
2023-05-20 23:10:34
1700
原创 羡慕大劳星空顶?不如跟我一起使用 Jetpack compose 绘制一个星空背景(带流星动画)
分析完这个页面由什么构成的后,我们先别急着直接开始写,我先扩展几个关于 compose 自定义绘制的基础知识,后面会用到。知道了往哪儿绘制图形后,下一步是了解一下如何给自定义绘制内容添加动画效果。其实,给绘制内容添加动画效果和给普通的 compose 控件加动画基本一致。state =!可以看到,与正常用法几乎没有区别,这里演示的是使用 draw 中的变换功能,旋转当前绘制的矩形,旋转的角度则由来提供,这样就实现了一个简单的旋转动画。
2023-05-20 23:09:29
1764
原创 魔改车钥匙实现远程控车:(4)基于compose和经典蓝牙编写一个控制APP
这篇文章不出意外的话应该是魔改车钥匙系列的最后一篇了,自此我们的魔改计划除了最后的布线和安装外已经全部完成了。不过由于布线以及安装不属于编程技术范围,且我也是第一次做,就不献丑继续写一篇文章了。在前面的文章中,我们已经完成了 Arduino 控制程序的编写,接下来就差编写一个简单易用的手机端控制 APP 了。这里我们依旧选择使用 compose 作为 UI 框架。编写这个控制 APP 会涉及到安卓上的蓝牙开发知识,因此我们会先简要介绍一下如何在安卓上进行蓝牙开发。
2023-05-20 23:08:23
2084
1
原创 使用 compose 封装一个通用的关于页面库
现在很多 APP 都会有一个关于页面,用于放置一些必要的信息,例如:版本号、版权信息等。有时也会用于展示设置、帮助、反馈等功能的入口。通常,我们都会自己挨个创建不同的 item ,略显繁琐。所以我就在想,能不能封装一个通用的关于页面?在满足大多数子定义需求的情况下,尽可能的简单?
2023-05-20 23:07:28
1786
原创 魔改车钥匙实现远程控车:(番外)在macOS上安装使用MicroPython
哈哈,各位可能会奇怪为啥上一篇文章还在说怎么在 ESP32C3 上安装 Arduino,现在怎么又变成了安装 MIcroPython。其实是因为上次写 Arduino 还是我高中时候的事了,已经不太会了。虽然 MIcroPython 我从来没有接触过,但是 python 我一直有在用,最多就是需要熟悉一下 MicroPython 的 API,同样是需要重新学习,我选择 python,毕竟人生苦短,我选python。能用 python 为什么要用 c 呢?
2023-05-20 23:05:55
994
原创 魔改车钥匙实现远程控车:(前传)在macOS上安装使用Arduino
因为最近有个需求需要硬件支持,原本打算使用 Arduino Nano,后来在 Boot 大佬的建议下,买了某宇宙家的 ESP32C3 核心板,对比 Arduino Nano 价格便宜了一大半,而且自身就集成了 WIFI 和 BLE 模块,还不用另购蓝牙模块,可以说是性价比极高了。毕竟 9.9 包邮还要什么自行车?
2023-05-20 23:03:04
1633
原创 在安卓项目中使用 FFmpeg 实现 GIF 拼接(可扩展为实现视频会议多人同屏效果)
在开始之前先简单介绍一下什么是 FFmpeg,不过我相信只要是稍微接触过一点音视频的开发者都知道 FFmpeg。FFmpeg 是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能,包含了 libavcodec ——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat ——一个音频与视频格式转换库。简单来说,只要是和音视频相关的操作,几乎都可以使用 FFmpeg 来实现。-y 若指定的输出文件已存在则强制覆盖-i 设置输入文件,可以设置多个。
2022-09-19 13:36:51
1442
原创 compose使用入门:做一个丝滑的可展开列表
compose 的基础组件基本涵盖了所有的基本需求,即使是没有的组件我们也可以很快速的使用已有基础组件组合出我们需要的组件效果。另外,compose 的动画创建相比于传统 view 方便了许多,例如参数值改变的动画,现在只需要使用创建一个带动画的参数,再放到需要动画的地方即可,完全不需要其他多余的操作。
2022-09-19 13:35:29
799
原创 少年,不知道怎么在安卓中使用 PaddleOCR ?看我怎么把它二次封装成只需要两行代码即可使用
其实 PaddleOCR 部署并不算复杂,只是由于它的多平台特性,导致新手使用时会看的一脸懵逼,不知道到底该怎么去使用。最后,这个库我已经在我自己的项目隐云图解制作中使用了半年多了,目前没有发现有什么大问题,所以各位可以大胆的去尝试使用。当然,这个库只是为了方便快速接入使用 OCR 的开发者,如果你想要更多的自定义或扩展功能,还是得你自己去研究部署 PaddleOCR,如果你恰好有时间,并且认为这些功能其他人也能用的到的话,欢迎 PR 到这个库中。
2022-09-19 13:34:14
4033
13
原创 魔改车钥匙实现远程控车:(3)通过蓝牙与手机通信并持久化保存参数设置
自此,ESP32 程序基本已经为完全完成了,下一步是编写一个专属的控制 APP,毕竟不可能每次更新参数都要手撸代码吧,多麻烦啊,写个傻瓜式 APP 一键设置多方便啊。哈哈,终于可以干回我的老本行:安卓 了。
2022-09-19 13:32:53
1164
1
原创 使用 Jetpack Compose 实现一个计算器APP
使用 compose 仿其他 APP 的界面相比较于使用传统 xml 可以说是方便的多了,现在 compose 基本也可以完美使用了,就是总还是会有一些奇奇怪怪的小 BUG 让人很烦,就比如我上面说到的这个尺寸溢出闪退的问题。
2022-09-19 13:30:47
1384
原创 魔改车钥匙实现远程控车:(2)距离感应的实现
在上一篇文章中,我们讲了魔改实现远程控车的基本思路,但是我们仅仅实现了主动控制,对于距离感知被动解锁尚未实现,本篇文章的内容就是实现距离感应自动解锁。
2022-08-16 10:12:20
1091
1
原创 使用 compose 的 Canvas 自定义绘制实现 LCD 显示数字效果
compose 的 Canvas 的自定义绘制相比于原生 view 的绘制简单的多,因为少了很多模板代码,也不用去考虑生命周期的问题。但是简单也有简单的劣势,那就是可定制性相比于原生 view 没有那么多,少了一些方法。对了,写完这个“仿真”显示界面,我突然觉得好像“仿真”计算器并没有什么意思,所以决定不做这个类型的了(笑。...
2022-08-09 13:20:38
832
原创 使用Compose实现基于MVI架构、retrofit2、支持 glance 小部件的TODO应用
实现基于 Gitee ISSUE 作为服务端,使用 MVI 框架,以 retrofit2 作为请求库,使用了依赖注入、数据分页,分页数据缓存数据库,支持 glance 桌面小部件的 TODO App
2022-08-05 15:19:56
2822
2
原创 使用compose实现康威生命游戏之二:我是如何将计算速度缩减将近十倍的
在上一篇文章中,我们使用compose写了个游戏,虽然我说运行很流畅,但是实际上如果画布尺寸稍大就会出现卡顿,本文就将探究卡顿的原因,并给出优化方案,并且最终将计算时间由 20+ms 优化至3ms。......
2022-08-04 17:27:19
1378
原创 基于 jetpack compose,使用MVI架构+自定义布局实现的康威生命游戏
基于 jetpack compose,使用 MVI架构+自定义布局实现的康威生命游戏,本文介绍了如何使用compose来实现一个简单的小游戏。
2022-08-02 17:00:42
2349
原创 Android 未进行依赖管理导致的问题:IDE 报错 “Unresolved reference: registerForActivityResult“但是能正常编译运行
由于未进行依赖管理,导致项目各模块之间依赖冲突,触发了 IDE 的一个由来已久的BUG,使得 IDE 错误的提示方法不存在。
2022-07-28 10:21:33
3967
4
原创 魔改车钥匙实现远程控车:(1)整体思路及控制方案实现
我的改装思路是,将车钥匙主板拆出,重新焊接一块开发板,并由这块开发板接管控制车钥匙的电源和按键。然后将改装后的开发板放入车内,平时车钥匙电源设置为断开状态,在接收到手机的指令或检测到手机信号强度到一定阈值后给钥匙供电并配合接通特定按键实现感应解锁。而锁车则反之。...
2022-07-25 16:14:57
3528
1
原创 记一次 kotlin 在 MutableList 中使用 remove 引发的问题
但是此处,为了方便返回数据,我会在原有 list 末尾再添加两条数据,并且在遍历前将这两条数据通过 remove 移除。此时再去遍历这个 list 就出现了上述所说的顺序错乱。所以合理猜测是由于调用了 remove 导致顺序被重新排列了?...
2022-07-20 16:26:19
2796
4
原创 在 macOS 上安装使用基于 ESP32C3 的 MicroPython
哈哈,各位可能会奇怪为啥上一篇文章还在说怎么在 ESP32C3 上安装 Arduino,现在怎么又变成了安装 MIcroPython。其实是因为上次写 Arduino 还是我高中时候的事了,已经不太会了。虽然 MIcroPython 我从来没有接触过,但是 python 我一直有在用,最多就是需要熟悉一下 MicroPython 的 API,同样是需要重新学习,我选择 python,毕竟人生苦短,我选python。能用 python 为什么要用 c 呢?因为上次安装 Arduino 时已经踩过了一些坑,所以
2022-07-12 13:51:11
1442
1
原创 安卓定位方案的价格对比(包含可免费商用的服务)
由于公司业务需求,需要给设备加上电子围栏功能,目前的解决方案是设备定期上传当前所处位置给后台,由后台判定是否超出电子围栏范围。前期测试时一直使用的是高德提供的定位服务,但是最近高德通知禁止使用高德的服务进行商业运营获利,如果使用到了高德的服务,则必须支付商业授权费用。由于某些原因,领导不想付钱,只想免费使用,所以便有了这篇文章。安卓原生API提供了获取定位的方法,一般有两种渠道:使用GNSS定位(即GPS、北斗等)、使用网络定位(基站、wifi等)。GNSS无需多说,直接使用卫星定位,优点是定位精确,无需网
2022-07-12 09:45:26
6405
5
原创 Android Bitmap.compress 方法返回 false 的一个可能原因(jpg文件编码的分辨率限制)
前言最近在解决一个遗留以久的BUG时,发现调用 Bitmap 的 compress 方法将 bitmap 导出到文件流时,如果导出的 bitmap 特别大且导出编码为 Bitmap.CompressFormat.JPEG 的话该方法会直接返回 false 而没有抛出任何错误。而对于同一个 bitmap ,改用 Bitmap.CompressFormat.PNG 就不会返回 false 而是能正常导出。原因与解决方法懒得看分析过程的可以直接看这里:经过我的分析,导致 compress 方法返回 fa
2021-07-27 21:18:34
1305
1
原创 在安卓项目中使用gifsicle编辑GIF动图-Android NDK 编译 gifsicle 为可执行文件记录
一、前言最近项目中有需要压缩GIF的需求,最开始时试图使用FFmpeg通过降低GIF的分辨率和帧率的来减少GIF文件体积,但实际测试下来,大多数情况下压缩效果并不理想,甚至会出现降低分辨率后导出的GIF甚至比原文件还大的情况。故选择放弃FFmpeg,经过大量的查询资料,发现如果想要压缩GIF大致有以下几个途径:参考文章1.由于 GIF 支持全局调色盘和局部调色盘,在没有局部调色盘的时候会用放在文件头中的全局调色盘。所以对于颜色变化不大的 GIF,可以将颜色放入全局调色盘中,去除局部调色盘。2.
2020-12-15 22:38:53
1310
原创 计算机二级Python易忘考点整理
事先声明,这里记录的是我刷二级题时遇到的不熟悉的问题时记录下来的笔记。可能并不适合所有人,仅供参考。任何问题请联系邮箱:admin@likehide.com (因为不常上网站,所以留言和私信可能无法及时回复)个人介绍:业余“开发者”一枚,Python为其启蒙语言,但已经很久没有认真写过Python直到不久前突然想考计算机二级,于是慢慢开始刷二级Python题库。##一、语法或函数本项主要记...
2019-04-04 21:10:29
1153
原创 java.lang.IllegalArgumentException Unknown URI: content://downloads/public_downloads/ 解决方案
当使用如下代码调用安卓的自带文件选择Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("video/*");intent.addCategory(intent.CATEGORY_OPENABLE);startActivityForResult(Intent.createChooser(intent, "...
2018-12-20 17:27:03
22231
10
原创 Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used) 解决方法
当我准备使用ffmpeg截取视频帧时出现了如题错误提示。使用命令如下:ffmpeg -ss 15.683 -i /storage/emulated/0/test.mp4 -y -f image2 -t 0.001 /storage/emulated/0/0.jpg为了便于理解,在说解决方法之前,先解释一下这个命令的各参数用处:-ss 15.683 :将视频指向 15.683 秒...
2018-12-07 20:11:19
5704
2
原创 新手向:Python常见错误及解决方法
写在前面:此文为应一好友的邀请所作,面向对象为初学Python者,加之笔者已多年未深入Python且技术有限,其中语言可能不够严谨,甚至会有错误,还望各位读者见谅,并联系我更改以免误导新手。非常感谢您的理解。本人联系方式:admin@likehide.com目前还在持续更新中,欢迎随时回来看看。一、 错误查看方式1. 使用IDE查看IDE:集成开发环境(IDE,Integrated Develo...
2018-04-28 17:42:48
14259
3
原创 【伪大数据】对QQ空间指定好友2017年说说数据的分析
没错,我准备用我高考60分的数学水平以及小学生都不如的表达水平加上只会HELLO WORLD的编程水平来一次关于QQ空间动态的分析。一、概况本次爬虫的对象为我学校的一个“表白墙”(以下简称墙墙)在2017年发表的所有的说说。1.1 整体情况首先先来看一下我这次抓了多少数据:爬虫启动于2017年12月31日 15:30因故障停止于2017年12月31日 23:30 - 2
2018-02-07 21:38:11
1233
原创 androidstudio gradle错误:Error:Unrecognized SSL message, plaintext connection? 解决方案
在安卓开发过程中经常会遇到 gradle 无法下载依赖的问题,大多数情况下都与下载源被墙了有关,作为程序员,相信大家也是常备梯子,我也不例外。但是今天新建一个项目时却遇到这样的错误:Error:Unrecognized SSL message, plaintext connection?Consult IDE log for more details (Help | Show Lo
2018-02-07 21:34:17
10119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅