鸿蒙开发
文章平均质量分 95
「已注销」
这个作者很懒,什么都没留下…
展开
-
【鸿蒙实战开发】混合开发-web组件入门和实战
/ 网页是否在加载中// 网页加载进度// 当前访问页面历史记录索引@BuilderRow() {.width(18)// 刷新网页}).width(50)test 方法,获取网页调用后传参select 方法,选择原生相册,获取选择图片结果显示到网页中// 测试方法// 选择相册// 2\. JSBridge代理// 参数 1:注入应用侧JavaScript对象// 参数 2:注入对象的名称,与window中调用的对象名一致。原创 2024-07-14 22:23:14 · 1370 阅读 · 0 评论 -
【鸿蒙实战开发】基于Refresh组件的下拉刷新
实现页面下拉刷新距离回调以及刷新距离自定义。整体思路:首先需要用装饰器@builder自定义构建一个函数,然后跟refresh的接口builder进行绑定Refresh({refreshing:$$this.isRefreshing,builder:this.customRefreshComponent()}),最后将通过refresh的系列回调逐步实现下拉过程中图标的动态变化。第一步:自定义refresh刷新组件。第二步:根据refreshOffset设置触发下拉刷新的距离。原创 2024-07-14 21:10:09 · 1125 阅读 · 0 评论 -
【鸿蒙实战开发】HiLog日志能力介绍
Debug包。输出全量日志。Release包。默认不输出debug级别日志,可以参考日志等级修改来输出debug级别日志。原创 2024-07-14 19:23:12 · 1302 阅读 · 0 评论 -
【鸿蒙实战开发】基于短距离通信的BLE蓝牙扫描
蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的BLE蓝牙称为低功耗蓝牙。BLE模块提供了对蓝牙操作和管理的方法。ACCESS_BLUETOOTH 权限是很多蓝牙接口需要申请的,比如:ble.getConnectedBLEDevices(获取和当前设备连接的BLE设备)、ble.startBLEScan(发起BLE扫描流程)。原创 2024-07-12 21:31:11 · 1235 阅读 · 0 评论 -
【鸿蒙实战开发】基于ArkUI实现类似Toast弹窗
方案当前自定义弹窗的openAnimation和closeAnimation只能实现弹窗原地打开的相关动画设置,无法设置弹窗位置上变化的效果。为了避免弹窗原地打开关闭,这里选择通过给弹窗设置组件转场动画(transition)来实现。当然也可以根据具体想要实现的效果选择其他动画来自定义弹窗动画。⦁ 设置动画事件为500ms组件转场时插入的起点和删除的终点为屏幕以下300vp。原创 2024-07-12 21:09:56 · 958 阅读 · 0 评论 -
【鸿蒙实战开发】基于Grid实现混合布局
ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。原创 2024-07-12 20:27:34 · 1207 阅读 · 0 评论 -
【鸿蒙实战开发】基于Text的自定义字体
A:在onCreate中注册字体时,页面还未创建,所以字体未生效,需要在页面创建完成之后再加载字体,推荐在页面注册回调windowStage.loadContent中进行字体注册。给Text组件设置fontFamily属性,fontFamily中的名字就是上面注册时设置的字体名,最后使用的emoji表情,就是从下载的三方emoji字体文件钟直接粘贴得到的。Q:在page中注册字体没问题,移到UIAbility时会偶现字体注册失败,希望提供一个稳定在UIAbility注册字体的方案。原创 2024-07-12 17:02:56 · 959 阅读 · 0 评论 -
【鸿蒙实战开发】基于组件嵌套的滑动
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?外层scroll滑动,内层waterFlow滑动,外层使用嵌套属性.nestedScroll进行联动。基于nestedScroll实现WaterFlow与Scroll混合滑动。外层list组件和内层list组件基于.nestedScroll进行联动。《鸿蒙 (Harmony OS)开发学习手册》(共计892页)第一阶段:鸿蒙初中级开发必备技能。第三阶段:应用开发中高级就业技术。1.Ability开发。基于ArkTS 开发。原创 2024-07-12 15:53:43 · 707 阅读 · 0 评论 -
【鸿蒙实战开发】基于Navigation的路由拦截管理
路由拦截是开发中常见场景,比如校验用户是否登录、路由拦截添加弹窗等。通过setInterception可以实现这些功能,该需求主要用于路由拦截前调用开发者设置的拦截回调,和拦截回调里开发者返回处理后需要跳转的页面信息。设置并开启页面路由拦截registerInterception,通过全局变量LocalStorage判断用户当前是否登录,未登录时点击购物车会被拦截并跳转至登录页,输入用户名和密码后将LocalStorage改为true表示已登录,然后跳转至购物车。原创 2024-07-12 14:52:31 · 851 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于OpenGL渲染视频画面帧
⦁ 在napi 接口init的时候在Xcomponent的OnSurfaceCreatedCB回调中初始化渲染线程,通过OH_NativeImage_Create创建nativeImage。⦁ 设置窗口:获取并设置属性SurfaceID,该surfaceId是native侧nativeImage的surfaceID,调用play方法开始播放。在渲染线程中更新画面帧数据到OpenGL纹理,并做对应的opengl处理后,通过SwapBuffers()方法上屏。第一阶段:鸿蒙初中级开发必备技能。原创 2024-07-12 14:21:02 · 914 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于promptAction全局弹窗
可以使用openCustomDialog接口, 创建并弹出dialogContent对应的自定义弹窗,使用Promise异步回调。创建Params类方便开发者进行传参的,开发者可以在@Builder里自定义组件的内容,宽度跟随子节点自适应,圆角为0,弹窗背景色为透明色;上述代码中uiContext代表上下文,wrapBuilder(buildText)代表自定义节点,new Params(this.message)代表传参。原创 2024-07-12 13:53:24 · 1452 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于Swiper的页面布局
给Swiper组件设置.nextMargin(50).prevMargin(50)属性。给Swiper组件添加onChange事件,设置当前this.currentIndex=index,当currentIndex为首页或者尾页时,设置上一张以及下一张图片的缩放值。// 设置当前index缩放值为最大值// 当前index=0时,设置上一张图片的缩放值} else// 当前index不为0时,设置上一张图片的缩放值// 当index为最后一张图片时,设置下一张图片的缩放值} else。原创 2024-07-11 22:15:04 · 868 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于Search组件实现搜索栏
方案基于Search组件的searchIcon属性设置搜索图标,searchIcon可以设置size、color。注意:当前搜索图标不支持隐藏且不支持位置调整。基于searchButton属性设置搜索框末尾搜索按钮。基于该属性可更改文本内容及文本样式。核心代码Search({ value: this.changeValue, placeholder: '请输入搜索内容', controller: this.controller })//设置搜索框末尾搜索按钮,可修改文本内容及文本样式。原创 2024-07-11 21:36:11 · 1108 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于ArkUI的透明页面效果
透明页面也可以叫做弹窗页面,实际开发场景中经常有一个页面覆盖在另一个页面上的效果,例如:评论弹窗页面、广告弹窗页面等。router路由无法更改页面模式,所以无法直接实现透明页面,需要借助拉起子窗口的方案实现透明页面的效果。思路如下:获取窗口实例。拉起一个子窗口并加载对应页面。设置子窗口背景透明。定义子窗口的关闭方案。在Ability中获取windowStage实例。创建一个子窗口作为页面载体,并加载RouterOpacityPage页面。原创 2024-07-11 21:06:12 · 982 阅读 · 0 评论 -
【鸿蒙实战开发】基于手势绑定的常见问题处理
在默认情况下,手势事件为非冒泡事件,当父子组件绑定相同的手势时,父子组件绑定的手势事件会发生竞争,最多只有一个组件的手势事件能够获得响应,默认子组件优先识别通过gesture绑定的手势。当父组件使用priorityGesture绑定与子组件同类型的手势时,父组件优先识别通过priorityGesture绑定的手势,子组件的手势不会进行识别响应。原创 2024-07-11 20:34:12 · 1041 阅读 · 0 评论 -
【鸿蒙ArkUI实战开发】基于ArkUI的动效能力
控制输入框的宽度和显隐状态实现第一段动画,输入框的缩放动画完成后onFinish隐藏输入框,同时展示加载动画。配置完自定义的转场动画,然后将name指定的NavDestination页面信息入栈。原创 2024-07-11 18:18:09 · 855 阅读 · 0 评论 -
【鸿蒙实战开发】基于webview拉起自定义键盘
整体实现效果为:通过web的同层渲染功能实现将原生TextInput组件渲染到H5需要使用自定义键盘的页面中,这样就可以实现在H5拉起自定义键盘,并且使用它的全部功能。原创 2024-07-11 17:35:08 · 889 阅读 · 0 评论 -
【鸿蒙实战开发】C++子线程与UI主线程通信方案
ArkTS是单线程的,其通过事件循环机制来处理异步任务,这一特性,同样也深入影响了Node-API的模块开发。在Native线程中既要保证没有多线程问题,又要保证任务的正确执行。针对在HarmonyOS中,Native子线程不能直接访问ArkTS主线程的资源的场景,Node-API提供了napi_threadsafe_function这一套线程安全函数接口,用来实现异步通信操作。下面介绍napi_threadsafe_function的方式。原创 2024-07-11 15:18:28 · 919 阅读 · 0 评论 -
【鸿蒙实战开发】使用Snapshot Insight分析ArkTS内存问题
问题通常会在开发的过程中逐渐积累,到最终暴露出来时可能已经涉及了多个模块、多种逻辑,各种逻辑互相耦合,导致分析的难度大大增加。这种情况下,我们建议把性能相关的工作也能做到平时,在开发态也去关心程序的性能问题。例如,刚写了一个很长的引用关系、增加了一些注册实例的逻辑或者做了一些父子组件的变量传递,这种时候就可以去结合逻辑自己设想一下,会不会引发一定的性能问题,甚至可以在平时就用调优工具来自测试。这样做到每个开发阶段都保证了性能的可靠,那么在项目日益增大的同时,性能问题也不会严重到离谱、无法分析。原创 2024-07-11 14:32:46 · 944 阅读 · 0 评论 -
【鸿蒙实战开发】基于hvigor插件定制构建
HAP/HSP运行时获取编译构建参数生成BuildProfile类文件当前有以下几种方式可以生成BuildProfile类文件:选中需要编译的模块,在菜单栏选择“Build > Generate Build Profile ${moduleName}”。在菜单栏选择“Build > Build Hap(s)/APP(s) > Build Hap(s)”或“Build > Build Hap(s)/APP(s) > Build APP(s)”原创 2024-07-11 14:02:07 · 1043 阅读 · 0 评论 -
【鸿蒙实战开发】基于lycium的开源c库编译与集成
对于c库编译问题,应用经常会遇到如下业务诉求:基于HarmonyOS编译开源C库:开源c库编译完成后的集成需要使用开源c库lycium的使用说明:lycium的特点就是自动化编译,只需要一个./build.sh命令就可以完成编译,下面的编译例子(openssl)代码库是通过hpkbuild脚本从github或者gitee上面拉取,在hpkbuild脚本中已经默认提供了一套编译默认的配置,也可以按照需求修改。原创 2024-07-10 22:59:20 · 1069 阅读 · 0 评论 -
【鸿蒙实战开发】基于密钥库签名验签的用户认证
密钥库使用过程中除了用于加解密外,还用于程序访问控制认证和签名验签,常见的两个场景问题如下:1、对于密钥库中用户认证以及签名验签的属性配置参数的问题2、密钥库中细粒度访问控制和普通访问控制的使用问题,以及在访问控制中进行签名验签使用问题1、对于密钥属性的使用,创建的每个密钥对的目的不同,也决定了他的使用方式,例如:加签验签的密钥,不可以用于加解密。原创 2024-07-10 21:38:41 · 1010 阅读 · 0 评论 -
【鸿蒙实战开发】基于rcp的网络请求能力
rcp模块提供HTTP数据请求功能,请求性能如接口的易用性、性能、功耗方面,对比Network Kit HTTP网络API,rcp采用面向对象和场景的设计,API使用更简单、更灵活,满足不同场景的使用需求,具备更好的扩展性和更优的性能。支持如场景化网络API、网络代理、自定义DNS解析、自定义证书校验、服务器身份校验等特性。:调用rcp库实现基础的网络请求能力:对标http原生库能力 使用post、get请求将多个文件采用表单形式上传至服务端做处理。原创 2024-07-10 20:32:07 · 1121 阅读 · 0 评论 -
【鸿蒙实战开发】基于原生能力获取视频缩略图
使用 getThumbnail和AVImageGenerator接口可以实现从原始媒体资源中获取视频指定时间的缩略图。1.通过photoAccessHelper的getAlbums方法获取获取视频相册对象。2.通过视频检索条件调用album.getAssets方法,获取视频对象。3.调用 Asset.getThumbnail接口获取视频对象的缩略图(pixelMap)。4.通过image组件显示pixelMap。原创 2024-07-10 17:37:05 · 817 阅读 · 0 评论 -
【鸿蒙实战开发】基于@ohos/crypto-js实现加解密工具箱
ohos/crypto-js是一个根据crypto-js库移植的鸿蒙三方库,适配源库4.2.0版本,提供了一系列加密算法和安全工具,主要用于执行各种消息摘要计算和对称加解密操作。原创 2024-07-10 16:16:19 · 1083 阅读 · 0 评论 -
【鸿蒙实战开发】基于connection的网络连接管理能力
应用侧需要知道用户当前连接网络状态并作对应的业务处理,如网络断开返回弹框提示、应用中是否按缓存数据展示图片等。应用侧需要知道用户当前连接网络状态并作对应的业务处理,如网络断开返回弹框提示、应用中是否按缓存数据展示图片等。:应用内部获取当前使用网络类型为wifi / 移动数据 及当前网络可连接状态做业务处理。:获取当前连接网卡链路地址、DNS地址等信息判断处理用户连接网络位置等应用侧能力。获取当前连接网卡链路地址、DNS地址等信息判断处理用户连接网络位置等应用侧能力。原创 2024-07-10 15:54:48 · 321 阅读 · 0 评论 -
【鸿蒙实战开发】基于wifiManager的网络扫描及IP地址获取
场景一:查看附近可连接wifi网络的信号强度(rssi)、热点能力、服务集标识(ssid)等信息,开发者可自定义策略选择网络场景二:通过当前连接wifi的IP地址判断用户所属有关位置信息查看附近可连接wifi网络的信号强度(rssi)、热点能力、服务集标识(ssid)等信息,开发者可自定义策略选择网络日志中打印结果显示可参考如图当前暂不支持三方直接调用扫描能力,提供 wifimanager.getScanInfoList 方法获取到扫描结果通过当前连接wifi的IP地址判断用户所属有关位置信息。原创 2024-07-10 14:17:24 · 767 阅读 · 0 评论 -
【鸿蒙实战开发】基于CameraKit,通过avrecorder进行录像
录像是相机应用的最重要功能之一,录像是循环帧的捕获。本文通过CameraKit自定义相机并通过avrecorder进行录像。原创 2024-07-10 13:51:07 · 873 阅读 · 0 评论 -
【鸿蒙实战开发】基于request上传下载控制
request主要给应用提供上传下载文件、后台传输代理的基础能力。原创 2024-07-09 22:59:06 · 1121 阅读 · 0 评论 -
【鸿蒙实战开发】HarmonyOS对各种图片编解码格式的支持
ARCH代表构建架构,64位为arm64-v8a,32位为armeabi-v7a。不知道需要重点掌握哪些鸿蒙应用开发知识点?在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库和头文件。2.1 将libavif库添加到工程中,参考链接: libavif三方库说明。三方库的测试使用原库自带的测试用例来做测试, 准备三方库测试环境。《鸿蒙 (Harmony OS)开发学习手册》(共计892页)第一阶段:鸿蒙初中级开发必备技能。第三阶段:应用开发中高级就业技术。原创 2024-07-09 21:13:45 · 971 阅读 · 0 评论 -
【鸿蒙实战开发】跨语言的复杂参数类型传递
ArkTS 侧 接收 Native C++ 侧返回的 Array,通过 napi_create_arraybuffer 创建一个 arraybuffer 数组,根据创建的 arraybuffer 通过 napi_create_typedarray 创建一个 typedarray 并将 arraybuffer 存入 output_array,然后给 arraybuffer 赋值,最后返回 output_array。获取ArkTS侧传来的文件路径,处理完后返回pixelmap给ArkTS侧。原创 2024-07-09 20:30:15 · 948 阅读 · 0 评论 -
【鸿蒙实战开发】基于原生能力的压缩与解压缩能力
场景一:压缩与解压rawfile目录下的文件,由于在resource/rawfile目录下存放的文件,没有对外暴露的沙箱路径,无法使用文件管理接口或以沙箱路径形式处理,因此需要将rawfile下文件通过fs拷贝进沙箱目录下,再使用 zlib 进行压缩与解压。场景二:压缩与解压resfile下的文件,通过getContext().resourceDir获取到该路径下的文件,再使用zlib进行压缩与解压。当前鸿蒙暂无native的压缩与解压接口,本文主要介绍native侧通过zlib实现压缩与解压。原创 2024-07-09 17:56:01 · 1137 阅读 · 0 评论 -
【鸿蒙实战开发】基于AVPlayer的视频播放
stopped:停止状态,在prepared/playing/paused/completed状态调用stop()方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用prepare()重新准备,也可以调用reset()重置,或者调用release()彻底销毁。示例场景:AVPlayer播放视频ArkTS实现,创建AVPlayer,设置播放资源和窗口,设置播放参数,播放控制(播放/暂停/跳转),重置,销毁资源,播放完成后切换视频。原创 2024-07-09 16:35:35 · 629 阅读 · 0 评论 -
【鸿蒙实战开发】基于OHAudio的音频操作
场景:基于OHAudio模块实现音频录制和播放功能,带监听音频打断实现使用OH_AudioCapturer接口录制音频生成PCM文件写入到文件保存到沙箱路径,再使用OH_AudioRenderer接口播放音频文件,并监听音频打断。AudioCapturer :音频采集,用于录制PCM音频数据。AudioRenderer :音频渲染,用于播放PCM音频数据。Step2:构造录制音频流,设置音频流参数和音频回调函数。Step1:构造播放音频流,设置音频流参数和音频回调函数。原创 2024-07-09 16:04:17 · 585 阅读 · 0 评论 -
【鸿蒙实战开发】基于Asset下的高安全级别数据存储
用户在金融类应用中查看银行卡号,这个时候需要核实用户的身份是否是本人。因此这个时候我们可以把银行卡号存入ASSET中,同时设置访问银行卡号需要进行身份验证。用户想查看银行卡号,应用必须请求用户身份认证(人脸、指纹、锁屏密码),校验通过后才能访问,提升了用户的安全体验。存储的信息只有在指纹认证之后才能进行访问。preQuery参数列表query参数列表postQuery参数列表首先得确认手机是否设置了指纹,锁屏密码和人脸。否则会报12500010错误,表示还没有录入凭据(指纹,人脸,密码)原创 2024-07-09 15:18:08 · 358 阅读 · 0 评论 -
【鸿蒙实战开发】Fabric 自定义组件开发指南
创建一个 Fabric 组件需要实现以下的代码:ComponentInstance:ComponentInstance文件是该自定义组件所有的逻辑集合,也是自定义组件主要需要实现的部分,简单理解就是,一个自定义组件文件对应一个ComponentInstance。Package文件:作用是声明创建该自定义组件的声明,指定创建Instance时会根据Packeage文件内的名称对应,从而生成对应的Instance对象。原创 2024-07-09 14:06:50 · 1156 阅读 · 0 评论 -
【鸿蒙实战开发】C-API版本XComponent接入
C-API 版本使用XComponent总共分成了两个步骤:createSurface的时候创建XComponentSurface;startSurface的时候将CPP的XComponentSurface连接到ArkUI的Xcomponent上。原创 2024-07-08 23:06:42 · 1252 阅读 · 1 评论 -
【鸿蒙实战开发】基于WaterFlow的页面滑动加载
可通过Item和分组分组信息中itemsCount设置指定Item的布局,例如Item=5,第一个分组中itemsCount: 4,Item=5为第二个分组的第二个Item(此处Item从0开始)。在瀑布流分组中为要吸顶的部分预留出位置,监听瀑布流滚动事件,吸顶部分基于瀑布流滚动后的偏移量设置位置,让吸顶部分跟随瀑布流一起滚动,吸顶部分到顶后固定不动。场景一:瀑布流页面多列混排的布局场景,例如:10个item在2列内布局,中间5个item在1列内撑满宽度布局,后10个item在3列内布局。原创 2024-07-08 21:33:08 · 797 阅读 · 0 评论 -
【鸿蒙实战开发】基于@ohos.data.unifiedDataChannel实现数据共享
本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了标准化的数据通路,提供了标准化的数据接入与读取接口。 2、声明一个 options 变量,并指定了要插入数据的数据通路枚举类型为 DATA_HUB。 2、声明一个 options 变量,并指定了要查询数据的数据通路枚举类型为 DATA_HUB。 2、声明一个 options 变量,并指定了要查询数据的数据通路枚举类型为 DATA_HUB。原创 2024-07-08 20:48:12 · 944 阅读 · 0 评论 -
【鸿蒙实战开发】基于关系型数据库的数据持久化
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。:基于RDB已提供API的数据库基础使用:基于executeSql、querySql执行增删改查复杂SQL语句:事务的使用:批量插入数据的不同实现方式及性能对比:数据库备份与恢复:全文检索(FTS)使用思路。原创 2024-07-08 20:17:14 · 679 阅读 · 0 评论