<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gitzzp的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/gitzzp</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gitzzp]]></copyright><item><title><![CDATA[ArkUI-动画]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141889336</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141889336</guid><author>gitzzp</author><pubDate>Wed, 04 Sep 2024 13:32:21 +0800</pubDate><description><![CDATA[renderGroup是组件通用方法，它代表了渲染绘制的一个组合。其核心功能就是标记组件，在绘制阶段将组件和其子组件的绘制结果进行合并并缓存，以达到复用的效果，从而降低绘制负载。首次绘制组件时，若组件被标记为启用renderGroup状态，将对组件和其子组件进行离屏绘制，将绘制结果进行缓存。此后当需要重新绘制组件时，就会优先使用缓存而不必重新绘制，从而降低绘制负载，优化渲染性能。组件渲染流程图如下所示：组件在当前组件树上。组件renderGroup被标记为true。组件内容被标脏。]]></description><category></category></item><item><title><![CDATA[ArkUI-状态管理最佳实践]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141855670</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141855670</guid><author>gitzzp</author><pubDate>Wed, 04 Sep 2024 10:04:32 +0800</pubDate><description><![CDATA[在声明式UI编程范式中，UI是应用程序状态的函数，应用程序状态的修改会更新响应的UI界面。ArkUI采用了MVVM模式。ArkUI提供了一系列装饰器实现ViewModel的能力，当自定义组件内变量被装饰器装饰时变为状态变量，状态变量的改变会触发UI渲染刷新。状态和UI的不一致，如同一状态的界面元素展示的UI不同，或UI界面展示的不是最新的状态。非必要的UI视图刷新，如只修改局部组件状态时导致组件所在页面的整体刷新。]]></description><category></category></item><item><title><![CDATA[ArkUI-状态管理-@Provide、@Consume、@Observed、@ObjectLink]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141860862</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141860862</guid><author>gitzzp</author><pubDate>Tue, 03 Sep 2024 15:49:16 +0800</pubDate><description><![CDATA[Provide装饰的状态变量自动对其所有的后代组件可用。后代通过使用@Consume去获取@Provide提供的变量。@Provide和@Consume可以通过相同的变量名或者相同的变量别名绑定，建议类型相同，否则会发生类型隐式转换，可能导致应用数据异常。// 通过相同的变量名绑定// 通过相同的变量别名绑定@Provide和@Consume通过相同的变量名或者相同的变量别名绑定时，@Provide装饰的变量和@Consume装饰的变量是一对多的关系。]]></description><category></category></item><item><title><![CDATA[ArkUI-状态管理-@State、@Porp、@Link]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141856080</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141856080</guid><author>gitzzp</author><pubDate>Tue, 03 Sep 2024 14:18:01 +0800</pubDate><description><![CDATA[State装饰的变量，与声明式范式中的其他被装饰变量一样，是私有的，只能从组件内部访问，在声明时必须指定其类型和本地初始化。初始化也可以选择使用命名参数机制从父组件完成初始化。@State装饰的变量与子组件中的@Prop装饰变量之间建立单向数据同步，与@Link、@ObjectLink装饰变量之间建立双向数据同步。@State装饰的变量的生命周期与其所属的自定义组件的生命周期相同。]]></description><category></category></item><item><title><![CDATA[ArkUI进阶-性能优化]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141822494</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141822494</guid><author>gitzzp</author><pubDate>Tue, 03 Sep 2024 10:29:17 +0800</pubDate><description><![CDATA[ArkUI进阶-性能优化布局性能优化基本布局流程精简节点数合理控制元素的隐藏与显示首次渲染：切换显示给定组件的宽高使用推荐的布局组件长列表加载性能优化长列表优化概述懒加载缓存列表项组件复用
布局性能优化
基本布局流程
在ArkUI的布局过程中，应用侧会根据前端UI描述创建后端的页面节点树，包含处理UI组件属性更新，布局测算，事件处理等逻辑。

例如上述布局：

应用会根据我们的代码，创建对应的node节点树，其中，Custom Node表示自定义组件节点，Frame Node节点表示系统组件节点。
在这个过]]></description><category></category></item><item><title><![CDATA[鸿蒙UIAbility组件进阶]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141750337</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141750337</guid><author>gitzzp</author><pubDate>Sat, 31 Aug 2024 14:50:21 +0800</pubDate><description><![CDATA[在设备内的功能模块之间跳转时，会涉及到启动特定的UIAbility，包括应用内的其他UIAbility、或者其他应用的UIAbility（例如启动三方支付UIAbility）。假设应用中有两个UIAbility：EntryAbility和FuncAbility（可以在同一个Module中，也可以在不同的Module中），需要从EntryAbility的页面中启动FuncAbility。一个UIAbility可以对应多个页面，在不同的场景下启动该UIAbility时需要展示不同的页面，可以通过如下方式进行。]]></description><category></category></item><item><title><![CDATA[ArkUI-Navigation]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141711407</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141711407</guid><author>gitzzp</author><pubDate>Fri, 30 Aug 2024 14:12:37 +0800</pubDate><description><![CDATA[Navigation通过事件提供自定义转场动画的能力。构建一个自定义转场动画工具类，通过map管理各个页面自定义动画对象，页面创建的时候注册自定义转场动画，页面销毁的时候解注册。实现一个转场协议对象NavigationAnimatedTransition，其中timeout属性表示转场结束的超时时间，默认为1000ms，transition属性为自定义的转场动画方法，开发者要在这里实现自己的转场动画逻辑，系统会在转场开始时调用该方法，onTransitionEnd为转场结束时的回调。]]></description><category></category></item><item><title><![CDATA[ArkUI-布局（四）]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141684094</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141684094</guid><author>gitzzp</author><pubDate>Fri, 30 Aug 2024 10:13:29 +0800</pubDate><description><![CDATA[Swiper支持通过设置自定义切换动画，可以在回调中对视窗内所有页面逐帧设置透明度、缩放比例、位移、渲染层级等属性实现自定义切换动画。@Entry@Componenti++) {build() {Column() {Swiper() {})// 同组页面完全滑出视窗外时，重置属性值} else {// 同组页面未滑出视窗外时，对同组中左右两个页面，逐帧根据position修改属性值} else {})使用TabContent的tabBar方法构建时可以自定义tabBar。]]></description><category></category></item><item><title><![CDATA[ArkUI-布局（三）]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141641685</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141641685</guid><author>gitzzp</author><pubDate>Wed, 28 Aug 2024 17:19:24 +0800</pubDate><description><![CDATA[在初始化列表的时候，可以通过space参数，在列表项之间添加间距。// ...]]></description><category></category></item><item><title><![CDATA[ArkUI-布局（二）]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141633636</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141633636</guid><author>gitzzp</author><pubDate>Wed, 28 Aug 2024 15:21:52 +0800</pubDate><description><![CDATA[锚点设置是指设置子元素相对于父元素或者是兄弟元素的位置依赖关系，在水平方向上，可以设置left、middle、right的锚点。表示启用xs、sm、md、lg、xl5个断点，小于320vp的为xs，320-520的为sm、520-840的为md、840-1080的为lg、1080以上的为xl。参数自定义修改断点的取值范围，最多支持6个断点，除了默认的四个以外，还可以启用xl（特大宽度类型设备）、xxl（超大宽度类型设备）两个断点。栅格布局是一种通用的辅助定位工具，对移动设备的界面设计有较好的借鉴作用。]]></description><category></category></item><item><title><![CDATA[ArkUI-布局（一）]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141601301</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141601301</guid><author>gitzzp</author><pubDate>Tue, 27 Aug 2024 16:13:19 +0800</pubDate><description><![CDATA[组件区域：表示组件的大小，width、height属性用于设置组件区域的大小。组件内容区：组件区域减去组件的border值，表示组件内容或子组件进行测算时的最大值。组件内容：组件内容区减去padding值，表示组件内容本身占用的大小。组件布局边界：组件区域加上margin的大小。]]></description><category></category></item><item><title><![CDATA[鸿蒙UIAbility组件概述(二)]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141279999</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141279999</guid><author>gitzzp</author><pubDate>Sat, 17 Aug 2024 14:31:41 +0800</pubDate><description><![CDATA[例如在应用中将入口功能和帐号登录功能分别设计为两个独立的UIAbility，在帐号登录UIAbility中完成登录操作后，需要将登录的结果返回给入口UIAbility。应用中的UIAbility在启动过程中，需要指定启动页面，否则应用启动后会因为没有默认加载页面而导致白屏。一个UIAbility可以对应多个页面，在不同的场景下启动该UIAbility时需要展示不同的页面，例如从一个UIAbility的页面中跳转到另外一个UIAbility时，希望启动目标UIAbility的指定页面。]]></description><category></category></item><item><title><![CDATA[鸿蒙UIAbility组件概述(一)]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141278858</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141278858</guid><author>gitzzp</author><pubDate>Sat, 17 Aug 2024 14:12:02 +0800</pubDate><description><![CDATA[UIAbility组件是系统调度的基本单元，为应用提供绘制界面的窗口。一个应用可以包含一个或者多个UIAbility组件。每一个UIAbility组件都会在最近任务列表中显示一个对应的任务。]]></description><category></category></item><item><title><![CDATA[鸿蒙应用程序框架基础]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141276272</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141276272</guid><author>gitzzp</author><pubDate>Sat, 17 Aug 2024 11:41:31 +0800</pubDate><description><![CDATA[pack.info文件猫叔了App Pack中每个HAP和HSP的属性，包含App中的bundleName和versionCode信息，以及Module中的name、type和abilites等信息。每个应用中至少包含一个.hap文件，可能包含若干个.hsp文件，也可能不包含。一个应用中的所有.hap文件和.hsp文件合并在一起称为一个Bundle，其对应的bundleName是应用的唯一标识。当应用发布上架到应用市场时，需要将Bundle打包为一个.app文件用于上架，这个.app文件称为。]]></description><category></category></item><item><title><![CDATA[ArkTs基础语法-声明式UI-条件渲染/循环渲染]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141261717</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141261717</guid><author>gitzzp</author><pubDate>Sat, 17 Aug 2024 09:54:24 +0800</pubDate><description><![CDATA[ForEach依次遍历新数据源，遍历数据项"one"时生成键值"0"，存在相同键值，因此不创建新组件。从以上可以看出，当最终键值生成规则包含index时，期望的界面渲染结果为[‘one’, ‘new item’, ‘two’, ‘three’]，而实际的渲染结果为[‘one’, ‘two’, ‘three’, ‘three’]，渲染结果不符合开发者预期。在ForEach组件进行非首次渲染时，会检查新生成的键值是否已经存在，如果不存在，会创建一个新的组件，如果已经存在，则直接渲染该键值所对应的组件。]]></description><category></category></item><item><title><![CDATA[ArkTs基础语法-声明式UI-页面和自定义组件生命周期]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141256658</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141256658</guid><author>gitzzp</author><pubDate>Fri, 16 Aug 2024 14:25:18 +0800</pubDate><description><![CDATA[实例创建：自定义组件的实例由ArkUI框架创建。初始化成员变量：通过组件内部默认值或者构造方法传入参数来初始化自定义组件的成员变量，初始化顺序为成员变量的定义顺序。如果定义了aboutToAppear函数，则执行aboutToAppear函数。首次渲染时，执行build函数，如果子组件为自定义组件，则创建子组件的实例。在首次渲染的过程中，框架会记录状态变量和组件之间的映射关系，后续当状态变量发生变化时，驱动其相关的组件刷新。如果定义了onDidBuild函数，则执行onDidBuild函数。]]></description><category></category></item><item><title><![CDATA[ArkTs基础语法-声明式UI-自定义组件]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141233198</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141233198</guid><author>gitzzp</author><pubDate>Fri, 16 Aug 2024 11:24:09 +0800</pubDate><description><![CDATA[Component@State message: string = '我是自定义组件';build() {Row() {this.message = '点击刷新UI';})struct：自定义组件基于struct实现，不能有继承关系，对于struct的实例化，可以省略new关键字。@Component：@Component装饰器仅能装饰struct关键字声明的数据结构，struct被@Component装饰后具备组件化的能力，一个struct只能被一个@Component装饰。]]></description><category></category></item><item><title><![CDATA[ArkTs基础语法-声明式UI-基本概念]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141232203</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141232203</guid><author>gitzzp</author><pubDate>Thu, 15 Aug 2024 22:26:57 +0800</pubDate><description><![CDATA[Builder/@BuilderParam：特殊的封装UI描述的方法，细粒度的封装和复用UI描述。事件方法：事件响应逻辑，也是使用链式调用的方式，设置如onclick方法等，在方法内部进行实现。如果组件是容器组件，则支持子组件配置，需要在组件声明后，紧随的闭包中添加子组件的描述。stateStyles：多态样式，可以依据组件的内部状态的不同，设置不同样式。如需使用组件中的成员函数配置组件的事件方法，需要使用bind this。UI描述：以声明式的方式来描述UI的结构，在组件的build方法中。]]></description><category></category></item><item><title><![CDATA[ArkTs基础语法]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/141141430</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/141141430</guid><author>gitzzp</author><pubDate>Thu, 15 Aug 2024 18:05:35 +0800</pubDate><description><![CDATA[b(1, 2, a)与函数类型结合使用，演进为c(1, 2, a)进而演进,形成我们经常使用的回调函数})]]></description><category></category></item><item><title><![CDATA[几种排序算法分析]]></title><link>https://blog.youkuaiyun.com/gitzzp/article/details/122242674</link><guid>https://blog.youkuaiyun.com/gitzzp/article/details/122242674</guid><author>gitzzp</author><pubDate>Thu, 30 Dec 2021 19:09:30 +0800</pubDate><description><![CDATA[这里写目录标题1.1 排序的定义1.2术语说明算法总结1.3 算法分类1.4 比较和非比较的区别1.5.1、冒泡排序（Bubble Sort）1.5.2 算法描述1.5.4 代码实现1.6.1 算法分析1.6.4 动图演示3、插入排序（Insertion Sort）3.1 算法描述3.2 动图演示3.2 代码实现3.4 算法分析4、希尔排序（Shell Sort）4.1 算法描述4.2 过程演示4.3 代码实现4.4 算法分析5、归并排序（Merge Sort）5.1 算法描述5.2 动图演示5.3 代码实]]></description><category></category></item></channel></rss>