自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gamin

学习和开发中的笔记

  • 博客(819)
  • 资源 (148)
  • 收藏
  • 关注

原创 [Harmony]网络状态监听

本文介绍了HarmonyOS应用开发中的网络状态监听实现方法。首先在module.json5中声明了GET_NETWORK_INFO和INTERNET两个必要权限。然后详细解析了一个网络状态监听工具类NetworkMonitor的实现,通过创建NetConnection实例并注册监听事件,实现对网络连接状态(如可用、断开、不可用)和网络类型(蜂窝/WiFi/以太网)的实时监测。该工具类采用单例模式,提供添加/移除监听回调的方法,为开发者提供了完整的网络状态监控解决方案。最后示例展示了在窗口创建阶段

2025-06-04 14:28:03 344

原创 [Harmony]颜色初始化

这是一个颜色工具类ColorUtils,提供颜色格式转换功能。主要包含:1) fromHex方法处理十六进制颜色(支持#RRGGBB、#AARRGGBB等多种格式);2) fromRGBA方法创建RGBA颜色;3) toHexString将颜色转为十六进制字符串;4) toRGBA转换为RGBA对象。支持透明度处理,自动补全简写格式,并提供类型安全的颜色值转换。

2025-06-04 14:19:58 296

原创 [Harmony]实现JSON与类的双向转换

通过使用 reflect-metadata 和 class-transformer,可以实现 JSON 与类实例之间的双向转换。reflect-metadata 提供了元数据修饰符,如 @Reflect.metadata,用于为类、属性或方法附加元数据,支持获取属性类型、方法参数类型和返回类型。class-transformer 则提供了核心修饰符,如 @Expose 控制属性序列化/反序列化可见性,@Type 指定嵌套类型转换规则,@Transform 自定义值转换逻辑。通过定义基类 BaseModel

2025-05-22 18:39:42 667

原创 [Harmony]网络请求

本文介绍了如何在OpenHarmony系统中使用OHPM安装@ohos/axios依赖,并配置网络权限。接着,文章详细展示了如何对axios进行二次封装,创建一个HttpService类,提供GET和POST请求的统一接口,并处理错误和请求配置。封装类支持不同环境的API地址配置,并提供了公共参数的处理方法。最后,文章通过一个登录功能的示例,展示了如何使用封装后的HttpService进行网络请求,并处理响应数据。

2025-05-22 15:32:32 339

原创 [Harmony]自定义Toast

该代码定义了一个Toast类,用于在应用中显示提示信息。Toast类包含两个静态方法:show和showWithOffset。show方法用于显示基础Toast,接受提示内容和显示时长(默认1500毫秒)作为参数。showWithOffset方法用于显示带垂直偏移量的Toast,接受提示内容和偏移量(默认50%)作为参数。两个方法在显示前都会通过isBlank函数检查提示内容是否为空或仅包含空白字符。isBlank函数用于判断字符串是否为空或仅包含空白字符。代码通过promptAction.showToas

2025-05-22 15:16:17 123

原创 [Harmony]模拟器抓包

Charles是一款常用的网络抓包工具,适用于iOS和Android设备。对于iOS设备,用户可以通过Mac电脑的网络管理配置Charles代理,而Android模拟器则可以在模拟器的网络代理设置中手动配置。对于真机,需要安装并信任Charles的CA证书。具体步骤包括从Charles获取代理地址和端口,然后在设备或模拟器中配置网络代理。通过这些步骤,用户可以成功抓取HTTPS接口的数据包。

2025-05-22 10:39:38 245

原创 [Harmony]WebView基本用法

在module.json5中申请网络权限,通过requestPermissions字段指定ohos.permission.INTERNET权限,并设置使用场景为始终可用。在跳转至WebView时,通过router.pushUrl传递网页地址和标题参数。WebView组件通过aboutToAppear生命周期接收路由参数,并加载指定网页。页面包含导航栏,支持返回操作,并显示网页加载状态。整体流程实现了网络权限申请、参数传递及WebView页面展示。

2025-05-22 09:32:27 371

原创 [Harmony]自定义导航栏

本文介绍了两种自定义导航栏的实现方案,并提供了获取状态栏高度的工具类和使用示例。方案一通过CustomNavigationBar组件实现导航栏,包含返回按钮、Logo和标题,支持动态调整高度。方案二在方案一的基础上增加了状态栏占位区域,并支持全屏模式,但需注意页面底部可能超出屏幕,需手动设置margin。工具类DevicesUtil用于获取状态栏高度,支持物理像素与虚拟像素的转换。使用示例展示了如何在协议页面中应用自定义导航栏,并处理页面跳转和参数传递。两种方案均适用于不同场景,开发者可根据需求选择。

2025-05-21 09:40:58 309

原创 [Harmony]获取设备参数

DevicesUtil 是一个用于获取设备信息的工具类,支持获取屏幕宽度、高度、状态栏高度、导航栏高度、刘海高度、设备型号、系统版本号等信息。通过 display 模块获取屏幕的物理像素,并使用 pxToVp 方法将其转换为虚拟像素(vp),便于布局。状态栏、导航栏和刘海高度的获取通过 window.getWindowAvoidArea 实现,支持返回物理像素或虚拟像素。设备信息如设备类型、品牌、型号、系统版本等通过 deviceInfo 模块获取。此外,还支持获取系统语言和格式化语言名称。

2025-05-20 15:13:45 398

原创 [Harmony]大文件持久化

在开发过程中,首先需要在module.json5文件中添加权限ohos.permission.READ_WRITE_USER_FILE,以允许读写用户数据,并在string.json中定义权限使用原因。接着,封装了一个大文件数据持久化工具MFLargeDataStorage,使用@ohos.file.fs模块实现文件的读写操作,支持保存和加载JSON格式的用户数据。最后,通过示例展示了如何在应用中使用该工具,包括设置上下文、保存用户数据以及加载并输出数据。整个过程确保了数据的安全存储与高效访问。

2025-05-15 17:43:49 291

原创 [Harmony]获取资源文件中.txt文件中的字符串

文章摘要:本文介绍了如何通过UserDataManager类从src/main/resources/rawfile/userInfo.txt文件中读取JSON字符串。UserDataManager类使用getRawFileContent方法获取文件内容,并通过buffer模块将其转换为UTF-8格式的字符串。示例代码展示了如何在Index组件中调用getTextFromResource方法,并在点击按钮时输出文件中的JSON字符串。该方法适用于在应用中动态读取和解析资源文件。

2025-05-15 17:17:49 270

原创 [Harmony]封装一个可视化的数据持久化工具

本文介绍了在HarmonyOS应用中如何添加权限、封装数据持久化工具及其使用示例。首先,在module.json5文件中声明应用所需的分布式数据同步权限,并配置使用场景。接着,封装了一个基于@ohos.data.preferences的可视化数据持久化工具MFStorageManager,支持初始化、获取、更新和选择性清除缓存数据等功能。工具类中还定义了一个自定义的ConsoleLog类,用于在控制台输出日志时添加前缀。最后,通过一个示例展示了如何在页面中使用MFStorageManager进行用户ID的设

2025-05-15 12:58:06 523

原创 [SwiftUI]如何让Text靠左上对齐并且文本最多只展示两行

有一个需求,要商品名称占用两行的高度,但文本不能居中要左上对齐。

2025-04-27 11:51:41 163

原创 [Error]DevEco新建一个空项目时报错Process finished with exit code 255

目录及其所有子目录的所有权更改为当前用户。文件夹中创建文件或目录。在执行过程中需要访问。

2025-04-23 09:44:29 313

原创 [SwiftUI]切换根视图

切换根视图 @StateObject @EnvironmentObject @AppStorage

2025-04-20 11:20:48 295

原创 [Swift]Xcode模拟器无法请求http接口问题

现在我在Xcode16.3上,这种设置方式在真机上能请求http(应该是设备开启了开发者模式),但在模拟器上请求http是被拒绝的。,因为它不允许所有不安全的连接,但例外列表允许连接到一些没有 HTTPS 的域。这样模拟器上就能正常请求http接口了。默认限制了非 HTTPS 请求。

2025-04-19 22:18:37 782

原创 [Swift]pod install成功后运行项目报错问题error: Sandbox: bash(84760) deny(1)

它主要与 Xcode 的脚本执行环境有关,目的是提高构建脚本的安全性,防止脚本对系统或文件进行未经授权的操作。在Xcode中,前往项目的“Build Settings”部分,将属性设置。ENABLE_USER_SCRIPT_SANDBOXING 默认值。在 Swift 或 Xcode 项目中,pod install成功后运行报错。

2025-04-19 12:20:28 537

原创 [Git]克隆仓库报错warning: remote HEAD refers to nonexistent ref, unable to checkout

从远程仓库clone项目,报错warning: remote HEAD refers to nonexistent ref, unable to checkout,只拉取到了隐藏.git文件夹。没有列出任何分支,说明远程仓库确实是空的,或者没有任何有效的分支。如果远程仓库有分支,你可以手动切换到一个有效的分支。注意,这里用git branch获取不到分支明显。这将会切换到你选择的分支并检出代码。切换分支后,重新拉取项目就可以了。如果远程仓库的默认分支是。

2025-03-02 12:20:58 406

原创 [Android]使用WorkManager循环执行任务

使用WorkManager每隔30分钟执行一次任务。这种方式最低适配到SDK=33。

2025-02-22 09:08:46 483

原创 [Android]浏览器下载的apk文件无法识别无法安装问题

在Android电话机上,用浏览器下载apk进行版本更新,出现下载文件没被识别为apk,导致无法安装问题。正常识别的apk文件前会有个Android默认图标,识别不了的时候前面是个文件标识。必须要使用有域名的链接来进行下载,像之前使用华为云的地址就导致下载后文件不识别。注意:使用华为云的链接在手机端是能正常下载安装的,估计是浏览器不一样的问题。

2025-02-21 14:31:17 601

原创 [Android]避免文本太长将右侧标签挤出展示区域之外

【代码】[Android]避免文本太长将右侧标签挤出展示区域之外。

2025-02-21 14:25:53 138

原创 Andorid Studio下载历史版本

https://developer.android.com/studio/archive

2025-02-21 12:00:48 268

原创 [Android]DialogLifeCycle禁止点击背景关闭弹窗

在 Kotlin 中,可以通过设置 Dialog 的 setCanceledOnTouchOutside 方法来避免点击弹窗之外的背景而关闭弹窗。您可以在 DialogLifeCycle 的 show 方法中设置这一属性。

2025-02-21 11:52:51 282

原创 [Android]如何在代码中访问LayoutParams修改layout_weight?

要在 `yearWheelView` 中修改 `layout_weight` 属性,您可以直接访问其布局参数(LayoutParams)并设置新的 `layout_weight` 值。代码如下,如何在代码中修改NumberWheelView的layout_weight?

2025-02-21 11:42:18 321

原创 [Android]App生命周期

// APP生命周期) {// 可选:在 Activity 创建时执行任务// 应用进入前台NSLog("应用进入前台, App has entered the foreground")// 发送广播通知// 可选:在 Activity 恢复时执行任务// 可选:在 Activity 暂停时执行任务// 应用进入后台NSLog("应用进入后台, App has entered the background")// 可选:在保存 Activity 状态时执行任务。

2025-02-21 11:35:21 370

原创 [Android]MD5

【代码】[Android]MD5。

2025-02-21 11:28:41 118

原创 [Android]页面间传递model列表

这样就可以通过 Parcelable 传递 NNBBUUModel 列表到另一个页面。

2025-02-21 11:23:03 321

原创 [Android]应用内更新问题

从 Android 11 开始,即使应用程序请求了 WRITE_EXTERNAL_STORAGE 权限,系统也会将其视为 READ_EXTERNAL_STORAGE 权限。因此,在 Android 11 及更高版本中,应用程序将无法直接写入外部存储,而必须通过其他方式来访问共享文件系统。因此,从 Android 11 开始,开发者需要使用更安全的 Scoped Storage 或其他适当的方式来处理文件访问,以兼容最新的 Android 版本。

2025-02-21 11:17:09 393

原创 [Android]AppCompatEditText限制最多只能输入两位小数

要限制 AppCompatEditText 只能输入两位小数,可以使用 TextWatcher 来实时监控用户输入,并在超出限制时进行处理。:在 XML 布局中定义 AppCompatEditText,如你所示。:在代码中为该 AppCompatEditText 添加 TextWatcher,以便在用户输入时进行验证和格式化。

2025-02-21 10:53:14 490

原创 [Android]使用AlarmManager设置周期性任务

设置周期性任务每隔一小时执行一次任务。

2025-02-21 10:41:31 454

原创 [Android]APP自启动

APP添加自启动权限,重启设备后自动打开APP。

2025-02-21 10:11:32 400

原创 [Android]如何让APP快速被系统杀掉

你可以使用 ADB (Android Debug Bridge)命令来杀掉你的应用进程。首先确保你的设备已经连接并且 adb 已经设置好。你也可以通过模拟内存不足的情况来强制系统杀掉你的应用。你也可以使用一些第三方的 Android 管理工具来强制停止应用,如 Task Killer 应用。你可以通过 Activity Manager 来杀掉你的应用进程。通过这些方法,你可以快速地杀掉你的应用,以便进行恢复和重启的测试。在你的应用代码中,可以通过故意抛出未捕获的异常来模拟应用崩溃。找到你的应用并点击进入。

2025-02-21 10:06:10 964

原创 [Android]让APP进入后台后不被杀掉(保活)

在 Android 系统中,应用在进入后台后,系统可能会因为各种原因(如内存不足、电池优化等)对其进行强制退出。虽然无法完全保证应用永远不会被系统强制退出,但可以采取一些措施来减少这种情况的发生。

2025-02-21 09:54:25 2540

原创 [Android]如何查看APK是使用的什么签名方案

小米上传APK时,有时会提示APK不是V2签名。啊噢,出错了!根据您上传APK包体所适配的安卓版本情况,需要对该应用添加安卓V2签名,请参考进行处理。

2025-02-21 09:41:30 712

原创 [Android]浮点数舍入规则RoundingMode

【代码】[Android]浮点数舍入规则RoundingMode。

2025-02-20 18:05:26 390

原创 [Android]列表弹窗单选

【代码】[Android]列表弹窗单选。

2025-02-20 18:02:06 168

原创 [Android]文本多的时候让TextView的字体自动变小

为了让 TextView 的字体在文本过多时自动变小,以显示全部文本,可以使用 Android 的 autoSizeTextType 属性。该属性允许 TextView 在空间不足时自动调整字体大小。

2025-02-20 17:50:40 573

原创 [Android]代码中如何设置AppCompatTextView的drawable

resources.getDimensionPixelSize(R.dimen.drawablePadding) 获取 drawablePadding 的像素值,确保与 XML 中的 android:drawablePadding="5dp" 保持一致。如果没有定义 R.dimen.drawablePadding,可以直接使用像素值代替,如 5。: 使用 ContextCompat.getDrawable 获取 drawable 资源,确保兼容性。

2025-02-20 17:44:12 351

原创 [Android]NestedScrollView嵌套RecyclerView视图点击事件冲突问题

【代码】[Android]NestedScrollView嵌套RecyclerView视图点击事件冲突问题。

2025-02-20 17:34:44 252

原创 [Android]如何判断当前APP是Debug还是Release环境?

一般情况下,Gradle会为每个构建类型生成一个BuildConfig类,其中包含一个DEBUG字段,该字段在Debug构建中为true,在Release构建中为false。在Kotlin中,可以通过检查应用的BuildConfig字段来判断当前应用是处于Debug还是Release环境。

2025-02-20 17:25:11 462

MVVM模式简单demo

这是一个是MVVM模式实现的在tableview上分层选择省市区的demo

2018-09-29

GAIPADemo 2.zip

使用第三方XYIAPKit工具,写了一个简单内购demo, 测试了一下能完美适用于各种购买 。

2019-10-15

上传到阿里云OSS的图片处理

上传到阿里云OSS的图片处理,可查看官网文档:https://help.aliyun.com/document_detail/44688.html?spm=a2c4g.11186623.6.1179.4d1f53b3WU0oXy

2019-01-23

WKWebViewDemo

这是一个WKWebView的简单使用demo,包含于H5的一些简单交互。

2019-01-20

自定义相机拍照购

拍照购demo(自定义相机+结果页动画),类似京东和淘宝APP上的图片搜索...

2018-10-23

GAEditTextDemo.zip

一个简单的使用ZSSRichTextEditor的一个用于iOS的漂亮的富文本编辑器。它包含了所有的标准编辑器工具

2019-07-11

GAHomeDemo.zip

就是一个简单结构的项目的搭建demo。 首页只是通过下面方法切换控制器: - (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion

2019-07-10

AutoLayoutDemo

一个简单demo,SDAutoLayout的简单使用....

2018-08-27

选择开始时间和结束时间

一个分段选择开始时间和结束时间的demo,会现在结束时间的选择在开始时间之后。

2019-01-21

自定义图片选择器

demo功能包含自定义图片选择器(GACustomSelectPIC)、保存图片到自定义相册、拍照完成可自由裁剪(PureCamera)

2018-10-31

12.0 (16A366)

iOS开发真机升级12.0系统后,解决xcode未升级之前无法连接手机调试的问题。 解压后放如目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

2018-09-28

VoicePlayerDemo.zip

iOS开发的一个简单的音频录制和播放demo,支持对安卓录制格式(amr)的播放。

2019-07-15

简单使用UIMenuController

简单使用UIMenuController给UILabel添加复制、粘贴、分享功能

2018-08-27

自定义相机

拍照购demo(自定义相机+结果页动画),类似京东和淘宝APP上的图片搜索...

2018-10-25

GAEditDemo.zip

简单的一个demo,获取点击的点在屏幕上的坐标,获取某个view在屏幕上的位置。 UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; CGRect rect = [tempBut convertRect:tempBut.bounds toView:window];

2019-07-16

MasonryDemo

使用Masonry纯代码约束视图 mas_makeConstraints() mas_remakeConstraints() mas_updateConstraints() equalTo() mas_equalTo() width() mas_width()

2018-07-26

PhotoDemo图片选择器.zip

demo功能包含自定义图片选择器(GACustomSelectPIC)、保存图片到自定义相册、拍照完成可自由裁剪(PureCamera)

2019-05-28

价格选择.zip

一个拖动滑块选择minPrice和maxPrice的简单demo [以上]

2019-07-29

从控制器中分离出View

方法: objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key, id _Nullable value, objc_AssociationPolicy policy) 参数: object 关联者 key key与value是一一对应的关系,必须确保key全局唯一。 value 关联的对象 policy 关联策略: 方法: objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)

2018-10-10

简单KVO Demo

只是一个iOS开发简单使用KVO的demo,只是备份用不着下载。 ps:上传错了,后面删除。

2019-02-12

GASuspendViewDemo

一个添加在window上悬浮视图。 可固定,可拖动,还可以限制一个拖动范围。 可限定在只某些页面展示。

2023-03-26

安卓手机与Mac电脑文件互传AndroidFileTransfer

安卓手机与Mac电脑文件互传AndroidFileTransfer

2022-12-02

iOS使用MonkeyDev完成Hook

使用七猫举个例,去移除小说阅读页底部广告和章节之间的广告。

2022-11-24

charles-proxy-4.2.7长期版

charles-proxy-4.2.7长期版-V-

2022-11-20

GAVideoRecordDemo.zip

一个简单的添加视频的demo,包含从相册选择视频和直接录制视频,然后将mov转为mp4. .

2020-01-20

GAAVPlayerViewControllerDemo.zip

一个简单的AVPlayerViewController demo,通过控制showsPlaybackControls确定使用系统播放管理样式还是自定义播放器样式。

2020-01-22

GAEmptyDataDemo.zip

GAEmptyDataDemo

2021-10-22

GACallSoundDemo.zip

音视频聊天时,设置自定义来电铃声,并会根据震动模式设置震动 。

2020-01-06

GAGradientRampDemo.zip

swift绘制渐变色

2021-08-05

UIButton+Badge.zip

UIButton+Badge,通过运行时的方式对UIButton拓展了标签展示功能 .

2019-11-01

GAAppUpdate.zip

Swift app版本更新

2021-07-29

UIViewController+Present.zip

UIViewController+Present,这个分类是用来适配iOS13之后UIViewController模态弹出问题的. 使用这种方式就不用去项目中挨个找模态弹出了.

2019-11-01

GASimpleCalendar2.zip

弄的一个简单的日历,可以展开完全展示日历,也可以收回只展示已选择那一行。另外添加了选择器切换月份,还可以在列表中跨月选择切换日期。

2020-10-15

stdc++.6.0.9.zip

Xcode10:library not found for -lstdc++.6.0.9 临时解决

2021-04-03

GATextViewTestDemo.zip

Cell随着输入文字的换行自动增高 .

2020-10-26

UIView+BorderLine.zip

@interface UIView (BorderLine) /** 增加边框 @param borderWidth 边框宽度 @param borderColor 边框颜色 @param cornerRadius 边框圆角 */ - (void)addBorderLineWithBorderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor cornerRadius:(CGFloat)cornerRadius; /** 增加边框 @param borderWidth 边框宽度 @param borderColor 边框颜色 @param cornerRadius 边框圆角 @param borderType 边框类型 */ - (void)addBorderLineWithBorderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor cornerRadius:(CGFloat)cornerRadius borderType:(UIBorderSideType)borderType; @end

2019-10-26

UIView+AZGradient.zip

@property CGPoint az_startPoint; @property CGPoint az_endPoint; + (UIView *_Nullable)az_gradientViewWithColors:(NSArray<UIColor *> *_Nullable)colors locations:(NSArray<NSNumber *> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; - (void)az_setGradientBackgroundWithColors:(NSArray<UIColor *> *_Nullable)colors locations:(NSArray<NSNumber *> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; @end

2019-10-28

EmptyDataSet-demo.zip

UIScrollView+EmptyDataSet,是因为大佬是使用的UIScrollView的category扩展的功能,使用时调用非常清晰流畅.

2019-10-30

NSString+FileSize.zip

NSString+FileSize,获取到沙盒文件或文件夹路径时,可以通过这个NSString的拓展调用fileSize方法得到文件或文件夹的大小。

2019-10-31

UITextView+Placeholder.zip

@import UIKit; FOUNDATION_EXPORT double UITextView_PlaceholderVersionNumber; FOUNDATION_EXPORT const unsigned char UITextView_PlaceholderVersionString[]; @interface UITextView (Placeholder) /* 占位文字 */ @property (nonatomic, copy) NSString *placeholder; /* 占位文字颜色 */ @property (nonatomic, strong) UIColor *placeholderColor; @end

2019-10-26

空空如也

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

TA关注的人

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