- 博客(20)
- 收藏
- 关注
原创 HO与OH差异之Navigation三
在上一篇内容中我们介绍了HO与OH差异之Navigator,我们也了解了Navigator的基本概念和大致了解了一下他的基础用法,既然谈到差异肯定就不止这两种差异,今天就让我们来了解第三种差异NavRouter,其中在HO中我们并没有这种路由方式但是在OH中我们就存在这种路由方式。其中NavRouter除了可以使用推荐的写法外我们还可以进行自定义的跳转,我们可以进行配置NavRouter的参数进行跳转,NavRouter(value: RouteInfo)。Text("我是点击跳转后的页面")
2025-03-27 20:08:12
679
原创 HO与OH差异之Navigation二
其中从代码及演示视频中我们可以看的出来他和Navigation跳转的差异,他跳转后的页面并没有"天然的"有返回的按钮,并且它需要跳转的子页面也必须是@Entry修饰的界面,也就是他这种方式更偏向于深度跳转。其中在HO的Navigation中给我们使用的更为便捷但是OH中虽然与HO中有些差异但是大体还是差不多的,OH中还给我们提供了另外几种从Navigation派生出来的跳转方式,这里我们先了解一下Navigator。Text("外婆也可以进行Navigator跳转")Text("我也可以进行返回")
2025-03-26 20:59:12
739
原创 HO与OH差异之Navigation
一:再定义一个NavPushHelper类型的参数并且将它new出来,因为他是一个类,其中我们可以传递我们在HO定义的路由池也就是我们定义的NavPathStack,将这个变量定义出来后只需要再次通过这个变量我们就可以实现在HO中路由跳转的方式。其中从图片中我们便可以看出已经是成功的跳转了,从我们的代码上来看似乎也就多写一步,不过确实是多谢一步,但是当我们用pushPathByName时,发现他所需的参数会和HO有所不同,他所需的第一个参数时我们的模块名称,也就是说它可以直接的传递模块名字直接进行跳转。
2025-03-24 20:10:55
746
原创 Navigation基础二
在很早的一篇内容中我们便提到了Navigation这个路由方式,这也是官方推荐我们使用的一种路由方式,在很早的那个篇章中我们介绍了其中的基础跳转方式pushPath,但是Navigation的功能十分强大,它肯定也支持跨包进行跳转,其中跨包进行跳转就需要用到我们的另外一个方法:pushPathByName。其中我们的pushPathByName必须传递两个参数,第一个参数是我们需要跳转包的名称,第二个是我们需要传递的参数,如果没有我们就直接写null便可。Button("跨模块跳转")
2025-03-22 20:38:23
650
原创 路由基础之Router进阶
在上一篇章中我们了解了Router的一种跳转方式和返回,其中我们了解到pushUrl这种跳转方式必须传递的一个参数是我们需要跳转到的对应页面的url地址。其中包的名称我们从工程的根目录下的AppScope下的app.json5文件下的bundleName中,这个bundleName就是我们需要传递到@bundle:后的名称, 然后例如我这个目录。从代码块一中我们可以看的出来传递参数就是直接跟在Url的后面,因为它是object类型所以我们要进行Json的解析或者断言成我们传递的类型。
2025-03-21 19:01:04
538
原创 路由基础之Router
因为在很多业务或者场景下我们必须新打开一个页面而不是组件,也就是我们需要一个新的页面,而Router路由方式就是提供给我们跳转到新的页面的一种方式。我们在很早的篇幅中介绍过一种路由的方式Navigation的路由跳转,但是在很多场景或者对于我们这种初学者来说,上手Navigation的路由跳转可能比较慢,所以我们在这一篇幅中介绍易于上手的Router路由跳转。1.先导入router包,2.再使用其中的方法pushUrl,其中的Url对应你需要跳转的页面, 3.注意,跳转的页面得是@Entry修饰的页面。
2025-03-20 19:26:48
275
原创 ArkUI的样式二
在我们很多的开发场景中都会用到很多重复的样式,这会出现大量代码在进行重复的样式设置,@Styles装饰器可以将多条样式设置成一个方法, 直接在组件声明的位置调用。@Extend装饰器,从上面描述中我们便可以知晓@Styles用于样式的复用但是限制于通用样式,于是为了弥补这个缺失,@Extend装饰器便产生出来,用于扩展原生组件样式。在上一个篇章中我们介绍和了解了基本的样式组件方法属性等,在这一篇内容中我们来了解一下@Styles装饰器和@Extend装饰器。我是Extend的导出" }) })
2025-03-19 15:25:38
794
原创 ArkUI的样式
在我们的开发目录中有个resources的目录,该目录下的base下面的media就是我们存放图片的文件夹,其中Image()这个组件我们点进去之后可以看到它支持加载string, PixelMap 和Resource类型的数据源,其中支持的图片类型为png,jpg, bmp, svg和gif 类型的图片格式。其中该代码中的.fonSize, .width, .height都是叫做样式属性,其中的.fonSize是Text组件样式属性,如果我们在其他的不包含文字的组件中是无法使用该样式属性的。
2025-03-18 16:10:15
528
原创 ArkTs之状态管理七
从视频中不难看出,当我点击按钮时count的值变为3,也就对应了我们@Watch中修饰的函数onUpdate,其实很简单的理解就是,@Watch可以主动检测数据变化,并且绑定一个函数,当我们定义的变量发生变化时触发这个绑定的函数。@Watch提供了状态变量的监听能力,@Watch仅能监听到可以观察到的变化。在上一章节中我们介绍完了管理应用拥有的状态,在我们的篇幅一种也就是状态管理(V1)中还有“其他”类别的状态管理修饰器,这一篇章中让我们来了解一下@Watch装饰器。@Watch应用于对状态变量的监听。
2025-03-17 19:20:42
358
原创 ArkTs之状态管理六
在上一篇章中我们了解到了PersistentStorage的状态持久化内存状态,但是这个PersistentStorage有许多限制条件和存在一些不足,比如说如果我们写入大量的数据持久化,那么就会影响性能,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在线程中执行,从而导致性能的下降。2.往仓库中存储,注意写入后要记得加上store.flush() //将缓存的Preferences实例中的数据存储到用户首选项的持久化文件中。// 读取仓库中的内容。
2025-03-16 20:04:54
614
原创 ArkTs之状态管理五
我们先来个简单的介绍。UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage,也就是说,我们和之前访问AppStorage是一样的,只不过需要提前使用PersistentStorage来声明。PersistentStorage的用法就是如此简单,只是向磁盘中存储的数据,在PersistentStorage中还有其他的方法,大家可以去试一试。本次就暂时介绍这么多。
2025-03-15 19:35:12
415
原创 AtkTs之状态管理四
首先我们先介绍一下AppStorage: AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。和AppStorage不同的是,LocalStorage是页面级的,通常应用于页面内的数据共享。AppStorage支持应用的主线程内多个UIAbility实例间的状态共享,AppStorage中的属性可以被双向同步,数据可以是存在于本地或远程设备上,并具有不同的功能。"name": "老李",Text("我是页面一")
2025-03-14 16:15:33
353
原创 ArkTs之状态管理三
我们给new 的LocalStorage(key)输入一个key让@LocalStorageProp或者@LocalStorageLink知道是哪一个对象。从视频演示和代码中我们不难看出被LocalStorageLink修饰的变量可以双向的传递而LocalStorageProp只能单向的传递无法更改数据源,从其中我们也得知LocalStorage的基本用法,是可以跨页面进行数据的共享,不过需要传递一个key,需要我们new 出来。单向@LocalStorageProp("key")Button("修改")
2025-03-13 15:14:46
804
原创 ArkTS之状态管理二
就比如说我们定义一个对象或者定义了一个类,然后再定义一个数组里面有多个对象,那么这样嵌套起来,我们上一篇中讲到的修饰器就无法进行监听改变了,因为它们只能观察到第一层的变化也就是说我们嵌套进入第二层或者多层的时候就无法再进行改变了。这篇内容的"主角"因此而诞生 ---@Observed和@ObjectLink。在上一篇的基础上中我们大致了解了@State,@Prop, @Link, @Provide/@Consume的基本使用方法,在这一篇中我们会进一步的了解到@Observed和@ObjectLink.
2025-03-12 20:05:01
430
原创 ArkTs之状态管理
从演示中不难看出我们的子类在点击按钮想要同步改变时发现无法“撼动”这就是他的单向关系, 因为子类中定义的变量没有初始化所以数据来源于父类,也就是"子的一切都是父亲的",但是因为父亲给了我们这个数据我们将这个数据初始化了,打个比方说"只能父亲改变你,你无法改变父亲"我们在搭建界面的时候都需要用到或多或少的变量,因为我们要搭建的界面有的可能是静态不需要改变的,但是大部分的还是需要进行动态的改变,有交互的界面,就要引入“状态”的概念。不难看的出,子组件中被@Link修饰的变量与父组件中对应的数据源建立双向绑定。
2025-03-11 16:26:27
703
原创 picker选择器的初探
今天我们来初步介绍一下有关使用picker选择媒体库资源的使用,在很多的开发场景中我们都需要选择图片或者调用图库选择照片,在鸿蒙中给我们提供了那么一个API让我们可以很轻松的就开发出我们想要的图片选择器业务。到了我们的第四步,我们上述三步创建了图片文件选择项的实例,配置了文件的类型和文件的最大数目,到了第四步,我们要开始创建以恶搞图库选择器的实例,也就是从这一步开始我真正的要开始进入图库了。但是我们想要的是将选择的图片呈现到我们的页面中来,不急我们先看select方法有没有返回结果什么的。
2025-03-10 16:08:02
926
原创 ArkUI布局的初探
但是它们的“脾气”都是一样的,都不愿意“一个屋子里住多个人”它们都是仅仅支持一个子组件,但是这个Grid不同它的子组件不能是Column等,他只能是GridItem所以我们要使用的话也只能配合它,但是假如我们直接干的话又发现,没想到GridItem也仅支持一个子组件,它的“脾气”和他“老爸”几乎一样,假如我们按照“规定”再给他套一套会呈现什么效果呢?我们观察可以看的出来他貌似“自动”的帮我们分配好了空间,如果这一行无法显示更多的内容他会根据内容的大小帮我们把布局分配好, 好!
2025-03-09 16:12:25
623
原创 鸿蒙Navigation基础用法
到目前这一步已经完成90%,可能有人还有疑惑为什么已经定义了路由表,也按流程向外暴露了一个@Builder修饰的函数为什么跳转还是没有效果!其他的子节点都可以是组件,也就说明了Navigation作为路由他的性能会远远的超过使用router。就好像如图所示, 在Navigation的页面中我们创建好一个路由栈,无论有多少的子容器都是根据。它是一个方法其中包含了两个参数,一个必填参数是info,一个可选参数是animated,OK,已经完成了上述的两个步骤,创建路由栈,根容器节点,将他们绑定完成。
2025-03-08 10:30:05
586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人