- 博客(292)
- 收藏
- 关注
原创 【鸿蒙基于API 13实战开发】—— ArkUI组件之Svg 开发
通过设置x(x轴坐标)、y(y轴坐标)、dx(文本x轴偏移)、dy(文本y轴偏移)、fill(字体填充颜色)、stroke(文本边框颜色)、stroke-width(文本边框宽度)等属性实现文本的不同展示样式。svg 组件绘制路径时,通过Path中的M(起点)、H(水平线)、a(绘制弧形到指定位置)路径控制指令,并填充颜色实现饼状图效果。通过设置width、height、x、y和viewBox属性为Svg设置宽度、高度、x轴坐标、y轴坐标和Svg视口。Svg组件可以用来绘制常见图形和线段,如矩形(
2024-12-18 20:32:06
852
原创 【鸿蒙基于API 13实战开发】—— ArkUI组件之栅格布局
在pages/index目录下的hml文件中创建一个grid-container组件,并添加 Grid-row 子组件。创建grid-container组件并添加grid-row,在grid-row组件内添加grid-col组件形成布局。grid-row仅支持grid-col为子组件,只能在grid-col组件中添加填充的内容。栅格布局容器根节点,使用grid-row与grid-col进行栅格布局。grid-container仅支持grid-row为子组件。
2024-12-18 18:02:59
373
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之OffscreenCanvasRenderingContext2D对象
使用OffscreenCanvas在离屏Canvas画布组件上进行绘制,绘制对象可以是矩形、文本、图片等。离屏,即GPU在当前缓冲区以外新开辟的一个缓冲区。使用isPointInPath判断坐标点是否在路径的区域内,使用isPointInStroke判断坐标点是否在路径的边缘线上,并在页面上显示返回结果。以下示例创建了一个OffscreenCanvas画布,再在画布上创建一个getContext2d对象,并设置filter属性改变图片样式。
2024-12-18 16:27:22
199
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之CanvasRenderingContext2D对象
添加createLinearGradient和createRadialGradient属性创建渐变容器,接着用addColorStop方法添加多个色块组成渐变色,再设置fillStyle为gradient将渐变色填充到矩形中,最后设置阴影的模糊级别(shadowBlur)、阴影颜色(shadowColor)及阴影偏移量(shadowOffset)。如下面的示例,先设置画笔为红色,在保存画笔后对画布进行清除并改变画笔为蓝色,当我们直接使用画笔时会画出一个蓝色矩形,对存储的画笔进行恢复后就可画出红色矩形。
2024-12-18 14:01:04
869
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之Canvas对象
Canvas组件提供画布,用于自定义绘制图形。具体用法请参考CanvasRenderingContext2D对象。
2024-12-17 22:45:40
330
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之qrcode开发
通过设置qrcode的type属性来选择按钮类型,如定义qrcode为矩形二维码、圆形二维码。通过color和background-color样式为二维码设置显示颜色和背景颜色。在pages/index目录下的hml文件中创建一个qrcode组件。在本场景中将二维码与输入框绑定,通过改变输入框的内容改变二维码。qrcode组件在创建的时候value的值为必填项。生成并显示二维码,具体用法请参考 qrcode。
2024-12-17 20:36:59
258
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之toolbar开发
toolbar为页面工具栏组件,用于展示针对当前界面的操作选项,可作为页面的一级导航。
2024-12-17 14:53:12
425
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之switch开发
设置checked属性值为true(组件为打开状态)。添加change事件,当组件状态改变时触发,触发后执行switchChange函数获取组件当前状态(关闭/打开)。设置display属性(默认为none),当关闭开关改变display属性值为flex后显示地址模块,点击按钮改变颜色。在下面示例中设置开关为打开状态(使用默认收货地址),关闭开关后页面显示选择地址按钮,点击按钮即可改变收货地址。当showtext属性值设置为true时,texton和textoff设置的文本才会生效。
2024-12-17 14:25:31
258
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之image-animator开发
在pages/index目录下的hml文件中创建一个image-animator组件,css文件中编写组件样式,js文件中引用图片。
2024-12-16 16:53:04
901
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之button开发
button是按钮组件,其类型包括胶囊按钮、圆形按钮、文本按钮、弧形按钮、下载按钮。
2024-12-15 21:32:42
435
原创 【鸿蒙基于API 13实战开发】—— ArkUI基础组件之input开发
input是交互式组件,用于接收用户数据。其类型可设置为日期、多选框和按钮等。
2024-12-15 20:19:50
268
原创 【鸿蒙基于API 13实战开发】—— ArkUI常见组件之tabs开发
tabs是一种常见的界面导航结构。通过页签容器,用户可以快捷地访问应用的不同模块。
2024-12-13 20:26:45
401
原创 【鸿蒙基于API 13实战开发】—— ArkUI常见组件之dialog开发
dialog组件用于创建自定义弹窗,通常用来展示用户当前需要或用户必须关注的信息或操作。
2024-12-13 14:06:27
287
原创 【鸿蒙基于API 13实战开发】—— ArkUI常见组件之list开发
list是用来显示列表的组件,包含一系列相同宽度的列表项,适合连续、多行地呈现同类数据。
2024-12-12 21:55:57
342
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:通过XComponent接入无障碍
通过XComponent接入的三方平台,NDK提供了对接无障碍的接口函数,实现三方平台的组件在ArkUI中的无障碍能力。首先,需要使用XComponent的 OH_NativeXComponent_GetNativeAccessibilityProvider 获得无障碍接入provider。
2024-12-12 15:35:25
964
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:嵌入ArkTS组件
针对需要使用ArkTS侧独立能力的场景,ArkUI开发框架提供了Native侧嵌入ArkTS组件的能力,该能力依赖 ComponentContent 机制,通过ComponentContent完成对ArkTS组件的封装,然后将封装对象转递到Native侧,通过Native侧的 OH_ArkUI_GetNodeHandleFromNapiValue 接口转化为ArkUI_NodeHandle对象用于Native侧组件挂载使用。
2024-12-12 14:04:13
287
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:自定义组件
以下示例创建了一个自定义容器,该容器将子组件最大值加上额外边距作为自身大小,同时对子组件进行居中排布。图1自定义容器组件按照 接入ArkTS页面 创建前置工程。创建自定义容器组件封装对象。// 自定义容器组件示例public:// 使用自定义组件类型ARKUI_NODE_CUSTOM创建组件。// 注册自定义事件监听器。// 声明自定义事件并转递自身作为自定义数据。// 反注册自定义事件监听器。// 取消声明自定义事件。// 自定义属性事件更新需要主动调用标记脏区接口。
2024-12-11 21:33:13
659
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:弹窗
通过弹窗控制器显示自定义弹窗,可以设置自定义弹窗的样式和内容。弹窗接口集合定义在结构体里,命名为ArkUI_NativeDialogAPI_x (x表示版本),这些接口围绕弹窗控制器实现各种弹窗控制。
2024-12-11 20:29:03
371
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:懒加载开发长列表界面
针对List、Grid、WaterFlow、Swiper组件,提供 NodeAdapter 对象替代ArkTS侧的LazyForEach功能,用于按需生成子组件,其中List组件的属性枚举值为NODE_LIST_NODE_ADAPTER,Grid组件的属性枚举值为NODE_GRID_NODE_ADAPTER,WaterFlow组件的属性枚举值为NODE_WATER_FLOW_NODE_ADAPTER,Swiper组件的属性枚举值为NODE_SWIPER_NODE_ADAPTER。懒加载适配器相关功能实现。
2024-12-11 16:29:46
290
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:动画
ArkUI开发框架在NDK接口主要提供属性动画,实现组件出现/消失转场。同时,可以通过Node-API桥接ArkTS侧帧动画能力,实现Native侧的动画效果。说明
2024-12-11 15:14:32
459
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:添加交互事件
NDK接口针对UI组件的事件,提供了监听函数的方式。首先,可使用 addNodeEventReceiver 函数添加组件事件的监听器,该监听器会监听该组件上发生的所有事件,例如:点击事件、焦点事件。然后,可使用 registerNodeEvent 函数声明组件的哪些事件需要监听,NDK接口支持的事件范围通过 ArkUI_NodeEventType 枚举值定义。
2024-12-11 13:49:58
329
原创 【鸿蒙基于API 13实战开发】—— NDK接口构建UI:接入ArkTS页面
使用NDK接口构建UI界面时,需要在ArkTS页面创建用于挂载NDK接口创建组件的占位组件。占位组件类型为 ContentSlot ,ContentSlot能够绑定一个 NodeContent 对象,该对象可通过Node-API传递到Native侧挂载显示Native组件。
2024-12-10 22:07:22
985
原创 【鸿蒙基于API 13实战开发】—— UI上下文接口操作界面(UIContext)
HarmonyOS支持Stage模型后,存在一个ArkTS引擎里面运行多个ArkUI实例的场景。此时,一个ArkTS引擎下可能会有多个Ability,每个Ability可能有多个Window,每个Window通过loadContent加载页面,生成一个UIContent(ArkUI实例)。图1多实例关系图FA模型默认只支持一个ArkUI实例,没有多实例的场景。当框架切换到Stage模型后,在FA模型下开放的ArkUI全局接口,在调用时无法明确运行在哪个实例里,存在语义不明确的问题。
2024-12-10 20:33:07
323
原创 【鸿蒙基于API 13实战开发】—— 应用内主题换肤
对于采用ArkTS开发的应用,提供了应用内组件的主题换肤功能,支持局部的深浅色切换及动态换肤。目前,该功能只支持设置应用内主题换肤,暂不支持在UIAbility或窗口层面进行主题设置,同时也不支持C-API和Node-API。当应用需要使用换肤功能时,应自定义主题颜色。CustomTheme 用于自定义主题色的内容,其属性可选,仅需要复写需修改的部分,未修改内容将继承系统默认设置,可参考 系统默认的token颜色值。//自定义主题色。
2024-12-10 16:24:06
890
原创 【鸿蒙基于API 13实战开发】—— 自定义扩展:AttributeUpdater
大量属性频繁更新时,如果使用状态变量,会导致前端状态管理计算量太大,并需要对单个组件进行全量的属性更新。虽然可以通过 AttributeModifier 的机制按需更新,但是前端还是默认会有一些diff和reset的策略。为此引入了AttributeUpdater的能力,它是一个特殊的AttributeModifier,除了继承AttributeModifier的能力,还提供了获取属性对象的能力。通过属性对象可以不经过状态变量,直接更新对应属性。
2024-12-10 15:19:03
729
原创 【鸿蒙基于API 13实战开发】—— 自定义扩展:AttributeModifier
Styles和@Extend均是编译期处理,不支持跨文件的导出复用。@Styles仅能支持通用属性、事件,不支持组件特有的属性。@Styles虽然支持在多态样式下使用,但不支持传参,无法对外开放一些属性。@Extend虽然能支持特定组件的私有属性、事件,但同样不支持跨文件导出复用。@Styles、@Extend对于属性设置,无法支持业务逻辑编写,动态决定是否设置某些属性。只能通过三元表达式对所有可能设置的属性进行全量设置,设置大量属性时效率低下。
2024-12-10 13:51:00
273
原创 【鸿蒙基于API 13实战开发】—— BuilderNode
BuilderNode 提供能够挂载原生组件的能力,支持通过无状态的UI方法 全局自定义构建函数 @Builder生成组件树,并通过 getFrameNode 获取组件树的根 FrameNode 节点。该节点可以通过 NodeController 直接返回,挂载在 NodeContainer 节点下,也可以在FrameNode树结构和 RenderNode 树结构嵌入声明式的组件结构,实现混合显示的能力。
2024-12-09 22:17:27
917
原创 【鸿蒙基于API 13实战开发】—— RenderNode
对于不具备自己的渲染环境的三方框架,虽然实现了前端的解析以及布局、事件等处理,但需要依赖系统提供的基础渲染、动画的能力。FrameNode 上的通用属性、通用事件对这一类框架是多余的,会进行多次冗余的操作,包括布局、事件等处理逻辑。RenderNode 是更加轻量级的渲染节点,仅包含渲染相关的能力。在该节点上暴露了设置基础的渲染属性的能力,并提供节点的动态增加、删除能力以及自定义绘制的能力。可以向三方框架提供基础的渲染、动画能力。
2024-12-09 21:06:34
921
原创 【鸿蒙基于API 13实战开发】—— FrameNode
对于具备自己前端定义的三方框架,需要将特定的dsl转换成为ArkUI的声明式描述。这个转换过程需依赖额外的数据驱动绑定至 Builder 中,转换比较复杂且性能较低。这一类框架一般依赖系统ArkUI框架的布局、事件能力,以及最基础的节点操作和自定义能力,大部分组件通过自定义完成,但是需要使用部分原生组件混合显示。FrameNode 的设计就是为了解决上述的问题。
2024-12-09 16:54:19
917
原创 【鸿蒙基于API 13实战开发】—— 自定义节点
自定义节点是ArkUI框架通过接口提供了底层实体节点部分基础能力的节点对象,这些节点能够与原生控件进行混合显示。自定义节点的挂载和显示需要依赖 自定义占位节点。现有的自定义节点包括 FrameNode 、 RenderNode 、 BuilderNode 三类对象。FrameNode表示了单个的自定义组件节点,RenderNode表示更加轻量级的渲染节点,BuilderNode对象提供了能够创建、更新原生组件以及组件树的能力。自定义占位节点作为原生组件可以在原生组件树上为自定义节点提供挂载的点。
2024-12-09 15:49:07
968
原创 【鸿蒙基于API 13实战开发】—— 拖拽事件
拖拽框架提供了一种通过鼠标或手势触屏的方式传递数据,即从一个组件位置拖出数据,并拖入到另一个组件位置上进行响应,拖出一方提供数据,拖入一方接收和处理数据。该操作可以让用户方便地移动、复制或删除指定内容。拖拽操作:在某个能够响应拖出的组件上长按并滑动触发的拖拽行为,当用户释放时,拖拽操作结束;拖拽背景(背板):用户所拖动数据的形象化表示,开发者可通过 onDragStart 的 CustomerBuilder 或 DragItemInfo 设置,也可以通过 dragPreview 通用属性设置;
2024-12-09 14:06:52
1113
原创 【鸿蒙基于API 13实战开发】—— 触屏事件
触屏事件指当手指/手写笔在组件上按下、滑动、抬起时触发的回调事件。包括 点击事件 、 拖拽事件 和 触摸事件。触摸事件原理。
2024-12-08 22:16:56
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人