鸿蒙开发
文章平均质量分 85
渐进式的学习鸿蒙开发 & 分享鸿蒙开发的内容
鸿蒙自习室
如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!微信公众号【Harmony自习室】
展开
-
鸿蒙UI开发——小图标的使用
相较于effectStrategy属性启动即触发动效,可以通过以下两种方式控制动效的播放状态以及更多样的动效策略选择。1)通过symbolEffect属性同时设置SymbolGlyph的动效策略及动效播放状态。。原创 2024-11-11 23:29:23 · 634 阅读 · 0 评论 -
鸿蒙开发实战——抽奖转盘
有朋友留言:能出一个抽奖转盘的教程吗 网上好像没有鸿蒙做圆形扇形的源码,最好做个可以选择自增的 类似于根据数组元素自增扇形切割圆形面积的。这里咱们就讨论下这个实现方案。先看效果(文末有源代码):中间有一个大圆盘,圆盘顶部有一个指针,圆盘正中央有一个圆形的“开始/结束”控制按钮。原创 2024-11-11 23:23:42 · 408 阅读 · 0 评论 -
鸿蒙UI开发——自定义UI绘制帧率
如果我们需要以独立的帧率绘制更新操作UI界面时,可以通过DisplaySync来实现。class DisplaySync { // 设置期望的帧率范围。setExpectedFrameRateRange(rateRange: ExpectedFrameRateRange) : void // 订阅每一帧变化 on(type: 'frame', callback: Callback): void // 取消订阅每一帧的变化 off(type: 'frame', callback。原创 2024-11-10 22:36:15 · 708 阅读 · 0 评论 -
鸿蒙多线程开发——同步任务处理
目前,多线程的开发我们已经学过TaskPool和Worker两种方式:TaskPool参看Worker参看我们现在讨论下多线程的同步任务处理。同步任务是指在多个线程之间协调执行的任务,其目的是确保多个任务按照一定的顺序和规则执行,例如使用锁来防止数据竞争。由于TaskPool偏向于单个独立的任务,因此当各个同步任务之间相对独立时推荐使用TaskPool,例如一系列导入的静态方法,或者单例实现的方法。如果同步任务之间有关联性,则需要使用Worker,例如无法单例创建的类对象实现的方法。原创 2024-11-10 22:32:45 · 356 阅读 · 0 评论 -
鸿蒙UI开发——实现环形文字
有朋友提问:您好关于鸿蒙UI想咨询一个问题 如果我想实现展示环形文字是需要通过在Text组件中设置transition来实现么,还是需要通过其他方式来实现。针对这位粉丝朋友的提问,我们做一下解答。❓ 什么是环形文字效果?这位朋友没有给出具体想要的环形文字的描述,按照我的理解,环形文字效果大致如下:⭐️ 问题分析在鸿蒙开发中,通过文字样式设置很难达到环形文字效果,如果想实现,我这边首先想到的是,使用RichText富文本组件去实现这个效果。(RichText富文本组件的使用在之前的文章中有介绍,详见鸿蒙UI系原创 2024-11-09 20:29:14 · 734 阅读 · 0 评论 -
鸿蒙多线程开发——Worker多线程
Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本进行耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。创建Worker的线程称为宿主线程(不一定是主线程,工作线程也支持创建Worker子线程),Worker自身的线程称为Worker子线程(或Actor线程、工作线程)。原创 2024-11-09 20:24:06 · 1156 阅读 · 0 评论 -
鸿蒙多线程开发——TaskPool任务池
TaskPool 作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。有一定开发经验的朋友应该对线程池不陌生。大致描述如下:TaskPool允许开发者在主线程封装任务抛给任务队列,系统选择合适的工作线程,进行任务的分发及执行,再将结果返回给主线程。接口直观易用,支持任务的执行、取消,以及指定优先级的能力,同时通过系统统一线程管理,结合动态调度及负载均衡算法,可以节约系统资源。原创 2024-11-07 22:47:37 · 714 阅读 · 0 评论 -
鸿蒙多线程开发——并发模型对比(Actor与内存共享)
并发是指在同一时间段内,能够处理多个任务的能力。为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略。指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。它允许在同一时间段内同时执行多段代码。在主线程继续响应用户操作和更新UI的同时,后台也能执行耗时操作,从而避免应用出现卡顿。并发能力在多种场景中都有应用,其中包括单次I/O任务、CPU密集型任务、I/O密集型任务和同步任务等。原创 2024-11-07 22:43:48 · 914 阅读 · 0 评论 -
鸿蒙开发——进程模型与进程通信
进程是一个正在执行的程序的实例。当我们启动一个程序时,操作系统会创建一个进程,分配给它所需的资源,如内存和CPU时间。每个进程至少有一个线程,即执行线程,负责执行程序的指令。进程是操作系统进行资源分配和调度的基本单位,是操作系统提供给用户和应用程序的一个抽象概念。在鸿蒙的进程模型中,进程被分为三类:主进程(负责UI的进程)、扩展进程(负责大部分ExtensionAbility)、WebView渲染进程(负责网页渲染的独立进程)。原创 2024-11-05 22:53:06 · 1065 阅读 · 0 评论 -
鸿蒙开发——线程内通信
在介绍鸿蒙开发中线程间通信问题前,我们先解释下什么是线程。在计算机科学中,线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。这么说是不是太抽象了?咱们换成通俗的话来说:假如把一个正在运行的程序想象成一个大工厂。这个工厂在运作的时候,有很多不同的任务要做。线程呢,就像是工厂里的一个的(不同的科室)。每个工人小组(线程)都可以独立地干活,去完成特定的一小部分任务。比如有的工人小组专门负责把原材料搬进工厂,有的专门负责在生产线上组装零件,还有的专门负责把成品打包运出去。原创 2024-11-05 22:49:01 · 734 阅读 · 0 评论 -
鸿蒙UI系统组件18——模态交互框(ModelDialog)
需要根据场景传入自定义组件填充在弹窗中实现自定义的弹窗内容。下面以AlertDialog、ActionSheet 和 CustomDialog为例说明相应的弹窗效果与使用方法。原创 2024-10-28 23:14:52 · 1560 阅读 · 0 评论 -
鸿蒙UI开发——基于组件安全区方案实现沉浸式界面
本文是接着上篇文章鸿蒙UI开发——基于全屏方案实现沉浸式界面的继续讨论。除了全屏方案实现沉浸式界面外,我们还可以使用组件安全区的方案。原创 2024-10-28 23:10:04 · 756 阅读 · 0 评论 -
hello鸿蒙
鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧。本文针对鸿蒙基本的开发内容做一次概览性的串联。咱们学习一款新的开发平台,一般先关注两个事情:a)开发工具;b)开发语言。鸿蒙的开发目前主推ArkTs语言,它的开发方式倾向于声明式开发,应用的开发模式与当下的前端MVVM接近,对前端开发者比较友好。如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!原创 2024-06-03 23:35:08 · 683 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part01: 装饰器&UI描述
如果组件支持子组件配置,则需在尾随闭包"{...}"中为组件添加子组件的UI描述。例如,Divider组件不包含构造参数。鸿蒙UI的开发在build()函数中完成,整个build()函数的开发类似于编写描述文件,我们也将buid()开发过程称为。至此,我们已经简单了解了鸿蒙UI开发中的两个重要概念,装饰器和UI描述,接下来,我们开始了解UI开发啦,Let's Go!属性方法以“.”链式调用的方式配置系统组件的样式和其他属性,建议每个属性方法单独写一行,示例代码如下:。d)给组件添加子组件。原创 2024-06-04 23:12:27 · 968 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part02: 组件开发
在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离,后续版本演进等因素。因此,将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。自定义组件具有以下特点:可组合:允许开发者组合使用系统组件、及其属性和方法。可重用:自定义组件可以被其他组件重用,并作为不同的实例在不同的父组件或容器中使用。数据驱动UI更新:通过状态变量的改变,来驱动UI的刷新。原创 2024-06-11 22:55:04 · 1315 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part03: 组件的生命周期
自定义组件的创建:自定义组件的实例由ArkUI框架创建。初始化自定义组件的成员变量:通过本地默认值或者构造方法传递参数来初始化自定义组件的成员变量,初始化顺序为成员变量的定义顺序。如果开发者定义了aboutToAppear,则执行aboutToAppear方法。在首次渲染的时候,执行build方法渲染系统组件,如果子组件为自定义组件,则创建自定义组件的实例。在首次渲染的过程中,框架会记录状态变量和组件的映射关系,当状态变量改变时,驱动其相关的组件刷新。原创 2024-06-12 23:07:24 · 1799 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part04: 组件的UI逻辑复用
至此,我们已经简单了解了使用@Builder装饰器和@BuilderParam装饰器来实现UI组合关系的复用,以及如何复用父组件传入的自定义@Builder函数。接下来,我们将学习如何使用@Styles和@Extend装饰器复用组件的特定样式,请关注 “鸿蒙UI开发快速入门 —— part05”;如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!长按下面的二维码关注公众号。原创 2024-06-13 23:13:26 · 1297 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part05:组件的样式复用
至此,我们将UI开发的组件样式相关的介绍完毕了。回顾一下,涉及到了@Builder UI描述的概念以及如何添加UI组件;UI和界面相关的的生命周期;UI的逻辑复用和样式复用;至此,我们已经可以编写一个静态页面了,但还不够,我们未来将继续学习状态管理和条件渲染。有了状态管理和条件渲染,我们的界面就能随着用户的交互而发生变化。下一个阶段,请持续关注:“鸿蒙UI开发快速入门 —— part06”如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!长按下面的二维码关注公众号。原创 2024-06-15 20:50:50 · 1075 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part06:组件状态管理之@State装饰器
状态管理的内容量比较大,为了阅读的舒适性,本文先介绍@State装饰器。后续:@Prop、@Link、@Provide/@Consume、@Observed、@ObjectLink将分别介绍,持续关注 "鸿蒙UI开发快速入门 —— part07"。如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!原创 2024-06-16 23:32:15 · 1252 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part07:组件状态管理之@Prop/@Link装饰器
至此,我们在@State装饰器的基础上又学习了@Props装饰器和@Link装饰器,@Props装饰器用于接受来自父组件的变量,@Link也用于接受来自父组件的变量,但额外的,@Link装饰器在子组件中被修改后,父组件中对应的值也会发生改变。剩下的状态装饰器请持续关注 “鸿蒙UI开发快速入门 —— part08 ”原创 2024-06-17 23:20:57 · 1706 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part08: 组件状态管理之@Provide/@Consume装饰器
我们再想一种场景:如果有一个状态,有非常多个子组件都需要共用,同时,子组件的层级可能会不止一层,此时,如果我们想做到类似的效果的话,则需要为每个层级都传递一遍@Props,这将是灾难。为了解决多层级的状态同步问题,鸿蒙引入了 @Provide装饰器和@Consume装饰器。原创 2024-06-22 14:57:59 · 1060 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part09: 应用级状态管理LocalStorage & AppStorage
如果开发者要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。ArkTS根据不同特性,提供了多种应用状态管理的能力原创 2024-06-23 23:02:03 · 1064 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part10: PersistentStorage与Environment
PersistentStorage将选定的AppStorage属性保留在设备磁盘上。应用程序通过API,以决定哪些AppStorage属性应借助PersistentStorage持久化。UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage。PersistentStorage和AppStorage中的属性建立双向同步。原创 2024-06-23 23:05:52 · 1024 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part11: 鸿蒙计算器开发实践
经过我们前面10章的学习,我们基本上可以开发出一个简单的APP了,为了巩固学习的内容,我们先开发一个计算器APP来连个手(文末有源代码),界面如下:包含基本的计算器运算功能支持一键清空,支持逐个删除数字支持将上次计算的过程保存下来,下次打开app继续;支持清理之前保存的记录这里面我们会用到知识如下:开发UI界面(基本控件的使用以及基本布局的使用);监听用户点击事件,在输入栏中及时反馈(动态交互);支持将过程持久化到本地,下次打开后自动恢复;let's go!💪🏻💪🏻💪🏻。原创 2024-06-24 23:03:37 · 1482 阅读 · 0 评论 -
鸿蒙UI开发快速入门 —— part12: 渲染控制
在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条件渲染语句,基于数组数据快速生成组件的循环渲染语句。至此,我们的“鸿蒙UI开发快速入门系列”正式结束了!接下来,我们将围绕UI开发的一些细节做展开,例如:学习ArkUI提供的所有布局方式、学习系统的常用控件、UI动画等。请持续关注后续“鸿蒙UI开发系列”。原创 2024-06-28 21:33:17 · 957 阅读 · 0 评论 -
ArcTs布局入门01——线性布局(Row/Column)
接下来,我们将介绍弹性布局(Flex),请持续关注“ArcTs布局入门02”。如果你对鸿蒙开发感兴趣,加入“Harmony自习室”吧~👇🏻👇🏻👇🏻👇🏻扫描下面的二维码关注公众号。原创 2024-06-30 22:55:16 · 1367 阅读 · 0 评论 -
ArcTs布局入门02——弹性布局(Flex)
弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。弹性布局在开发场景中用例特别多,比如页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等等。主轴为水平方向的Flex容器示意图弹性布局是仅次于线性布局的一种高频使用布局,未来在很多demo中都将会见到他的身影。接下来,我们将介绍剩下的其他布局,请持续关注“ArcTs布局入门03”原创 2024-07-01 23:07:31 · 1303 阅读 · 0 评论 -
ArcTs布局入门03——层叠布局(Stack)
叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。如下图,Stack作为容器,容器内的子元素(子组件)的顺序为Item1->Item2->Item3。如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!原创 2024-07-02 22:42:28 · 506 阅读 · 0 评论 -
ArcTs布局入门04——相对布局 & 媒体查询
RelativeContainer为采用相对布局的容器,支持容器内部的子元素设置相对位置关系。子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局。下图是一个RelativeContainer的概念图,图中的虚线表示位置的依赖关系。子元素并不完全是上图中的依赖关系。比如,Item4可以以Item2为依赖锚点,也可以以RelativeContainer父容器为依赖锚点。媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。原创 2024-07-03 22:20:45 · 1230 阅读 · 0 评论 -
ArcTs布局入门05——栅格布局(GridRow/GridCol)
后续还有网格布局,请持续关注“ArcTs布局入门06”如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧.原创 2024-07-08 22:29:17 · 1885 阅读 · 0 评论 -
ArcTs布局入门06——网格布局(Grid/GridItem)
网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等。ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。Grid组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。原创 2024-07-09 22:34:57 · 1359 阅读 · 0 评论 -
ArcTs布局入门07——列表(List)
列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。使用列表可以轻松高效地显示结构化、可滚动的信息。通过在List组件中按垂直或者水平方向线性排列子组件ListItemGroup或ListItem,为列表中的行或列提供单个视图,或使用ForEach迭代一组行或列,或混合任意数量的单个视图和ForEach结构,构建一个列表。原创 2024-07-10 23:07:21 · 1445 阅读 · 0 评论 -
ArkTs布局入门08——轮播(Swiper)
Swiper组件提供滑动轮播显示的能力。Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示。通常,在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。至此,我们已经了解了ArkTs的所有系统布局,“ArkTs布局入门”系列正式结束,未来,我们将逐步学习了解基本系统组件与系统动画,请持续关注。原创 2024-07-12 23:16:20 · 1731 阅读 · 0 评论 -
鸿蒙UI系统组件01——文本组件(Text/Span)
Text是文本组件,是我们开发UI界面中最常见的组件之一,通常用于展示用户的视图,如显示文章的文字。下面将对文本组件展开介绍。通过textAlign属性设置文本对齐样式。原创 2024-07-13 22:41:49 · 545 阅读 · 0 评论 -
鸿蒙UI系统组件02——按钮(Button)
Button是按钮组件,通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮。Button当做为容器使用时可以通过添加子组件实现包含文字、图片等元素的按钮。设置边框弧度。一般使用通用属性来自定义按钮样式。例如通过borderRadius属性设置按钮的边框弧度。设置文本样式。通过添加文本样式设置按钮文本的展示样式。设置背景颜色。添加backgroundColor属性设置按钮的背景颜色。用作功能型按钮。为删除操作创建一个按钮。。原创 2024-07-14 22:18:00 · 1293 阅读 · 0 评论 -
鸿蒙UI系统组件03——文本输入(TextInput/TextArea)
TextInput、TextArea是输入框组件,通常用于响应用户的输入操作,比如评论区的输入、聊天框的输入、表格的输入等,也可以结合其它组件构建功能页面,例如登录注册页面。设置无输入时的提示文本。TextInput({placeholder:'我是提示文本'})TextInput({placeholder:'我是提示文本'})设置输入框当前的文本内容。TextInput({placeholder:'我是提示文本',text:'我是当前文本内容'})添加backgroundColor改变输入框的背景颜色。原创 2024-07-16 23:21:54 · 1255 阅读 · 0 评论 -
鸿蒙UI系统组件04——单选框(Radio)
Radio是单选框组件,通常用于提供相应的用户交互选择项,同一组的Radio中只有一个可以被选中。原创 2024-07-18 23:34:48 · 717 阅读 · 0 评论 -
鸿蒙UI系统组件05——切换按钮(Toggle)
Toggle组件提供状态按钮样式,勾选框样式及开关样式,一般用于两种状态之间的切换。通过selectedColor属性设置Toggle打开选中后的背景颜色。通过switchPointColor属性设置Switch类型的圆形滑块颜色,仅对type为ToggleType.Switch生效。原创 2024-07-20 23:39:47 · 960 阅读 · 0 评论 -
鸿蒙UI系统组件06——进度条(Progress)
Progress是进度条显示组件,显示内容通常为某次目标操作的当前进度。原创 2024-07-21 21:55:19 · 1004 阅读 · 0 评论 -
鸿蒙UI系统组件07——视频播放器(Video)
Video组件用于播放视频文件并控制其播放状态,常用于为短视频应用和应用内部视频的列表页面。当视频完整出现时会自动播放,用户点击视频区域则会暂停播放,同时显示播放进度条,通过拖动播放进度条指定视频播放到具体位置。Video组件已经封装好了视频播放的基础能力,开发者无需进行视频实例的创建,视频信息的设置获取,只需要设置数据源以及基础信息即可播放视频,相对扩展能力较弱。原创 2024-07-22 23:57:14 · 1005 阅读 · 0 评论
分享