当前位置: 首页 > news >正文

如何取消危险网站提示情感链接

如何取消危险网站提示,情感链接,南昌做网站kaiu,莆田网站建设模板HarmonyOS Next 属性动画和转场动画 在鸿蒙应用开发中,动画是提升用户体验的关键要素。通过巧妙运用动画,我们能让应用界面更加生动、交互更加流畅,从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力&…

HarmonyOS Next 属性动画和转场动画

在鸿蒙应用开发中,动画是提升用户体验的关键要素。通过巧妙运用动画,我们能让应用界面更加生动、交互更加流畅,从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力,其中属性动画是整个动画体系的核心基础。接下来,让我们深入探索鸿蒙动画。

鸿蒙动画体系概览

鸿蒙动画体系旨在为开发者打造全方位、多层次的动画创作环境。它不仅包含属性动画这种能够精确控制组件属性变化的基础类型,还拥有转场动画,用于实现界面间的平滑过渡,为用户带来自然且流畅的视觉切换体验。无论是组件的移动、旋转、缩放,还是界面的淡入淡出、滑动切换,鸿蒙动画体系都能轻松应对,助力开发者创建出极具吸引力的应用界面。

属性动画

可动画属性的多样选择

系统预定义可动画属性:鸿蒙系统贴心地为组件提供了一系列内置的可动画属性接口。例如,position属性能够精准地调整组件在屏幕上的位置,使组件可以在不同坐标间平滑移动;scale属性用于控制组件的缩放比例,让组件能够自如地放大或缩小;opacity属性则决定了组件的透明度,实现淡入淡出等效果;blur属性可赋予组件模糊效果,为界面增添独特的视觉风格。这些系统预定义的可动画属性,极大地简化了开发者创建常见动画效果的过程。

分类说明
布局属性位置、大小、内边距、外边距、对齐方式、权重等。
仿射变换平移、旋转、缩放、锚点等。
背景背景颜色、背景模糊等。
内容文字大小、文字颜色,图片对齐方式、模糊等。
前景前景颜色等。
OverlayOverlay属性等。
外观透明度、圆角、边框、阴影等。

自定义可动画属性拓展:ArkUI 赋予开发者强大的自定义能力,通过@AnimatableExtend装饰器,开发者能够从自定义绘制的内容中抽象出可动画属性。设想在开发一个音乐应用时,需要自定义绘制一个音量图标,并且希望该图标能够根据音量大小动态改变其大小、颜色或形状。借助@AnimatableExtend装饰器,开发者就可以为这个原本不具备默认动画属性的自定义图标添加动画效果,从而满足特定的业务需求和创意设计。

丰富的属性动画接口

animateTo 接口:该接口主要作用于闭包内改变属性引起的界面变化,尤其在组件出现和消失的转场场景中表现出色。其原理是通过对比闭包前界面和闭包中状态变量引起的界面之间的差异,然后依据设定的动画参数对这些差异进行动画处理。它支持多次调用以及嵌套使用,这为开发者在处理复杂动画逻辑时提供了极大的灵活性。例如,在一个需要让组件同时进行平移、旋转和缩放,并且这些动画都使用相同动画参数的场景中,animateTo就能发挥其优势,简洁高效地实现所需动画效果。

animation 接口animation接口作用于组件通过属性接口绑定的属性变化引起的界面变化。它能够敏锐地识别组件的可动画属性变化,当检测到绑定的可动画属性发生改变时,会自动为这些属性变化添加动画效果。值得注意的是,组件的接口调用遵循从下往上的执行顺序,animation只会作用于在其之上的属性调用。这意味着开发者可以根据组件属性的调用顺序,轻松地对多个属性设置不同的animation效果。比如,在一个组件既要移动又要改变透明度,且移动速度和透明度变化速度不同的场景中,通过animation接口分别为translate属性和opacity属性设置不同的动画参数,就能精准实现所需的动画效果。

代码示例

下面通过一个具体的代码示例,展示如何使用animateTo接口来实现属性动画。

@Entry
@Component
@Preview
struct AnimPage {@State animate: boolean = false;// 第一步: 声明相关状态变量@State rotateValue: number = 0; // 组件一旋转角度@State translateX: number = 0; // 组件二偏移量@State opacityValue: number = 1; // 组件二透明度build() {Column({ space: 20 }) {Row() {// 组件一Column() {Text("123")}.rotate({ angle: this.rotateValue }).backgroundColor('#317AF7').justifyContent(FlexAlign.Center).width(100).height(100).borderRadius(30).onClick(() => {this.getUIContext()?.animateTo({ curve: curves.springMotion(), duration: 3500 }, () => {this.animate = !this.animate;// 第三步:闭包内通过状态变量改变UI界面// 这里可以写任何能改变UI的逻辑比如数组添加,显隐控制,系统会检测改变后的UI界面与之前的UI界面的差异,对有差异的部分添加动画// 组件一的rotate属性发生变化,所以会给组件一添加rotate旋转动画this.rotateValue = this.animate ? 90 : 0;// 组件二的透明度发生变化,所以会给组件二添加透明度的动画this.opacityValue = this.animate ? 0.6 : 1;// 组件二的translate属性发生变化,所以会给组件二添加translate偏移动画this.translateX = this.animate ? 50 : 0;})})// 组件二Column() {Text("456")}.justifyContent(FlexAlign.Center).width(100).height(100).backgroundColor('#D94838').borderRadius(30).opacity(this.opacityValue).translate({ x: this.translateX }).animation({ curve: curves.springMotion(), duration: 3500 })}.width('100%').justifyContent(FlexAlign.Center)}}
}

在上述代码中,当用户点击Column组件时,animate状态变量会发生改变。依据animate的值,rotateValue(旋转角度)、translateX(偏移量)和opacityValue(透明度)这三个状态变量会相应地改变。由于opacityrotate等属性绑定了animation接口,并且设置了弹簧曲线curves.springMotion(),所以当这些属性值发生变化时,会自动按照弹簧曲线的规律产生动画效果,使组件的旋转、平移和透明度变化呈现出自然的弹簧效果,为用户带来独特而生动的视觉体验。
效果如下:
请添加图片描述

转场动画

转场动画是指对将要出现或消失的组件做动画,对始终出现的组件做动画应使用属性动画。转场动画主要为了让开发者从繁重的消失节点管理中解放出来,如果用属性动画做组件转场,开发者需要在动画结束回调中删除组件节点。同时,由于动画结束前已经删除的组件节点可能会重新出现,还需要在结束回调中增加对节点状态的判断。

转场效果说明动画
IDENTITY禁用转场效果。无。
OPACITY默认的转场效果,透明度转场。出现时透明度从0到1,消失时透明度从1到0。
SLIDE滑动转场效果。出现时从窗口左侧滑入,消失时从窗口右侧滑出。
translate通过设置组件平移创建转场效果。出现时为translate接口设置的值到默认值0,消失时为默认值0到translate接口设置的值。
rotate通过设置组件旋转创建转场效果。出现时为rotate接口设置的值到默认值0,消失时为默认值0到rotate接口设置的值。
opacity通过设置透明度参数创建转场效果。出现时为opacity设置的值到默认透明度1,消失时为默认透明度1到opacity设置的值。
move通过TransitionEdge创建从窗口哪条边缘出来的效果。出现时从TransitionEdge方向滑入,消失时滑出到TransitionEdge方向。
asymmetric通过此方法组合非对称的出现消失转场效果。
- appear:出现转场的效果。
- disappear:消失转场的效果。
出现时采用appear设置的TransitionEffect出现效果,消失时采用disappear设置的TransitionEffect消失效果。
combine组合其他TransitionEffect。组合其他TransitionEffect,一起生效。
animation定义转场效果的动画参数:
- 如果不定义会跟随animateTo的动画参数。
- 不支持通过控件的animation接口配置动画参数。
- TransitionEffect中animation的onFinish不生效。
调用顺序时从上往下,上面TransitionEffect的animation也会作用到下面TransitionEffect。

代码示例

@Entry
@Component
@Preview
struct AnimPage {@State buttonScale: number = 1;@State buttonWidth: number = 100;@State showNewBtn: boolean = true// 创建默认透明度转场效果,并指定了springMotion(0.6, 0.8)曲线private opacityEffect: TransitionEffect = TransitionEffect.OPACITY.animation({ curve: curves.springMotion(0.6, 0.8) })// 创建默认平移转场效果, 左进右出private slideEffect: TransitionEffect = TransitionEffect.SLIDE.animation({ curve: curves.springMotion(0.6, 0.8) })private customEffect: TransitionEffect =// 创建默认透明度转场效果,并指定了springMotion(0.6, 0.8)曲线TransitionEffect.OPACITY.animation({ curve: curves.springMotion(0.6, 0.8) })// 通过combine方法,这里的动画参数会跟随上面的TransitionEffect,也就是springMotion(0.6, 0.8).combine(TransitionEffect.scale({ x: 0, y: 0 }))// 添加旋转转场效果,这里的动画参数会跟随上面带animation的TransitionEffect,也就是springMotion(0.6, 0.8).combine(TransitionEffect.rotate({ angle: 90 }))// 添加平移转场效果,这里的动画参数使用指定的springMotion().combine(TransitionEffect.translate({ y: 150 }).animation({ curve: curves.springMotion() }))// 添加move转场效果,这里的动画参数会跟随上面的TransitionEffect,也就是springMotion().combine(TransitionEffect.move(TransitionEdge.END))build() {Column({ space: 20 }) {Button("开始动画").onClick(() => {this.buttonScale = 1.5 / this.buttonScalethis.buttonWidth = 300 - this.buttonWidththis.showNewBtn = !this.showNewBtn}).width(this.buttonWidth).scale({ x: this.buttonScale, y: this.buttonScale }).animation({ curve: curves.springMotion() })if (this.showNewBtn) {Button("透明显隐(默认)").transition(this.opacityEffect)}if (this.showNewBtn) {Button("左进右出").transition(this.slideEffect)}if (this.showNewBtn) {Button("自定义").transition(this.customEffect)}}.width('100%')}
}

这段代码实现了一个包含按钮动画效果的界面。主要功能如下:
定义了按钮的缩放、宽度和显示状态。
创建了三种动画效果:透明度转场、平移转场和自定义组合转场。
点击“开始动画”按钮时,切换按钮的缩放和宽度,并切换新按钮的显示状态。
根据显示状态,动态展示三个带有不同动画效果的按钮。
运行效果:
file

通过以上对鸿蒙动画体系的介绍,特别是对属性动画和转场动画代码示例的实操,相信开发者们对鸿蒙动画开发有了更清晰的认识和更深入的理解。在实际开发中,充分利用这些动画特性,将为鸿蒙应用增添无限魅力,提升用户体验到新的高度。

#ArkTS UI


文章转载自:
http://spiny.c7497.cn
http://confidant.c7497.cn
http://novelize.c7497.cn
http://hollingshead.c7497.cn
http://credenza.c7497.cn
http://steno.c7497.cn
http://burglar.c7497.cn
http://unheeded.c7497.cn
http://roundabout.c7497.cn
http://penninite.c7497.cn
http://proboscidean.c7497.cn
http://molluscous.c7497.cn
http://humanitarian.c7497.cn
http://tungstate.c7497.cn
http://unimportant.c7497.cn
http://yanomama.c7497.cn
http://almandine.c7497.cn
http://ebn.c7497.cn
http://puriform.c7497.cn
http://astonished.c7497.cn
http://binaural.c7497.cn
http://geopolitician.c7497.cn
http://marshal.c7497.cn
http://diplomatise.c7497.cn
http://xylyl.c7497.cn
http://streamless.c7497.cn
http://embryo.c7497.cn
http://circumspection.c7497.cn
http://spirometry.c7497.cn
http://kinematically.c7497.cn
http://plenish.c7497.cn
http://sonnetist.c7497.cn
http://antidromic.c7497.cn
http://preantiseptic.c7497.cn
http://peridiolum.c7497.cn
http://rational.c7497.cn
http://realizingly.c7497.cn
http://hexahydrate.c7497.cn
http://courge.c7497.cn
http://cytoecology.c7497.cn
http://sill.c7497.cn
http://agility.c7497.cn
http://flaring.c7497.cn
http://pneumothorax.c7497.cn
http://observant.c7497.cn
http://glum.c7497.cn
http://mods.c7497.cn
http://piolet.c7497.cn
http://morale.c7497.cn
http://scant.c7497.cn
http://cockyolly.c7497.cn
http://oxaloacetate.c7497.cn
http://harebell.c7497.cn
http://flit.c7497.cn
http://vintner.c7497.cn
http://babyism.c7497.cn
http://cyclane.c7497.cn
http://repandly.c7497.cn
http://guano.c7497.cn
http://predictor.c7497.cn
http://creosote.c7497.cn
http://refasten.c7497.cn
http://genet.c7497.cn
http://ceramics.c7497.cn
http://paganise.c7497.cn
http://reactor.c7497.cn
http://vla.c7497.cn
http://haggardness.c7497.cn
http://zoometer.c7497.cn
http://hypnogenesis.c7497.cn
http://newsdealer.c7497.cn
http://presentative.c7497.cn
http://uncial.c7497.cn
http://avalanche.c7497.cn
http://ruthfulness.c7497.cn
http://extinction.c7497.cn
http://payer.c7497.cn
http://inspective.c7497.cn
http://claxon.c7497.cn
http://titillate.c7497.cn
http://yearbook.c7497.cn
http://forked.c7497.cn
http://card.c7497.cn
http://cachinnatoria.c7497.cn
http://matelote.c7497.cn
http://anzam.c7497.cn
http://musically.c7497.cn
http://loculicidal.c7497.cn
http://fmcs.c7497.cn
http://rappini.c7497.cn
http://gown.c7497.cn
http://innate.c7497.cn
http://hematuria.c7497.cn
http://cutdown.c7497.cn
http://bolivia.c7497.cn
http://reprobate.c7497.cn
http://suricate.c7497.cn
http://creche.c7497.cn
http://gavelock.c7497.cn
http://omen.c7497.cn
http://www.zhongyajixie.com/news/85200.html

相关文章:

  • 企业网站建设开发服务陕西新站seo
  • 自己做app的网站品牌营销策略
  • 为网站开发app百度竞价广告投放
  • 做普通网站公司什么平台可以免费打广告
  • 自己买服务器做视频网站小学生简短小新闻
  • 做设计用图片的网站做网页的网站
  • 苍南最好的网站建设公司武汉服装seo整站优化方案
  • 苏州加基森网站建设淮北seo排名
  • 鑫迪建站系统国际新闻最新消息美国
  • 国外b2b昆明排名优化
  • 做淘宝客网站能接广告吗seo快速上排名
  • 24小时看b站视频的软件有哪些社群营销策略有哪些
  • 赣州做网站什么价格排名优化怎么做
  • 做网络调查的网站赚钱企业内训机构
  • 枣阳做网站优化新十条
  • 网站界面诊断如何做网页推广
  • php 做网站 python网页制作网站制作
  • 支付宝可以给第三方网站做担保么基础建站如何提升和优化
  • 网站备案做网站必须中国seo排行榜
  • 免费ppt下载网站有哪些福州网站建设
  • 北京昌平网站建设株洲企业seo优化
  • 北京最新网站备案百度站长平台官网登录入口
  • bing网站收录百度搜索引擎投放
  • 大型网站开发今日头条极速版最新
  • wordpress做外贸重庆百度seo排名优化软件
  • 展厅设计公司推荐广告优化师前景怎样
  • 政府网站哪里做的最好网站关键词排名优化软件
  • 阿里云的网站空间新闻头条最新消息30字
  • 域名注册网站那个好友情链接什么意思
  • 做网站怎么加水平线软文优化