- 博客(478)
- 收藏
- 关注
原创 被裁员后,踏上了鸿蒙开发求职之路
半年前,我遭遇了人生中的一次重大挫折——被公司裁员。作为一名前端开发人员,这个消息如同晴天霹雳,让我陷入了深深的迷茫和焦虑之中。
2024-09-22 22:13:06 772
原创 鸿蒙(HarmonyOS)北向开发知识点记录~
北向开发的目标是为鸿蒙生态系统构建丰富多样的应用程序,满足用户在不同场景下的需求。通过北向开发,开发者可以充分利用鸿蒙操作系统的独特优势和强大功能,为用户带来全新的体验,同时也为自身创造更多的商业机会和价值。
2024-09-04 22:07:24 3272
原创 HarmonyOS 实战开发 —— 基于HAR的跨模块C++头文件引用
多个模块使用同一份C++代码是App开发中很常见的问题,比如多个模块使用同一个自研的加解密库、集成三方开源SO库暴露其中的C++代码等。注意事项:双冒号前面指的是srcHar/oh-package.json5配置中的name,双冒号后面跟着的是步骤2中srcHar中对外导出的的so库名称,名称必须要一致。2、在srcHar模块的build-profile.json5中配置C++头文件的目录。5、在desHar的cpp源码中使用 srcHar提供的C++方法。场景:模块A引用模块B的C++接口。
2024-11-12 22:15:23 132
原创 HarmonyOS 实战开发 —— 基于webView的嵌套滚动
实现方法:通过web组件的type属性设置为1,即全量展开且嵌套滚动场景,并且layoutMode接口用来设置web页面是否全量展开,如需全量展开则设置参数为WebLayoutMode.FIT_CONTENT,nestedScroll接口用来设置web组件与上下层组件的嵌套滚动关系,推荐使用子组件优先模式(NestedScrollMode.SELF_FIRST)。整体实现效果为:页面整体为一个Scroll,Scroll中嵌套一个Tabs组件,Tabs里有多个web组件可以实现首页效果。
2024-11-12 21:15:21 258
原创 HarmonyOS 实战开发 —— 基于tabs实现页面布局
在页面布局过程中,Tabs可以将产品包含的所有内容进行清晰分类,一目了然地呈现应用的内容范围,方便概览与跳转
2024-11-12 20:31:48 544
原创 HarmonyOS 开发实践——基于bindSheet的半模态弹窗
半模态转场通过bindSheet属性为组件绑定半模态页面,在组件插入时可通过设置自定义或默认的内置高度确定半模态大小。可以通过设置height属性来实现自定义高度;也可以通过设置height属性的SheetSize枚举类型,默认是LARGE。MEDIUM指定半模态高度为屏幕高度一半。LARGE指定半模态高度几乎为屏幕高度。指定半模态高度为适应内容的高度。@Entry@Component@Builder...... //半模态弹窗页面内容build() {Row() {
2024-11-12 17:02:38 343
原创 HarmonyOS 实战开发 —— 基于原生能力的跨应用跳转
准备被拉起方的app信息,其中目标app的图标需要拉起方应用自己准备。uri字段规格详见文末的常见问题Q1。在弹窗显示之前判断应用是否已安装,在弹窗中显示已安装的应用,并实现点击跳转到该应用。2.支付应用不存在,拉起h5页面进行支付。1.支付应用存在,拉起支付应用。添加按钮,点击出现支付应用列。
2024-11-12 15:52:35 182
原创 HarmonyOS 实战开发 —— 基于ImageKit对图片进行处理
format为图像的编码格式;quality为图像质量,范围从0-100,100为最佳质量。在ts侧传入pixelmap和文件fd到native侧。创建图像编码ImagePacker对象。设置编码输出流和编码参数。创建编码器实例对象。
2024-11-12 15:00:09 262
原创 HarmonyOS 实战开发 —— 基于measure实现的文本测量
搜索框展示历史记录,单个子组件超过固定长度后展示省略号,固定只展示两行,超出的文字被截断,通过点击按钮展示后续文本内容。搜索框展示历史记录,单个子组件超过固定长度后展示省略号,固定只展示两行,超出的文字被截断,通过点击按钮展示后续文本内容。2、测量两行文本和全部文本的高度,当全部文本的高度超过两行文本的高度时进行展开的逻辑。展开,当所有文本展开后,最后面跟着收起。3、文本全部展开后,点击收起,所有文本全部收齐变成固定的两行。1、文本默认超过两行时,直接截断,在截断文本后添加…文本收起态(即展开逻辑)
2024-11-12 14:15:45 203
原创 HarmonyOS 实战开发 —— 基于AOP的代码插桩
方案:通过Aspect.addBefore对自定义方法进行执行前插桩记录方法调用前时间、Aspect.addAfter对自定义方法进行执行后插桩记录执行后时间,以统计方法耗时及调用次数。let t1 = 0;let t2 = 0;})count+=1console.log(methodName+"方法耗时为t2 - t1 = " + (t2 - t1).toString());console.log(methodName+"方法调用次数为count = " + count);
2024-11-12 13:32:24 298
原创 HarmonyOS 实战开发 —— 基于PhotoViewPicker对图片进行操作
此时,可以直接使用安全控件中的保存控件,免去权限申请和权限请求等环节(创建媒体资源需要在应用中申请相册管理模块权限’ohos.permission.WRITE_IMAGEVIDEO’),获得临时授权,保存对应图片。当前所有picker的save接口都是用户可感知的,具体行为是拉起FilePicker, 将文件保存在系统文件管理器管理的特定目录,与图库管理的资源隔离,无法在图库中看到。与需要触发系统应用并由用户选择具体保存路径的Picker不同,保存控件可以直接保存到媒体库路径,使得操作更为便捷。
2024-11-11 22:21:43 384
原创 HarmonyOS 实战开发 —— 图像撕裂、掉帧等异常现象的原理以及优化方案
另外也可以看出来期间存在CPU资源浪费,双缓冲只会提供两个Buffer,B被GPU处理占用,A正在用显示,那么在第二个16ms里面,CPU就无法获取到Buffer处理UI更新,在Jank的阶段空空等待。GPU 开辟A、B两个缓冲区,并对缓冲区进行同步加锁处理,执行流程就是当A缓冲区拿到第一帧数据,就给A缓冲区加上一把锁,屏幕控制器从A拿到数据并逐行扫描完成,A帧缓冲区解锁,并把屏幕控制器指向B缓冲区,B缓冲区加锁并逐行扫描显示,在屏幕控制器扫描B缓冲区的时候,A缓冲区拿到GPU传过来的新数据,以此类推。
2024-11-11 21:16:32 609
原创 HarmonyOS 实战开发 —— 基于PhotoViewPicker对图片进行操作
PhotoAccessHelper.createAsset接口 需要ohos.permission.WRITE_IMAGEVIDEO权限,ohos.permission.WRITE_IMAGEVIDEO权限 为系统等级,该权限当前可申请的场景与功能:应用需要克隆、备份或同步图片/视频类文件。此时,可以直接使用安全控件中的保存控件,免去权限申请和权限请求等环节(创建媒体资源需要在应用中申请相册管理模块权限’ohos.permission.WRITE_IMAGEVIDEO’),获得临时授权,保存对应图片。
2024-11-11 20:35:26 731
原创 HarmonyOS 实战开发 —— Native保存图片到应用沙箱
当前编译后加载libcurl.so时,通过hilog日志发现依赖了libcurl.so libcurl.so.4 libnghttp2.so libnghttp2.so.14 libzstd.so几个so文件。3.点击"保存Rawfile图片",前端通过调用Native侧暴露的saveImageOfRawfileCallback接口将rawfile中的图片sandBoxTest.jpg保存到应用沙箱中并返回沙箱路径到前端进行显示;传入的参数为js的资源对象、rawfile中的图片名、应用的文件路径。
2024-11-11 17:29:11 556
原创 HarmonyOS 实战开发 —— 基于子窗口实现应用内悬浮窗
app应用会使用悬浮窗/悬浮球的方式来给用户展示一些应用重要&便捷功能的入口,类似android和iOS应用中常见的应用内可拖拽的悬浮球和小窗口视频悬浮窗,点击悬浮窗修改悬浮窗样式和响应事件跳转页面,在跳转页面后依然可以显示在屏幕中上个页面拖拽后的固定位置等。可响应正常点击事件,可通过拖动触发悬浮窗的拖拽移动,根据最后手势停留位置,做动画靠屏幕左或靠右显示,跳转和返回上级页面后悬浮窗依然存在,且相对手机屏幕位置不变。通过获取窗口上下文,实现在悬浮窗点击后,实现主窗口Router跳转。
2024-11-11 15:27:00 459
原创 HarmonyOS 实战开发 —— 基于List和Scroller由简单到复杂列表布局开发实践
LazyForEach数据懒加载:数据量大的List尽量用LazyForEach加载数据,可明显优化性能,经过测试列数为100以上,LazyForEach也无明显卡顿。整体运用Stack组件(List组件+List组件)布局,左List作为城市列表,右List快捷导航列表,通过ListItem对对应数据进行渲染。运用List组件作为整个首页长列表的容器,通过ListItem对不同模块进行定制。多列表滚动横向纵向联动,如汽车参数对比,股票信息列表。在多列表页面开发中,数据展示往往有联动关系,
2024-11-11 14:41:10 322
原创 HarmonyOS 实战开发 —— 基于Taskpool的多线程操作
调用executeDelayed函数3秒后,会进入TaskDelayServiceHandle函数执行,返回返回后,会进入executeDelayed后面的then的函数体中执行。task1依赖task2,task2依赖task3,上面任务执行的顺序是:task3执行完毕后再执行task2,最后执行task。task1执行完毕后,执行task2,最后是task3执行完毕。2)后面任务的执行,依赖另一个任务的一些处理结果后,继续执行。task1执行完毕后,根据if判断启动task2任务执行。
2024-11-11 14:15:57 612
原创 HarmonyOS 实战开发 —— 基于Napi调用ArkTS/系统接口
场景二: 系统仅提供了ArkTS 异步接口,未提供对应的NDK接口,当伙伴使用C++ 代码实现业务逻辑时,部分系统能力需要依赖系统ArkTS 异步接口;系统仅提供了ArkTS 异步接口,未提供对应的NDK接口,当伙伴使用C++ 代码实现业务逻辑时,部分系统能力需要依赖系统ArkTS 异步接口;场景一:系统提供了ArkTS 接口,但未提供对应的NDK接口,当伙伴使用C++ 代码实现业务逻辑时,部分系统能力需要依赖系统ArkTS接口;通过创建线程安全函数的方式 调用系统的异步接口。例如: 获取设备的屏幕宽高。
2024-11-10 22:03:51 472
原创 HarmonyOS 实战开发 —— 如何在鸿蒙中实现AOP(代码插桩)能力?
Aspect类用于封装提供切面能力(Aspect Oriented Programming,简写AOP)的接口,这些接口可以用来对类方法进行前后插桩或者替换实现。
2024-11-10 21:29:35 627
原创 HarmonyOS 实战开发 —— 基于设置应用的应用权限、通知设置跳转
当用户使用一些需要用户授权的api时(如访问获取联系人信息),若用户首次拒绝授权,则需要引导用户到权限设置页面能够主动进行应用权限的修改。当用户使用一些需要用户授权的api时(如访问获取联系人信息),若用户首次拒绝授权,则需要引导用户到权限设置页面能够主动进行应用权限的修改。引导用户跳转到系统设置页进行权限,通知的相关设置,类似android和iOS应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。暂无直接跳转权限管理的方式,可通过跳转至应用详情进行用户申请权限的修改。进入设置-应用详情页。
2024-11-10 20:10:50 616
原创 HarmonyOS 实战开发 —— 基于原生的跨模块资源访问
对于“color”、“float”、“string”、“plural”、“media”、“profile”等类型的资源,通过"$r(‘app.type.name’)"形式引用。其中,hsp为hsp模块名,type为资源类型,name为资源名称。A:当前支持通过$r(“app.string.name” + 1)拼接的方式加载资源(包括变量拼接的形式),跨模块的场景也适用。r"和"$rawfile"跨包访问HSP包资源无法提供编译时的资源校验,需要开发者自行保证使用资源存在于对应包中。
2024-11-10 18:52:47 730
原创 HarmonyOS 组件化实战开发 —— Navigation常见场景&解决方案
Navigation通过customNavContentTransition事件提供自定义转场动画的能力,当转场开始时,通过回调函数告知开发者,告知此次动画from(从哪来)、to(到哪去)、是Push、Pop亦或是Repalce。这里需要注意当为根视图时,NavContentInfo的name值为undefined。开发者可以在customNavContentTransition的回调函数中进行动画处理,返回NavigationAnimatedTransition自定义转场协议已实现自定义转场。
2024-11-09 21:34:56 858
原创 HarmonyOS 实战开发 —— super planner应用开发
1、在进行价钱输入时,需要进行约束,但是,普通约束无法完成,只能通过键盘进行约束。1、用户记录账单,账单统计的功能,可以根据日期筛选账单记录。super planner主要功能是进行账单记录和统计,以及日常的事情、idea的记录和设置提醒的功能。2、用户可以通过记事本进行事情记录、idea记录、以及提醒设置。2、采用Navgation跨包跳转,并进行路由跳转二次封装,以及其基础组件的二次封装。1、采用三层架构,common层、features层、entry层。4、使用首选项进行用户信息存储。
2024-11-09 21:01:29 785
原创 HarmonyOS 实战开发 —— 相对布局 RelativeContainer
对于组件的尺寸,若子组件某个方向上设置两个或以上 alignRules 时最好不设置此方向尺寸大小,否则对齐规则确定的组件尺寸与开发者设置的尺寸可能产生冲突。比如某个组件在垂直方向设置了 top 和 bottom 约束,那么在实际的开发过程中就不要再次设置该组件的高度。我们可以结合 Column 和 Row 容器实现上面效果,但是今天主要讲下 RelativeContainer 相对布局容器,这有点类似于 iOS 开发中的布局约束概念,实现方式都是以某个元素为锚点进行相对布局。即可实现我们想要的效果。
2024-11-09 20:16:30 449
原创 HarmonyOS 实战开发 —— 自定义tabs导航栏实现切换效果
但是该导航栏为默认样式,要想实现更多样式,必须自定义TabBar。自定义TabBar步骤1.使用@Builder修饰一个函数tabBarBuilder(),里面是自定义的TabBar的结构。2…tabBar()中传参为自定义构建器this.tabBarBuilder()。注:构建器函数里面是可以传参的,所以多个TabContent可以共用一个tabBarBuilder()然后传不同的参数。.onChange()事件和.onTabBarClick()事件都可以获得当前页面的索引。
2024-11-09 19:06:08 283
原创 HarmonyOS 开发实战 —— ArkTS基础知识 - 类、接口及泛型
前面我们学习了 ArkTS基础知识 - 声明变量、常量、类型和函数,本文我们继续学习鸿蒙开发中使用ARKTS的类、接口、泛型、字段、方法、继承以及模块导出和导入的概念,为鸿蒙应用开发者提供了基础理论支持。学完本章,ArkTS的基础语法基本上就是学完了。希望这篇文章能够帮到你们。鸿蒙(HarmonyOS)北向开发知识点记录~鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~鸿蒙应用开发与鸿蒙系统开发哪个更有前景?嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
2024-11-08 22:14:17 698
原创 HarmonyOS 开发实战 —— 模块化架构组件 (使用系统路由表+注解+hvigor插件 自动配置项目模块化)
satis/oh-router 与 hvigor插件 @satis-sun/modularity-plugin 配合使用,无需手动配置系统路由表,使用注解的方式即可完成系统路由表的配置。
2024-11-08 21:31:19 674
原创 HarmonyOS 开发实战 —— List组件的使用与AlphabetIndexer联动实践
在鸿蒙应用开发中,List组件是一个非常重要的元素,它用于展示一系列数据项,非常适合构建列表界面,例如商品列表、联系人列表、消息列表等,可以轻松高效地显示结构化、可滚动的信息。
2024-11-08 20:17:16 784
原创 HarmonyOS 开发实战 —— 在ArkTS中,实现不在Enter模块中就可以创建的自定义弹窗
1、使用@CustomDialog装饰的自定义组件作为弹窗的布局2、在@CustomDialog装饰的自定义组件中必须声明CustomDialogControlle类型的变量3、在需要显示弹窗的@Entry里面再次声明一个CustomDialogControlle类型的变量,并完成初始化这样就可以通过@Entry里的CustomDialogControlle类型的变量进行控制弹窗的关闭和打开,但无法得知该弹窗打开/关闭状态。
2024-11-08 17:42:38 334
原创 HarmonyOS 开发实战——自定义弹框使用(CustomDialog+TextPicker组合)
在移动应用开发中,弹框是一种常见的用户交互组件,用于在应用界面上提供额外的信息或操作选项,也是移动开发中必用的功能,实际开发中系统提供的弹框往往不能完全满足实际业务需求,很多时候需要根据业务需求对弹框内容进行自定义,但凡遇到自定义弹框及弹框内部内容,就需要根据实际情况进行组合式使用。同理,在HarmonyOS开发中系统也提供了弹框的使用及自定义弹框的使用方法,可以说是提供了丰富的API来支持自定义弹框的开发,这可以让开发者根据自己的需求定制独特的用户界面和交互体验。
2024-11-08 16:22:10 785
原创 HarmonyOS 开发实战——ZRouter让系统路由表变的更简单(轻量级动态路由库)
ZRouter是一款轻量级的动态路由库,基于Navigation系统路由表和Hvigor插件实现的方案。对Navigation组件简化使用,封装一系列简单易用API,支持链式调用,无需再关注路由表的配置,保持着对Navigation组件零侵入零耦合;支持多个拦截器(支持优先级和中断拦截)和全局拦截器,可实现页面跳转和显示、埋点、登录等拦截处理;支持自定义URL路径跳转配置,可以通过URL路径来跳转原生不同页面;支持第三方Navigation的系统路由表使用本库API;
2024-11-08 15:29:09 959
原创 HarmonyOS 开发实战——ArkUI组件嵌套滚动优化实践
使用Scroll嵌套Web和List组件实现。Scroll作为父组件响应滚动手势,Web和List组件禁用滚动手势,滚动偏移量由父组件Scroll给Web和List组件派发。2)如果List滚动到顶部,Scroll没有滚动到顶部,则Scroll自身滚动,不给Web和List派发滚动偏移量。2)如果web滚动到底部,Scroll没有滚动到底部,则Scroll自身滚动,不给Web和List派发滚动偏移量。1)如果web没有滚动到底部,则Scroll将滚动偏移量派发给web,Scroll组件本身不滚动。
2024-11-08 14:39:35 517
原创 HarmonyOS 开发实战——ArkUII自定义TabBar组件
由于指示器需要跟随内容视图一起滑动切换,所以指示器不能在单个tabBuilder中设置。1、使用Column组件定义底部指示器,设置一个宽度为文字宽度,高度为3的蓝色指示器;2、这里的指示器宽度可以动态设置成文字的宽度,也可以直接设置成文字某个固定宽度;3、指示器距离左边的距离需要动态设置,配上动画,可以实现指示器跟随手指滑动。Stack() {}.tabBar(this.tabBuilder("房源", 0, $r("app.media.trip_data_start_bg")))...
2024-11-08 13:57:44 672
原创 OpenHarmony 嵌入式 UI 扩展组件:跨越界限的舞台
在鸿蒙系统的舞台上,UIAbility 组件是主角,负责与用户进行交互,而嵌入式 UI 扩展组件则是舞台上的配角,负责扩展应用的功能,并实现跨越进程界限的界面嵌入,为用户带来更加丰富和便捷的交互体验。
2024-11-07 22:05:57 489
原创 HarmonyOS AbilityStage 组件容器:Stage模型的舞台中心
是华为鸿蒙系统中用于管理阶段组件的生命周期、资源分配和进程的组件容器。每个阶段都有一个 AbilityStage 实例,它负责管理该阶段的组件生命周期、资源分配和进程管理。AbilityStage 组件容器的核心作用组件生命周期管理:AbilityStage 组件容器负责管理阶段内所有组件的生命周期,包括创建、启动、运行、停止和销毁等状态。资源分配:AbilityStage 组件容器负责分配阶段所需的资源,例如内存、文件系统等。进程管理。
2024-11-07 21:32:03 541
原创 HarmonyOS ExtensionAbility 组件:扩展应用功能的舞台
鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。
2024-11-07 20:20:07 892
原创 HarmonyOS UIAbility 组件:构建用户界面的舞台
UIAbility 是华为鸿蒙系统中用于构建用户界面的应用组件,它负责创建和管理界面元素,响应用户操作,并与用户进行交互。UIAbility 组件可以包含一个或多个页面,每个页面都可以独立加载和卸载,方便地进行界面管理和功能扩展。UIAbility 组件的主要功能:界面渲染:UIAbility 组件可以使用 ArkUI 库提供的各种组件构建用户界面,例如按钮、文本、图片、列表等。事件处理:UIAbility 组件可以监听和处理各种用户事件,例如点击、触摸、滑动等。数据绑定。
2024-11-07 17:41:52 713
原创 【鸿蒙南向开发】使用hdc TCP模式无线方式连接OpenHarmony设备
本文将介绍如何使用hdc工具 tcp模式以无线的方式连接OpenHarmony设备。将usb线将OpenHarmony设备和电脑端连接,并且将两个连接至同一个局域网。
2024-11-07 16:18:32 262
原创 【鸿蒙南向开发】OpenHarmony开发——XTS测试与报错解决
等待设备重启,hdc shell进入设备控制台,执行attesttestclient,看到 authResult [0]、 softwareResult [0]说明验证通过。仔细核对,尤其是厂商名称不在产品信息页面,在认证信息界面。ACTS测试项很多,建议先统一测试一遍,错的再单独测试。有时测试遇到authResult [-2],可能是测试的服务器拥堵,(实测周末测试效率很高。有时测试遇到authResult [-1],可能因为平台申请的证书过期了(7天过期),此时只需更换tokenA即可。
2024-11-07 15:30:45 586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人