- 博客(113)
- 收藏
- 关注
原创 HarmonyOS-ArkUI 自定义弹窗
自定义弹窗是界面开发中最为常用的一种弹窗写法。在自定义弹窗中, 布局样式完全由您决定,非常灵活。通常会被封装成工具类,以使得APP中所有弹窗具备相同的设计风格。自定义弹窗具备的能力有打开弹窗自定义布局,以及自定义传参数(通常只要能传参,您就几乎对其界面有绝对的掌控了)更新弹窗内容关闭弹窗释放布局资源以下能力均可在API图中展现。如果图看明白,基本能掌握比看官方文档还要全面的点。
2025-06-05 17:05:08
397
原创 HarmonyOS-ArkUI核心API: MediaQuery
MediaQuery是一个用于相应设备状态变化的工具,比如屏幕旋转, 深色模式切换,分辨率切换等等。
2025-06-04 12:00:43
385
原创 HarmonyOS-ArkUI核心API: UIContext
看到自定义弹窗的时候,其API的第一个参数便是UIContext类型的。尽管这个类,在弹窗的弹出API中,仅仅靠getUIContext()便可以得到引用,显得没有难度的样子。但是它是一个和Context相同量级的类。是值得好好研究的。可以说以这个类为引,好好扒,必能让我们对这个系统的了解升一个维度。于是我决定:开一个新的章节,挨个讲ArkUI的一些核心API,以便于比较详细的推测出这个框架的能力,设计细节,优势以及待完善的地方。Ability持有的UIContext。
2025-06-04 11:04:15
181
原创 HarmonyOS-ArkUI固定样式弹窗(2)-- 选择器弹窗
这种弹窗使用的频率是比较高的, 相较于之前的集中弹窗比较复杂,我们自定义实现也需要不少成本。日历选择器涉及到了一个比较常用的类--Date。在此特意将Date类注解出来,便于更顺手的查阅使用。选择器弹窗经常用于显示特定的信息或者选项, 比较复杂。使用起来比较简单,就是调用。
2025-06-03 06:00:00
420
原创 HarmonyOS-ArkUI固定样式弹窗(1)
固定样式弹窗指的就是ArkUI中为我们提供的一些具备界面模板性质的弹窗。样式是固定的,我们可以决定在这些模板里输入什么样的内容。常见的有,警告弹窗, 列表选择弹窗, 选择器弹窗,对话框,操作菜单。下图是本文中要讲到的基类固定样式弹窗,其中选择器弹窗没有包含在内,需要开一篇新的文章专门描述。
2025-05-30 07:54:18
1021
原创 HarmonyOS-ArkUI 窗口层次简介
窗口是一个界面的承载体,是一个界面的入口。对于开发人员并不是直接接触的概念。原因是平常我们开发中涉及到的窗口相关已经被封装了起来,例如Ability本身内部就存在一个窗口,我们写界面的时候对于窗口的操作也就是设置一下界面相关的文件名。如下图所示。一切让人觉得很简单。仿佛loadContent之后界面就自然而然的展示在屏幕上了。实际上对于屏幕展示界面,展示一个系统的,具备统筹管理能力的,又遵循用户操作逻辑的界面,其底层是一个非常复杂且庞大的维护"系统"。远不是我们看到的那么简单。
2025-05-27 11:51:39
283
原创 HarmonyOS-ArkUI 一镜到底之页面间共享元素转场 sharedTransition
文章中了解了什么是一镜到底,以及在一个大组件内,子组件与子组件进行一镜到底的转场的代码实现。但是截止到目前,我们讲的仍是一个页面内的一镜到底。事实上也可以进行一镜到底的实现,但是采用的是另外一个api:。具体能实现的效果,我找了个能激发大家学习兴趣的例子: 华为 音乐App的界面。看看这种炫酷的效果:反正好好写是可以用本文中学习的内容做到的。这个界面太复杂,代码案例中肯定不会实现这个。好,接下来我们学习相关API吧。
2025-04-24 05:50:16
675
原创 HarmonyOS-ArkUI 一镜到底之组件内隐式共享元素转场 geometryTransition
geometry transition 英译为: 几何过渡。这个动画写法挺简单的,不妨碍人家的炫酷。这种效果其实就是传说中的一镜到底!从现在开始,本文geometry transition 与一镜到底具有同样的含义,指的是同样的概念。共享元素转场着重于展现组件与组件之间涉及到转场时的过渡效果。顾名思义,重点有两处需要我们注意:我们之前学的动画呢,诸如 animateTo(显式动画), animation(属性动画),keyFrameAnimateTo(关键帧动画),transition(组件内转场动画),m
2025-04-23 19:05:20
786
原创 HarmonyOS-ArkUI: 组件内转场(transition)
组件内转场指的是组件在触发转场的时机所具备的动画效果。组件被添加组件被删除组件可见性发生变化-Visibility这些场景有时候单纯的让其消失,出现,平移有时候视觉效果会比较突兀。我们可以利用组件内转场动效实现平滑的过度。
2025-04-23 15:08:26
1091
原创 HarmonyOS-ArkUI: 路径动画 motionPath
路径动画用于设置组件进行位移动画时的运动路径!这个一般使用量比较少,但是简单的讲讲吧。motionPath是一个UI组件顶级类的方法,就意味着,任何组件其实都具备,motionPath的能力。并且这个方法就是来描述运动路径用的,具体还得配合动画来使用,比如animateTo函数。这样动画在运动的时候,就会按照motionPath的路径来了。其具体API及属性解释如图所示:上图中,MotionPathOptions类中的path属性,是一个运动路径描述。这个一般是Svg开发技术里面的内容。
2025-04-22 12:33:18
284
原创 HarmonyOS-ArkUI: 属性动画:animation
至今为止,已经讲了两个动画了(显式动画,关键帧动画如链接所示),这个属性动画是第三个。鸿蒙的属性动画,和Android中的属性动画,迥异,也就是名字不同罢了。所以之前的经验不能完全带入。而且通过前两篇的学习,我认为鸿蒙对动画的优化,与安卓有很大不同。有时间从绘制渲染的角度研究下底层原理。目前我们先要会用,用好为主。
2025-04-22 10:22:10
981
原创 HarmonyOS-ArkUI:关键帧动画 keyFrameAnimateTo
上文讲解显式动画的过程中我们提到了显式动画有一个缺点,就是:"显式动画尽管有很多的运动曲线参数可以选择, 但是用户只能控制它开始和结束,并不能对其动画的详细细节做精准的调控。例如对于加速,只能控制先减速后加速这类趋势。但是并不能控制,在运动到20%处猛增速这种比较精微的调控。做不到。那么现在我们就来学习一个可以实现动画的精微调控的方式-关键帧动画。
2025-04-21 20:05:47
400
原创 HarmonyOS-ArkUI: animateTo 显式动画
啊, 尽管有点糙,但还是解释一下吧, 显式动画里面的“显式”二字, 是程序员在代码调用的时候,就三令五申,明明白白调用动画API而创建的动画。这个API的名字就是: animateTo。这就是显式动画。说白了您可以大致理解为,显式动画,就是调用animateTo来完成的动画。好,接下来我们梳理一下这个方法!
2025-04-21 17:51:42
823
原创 HarmonyOS-ArkUI-动画分类简介
动画,是客户端提升界面交互用户体验的一个重要的方式。可以使应用程序更加生动灵越,提高用户体验。HarmonyOS对于界面的交互方面,围绕回归本源的设计理念,打造自然,流畅品质一提的操作体验。
2025-04-20 08:29:01
1897
原创 HarmonyOS-ArkUI: 自定义组件冻结功能@ComonentV2 freezeWhenInactive属性
自定义组件冻结能力的使用通常用在以下三大场景页面路由场景Tab页, TabContent导航 Navigation说白了就是一个页面接着一个切的那种操作场景。新的界面出来,之前的那个界面就是inactive了,就可以被冻结了。这个粗略的描述可以涵盖大部分场景但不绝对。
2025-04-17 16:48:21
1129
原创 HarmontOS-ArkUI V2状态 !!语法糖 双向绑定
双向绑定指的是在组件间数据的双向绑定。当一个值无论是在父组件还是子组件中改动都会在这两层中都更新界面。!!语法糖能完成双向绑定!!语法糖更省代码,写起来简洁。其数据同步是原子级的。不用担心什么多线程引发的问题。
2025-04-16 19:33:20
800
原创 HarmonyOS-ArkUI V2状态-PersistenceV2:持久化存储UI状态
PersistenceV2类是一个与AppStorageV2类用法非常相似的类。因为它俩是子类和父类的关系。如果不了解AppStorageV2,可以先跳转至了解一下这个类。PersistenceV2相比于其父类AppStorageV2而言,它存储的数据是持久化存储的。也就是它里面的数据能写在盘里,SD卡里。其周期越过了App的生命周期。本次App存储的数据,杀掉进程后, 在下次App开启的时候是可以拿到这些值的。PersistenceV2最值得一提的作用是。
2025-04-15 19:30:44
893
原创 HarmonyOS-ArkUI V2工具类:AppStorageV2:应用全局UI状态存储
AppStorageV2是一个单例,创建时间是应用UI启动时。其目的是为应用的数据状态提供中心存储,这些数据是应用级别都可以访问得到的。它将在应用运行过程中为应用保存数据。数据通过唯一的字符串进行访问。使用位置在组件内可以使用。在普通的类中,UIAbility类中也可以使用。支持应用主线程内多个UIAbility实例间的状态共享。总结下来就是全方位都可以使用。
2025-04-15 16:46:38
486
原创 HarmonyOS-ArkUI V2装饰器: @Computed装饰器:计算属性
Computed装饰器是用来装饰getter方法的。getter方法中涉及到相关状态变量的计算。当相关的状态变量发生变化时会自动触发Computed修饰的函数重新计算。对于比较复杂的计算,Computed会有性能收益。// 1 必须是get方法。2 可以返回任意类型 3Computed里面不要改状态变量的值,会引发死循环。@Computed...@Computed装饰器说明支持类型getter访问器从父组件初始化禁止可初始化子组件@Param被执行时机。
2025-04-15 10:27:45
835
原创 HarmonyOS-ArkUI V2装饰器: @Monitor装饰器:状态变量修改监听
根据上方的代码,我们大概知道了Monitor应该是怎么用的,也应该能猜测的出这个装饰器是干什么的了。下面讲讲具体的使用规则。也就是监听具有时效性,创建是我们自己定义的,销毁是系统在组件销毁的时候替我们销毁的。这样能替我们避免很多关于内存泄漏的问题。具体是: @Monitor定义在@ComponentV2装饰的自定义组件中时,@Monitor会在状态变量初始化完成之后生效,并在组件销毁之时失效。@Trace message: string = "默认值"
2025-04-14 18:11:09
1236
原创 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
1056
原创 HarmonyOS: ArkUI V2装饰器-@Event:规范组件输出
Event说白了就是修饰回调函数的。比如:一个父组件,里面包含了一个比较复杂的子组件。当子组件做某些操作的时候,需要让父组件感知到当前做了这种操作了。在过往Android开发中经常碰见这种场景, 比如子组件做完某个任务了通知父组件, 父组件知道了后就立马更新其范围内的控件展示样式。此时我们实现的时候往往会往子控件中设置一个含有回调接口的类,或者接口句柄,等子控件完成任务就调用句柄的回调函数。但是ArkUI里,您要自己写一个interface,然后设置回调函数,也不是不能做到,就是麻烦。
2025-04-13 14:49:35
1072
原创 HarmonyOS-ArkUI V2装饰器-@Once
前文,关于@Param的使用:@Once装饰器是一个需要配合@Param装饰器一块使用的的装饰器。它的特性是,仅仅在变量进行初始化的时候,接受一个外部传来的值进行初始化,然后就不接受后续同步变化了, 当后续数据源进行更改时,不会将修改同步给子组件。它的底层是针对数据源的变化做了拦截操作。
2025-04-11 18:46:20
425
原创 HarmonyOS-ArkUIV2装饰器-@Param:组件外部输入
上文我们了解了@Local装饰器 ,讲明了Local装饰器不允许外部传入值对其进行初始化。详见:。但总有场景是需要外部组件传值过来,然后本组件接收这个值这种场景的。而且很多情况下,一个状态变量的作用范围会是会传递到子组件中,而不是像Local这样只能在自己所在的组件中发挥作用。对于这种场景我们用@Param装饰器可以搞定。
2025-04-11 16:19:06
1099
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
1216
原创 HarmonyOS-ArkUI 装饰器V2 @ObservedV2与@Trace装饰器
本文主要围绕类属性变化观测相关的装饰器 @ObservedV2和@Trace装饰器进行讲解。在了解这俩装饰器前我们先做一些其他方面的预习,便于以后理解。
2025-04-10 15:49:43
1211
原创 HarmonyOS-ArkUI Ability进阶系列-各类生命周期总结
答:window先感知到的,对于事件分发Window是先于UIAbility知道的,如果Window接收的事件需要自己配合,比如人家知道是用户滑到任务列表了,那么先暂停下自己也是没问题的, 但是收到back键它不会处理欧,天晓得里面有多少个界面仅仅就是导航back,而不是自己退出呢,所以它自己不处理,但是会路由下去!而且有些事件的路由方式并非是系统先找Window的,再加上实现逻辑要复用吧,so首次开启的时候即使Window能先触发,那也可以在onForground之后来进行,来确保周期状态变化的一致性。
2025-04-08 15:52:06
1699
原创 有感&体会
折腾来折腾去,才领悟到,最容易的搞钱方式,就是当牛马。真的佩服那些能折腾出成绩来的人。人家但从某方面可能不如你专业,但是综合素质,是很适应这个时代大环境的,没得说。
2025-04-07 09:09:53
83
原创 HarmonyOS-ArkUI Ability进阶系列-UIAbility与各类Context
UIAbility中的this.context 与 getContext(this) 这两种方式都可以获取UIAbilityContext对象,而且获取的都是同样的实例。只是二者来源不同。
2025-04-05 18:04:37
979
原创 HarmonyOS-ArkUI Rcp模块类关系梳理
RCP全称 Remote Communication Platform。其通过对HTTP协议的NAPI封装,提供基于场景化的声明式开发范式API接口,使开发人员无需处理低级别的HTTP细节,降低代码量并提升开发效率。提供基于会话的多线程模型,并动态调整和部署HTTP参数。相比于ohos.net.http模块。RCP在并发场景下进行了性能优化,使数据传输更快,性能更强。Session是一个生命周期略长的会话,在会话期间,可以发送多条Request,从而获取Response。
2025-04-02 18:58:54
956
原创 HarmonyOS-ArkUI NetConnection基本使用
默认激活网络指的是,系统优先使用的,正常的网络。系统自动切换。对于系统自动切换的网络,有以下三个维度物理层的网络已经连接上具备互联网访问能力具备优先级方面,依次如下有线网络wifi蜂窝VPN其他类型网络以上是系统选择网络的策略。因为以上策略,再加上我们所处的环境不断变动。所以这个默认激活网络具备变动性当更高优先级的网络出现时,连接成功的时候会自动切换网络。至少保持TCP/IP协议栈的ESTABLISHED状态。
2025-03-31 14:21:04
856
原创 HarmonyOS-ArkUI Navigation (导航组件)-第一部分
Row(){Text('菜单1')Text('菜单2')Text('菜单3')Text('菜单4')Text('菜单5')build() {Column(){.margin({top: 20,})})//设置为分栏模式//设置顶部标题.title("主标题")// 设置顶部菜单栏//设置底部工具栏。
2025-03-27 18:41:13
1198
原创 HarmonyOs ArkUI- Tabs组件(导航栏)
大部分情况下,尤其是主页中的导航栏,不是纯文字的,这时候需要我们写自定义导航栏。如下图,才是应用的常态:这个的写法是比较复杂的,不过需要仔细看下,因为这里面利用了@Builder装饰器。相当于是我们提前做了解了。这个装饰器在自定义组件常见。同时如果您有实现自定义组件的需求,且这个自定义组件可以被使用者定制,您也可以仿照这样去设计!很简单且很好的案例。原理: Bars组件中的,tabBar组件,可以接受一个自定义的函数组件样式。如图好,我们就是利用CustomBuilder来进行自定义组件的设置。
2025-03-26 09:46:36
1138
原创 HarmonyOS-ArkUI Grip组件
网格布局是由“行”和“列”分割的单元格组成,通过指定项目所在的单元格做出各种各样的布局,网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要的自适应布局,使用场景如,九宫格,计算器,日历等。ArkUI为网格布局提供了相关的组件,Grid以及GridItem。Grid用来设置布局相关参数,GridItem定义子组件相关特征。
2025-03-25 16:51:47
1034
原创 HarmonyOS-ArkUI: Swiper组件
Swiper() {// ...}, false)这个主要还是靠双向绑定来完成,Swiper本身提供了一个属性。首先,每个项目展示的宽高,透明度,缩放程度,Z轴方向,都要是双向绑定的数据。以便以后面双向绑定数据发生变化之后,可以联动界面发生变化。之后我们只需要通过得知滑动的事务特点,来计算 宽高,透明度,缩放程度,Z轴方向 等属性应该会等于多少即可。这里面难的会是,滑动动一下,其他界面的值也得变化。所以计算的时候代码会有些烧脑。
2025-03-25 10:48:21
632
原创 HarmonyOs-ArkUI List组件
列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。
2025-03-23 07:01:43
1042
原创 HarmonyOS-UIAbility 启动模式
HarmonyOS涉及的启动模式,就是Android中的那个启动模式,一样的概念。它指的是一个UIAbility实例,被打开的时候,如果已经存在了UIAbility,是复用上一个呢,还是重新创建一个呢, 如果复用的话,那窗口行为应该是什么呢。模式就是来指定这些行为的。在HarmonyOS中启动模式被简化成了三种单例模式 singleton多实例模式 multiton指定实例模式 specified。
2025-03-19 16:40:57
877
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人