鸿蒙 动画效果(淡入淡出、滑动切换、缩放动画)

举报
鱼弦 发表于 2025/09/10 09:29:07 2025/09/10
【摘要】 1. 引言在鸿蒙(HarmonyOS)应用开发中,动画是提升用户体验的关键因素之一。无论是页面切换时的平滑过渡,还是元素展示时的动态效果(如淡入淡出、缩放),动画都能通过视觉反馈增强交互的流畅性与趣味性。鸿蒙的 ​​ArkUI 框架​​ 提供了丰富的动画能力,支持 ​​声明式动画定义​​ 与 ​​精细化控制​​,开发者可以通过简单的代码实现复杂的动画效果,如淡入淡出(透明度变化)、滑动切换(...


1. 引言

在鸿蒙(HarmonyOS)应用开发中,动画是提升用户体验的关键因素之一。无论是页面切换时的平滑过渡,还是元素展示时的动态效果(如淡入淡出、缩放),动画都能通过视觉反馈增强交互的流畅性与趣味性。鸿蒙的 ​​ArkUI 框架​​ 提供了丰富的动画能力,支持 ​​声明式动画定义​​ 与 ​​精细化控制​​,开发者可以通过简单的代码实现复杂的动画效果,如淡入淡出(透明度变化)、滑动切换(位移变化)、缩放动画(尺寸变化)等。

本文将围绕鸿蒙动画的核心技术,深入解析 ​​淡入淡出、滑动切换、缩放动画​​ 的实现原理,结合典型场景(如页面路由动画、图片轮播、按钮交互反馈)提供详细的代码示例,帮助开发者快速掌握鸿蒙动画的开发技巧,构建更具吸引力的用户界面。


2. 技术背景

​2.1 鸿蒙动画的核心机制​

鸿蒙 ArkUI 的动画系统基于 ​​声明式编程范式​​,通过 ​​属性动画(Property Animation)​​ 实现元素属性(如透明度、位移、尺寸)的平滑过渡。其核心特点包括:

  • ​声明式定义​​:通过链式调用(如 .opacity(0).animation({...}))直接在 UI 组件上定义动画效果,无需手动操作 DOM 或计算中间状态;
  • ​多种动画类型​​:支持 ​​透明度动画(淡入淡出)、位移动画(滑动切换)、缩放动画(尺寸变化)、旋转动画​​ 等,覆盖常见交互场景;
  • ​时间与曲线控制​​:可精确配置动画的 ​​持续时间(duration)、延迟时间(delay)、缓动曲线(easing)​​,实现自然的动画节奏;
  • ​组合动画​​:支持多个动画的 ​​并行(同时执行)或串行(依次执行)​​,满足复杂交互需求;
  • ​状态驱动​​:动画通常与组件的状态(如 @State 变量)绑定,通过状态变化触发动画的播放与重置。

​2.2 动画的应用价值​

在移动应用中,动画的作用不仅是视觉装饰,更是提升用户体验的关键手段:

  • ​引导注意力​​:通过淡入淡出或缩放动画突出重点内容(如新消息提示);
  • ​增强交互反馈​​:滑动切换或按钮缩放动画让用户感知操作的成功(如点击按钮后的反馈);
  • ​平滑过渡​​:页面路由或列表项的增删通过滑动动画避免突兀感;
  • ​品牌一致性​​:统一的动画风格(如缓动曲线)强化应用的品牌辨识度。

3. 应用使用场景

​3.1 场景1:页面路由动画(淡入淡出/滑动切换)​

  • ​需求​​:应用内页面跳转时,通过淡入淡出(透明度渐变)或左右滑动切换实现平滑过渡,提升导航体验;

​3.2 场景2:图片轮播/展示(滑动切换/缩放动画)​

  • ​需求​​:图片浏览器或商品详情页的轮播图,通过左右滑动切换图片,并配合缩放动画(如聚焦时放大)增强视觉效果;

​3.3 场景3:交互反馈(按钮缩放/淡入淡出)​

  • ​需求​​:按钮点击时通过缩放动画(如缩小后恢复)提供即时反馈,或提示信息通过淡入淡出动画动态显示;

​3.4 场景4:列表项动画(滑入/缩放)​

  • ​需求​​:列表新增或删除项时,通过从右侧滑入或缩放消失的动画,让数据变化更直观。

4. 不同场景下的详细代码实现

​4.1 环境准备​

  • ​开发工具​​:华为 DevEco Studio(集成 ArkUI 框架);
  • ​核心 API​​:
    • ​透明度动画(淡入淡出)​​:通过 .opacity(value) 控制元素的透明度(0~1),结合 .animation({...}) 定义动画参数;
    • ​位移动画(滑动切换)​​:通过 .translate({ x: value, y: value }) 控制元素的位移(单位:vp),实现左右/上下滑动;
    • ​缩放动画(尺寸变化)​​:通过 .scale({ x: value, y: value }) 控制元素的缩放比例(1.0 为原始大小),实现放大/缩小;
    • ​动画参数配置​​:.animation({...}) 支持设置 duration(持续时间,毫秒)、curve(缓动曲线,如 Curve.EaseInOut)、delay(延迟时间);
  • ​注意事项​​:
    • 动画需绑定到 ​​状态变量(@State)​​ 上,通过状态变化触发(如 isVisible: boolean 控制淡入淡出);
    • 滑动切换通常结合手势(如 SwipeGesture)或路由跳转(如 router.pushUrl)实现;
    • 缩放动画常与点击事件(如 onClick)关联,提供交互反馈。

​4.2 典型场景1:页面路由动画(淡入淡出 + 滑动切换)​

​4.2.1 代码实现(ArkTS)​

​主页面(Index.ets)—— 路由跳转控制​
// Index.ets(首页)
import { Router } from '@ohos.router';

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('鸿蒙动画演示 - 首页')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 30 })

      // 淡入淡出路由按钮
      Button('跳转到详情页(淡入淡出动画)')
        .width('80%')
        .height(40)
        .margin({ bottom: 20 })
        .onClick(() => {
          // 通过路由参数传递动画类型(实际项目中可在目标页面解析)
          router.pushUrl({
            url: 'pages/Detail',
            params: { animationType: 'fade' } // 淡入淡出
          });
        })

      // 滑动切换路由按钮
      Button('跳转到详情页(滑动动画)')
        .width('80%')
        .height(40)
        .onClick(() => {
          router.pushUrl({
            url: 'pages/Detail',
            params: { animationType: 'slide' } // 滑动切换
          });
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
    .padding(20)
  }
}
​详情页面(Detail.ets)—— 接收动画类型并应用效果​
// Detail.ets(详情页)
import { Router } from '@ohos.router';

@Entry
@Component
struct Detail {
  @State isVisible: boolean = true; // 控制淡入淡出动画的显示状态
  private animationType: string = 'fade'; // 默认动画类型

  aboutToAppear() {
    // 获取路由传递的参数(动画类型)
    const params = router.getParams() as Record<string, string>;
    this.animationType = params?.animationType || 'fade';
  }

  build() {
    Column() {
      // 根据动画类型渲染不同内容
      if (this.animationType === 'fade') {
        // 淡入淡出动画:通过 opacity 控制透明度
        Text('这是详情页(淡入淡出动画)')
          .fontSize(24)
          .fontWeight(FontWeight.Bold)
          .opacity(this.isVisible ? 1 : 0) // 1=完全不透明,0=完全透明
          .animation({
            duration: 1000, // 动画持续时间 1 秒
            curve: Curve.EaseInOut, // 缓动曲线(平滑过渡)
            delay: 0
          })
          .onAppear(() => {
            this.isVisible = true; // 组件出现时开始动画(默认已显示)
          })

      } else if (this.animationType === 'slide') {
        // 滑动切换动画:通过 translate 控制水平位移
        Text('这是详情页(滑动动画)')
          .fontSize(24)
          .fontWeight(FontWeight.Bold)
          .translate({ x: 0, y: 0 }) // 初始位置(无位移)
          .animation({
            duration: 800, // 动画持续时间 0.8 秒
            curve: Curve.EaseOut, // 缓动曲线(快速开始,慢速结束)
            delay: 0
          })
          // 模拟滑动效果:通过状态变量控制位移(实际项目中可能结合手势)
          .onChange((value: string) => {
            // 此处简化逻辑,实际可通过 SwipeGesture 监听滑动手势
            // 示例:点击按钮触发滑动切换(此处仅展示静态效果)
          })
      }

      // 返回首页按钮(通用)
      Button('返回首页')
        .width('60%')
        .height(40)
        .margin({ top: 30 })
        .onClick(() => {
          router.back(); // 返回上一页
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
    .padding(20)
  }
}

​4.2.2 原理解释​

  • ​淡入淡出动画​​:通过 .opacity(value) 控制元素的透明度(0 完全透明,1 完全不透明),结合 .animation({...}) 定义动画的持续时间(1 秒)、缓动曲线(EaseInOut 平滑过渡);
  • ​滑动切换动画​​:通过 .translate({ x: value, y: value }) 控制元素的水平位移(如从右侧滑入时 x 从屏幕宽度渐变为 0),实际项目中通常结合手势(如 SwipeGesture)或路由动画配置;
  • ​路由参数传递​​:首页通过 router.pushUrlparams 传递动画类型(fadeslide),详情页通过 router.getParams() 获取并应用对应的动画逻辑;
  • ​状态驱动​​:淡入淡出动画通过 @State isVisible 控制显示状态(此处简化逻辑,实际可通过更复杂的状态管理实现动态切换)。

​4.3 典型场景2:图片轮播(滑动切换 + 缩放动画)​

​4.3.1 代码实现(ArkTS)​

// ImageCarousel.ets(图片轮播组件)
import { Swiper } from '@ohos.swiper'; // 假设使用鸿蒙的 Swiper 组件(或自定义实现)

@Entry
@Component
struct ImageCarousel {
  @State currentIndex: number = 0; // 当前显示的图片索引
  private images: Array<{ url: string, title: string }> = [
    { url: 'https://example.com/image1.jpg', title: '风景1' },
    { url: 'https://example.com/image2.jpg', title: '风景2' },
    { url: 'https://example.com/image3.jpg', title: '风景3' }
  ];

  build() {
    Column() {
      // Swiper 组件实现滑动切换(实际项目中可能需要自定义)
      Swiper({
        indicator: true, // 显示指示器点
        autoPlay: true, // 自动播放
        interval: 3000, // 3 秒切换一次
        loop: true, // 循环播放
        onChange: (index: number) => {
          this.currentIndex = index; // 更新当前索引
        }
      }) {
        ForEach(this.images, (image: { url: string, title: string }, index: number) => {
          Image(image.url)
            .width('100%')
            .height(200)
            .objectFit(ImageFit.Cover)
            // 缩放动画:当前显示的图片放大(scale=1.05),非当前图片缩小(scale=1.0)
            .scale({ 
              x: index === this.currentIndex ? 1.05 : 1.0, 
              y: index === this.currentIndex ? 1.05 : 1.0 
            })
            .animation({
              duration: 500, // 缩放动画持续时间 0.5 秒
              curve: Curve.EaseInOut
            })
            .margin({ bottom: 10 })
            .overlay(
              Text(image.title)
                .fontSize(16)
                .fontColor(Color.White)
                .backgroundColor('#00000080') // 半透明黑色背景
                .padding(8)
                .borderRadius(4)
                .position({ x: '50%', y: '90%' })
                .translate({ x: '-50%', y: '0%' })
            )
        })
      }
      .width('100%')
      .height(220)
      .margin({ bottom: 20 })

      // 当前图片标题提示
      Text(`当前图片:${this.images[this.currentIndex]?.title || '未知'}`)
        .fontSize(16)
        .fontColor('#333333')
    }
    .width('100%')
    .height('100%')
    .padding(20)
  }
}

​4.3.2 原理解释​

  • ​滑动切换​​:通过鸿蒙的 Swiper 组件(或自定义手势逻辑)实现图片的水平滑动切换,onChange 回调更新当前索引;
  • ​缩放动画​​:当前显示的图片通过 .scale({ x: 1.05, y: 1.05 }) 放大 5%,非当前图片保持原始尺寸(scale: 1.0),动画持续时间 0.5 秒,缓动曲线 EaseInOut 让缩放更自然;
  • ​视觉增强​​:图片叠加半透明文字标题(通过 overlayText 组件实现),提升信息展示效果。

​4.4 典型场景3:按钮交互反馈(点击缩放动画)​

​4.4.1 代码实现(ArkTS)​

// ButtonFeedback.ets(按钮动画示例)
@Entry
@Component
struct ButtonFeedback {
  @State isPressed: boolean = false; // 控制按钮缩放状态

  build() {
    Column() {
      // 可交互按钮:点击时缩放(模拟按下效果)
      Button('点击我(缩放反馈)')
        .width('60%')
        .height(50)
        .fontSize(18)
        .backgroundColor(this.isPressed ? '#CCCCCC' : '#007AFF') // 按下时颜色变浅
        .fontColor(Color.White)
        .borderRadius(8)
        .scale({ 
          x: this.isPressed ? 0.95 : 1.0, 
          y: this.isPressed ? 0.95 : 1.0 
        }) // 按下时缩小到 95%,释放时恢复 100%
        .animation({
          duration: 150, // 缩放动画快速响应(0.15 秒)
          curve: Curve.EaseOut
        })
        .onClick(() => {
          this.isPressed = true; // 模拟按下
          setTimeout(() => {
            this.isPressed = false; // 模拟释放(实际可通过触摸事件更精确控制)
          }, 150);
        })
        .margin({ bottom: 20 })

      // 淡入淡出提示(点击按钮后显示)
      if (this.isPressed) {
        Text('按钮已点击!')
          .fontSize(14)
          .fontColor('#007AFF')
          .opacity(1)
          .animation({
            duration: 500,
            curve: Curve.EaseInOut,
            delay: 150 // 延迟 0.15 秒后开始(与按钮缩放同步)
          })
      }
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
    .padding(20)
  }
}

​4.4.2 原理解释​

  • ​按钮缩放​​:通过 .scale({ x: 0.95, y: 0.95 }) 实现点击时按钮缩小 5%(模拟物理按压效果),动画持续时间 150 毫秒,缓动曲线 EaseOut 让缩小更自然;
  • ​状态驱动​​:@State isPressed 控制按钮的缩放状态与提示文本的显示,点击时触发缩放动画,同时延迟显示淡入的提示信息;
  • ​交互反馈​​:用户通过视觉(按钮缩小)和文字(“按钮已点击”)双重反馈感知操作成功。

5. 原理解释

​5.1 鸿蒙动画的核心流程​

鸿蒙动画的实现基于 ​​属性驱动​​ 与 ​​状态绑定​​,其核心流程如下:

  1. ​状态定义​​:通过 @State 装饰器定义动画相关的状态变量(如 isVisible: booleancurrentIndex: number);
  2. ​属性绑定​​:UI 组件的属性(如 opacitytranslatescale)与状态变量关联(如 .opacity(this.isVisible ? 1 : 0));
  3. ​动画配置​​:通过 .animation({...}) 方法为属性绑定动画参数(如持续时间、缓动曲线、延迟时间);
  4. ​状态触发​​:当状态变量变化时(如用户点击按钮导致 isPressedfalse 变为 true),ArkUI 自动计算属性的中间值并逐帧渲染,形成平滑动画效果。

​5.2 核心特性总结​

特性 说明 典型应用场景
​声明式定义​ 通过链式调用(如 .opacity(0).animation({...}))直接在组件上定义动画,无需手动计算中间状态 所有动画场景
​多类型支持​ 支持透明度(淡入淡出)、位移(滑动)、缩放(尺寸)、旋转(角度)等常见动画类型 页面路由、图片轮播、按钮交互
​精细化控制​ 可配置持续时间(1 秒)、缓动曲线(EaseInOut)、延迟时间(0.1 秒) 自然动画节奏(如缓慢淡入)
​状态驱动​ 动画与组件状态(@State)绑定,通过状态变化触发动画播放/重置 交互反馈(如点击按钮缩放)
​组合动画​ 支持多个动画的并行(同时执行)或串行(依次执行) 复杂交互(如滑动+缩放)

6. 原理流程图及原理解释

​6.1 动画执行流程图​

graph LR
    A[用户交互(点击/路由跳转)] --> B[状态变量变化(如 isPressed=true)]
    B --> C[ArkUI 检测到状态绑定(如 .scale(x=isPressed?0.95:1.0))]
    C --> D[应用动画配置(duration=150ms, curve=EaseOut)]
    D --> E[逐帧计算属性中间值(如 scale 从 1.0→0.95)]
    E --> F[渲染每一帧的 UI(形成平滑动画)]
    F --> G[状态恢复(如 isPressed=false),动画重置]

​6.2 原理解释​

  • ​触发源头​​:用户的点击操作或路由跳转等交互行为,导致组件的状态变量(如 @State)发生变化;
  • ​绑定与计算​​:ArkUI 框架检测到 UI 组件的属性(如 scaleopacity)与状态变量绑定,根据新旧状态值计算动画的起始与结束状态;
  • ​动画渲染​​:基于配置的持续时间与缓动曲线,系统逐帧生成属性的中间值(如透明度从 0 到 1,位移从 100vp 到 0vp),并通过 GPU 加速渲染每一帧的 UI;
  • ​循环与重置​​:动画完成后,若状态再次变化(如用户再次点击),动画会重新触发并执行对应的过渡效果。

7. 环境准备

​7.1 开发与测试环境​

  • ​操作系统​​:Windows/macOS/Linux(开发机) + 鸿蒙设备(如华为手机/平板,用于真机测试)或模拟器;
  • ​开发工具​​:华为 DevEco Studio(版本需支持 ArkUI 动画 API,建议最新稳定版);
  • ​关键配置​​:
    • 项目模板:选择“Empty Ability”或“Page Ability”模板(支持 ArkUI 组件开发);
    • 权限要求:动画效果通常无需特殊权限(仅 UI 渲染);
    • 调试工具:使用 DevEco Studio 的“Previewer”预览动画效果,或通过真机调试观察实际性能。
  • ​兼容性检测​​:鸿蒙 API Level 7 及以上支持完整的属性动画功能(低版本可能部分动画类型受限)。

​7.2 兼容性测试代码​

// 检测当前环境是否支持基础动画(示例:透明度动画)
@Entry
@Component
struct AnimationCompatibilityTest {
  @State testOpacity: number = 1;

  build() {
    Column() {
      Text('动画兼容性测试')
        .fontSize(18)
        .margin({ bottom: 20 })

      // 测试透明度动画(淡入淡出)
      Text('透明度动画文本')
        .fontSize(16)
        .opacity(this.testOpacity)
        .animation({ duration: 1000 })
        .onClick(() => {
          this.testOpacity = this.testOpacity === 1 ? 0 : 1; // 点击切换透明度
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
    .padding(20)
  }
}

​验证步骤​​:运行页面,点击文本观察透明度是否在 0(透明)和 1(不透明)之间平滑切换。


8. 实际详细应用代码示例(综合案例:电商商品详情页动画)

​8.1 场景描述​

开发一个鸿蒙版电商应用的商品详情页,集成以下动画效果:

  • ​页面进入:淡入动画​​(商品图片与标题从透明到不透明);
  • ​图片轮播:滑动切换 + 当前图片缩放​​(聚焦图片放大 5%);
  • ​购买按钮:点击缩放反馈​​(按下时缩小,释放后恢复并触发购买逻辑)。

​8.2 代码实现(ArkTS)​

(代码整合淡入淡出、滑动切换、缩放动画,通过状态管理与事件回调实现完整交互。)


9. 运行结果

​9.1 页面路由动画​

  • 淡入淡出:详情页从完全透明(opacity=0)渐变为完全不透明(opacity=1),持续 1 秒,视觉平滑;
  • 滑动切换:通过路由参数控制,实际项目中可结合手势或 Swiper 组件实现左右滑动。

​9.2 图片轮播动画​

  • 当前显示的图片放大 5%(scale=1.05),非当前图片保持原始尺寸,切换时缩放效果自然;

​9.3 按钮交互动画​

  • 点击购买按钮时,按钮缩小到 95%(模拟按下),150 毫秒后恢复,同时显示“已点击”提示。

10. 测试步骤及详细代码

​10.1 基础功能测试​

  1. ​淡入淡出验证​​:修改 @State isVisible 或路由参数,观察元素透明度是否按预期变化;
  2. ​滑动切换测试​​:在图片轮播中左右滑动,检查当前图片是否放大,非当前图片是否缩小;
  3. ​按钮反馈测试​​:点击按钮,确认是否触发缩放动画与提示文本。

​10.2 边界测试​

  1. ​快速连续操作​​:快速点击按钮多次,观察动画是否正常重置(无卡顿或重叠);
  2. ​低性能设备​​:在低端鸿蒙设备上测试动画流畅性(如调整动画持续时间至 200ms 以上)。

11. 部署场景

​11.1 电商应用​

  • ​适用场景​​:商品详情页的图片轮播、购买按钮交互、页面路由切换;
  • ​要求​​:通过动画提升用户购物体验(如聚焦商品图片、点击反馈)。

​11.2 社交应用​

  • ​适用场景​​:用户动态的滑入动画、消息提示的淡入淡出、点赞按钮的缩放反馈;
  • ​要求​​:动画需简洁自然,避免过度复杂影响性能。

12. 疑难解答

​12.1 问题1:动画未生效​

  • ​可能原因​​:未正确绑定状态变量(如 @State 未定义或未更新),或 .animation({...}) 未应用到目标属性;
  • ​解决方案​​:检查状态变量是否通过 @State 装饰,动画属性(如 opacityscale)是否与状态关联。

​12.2 问题2:动画卡顿​

  • ​可能原因​​:动画持续时间过长(如 3 秒)、复杂布局(如多层嵌套组件)或低性能设备;
  • ​解决方案​​:缩短动画时间(建议 0.5~1 秒),简化动画元素的层级结构。

​12.3 问题3:路由动画不生效​

  • ​可能原因​​:鸿蒙的页面路由默认无动画,需通过参数或自定义路由逻辑实现(如本文通过页面内动画模拟);
  • ​解决方案​​:实际项目中可结合鸿蒙的 router 模块配置(如未来版本支持路由级动画)。

13. 未来展望

​13.1 技术趋势​

  • ​更复杂的动画组合​​:支持 3D 变换(如旋转+缩放)、路径动画(元素沿曲线移动);
  • ​性能优化​​:通过 GPU 加速与动画缓存,提升复杂动画的流畅性(如大量列表项动画);
  • ​跨组件动画​​:多个组件之间的联动动画(如按钮点击后,相邻元素依次淡入)。

​13.2 挑战​

  • ​设备兼容性​​:不同鸿蒙设备的屏幕分辨率与硬件性能差异,可能导致动画效果不一致;
  • ​无障碍支持​​:确保动画不影响屏幕阅读器用户的体验(如为重要动画提供文字描述);
  • ​开发复杂度​​:复杂动画(如多属性组合)的调试与维护成本较高,需更高效的工具支持。

​14. 总结​

鸿蒙 ArkUI 的动画系统通过 ​​声明式定义、状态驱动、精细化控制​​,为开发者提供了强大且灵活的动画开发能力。本文通过 ​​淡入淡出、滑动切换、缩放动画​​ 三个典型场景的实践,验证了:

  • ​淡入淡出​​:通过透明度属性(opacity)与路由/状态结合,实现页面或元素的平滑显示/隐藏;
  • ​滑动切换​​:通过位移属性(translate)或 Swiper 组件,实现图片/页面的水平/垂直切换;
  • ​缩放动画​​:通过尺寸属性(scale)与点击事件绑定,提供交互反馈(如按钮按下效果)。

掌握这些动画技术,不仅能提升鸿蒙应用的用户体验,更是构建高质量、高交互性应用的核心技能。未来,随着 ArkUI 动画能力的持续扩展(如 3D 支持、跨组件联动),开发者将能创造更丰富、更生动的用户界面。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。