首页 > 其他分享 >【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题

【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题

时间:2023-07-28 15:15:09浏览次数:35  
标签:动画 ArkTS show button HarmonyOS flag 组件 转场

​【关键字】

HarmonyOS、ArkTS、组件内转场动画、颜色异常

 

【问题描述】

根据组件内转场动画文档中示例编写代码,使用动画转场组件button,并给button设置背景色让button透明度为0,实现动画转场时,会先出现默认蓝色button,然后动画再消失,问题代码如下所示:

@State flag: boolean = true;
@State show: string = 'show';

build() {
  Column() {
    Button(this.show).width(80).height(30).margin(30)
      .onClick(() => {
        if (this.flag) {
          this.show = 'hide';
        } else {
          this.show = 'show';
        }

        animateTo({ duration: 1000 }, () => {
          this.flag = !this.flag;
        })
      })
    if (this.flag) {
      Button('按钮')
        .transition({ type: TransitionType.Insert, translate: { x: 20, y: -20 } })
        .transition({ type: TransitionType.Delete, opacity: 0, scale: { x: 0, y: 0 } })
        .backgroundColor('rgba(255,255,255,0)')
        .width(100)
        .height(30)
        .margin(5)
    }
  }
}

问题现象请见下图,中间button按钮动画显示的时候,应该透明的,但是出现了蓝色按钮再消失现象

GIF.gif

 

【问题分析与解决】

设置组件转场动画时,若组件存在默认背景色或者其他默认属性颜色,使用上述方式设置转场动画时,会闪现默认属性颜色;目前可通过如下方式解决,如组件本身就不可见,可不通过if判断this.flag变量来控制,而是通过组件的visibility属性判断是否显示,代码如下所示,这样就可以解决button播放动画时默认颜色显示问题了。

build() {
  Column() {
    Button(this.show).width(80).height(30).margin(30)
      .onClick(() => {
        if (this.flag) {
          this.show = 'hide';
        } else {
          this.show = 'show';
        }

        animateTo({ duration: 1000 }, () => {
          this.flag = !this.flag;
        })
      })

    Button('按钮')
      .transition({ type: TransitionType.Insert, translate: { x: 20, y: -20 } })
      .transition({ type: TransitionType.Delete, opacity: 0, scale: { x: 0, y: 0 } })
      .visibility(this.flag ? Visibility.Visible : Visibility.None)
      .backgroundColor('rgba(255,255,255,0)')
      .width(100)
      .height(30)
      .margin(5)
  }
}

 

【参考文档】

https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-transition-animation-within-component-0000001500755277-V3

标签:动画,ArkTS,show,button,HarmonyOS,flag,组件,转场
From: https://www.cnblogs.com/mayism123/p/17587647.html

相关文章

  • 【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题
    【关键字】HarmonyOS、ArkTS、组件内转场动画、颜色异常【问题描述】根据组件内转场动画文档中示例编写代码,使用动画转场组件button,并给button设置背景色让button透明度为0,实现动画转场时,会先出现默认蓝色button,然后动画再消失,问题代码如下所示:@Stateflag:boolean=true;@State......
  • HDC.Together2023 HarmonyOS学生公开课议程抢先看!
     未来已来,见证相遇万众瞩目的HarmonyOS学生公开课于8月6日9:30正式起航关注HarmonyOS生态前景聚焦HarmonyOS新技术畅谈HarmonyOS未来把握时代发展机遇,让我们同心而行和HarmonyOS一起创造无限可能   ......
  • wpf ScrollViewer 滚动动画
    wpfScrollViewer滚动动画:<Windowx:Class="WpfTest.FloatTextWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d=&qu......
  • jquery 边框动画
    jQuery边框动画在网页开发中,经常会用到动画效果来增强用户体验。其中,边框动画是一种常见的效果,可以为网页元素添加动态的边框样式,使其在页面上更加突出和吸引人。而使用jQuery,我们可以轻松实现各种边框动画效果。什么是jQueryjQuery是一个快速、简洁的JavaScript库,是目前......
  • 用CSS样式 @keyframes、animation写一个旋转立体模型、动画模型,vue2
    需求:画一个正方体,让物体一直旋转环境:vue2、css效果:代码:模型1<template>2<div>3<!--旋转立体图-->4<divclass="cube">5<divclass="facefront"></div>6<divclass="faceba......
  • 超强阵容!HarmonyOS极客马拉松2023专家评审团来袭!
     数十位重量级专家现身决赛现场,为参赛者提供多角度专业点评。12支队伍,46位选手,齐聚东莞·松山湖,围绕HarmonyOS技术特性,共同挑战36小时极限编程,谁将问鼎决赛之巅,8.3日-5日,我们拭目以待! ......
  • 如何删除PPT中工具栏口袋动画
    口袋动画官网无法打开http://www.papocket.com/插件无法使用卸载在【程序和功能】中卸载后,打开PPT,菜单还是存在选项——加载项,点击以p开头的一串代码(com加载项),点击转到,选择两个以p开头的加载项,依次删除即可注意不要把其他的加载项删了......
  • 【HarmonyOS】实现从视频提取音频并保存到pcm文件功能(API6 Java)
    ​ 【关键字】视频提取类Extractor、视频编解码、保存pcm文件 【写在前面】在使用API6开发HarmonyOS应用时,通常会开发一些音视频媒体功能,这里介绍如何从视频中提取音频保存到pcm文件功能,生成pcm音频文件后,就可使用音频播放类AudioRenderer进行播放了。这里主要介绍从视频提......
  • HarmonyOS应用开发者基础认证
    HarmonyOS应用开发者基础认证难题如下:第一题第二题第三题今天发现华为开发者学堂有HarmonyOS应用开发者基础认证,然后就点击考试对自己学习做了一个测试,都是比较基础的开发,不过也有好几个难点,我在这里稍微列出一下难点(我是先接触的开发,再来考试的,所以后续提出的一些难题也希望能帮......
  • 自定义树莓派开机启动画面-plymouth版本
    apt-get install-yplymouth-themes#查看当前已安装的主题$plymouth-set-default-theme--listfutureprototype #默认主题,貌似和details一样details #纯文本启动日志输出joy #Debian的背景图+四个小白点循环点亮动画lines #Debian的背景图+线条绘制循环动画moon......