自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

童年纸飞机的博客

坚持比方法更重要

  • 博客(124)
  • 收藏
  • 关注

原创 HarmonyOS-ArkUI: Web组件加载流程1

图中的Scheme指的就是URL中的协议,指的是资源访问的前缀。其涉及的面不止在于HarmonyOS对于普通组件的渲染,而且在于Web浏览器本身内容的渲染,和底层是如何合成的画面。本图中的导航流程指的是从用户发起到页面加载完成的完整控制流程,由web组件的loadUrl触发开始,直至加载完页面内容,展示在界面上。, 其主要作用是执行图层合成任务,处理动态效果,如滚动,动画的CPU指令生成, 为后续的GPU渲染准备数据。由于ArkWeb的实现非常复杂,为了避免迷失方向,我会列出图片来展示我们学习到的位置。

2025-07-15 20:46:32 436

原创 HarmonyOS-ArkUI Web控件基础铺垫1-HTTP协议-数据包内容

http(HyperText Transfer Protocol)汉语译为超文本传输协议。是互联网应用最广泛的一种网络协议。所有的www文件都必须遵守这个标砖。设计http最初的目的就是为了提供一种发布和接受html页面的方法。后来就用于各种客户端数据请求中了。这个协议非常常用。http数据包的内容组成部分。http每个内容组成部分的构建规则。http每个组成部分最常用的一些值,或者方法,各代表什么意思。

2025-07-13 22:00:46 606

原创 Web跨域资源共享-CORS 是什么

同源指的是两个URL的协议,域名和端口完全一致, 其中任何一个部分不一致,都不算做同源。

2025-07-11 13:52:26 696

原创 什么是DOM存储

我们最早的时候HTML存储是采用Cookie存储, 而DOM存储是HTML5引入的一个更好用的存储。DOM存储是HTML5引入的一个客户端数据存储机制。直接通过JS API操作,无需解析字符串。数据仅存客户端,减少敏感信息泄露风险。数据不随HTTP请求发送,节省带宽。每次请求自动携带,增加流量消耗。需手动处理字符串格式。

2025-07-11 13:51:11 142

原创 Fence-音视频设备资源同步

Fence是一个有关于中,CPU与GPU/HWC对数据进行操作时用于的类,注意Fence保证的是资源安全,并非是图形渲染的帧率同步,二者有本质区别。实现原理也不同!它在Android系统图形同步机制中是个重要的角色,并贯穿多个核心环节,其核心价值在于!来协调GPU与CPU之前的操作顺序。或者换一个说法。Fence是搞跨进程同步用的一个工具类!下文中我们抛开它作为渲染工具类的角色, 仅仅考虑它是如何做到支持跨进程资源同步的。

2025-07-08 17:04:23 1145

原创 DMA技术与音频数据的存储和播放

是一种硬件技术,允许外部设备,如音视频硬件, 磁盘控制器等,绕过CPU,直接与计算机运行时内存(RAM)进行数据读写。因为音频的数据存在这种规则,所以在硬件播放这些数据的时候,只需要根据固定的地址间隔来取内存,就很轻松的将左右声道分来来取了。音频开发中,主要掌握的就是上方环节中,对音频数据的采集,处理, 编码,传输等环节。那么则代表, 这段数据每一秒,将产生48K帧, 每一帧,包含两个声道的数据,每一个声道的数据,用16bit表示。比如,我们有个PCM数据,是 48KHZ, 立体声, 16bit。

2025-07-08 17:03:12 567

原创 Android 音视频 IPC序列化工具-Flattenable

讲讲这个类,被用在Android音视频中,跨进程序列化反序列化用。与Binder驱动有很强的联系。位于:Flattenable, 译为令人满意的。可能是作者十分满意自己的这些作品吧,起了这么个名字。我在看Android音视频相关源码的时候捋到了这个类,后来经过查找学习,得知,这个类是Android系统级别序列化核心抽象接口,是专门为高效跨进程,跨设备数据传递而设计的,主要能力是序列化和反序列化对象。这些被序列化的数据,将会在Binder驱动中使用!

2025-07-08 09:41:43 744

原创 HarmonyOS-ArkUI 手势系列4--多层级手势

【摘要】多层级手势指父容器和子组件同时监听手势的场景。鸿蒙(ArkUI)与Android在处理手势冲突时存在显著差异:Android采用责任链模式,父组件可能拦截事件导致子组件无法响应;而鸿蒙采用按需分发机制,父/子组件可同时接收事件,默认子组件优先触发。鸿蒙提供responseRegion定义响应区域,以及hitTestBehavior的四种模式(Default/Block/Transparent/None)精确控制事件分发逻辑,有效解决嵌套组件的手势冲突问题,其设计比Android更灵活高效。

2025-07-04 16:40:40 909

原创 Android Binder与AIDL与Service使用案例及分析

摘要:Binder是Android高效的跨进程通信机制,通过AIDL工具简化开发。核心流程包括:1)定义AIDL接口并生成Stub类;2)服务端继承Stub实现逻辑,通过Service的onBind返回Binder对象;3)客户端通过ServiceConnection获取代理对象进行跨进程调用。关键点在于:必须依托Service实现进程隔离,使用RemoteCallbackList管理回调,注意注册/解注册防止内存泄漏。底层通过Binder驱动(内核缓冲区+进程映射)实现数据拷贝和跨进程方法调用,Servi

2025-07-04 09:39:40 887

原创 HarmonyOS-ArkUI 手势系列3--组合手势

摘要:本文介绍了HarmonyOS-ArkUI中的组合手势功能,通过将多个单一手势按照特定顺序组合实现复杂交互。组合手势分为三种模式:Sequence(顺序识别)、Parallel(并行识别)和Exclusive(互斥识别),文中分别给出了代码示例和效果说明。顺序识别要求手势依次完成;并行识别允许同时识别多个手势;互斥识别则在任一手势成功后即终止识别。文章还提供了具体实现案例,如长按后拖拽、单击与双击区分等交互场景。

2025-07-02 12:26:12 700

原创 HarmonyOS-ArkUI 手势系列2--单一手势(长按,拖拽,滑动,旋转,捏合)

本文深入解析了鸿蒙ArkUI中的手势交互机制,详细介绍了长按、拖拽、滑动、旋转和捏合五种单一手势的实现方式。通过gesture属性监听手势事件,开发者可配置参数并设置回调函数处理交互数据。文章提供了每种手势的完整代码示例,展示如何通过API实现缩放、旋转、位移等动态效果。手势分类包括单一、组合和多层级三种类型,本文重点剖析单一手势的API调用模式,为后续组合手势开发奠定基础。所有示例均采用接口类型化工厂常量模式,统一调用入口并隐藏实现细节。

2025-07-01 11:02:29 802

原创 HarmonyOS-ArkUI 手势系列1--API分析及使用方式及示例

手势是人机交互的重要方式,可分为单一手势(如点击、滑动)、组合手势(多个手势组合)和多层级手势(复杂嵌套交互)。ArkTS通过gesture属性实现手势监听,如TapGesture监听点击事件。手势API采用接口类型化工厂常量模式,隐藏实现细节,提供统一调用入口。开发者可通过配置手势参数(如count、fingers)和回调函数实现丰富交互,回调返回的GestureEvent包含详细交互数据。这种设计简化了手势监听实现,同时支持复杂交互场景。

2025-07-01 07:00:00 1020

原创 HarmonyOS-ArkUI 自定义弹窗

自定义弹窗是界面开发中最为常用的一种弹窗写法。在自定义弹窗中, 布局样式完全由您决定,非常灵活。通常会被封装成工具类,以使得APP中所有弹窗具备相同的设计风格。自定义弹窗具备的能力有打开弹窗自定义布局,以及自定义传参数(通常只要能传参,您就几乎对其界面有绝对的掌控了)更新弹窗内容关闭弹窗释放布局资源以下能力均可在API图中展现。如果图看明白,基本能掌握比看官方文档还要全面的点。

2025-06-05 17:05:08 428

原创 HarmonyOS-ArkUI核心API: MediaQuery

MediaQuery是一个用于相应设备状态变化的工具,比如屏幕旋转, 深色模式切换,分辨率切换等等。

2025-06-04 12:00:43 408

原创 HarmonyOS-ArkUI核心API: UIContext

看到自定义弹窗的时候,其API的第一个参数便是UIContext类型的。尽管这个类,在弹窗的弹出API中,仅仅靠getUIContext()便可以得到引用,显得没有难度的样子。但是它是一个和Context相同量级的类。是值得好好研究的。可以说以这个类为引,好好扒,必能让我们对这个系统的了解升一个维度。于是我决定:开一个新的章节,挨个讲ArkUI的一些核心API,以便于比较详细的推测出这个框架的能力,设计细节,优势以及待完善的地方。Ability持有的UIContext。

2025-06-04 11:04:15 218

原创 HarmonyOS-ArkUI固定样式弹窗(2)-- 选择器弹窗

这种弹窗使用的频率是比较高的, 相较于之前的集中弹窗比较复杂,我们自定义实现也需要不少成本。日历选择器涉及到了一个比较常用的类--Date。在此特意将Date类注解出来,便于更顺手的查阅使用。选择器弹窗经常用于显示特定的信息或者选项, 比较复杂。使用起来比较简单,就是调用。

2025-06-03 06:00:00 438

原创 HarmonyOS-ArkUI固定样式弹窗(1)

固定样式弹窗指的就是ArkUI中为我们提供的一些具备界面模板性质的弹窗。样式是固定的,我们可以决定在这些模板里输入什么样的内容。常见的有,警告弹窗, 列表选择弹窗, 选择器弹窗,对话框,操作菜单。下图是本文中要讲到的基类固定样式弹窗,其中选择器弹窗没有包含在内,需要开一篇新的文章专门描述。

2025-05-30 07:54:18 1060

原创 HarmonyOS-ArkUI 窗口层次简介

窗口是一个界面的承载体,是一个界面的入口。对于开发人员并不是直接接触的概念。原因是平常我们开发中涉及到的窗口相关已经被封装了起来,例如Ability本身内部就存在一个窗口,我们写界面的时候对于窗口的操作也就是设置一下界面相关的文件名。如下图所示。一切让人觉得很简单。仿佛loadContent之后界面就自然而然的展示在屏幕上了。实际上对于屏幕展示界面,展示一个系统的,具备统筹管理能力的,又遵循用户操作逻辑的界面,其底层是一个非常复杂且庞大的维护"系统"。远不是我们看到的那么简单。

2025-05-27 11:51:39 299

原创 HarmonyOS-ArkUI 一镜到底之页面间共享元素转场 sharedTransition

文章中了解了什么是一镜到底,以及在一个大组件内,子组件与子组件进行一镜到底的转场的代码实现。但是截止到目前,我们讲的仍是一个页面内的一镜到底。事实上也可以进行一镜到底的实现,但是采用的是另外一个api:。具体能实现的效果,我找了个能激发大家学习兴趣的例子: 华为 音乐App的界面。看看这种炫酷的效果:反正好好写是可以用本文中学习的内容做到的。这个界面太复杂,代码案例中肯定不会实现这个。好,接下来我们学习相关API吧。

2025-04-24 05:50:16 695

原创 HarmonyOS-ArkUI 一镜到底之组件内隐式共享元素转场 geometryTransition

geometry transition 英译为: 几何过渡。这个动画写法挺简单的,不妨碍人家的炫酷。这种效果其实就是传说中的一镜到底!从现在开始,本文geometry transition 与一镜到底具有同样的含义,指的是同样的概念。共享元素转场着重于展现组件与组件之间涉及到转场时的过渡效果。顾名思义,重点有两处需要我们注意:我们之前学的动画呢,诸如 animateTo(显式动画), animation(属性动画),keyFrameAnimateTo(关键帧动画),transition(组件内转场动画),m

2025-04-23 19:05:20 800

原创 HarmonyOS-ArkUI: 组件内转场(transition)

组件内转场指的是组件在触发转场的时机所具备的动画效果。组件被添加组件被删除组件可见性发生变化-Visibility这些场景有时候单纯的让其消失,出现,平移有时候视觉效果会比较突兀。我们可以利用组件内转场动效实现平滑的过度。

2025-04-23 15:08:26 1121

原创 HarmonyOS-ArkUI: 路径动画 motionPath

路径动画用于设置组件进行位移动画时的运动路径!这个一般使用量比较少,但是简单的讲讲吧。motionPath是一个UI组件顶级类的方法,就意味着,任何组件其实都具备,motionPath的能力。并且这个方法就是来描述运动路径用的,具体还得配合动画来使用,比如animateTo函数。这样动画在运动的时候,就会按照motionPath的路径来了。其具体API及属性解释如图所示:上图中,MotionPathOptions类中的path属性,是一个运动路径描述。这个一般是Svg开发技术里面的内容。

2025-04-22 12:33:18 298

原创 HarmonyOS-ArkUI: 属性动画:animation

至今为止,已经讲了两个动画了(显式动画,关键帧动画如链接所示),这个属性动画是第三个。鸿蒙的属性动画,和Android中的属性动画,迥异,也就是名字不同罢了。所以之前的经验不能完全带入。而且通过前两篇的学习,我认为鸿蒙对动画的优化,与安卓有很大不同。有时间从绘制渲染的角度研究下底层原理。目前我们先要会用,用好为主。

2025-04-22 10:22:10 1022

原创 HarmonyOS-ArkUI:关键帧动画 keyFrameAnimateTo

上文讲解显式动画的过程中我们提到了显式动画有一个缺点,就是:"显式动画尽管有很多的运动曲线参数可以选择, 但是用户只能控制它开始和结束,并不能对其动画的详细细节做精准的调控。例如对于加速,只能控制先减速后加速这类趋势。但是并不能控制,在运动到20%处猛增速这种比较精微的调控。做不到。那么现在我们就来学习一个可以实现动画的精微调控的方式-关键帧动画。

2025-04-21 20:05:47 403

原创 HarmonyOS-ArkUI: animateTo 显式动画

啊, 尽管有点糙,但还是解释一下吧, 显式动画里面的“显式”二字, 是程序员在代码调用的时候,就三令五申,明明白白调用动画API而创建的动画。这个API的名字就是: animateTo。这就是显式动画。说白了您可以大致理解为,显式动画,就是调用animateTo来完成的动画。好,接下来我们梳理一下这个方法!

2025-04-21 17:51:42 841

原创 HarmonyOS-ArkUI-动画分类简介

动画,是客户端提升界面交互用户体验的一个重要的方式。可以使应用程序更加生动灵越,提高用户体验。HarmonyOS对于界面的交互方面,围绕回归本源的设计理念,打造自然,流畅品质一提的操作体验。

2025-04-20 08:29:01 1909

原创 HarmonyOS-ArkUI: 自定义组件冻结功能@ComonentV2 freezeWhenInactive属性

自定义组件冻结能力的使用通常用在以下三大场景页面路由场景Tab页, TabContent导航 Navigation说白了就是一个页面接着一个切的那种操作场景。新的界面出来,之前的那个界面就是inactive了,就可以被冻结了。这个粗略的描述可以涵盖大部分场景但不绝对。

2025-04-17 16:48:21 1150

原创 HarmontOS-ArkUI V2状态 !!语法糖 双向绑定

双向绑定指的是在组件间数据的双向绑定。当一个值无论是在父组件还是子组件中改动都会在这两层中都更新界面。!!语法糖能完成双向绑定!!语法糖更省代码,写起来简洁。其数据同步是原子级的。不用担心什么多线程引发的问题。

2025-04-16 19:33:20 836

原创 HarmonyOS-ArkUI V2状态-PersistenceV2:持久化存储UI状态

PersistenceV2类是一个与AppStorageV2类用法非常相似的类。因为它俩是子类和父类的关系。如果不了解AppStorageV2,可以先跳转至了解一下这个类。PersistenceV2相比于其父类AppStorageV2而言,它存储的数据是持久化存储的。也就是它里面的数据能写在盘里,SD卡里。其周期越过了App的生命周期。本次App存储的数据,杀掉进程后, 在下次App开启的时候是可以拿到这些值的。PersistenceV2最值得一提的作用是。

2025-04-15 19:30:44 932

原创 HarmonyOS-ArkUI V2工具类:AppStorageV2:应用全局UI状态存储

AppStorageV2是一个单例,创建时间是应用UI启动时。其目的是为应用的数据状态提供中心存储,这些数据是应用级别都可以访问得到的。它将在应用运行过程中为应用保存数据。数据通过唯一的字符串进行访问。使用位置在组件内可以使用。在普通的类中,UIAbility类中也可以使用。支持应用主线程内多个UIAbility实例间的状态共享。总结下来就是全方位都可以使用。

2025-04-15 16:46:38 532

原创 HarmonyOS-ArkUI V2装饰器: @Computed装饰器:计算属性

Computed装饰器是用来装饰getter方法的。getter方法中涉及到相关状态变量的计算。当相关的状态变量发生变化时会自动触发Computed修饰的函数重新计算。对于比较复杂的计算,Computed会有性能收益。// 1 必须是get方法。2 可以返回任意类型 3Computed里面不要改状态变量的值,会引发死循环。@Computed...@Computed装饰器说明支持类型getter访问器从父组件初始化禁止可初始化子组件@Param被执行时机。

2025-04-15 10:27:45 851

原创 HarmonyOS-ArkUI V2装饰器: @Monitor装饰器:状态变量修改监听

根据上方的代码,我们大概知道了Monitor应该是怎么用的,也应该能猜测的出这个装饰器是干什么的了。下面讲讲具体的使用规则。也就是监听具有时效性,创建是我们自己定义的,销毁是系统在组件销毁的时候替我们销毁的。这样能替我们避免很多关于内存泄漏的问题。具体是: @Monitor定义在@ComponentV2装饰的自定义组件中时,@Monitor会在状态变量初始化完成之后生效,并在组件销毁之时失效。@Trace message: string = "默认值"

2025-04-14 18:11:09 1258

原创 HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同步

Provider需要与@Consumer配合使用。两者通过一个key建立联结。此key表现在,这两个装饰器都接收一个叫aliasName的参数,用来指定其修饰的变量的别名。之后靠这个别名来寻找绑定关系。@Provider属性装饰器说明装饰器参数aliasName?:string, 别名,缺省时默认为属性名,建议最好写这个参数支持类型自定义组件中成员变量。属性类型可以为number,string, boolean, class, Array, Date, Map, Set 等类型。支持装饰箭头函数。

2025-04-13 21:46:16 1072

原创 HarmonyOS: ArkUI V2装饰器-@Event:规范组件输出

Event说白了就是修饰回调函数的。比如:一个父组件,里面包含了一个比较复杂的子组件。当子组件做某些操作的时候,需要让父组件感知到当前做了这种操作了。在过往Android开发中经常碰见这种场景, 比如子组件做完某个任务了通知父组件, 父组件知道了后就立马更新其范围内的控件展示样式。此时我们实现的时候往往会往子控件中设置一个含有回调接口的类,或者接口句柄,等子控件完成任务就调用句柄的回调函数。但是ArkUI里,您要自己写一个interface,然后设置回调函数,也不是不能做到,就是麻烦。

2025-04-13 14:49:35 1082

原创 HarmonyOS-ArkUI V2装饰器-@Once

前文,关于@Param的使用:@Once装饰器是一个需要配合@Param装饰器一块使用的的装饰器。它的特性是,仅仅在变量进行初始化的时候,接受一个外部传来的值进行初始化,然后就不接受后续同步变化了, 当后续数据源进行更改时,不会将修改同步给子组件。它的底层是针对数据源的变化做了拦截操作。

2025-04-11 18:46:20 431

原创 HarmonyOS-ArkUIV2装饰器-@Param:组件外部输入

上文我们了解了@Local装饰器 ,讲明了Local装饰器不允许外部传入值对其进行初始化。详见:。但总有场景是需要外部组件传值过来,然后本组件接收这个值这种场景的。而且很多情况下,一个状态变量的作用范围会是会传递到子组件中,而不是像Local这样只能在自己所在的组件中发挥作用。对于这种场景我们用@Param装饰器可以搞定。

2025-04-11 16:19:06 1120 1

原创 HarmonyOS-ArkUI V2装饰器@Local装饰器:组件内部状态

因为Local本身的特性就是能检测到Array,Set,Map,Date等内嵌类型的API调用,我们改其中一个元素的值,就相当于调用API了,自然会被观测到。我们要讨论的是,Array,Set,Map这类类型的元素为一个Object的时候,并且Object本身存在很大深度的时候,改了某一个元素其中一个属性的值。但是如果它修饰类的对象的时候,如果对象的某个属性再下一层的某个属性发生了变化,例如 A有B类的属性,B有C类属性,这个C类中的属性中某个值发生变化了,就无法观测到了。加一个暂时的另外的动画。

2025-04-11 09:05:56 1245

原创 HarmonyOS-ArkUI 装饰器V2 @ObservedV2与@Trace装饰器

本文主要围绕类属性变化观测相关的装饰器 @ObservedV2和@Trace装饰器进行讲解。在了解这俩装饰器前我们先做一些其他方面的预习,便于以后理解。

2025-04-10 15:49:43 1251

原创 状态管理概览

先列个概览,以后慢慢分析各大装饰器。此文做了解,熟悉下概念即可。

2025-04-10 09:01:58 249

原创 HarmonyOS-ArkUI Ability进阶系列-各类生命周期总结

答:window先感知到的,对于事件分发Window是先于UIAbility知道的,如果Window接收的事件需要自己配合,比如人家知道是用户滑到任务列表了,那么先暂停下自己也是没问题的, 但是收到back键它不会处理欧,天晓得里面有多少个界面仅仅就是导航back,而不是自己退出呢,所以它自己不处理,但是会路由下去!而且有些事件的路由方式并非是系统先找Window的,再加上实现逻辑要复用吧,so首次开启的时候即使Window能先触发,那也可以在onForground之后来进行,来确保周期状态变化的一致性。

2025-04-08 15:52:06 1715

HarmonyOS-ArkUI Rcp模块类关系梳理图片

HarmonyOS-ArkUI Rcp模块类关系梳理图片

2025-04-02

空空如也

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

TA关注的人

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