返回顶部
首页 > 资讯 > 移动开发 >Flutter 旋转动画 — RotationTransition
  • 506
分享到

Flutter 旋转动画 — RotationTransition

flutter动画旋转动画动画延时重复播放 2023-09-13 09:09:26 506人浏览 八月长安
摘要

系列文章 Flutter 旋转动画 — RotationTransitionFlutter 平移动画 — 4种实现方式Flutter 淡入淡出与逐渐出现动画Flutter 尺寸缩放、形状、颜色、阴影变

系列文章

  1. Flutter 旋转动画 — RotationTransition
  2. Flutter 平移动画 — 4种实现方式
  3. Flutter 淡入淡出与逐渐出现动画
  4. Flutter 尺寸缩放、形状、颜色、阴影变换动画
  5. Flutter 列表Item动画 — AnimatedList实现Item左进左出、淡入淡出
  6. Flutter Hero 实现共享元素转场动画
  7. Flutter Hero 实现径向变换动画 — 圆形变成矩形的转场动画
  8. Flutter 自定义动画 — 数字递增动画和文字逐行逐字出现或消失动画

文章目录


1 旋转动画效果对比

旋转动画

2 动画基础知识

  • Animation 是 Flutter 动画库中的核心类,它插入用于引导动画的值。
  • AnimationController 管理动画。例如控制动画开始、停止、前进、后退等。
  • CurvedAnimation 将进程定义为非线性曲线。
  • Tween 在被动画对象使用的数据范围之间进行插值。 例如,Tween 可以定义从红色到蓝色或从 0 到 255 的插值。
  • Listeners 和 StatusListeners 可监控动画状态的变化。
  • AnimatedWidget 是展示动画的Widget,Flutter提供一些动画Widget让我们快速实现动画效果。例如:
    AnimatedBuilder、 AnimatedModalBarrier、DecoratedBoxTransition、FadeTransition、PositionedTransition、RelativePositionedTransition、RotationTransition、ScaleTransition、SizeTransition、SlideTransition

3 旋转动画案例

RotationTransition 继承于AnimatedWidget,是一个提供旋转功能的Widget,需要传入参数 Animation

Animation中的值为 v,则旋转的弧度是 v * 2 * π

3.1 线性变化的旋转动画(补间动画 Tween)

3.1.1 首先创建 Animation 与 AnimationController

  /// 会重复播放的控制器  late final AnimationController _repeatController;  /// 线性动画  late final Animation<double> _animation;  @override  void initState() {    super.initState();    /// 动画持续时间是 3秒,此处的this指 TickerProviderStateMixin    _repeatController = AnimationController(      duration: const Duration(seconds: 3),      vsync: this,    )      ..repeat(); // 设置动画重复播放    // 创建一个从0到360弧度的补间动画 v * 2 * π    _animation = Tween<double>(begin: 0, end: 1).animate(_repeatController);  }

3.1.2 构建Widget RotationTransition

  @override  Widget build(BuildContext context) {    return Scaffold(      body: Center(        child: RotationTransition(          turns: _animation,          child: const Icon(Icons.arrow_drop_up, size: 180),        ),      ),    );  }

3.1.3 效果图

在这里插入图片描述


3.2 非线性变化的旋转动画(Curved­Animation)

3.2.1 代码实现

实现方式与线性变化的旋转动画类似,只是需要将 Tween 更改为 Curved­Animation

  class _RotationTransitionPageState extends State<RotationTransitionPage>    with TickerProviderStateMixin {  /// 会重复播放的控制器  late final AnimationController _repeatController;  /// 非线性动画  late final Animation<double> _curveAnimation;  @override  void initState() {    super.initState();    _repeatController = AnimationController(      duration: const Duration(seconds: 3),      vsync: this,    )..repeat();    /// Curves 存在多种模式,具体的效果查看Curves源码,有链接展示动画效果    _curveAnimation = CurvedAnimation(      parent: _repeatController,      curve: Curves.easeInCirc,    );  }  @override  Widget build(BuildContext context) {    return Scaffold(      body: Center(        child: RotationTransition(          turns: _curveAnimation,          child: const Icon(Icons.arrow_drop_up, size: 180),        ),      ),    );  }}

3.2.2 效果图

在这里插入图片描述


3.3 动画延时重复(每次重复播放前停顿一下)

实现思路:监听动画的状态,每当动画播放完成时延时一段时间,然后启动动画开始播放。

3.3.1 代码实现

 class _RotationTransitionPageState extends State<RotationTransitionPage>    with TickerProviderStateMixin {  /// 重复播放前需要停顿一下的控制器  late final AnimationController _delayRepeatController;  /// 延时重复播放动画  late final Animation<double> _delayAnimation;  @override  void initState() {    super.initState();    _delayRepeatController = AnimationController(      duration: const Duration(seconds: 3),      vsync: this,    )    //  添加动画监听      ..addListener(() {        // 获取动画当前的状态        var status = _delayRepeatController.status;        if (status == AnimationStatus.completed) {          // 延时1秒          Future.delayed(const Duration(seconds: 1), () {            //从0开始向前播放            _delayRepeatController.forward(from: 0.0);          });        }      })      ..forward();    _delayAnimation =        Tween<double>(begin: 0, end: 1).animate(_delayRepeatController);  }  @override  Widget build(BuildContext context) {    return Scaffold(      body: Center(        child: RotationTransition(          turns: _delayAnimation,          child: const Icon(Icons.arrow_drop_up, size: 180),        ),      ),    );  }}

3.3.2 效果图

在这里插入图片描述


3.4 手动控制旋转动画

实现方式:使用 AnimationController 的 animateTo 函数。

3.4.1 代码实现

class _RotationTransitionPageState extends State<RotationTransitionPage>    with TickerProviderStateMixin {  /// 手动控制动画的控制器  late final AnimationController _manualController;  /// 手动控制  late final Animation<double> _manualAnimation;  @override  void initState() {    super.initState();    /// 不设置重复,使用代码控制进度,动画时间1秒    _manualController = AnimationController(      vsync: this,      duration: const Duration(seconds: 1),    );    _manualAnimation =        Tween<double>(begin: 0, end: 1).animate(_manualController);  }  @override  Widget build(BuildContext context) {    return Scaffold(      body: Center(        child: RotationTransition(          turns: _manualAnimation,          child: CupertinoButton(            onPressed: () {              /// 获取动画当前的值              var value = _manualController.value;              /// 0.5代表 180弧度              if (value == 0.5) {                _manualController.animateTo(0);              } else {                _manualController.animateTo(0.5);              }            },            child: const Icon(Icons.arrow_drop_up, size: 180),          ),        ),      ),    );  }}

3.4.2 效果图

在这里插入图片描述

4 注意

别忘了释放AnimationController 资源。

  @override  void dispose() {    _controller.dispose();    super.dispose();  }

来源地址:https://blog.csdn.net/ww897532167/article/details/125280054

--结束END--

本文标题: Flutter 旋转动画 — RotationTransition

本文链接: https://lsjlt.com/news/405699.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flutter 旋转动画 — RotationTransition
    系列文章 Flutter 旋转动画 — RotationTransitionFlutter 平移动画 — 4种实现方式Flutter 淡入淡出与逐渐出现动画Flutter 尺寸缩放、形状、颜色、阴影变...
    99+
    2023-09-13
    flutter 动画 旋转动画 动画延时重复播放
  • Android实现旋转动画
    本文实例为大家分享了Android实现旋转动画的具体代码,供大家参考,具体内容如下 旋转动画(可加速、减速) 1、准备工作 首先需要有一个用于旋转的图片 需要考虑如何开始、结束、加速...
    99+
    2024-04-02
  • windows flash动画如何旋转
    本文小编为大家详细介绍“windows flash动画如何旋转”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows flash动画如何旋转”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。flash动画旋转...
    99+
    2023-07-02
  • 在css3动画中如何定义旋转动画
    这篇文章主要讲解了“在css3动画中如何定义旋转动画”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在css3动画中如何定义旋转动画”吧! ...
    99+
    2024-04-02
  • vue实现旋转木马动画
    本文实例为大家分享了vue实现旋转木马动画的具体代码,供大家参考,具体内容如下 图片数量可为任意值都能正常处理 [1-无限个]: <!DOCTYPE html> &l...
    99+
    2024-04-02
  • CSS如何实现旋转动画
    这篇文章主要讲解了“CSS如何实现旋转动画”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS如何实现旋转动画”吧!   沿X轴方向旋转   在代码中指...
    99+
    2024-04-02
  • Android如何实现旋转动画
    本篇内容主要讲解“Android如何实现旋转动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何实现旋转动画”吧!1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、...
    99+
    2023-06-26
  • Android实现简单旋转动画
    本文实例为大家分享了Android实现简单旋转动画的具体代码,供大家参考,具体内容如下 核心方法 public void startAnimation(Animation anima...
    99+
    2024-04-02
  • windows几何画板怎么做旋转动画
    这篇文章主要介绍了windows几何画板怎么做旋转动画的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows几何画板怎么做旋转动画文章都会有所收获,下面我们一起来看看吧。几何画板做旋转动画的方法:首先我们...
    99+
    2023-07-04
  • 如何实现HTML5 Canvas旋转动画
    本篇内容介绍了“如何实现HTML5 Canvas旋转动画”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果...
    99+
    2024-04-02
  • css3动画如何使圆形旋转
    今天小编给大家分享一下css3动画如何使圆形旋转的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。css3动画使圆形旋转的方法:...
    99+
    2023-07-05
  • css3动画怎么使圆形旋转
    本教程操作环境:Windows10系统、CSS3版、DELL G3电脑css3动画怎么使圆形旋转?CSS3 圆环旋转效果一、CSS3圆环旋转效果 1原理:设置不同效果的边框,进行旋转<div class="demo"...
    99+
    2023-05-14
    旋转 CSS3
  • Vue组件实现旋转木马动画
    本文实例为大家分享了Vue组件实现旋转木马动画的具体代码,供大家参考,具体内容如下 源码如下 <template> <div id="wrapper">...
    99+
    2024-04-02
  • css3border旋转时的动画怎么应用
    今天就跟大家聊聊有关css3border旋转时的动画怎么应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 废话不多说...
    99+
    2024-04-02
  • css3如何设置动画旋转速度
    这篇文章主要介绍“css3如何设置动画旋转速度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css3如何设置动画旋转速度”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • css3怎么制作圆形旋转动画
    这篇文章主要介绍了css3怎么制作圆形旋转动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   使用css3制作旋转动画的步骤   步...
    99+
    2024-04-02
  • 如何制作canvas粒子旋转动画
    这篇文章主要介绍了如何制作canvas粒子旋转动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  <!DOCTYPE&nb...
    99+
    2024-04-02
  • SVG如何制作地图旋转动画
    这篇文章主要介绍SVG如何制作地图旋转动画,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!<!DOCTYPE html> <html > &...
    99+
    2024-04-02
  • Android绘制旋转动画方法详解
    目录1、准备工作2、加速减速原理3、初始化4、开始5、加速6、减速7、停止8、项目源码Layout部分MainActivity部分1、准备工作 首先需要有一个用于旋转的图片 需要考虑...
    99+
    2024-04-02
  • Flutter GetX页面跳转动画与属性
    Flutter GetX页面跳转动画解释: fade: 页面渐变动画,新页面会从透明度为 0 的状态渐变到完全显示。 fadeIn: 渐入动画,新页面会从透明度为 0 的状态渐变到完全显示。 righ...
    99+
    2023-10-26
    android ios flutter
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作