- 博客(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
原创 [Error]DevEco新建一个空项目时报错Process finished with exit code 255
目录及其所有子目录的所有权更改为当前用户。文件夹中创建文件或目录。在执行过程中需要访问。
2025-04-23 09:44:29
313
原创 [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]浏览器下载的apk文件无法识别无法安装问题
在Android电话机上,用浏览器下载apk进行版本更新,出现下载文件没被识别为apk,导致无法安装问题。正常识别的apk文件前会有个Android默认图标,识别不了的时候前面是个文件标识。必须要使用有域名的链接来进行下载,像之前使用华为云的地址就导致下载后文件不识别。注意:使用华为云的链接在手机端是能正常下载安装的,估计是浏览器不一样的问题。
2025-02-21 14:31:17
601
原创 [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]应用内更新问题
从 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]如何让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]文本多的时候让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
上传到阿里云OSS的图片处理
2019-01-23
GAHomeDemo.zip
2019-07-10
12.0 (16A366)
2018-09-28
GAEditDemo.zip
2019-07-16
MasonryDemo
2018-07-26
从控制器中分离出View
2018-10-10
GAAVPlayerViewControllerDemo.zip
2020-01-22
UIViewController+Present.zip
2019-11-01
UIView+BorderLine.zip
2019-10-26
UIView+AZGradient.zip
2019-10-28
EmptyDataSet-demo.zip
2019-10-30
NSString+FileSize.zip
2019-10-31
UITextView+Placeholder.zip
2019-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人