返回顶部
首页 > 资讯 > 移动开发 >Flutter实现不同缩放动画效果详解
  • 876
分享到

Flutter实现不同缩放动画效果详解

2024-04-02 19:04:59 876人浏览 安东尼
摘要

目录需求背景可缩放组件介绍ScaleTransitionSizeTransitionAnimatedSizeAnimatedBuilder小结需求背景 组件缩放可以向着一个方向进行缩

需求背景

组件缩放可以向着一个方向进行缩放,放大列表中某一个Cell期望它是向后进行放大而非组件中心点开始缩放。具体效果如下图所示:

可缩放组件介绍

ScaleTransition

ScaleTransition具体实现如下代码,设置AnimationController控制器若需要增加数值操作可以再增加Animate再调用forward方法执行。

PS:动画实现在以前文章中有介绍过

动画控制器
_scaleAnimationController = AnimationController(
  vsync: this,
  duration: Duration(milliseconds: 3000),
);
scale = Tween(begin: 1.0, end: 1.29).animate(_scaleAnimationController);

ScaleTransition(
  scale: scale,
  alignment: Alignment.centerLeft,
  child: Container(
    margin: EdgeInsets.all(50),
    color: Colors.yellow,
    height: 200,
    width: 100,
  ),
)


_scaleAnimationController.forward();

如果希望修改缩放方向,可以为ScaleTransition添加alignment配置。例如centerLeft表示组件靠左向右缩放。

ScaleTransition(
  scale: scale,
  alignment: Alignment.centerLeft,
  child: Container(
    margin: EdgeInsets.all(50),
    color: Colors.yellow,
    height: 200,
    width: 100,
  ),
)

如图所示默认缩放是以组件中心点进行缩放效果,设置alignment则向着相反位置进行缩放。

ScaleTransition并不能满足需求功能,无法做到向着一个方向进行缩放动画。

SizeTransition

SizeTransition是以更改子组件尺寸实现动画效果,支持垂直或水平方向动画。

AnimationController _animationController =
    AnimationController(vsync: this, duration: Duration(seconds: 1));
_animationController.value = 1.0;
Animation<double>
  _animation = CurvedAnimation(
    parent: _animationController, curve: Curves.fastLinearToSlowEaseIn);

SizeTransition(
  sizeFactor: _animation,
  axis: Axis.horizontal,
  child: Container(
    color: Colors.blue,
    height: 100,
    width: 100,
    alignment: Alignment.center,
    child: Text("SizeTransition"),
  ),
)

但在需求要求上还是不满足期望的结果,SizeTransition更适用在实现展开或是飞入的动画效果。

AnimatedSize

AnimatedSize是自带动画效果的组件,修改组件尺寸大小就能够执行缩放动画。

GestureDetector(
  child: AnimatedSize(
    duration: Duration(seconds: 2),
    child: Container(
      color: Colors.red,
      width: 100,
      height: height,
      alignment: Alignment.center,
      child: Container(
        height: 50,
        width: 50,
        color: Colors.yellow,
        child: Text("AnimatedSize"),
      ),
    ),
  ),
  onTap: () {
    height = 150;
    width = 150;
    setState(() {});
  },
),

AnimatedSize的问题在于它只作用于自身,若子布局设置了自身的尺寸就不会随着父组件大小而变化。

AnimatedBuilder

AnimatedBuilder主要结合TransfORM.scale组件设置alignmentAlignment.centerLeft即可对组件实现向右缩放动画。

AnimationController _scaleAnimationController = AnimationController(
  vsync: this,
  duration: Duration(milliseconds: 3000),
);
Animation<double> scale = Tween(begin: 1.0, end: 1.29).animate(_scaleAnimationController);

 AnimatedBuilder(
  animation: scale,
  builder: (context, widget) {
    return Transform.scale(
      alignment: Alignment.centerLeft,
      scale: scale.value,
      child: widget,
    );
  },
  child: GestureDetector(
    child: Container(
      margin: EdgeInsets.only(left: 15, right: 15),
      color: Colors.blue,
      width: 100,
      height: 50,
      child: Text("AnimatedBuilder"),
    ),
    onTap: (){
      _scaleAnimationController.forward();
    },
  ),
);

AnimatedBuilder方式实现缩放需要为组件缩放预留好足够空间进行缩放放大操作,避免组件缩放后与其他组件出现重叠现象。

小结

实现缩放方式有多种但对于比较定制化缩放要求需求配合上Transform.scale才能达到最终效果。Transform.scale可以帮助动画实现上对于组件尺寸大小控制方向有所帮助。因此采用AnimatedBuilder结合Transform.scale是需求实现最优方案。

以上就是Flutter实现不同缩放动画效果详解的详细内容,更多关于Flutter缩放动画的资料请关注编程网其它相关文章!

--结束END--

本文标题: Flutter实现不同缩放动画效果详解

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

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

猜你喜欢
  • Flutter实现不同缩放动画效果详解
    目录需求背景可缩放组件介绍ScaleTransitionSizeTransitionAnimatedSizeAnimatedBuilder小结需求背景 组件缩放可以向着一个方向进行缩...
    99+
    2024-04-02
  • Flutter怎么实现不同缩放动画效果
    本篇内容主要讲解“Flutter怎么实现不同缩放动画效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter怎么实现不同缩放动画效果”吧!需求背景组件缩放可以向着一个方向进行缩放,放大列...
    99+
    2023-07-02
  • Flutter Animation实现缩放和滑动动画效果
    本文实例为大家分享了Flutter Animation实现缩放和滑动动画的具体代码,供大家参考,具体内容如下 Animation对象是Flutter动画库中的一个核心类,它生成指导动...
    99+
    2024-04-02
  • css3怎么实现缩放动画效果
    这篇文章主要介绍css3怎么实现缩放动画效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! css中,可利用“@keyframes”规则、animatio...
    99+
    2024-04-02
  • css3如何实现旋转缩放动画效果
    这篇文章主要介绍了css3如何实现旋转缩放动画效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 方法:1、利用...
    99+
    2024-04-02
  • CSS动画:如何实现元素的抖动缩放效果
    CSS动画:如何实现元素的抖动缩放效果在网页设计中,元素的动画效果能够增加用户的视觉体验,为平淡的页面增添活力。而CSS动画正是实现这些效果的强大工具之一。本文将详细介绍如何使用CSS动画实现元素的抖动缩放效果,并提供具体的代码示例供读者参...
    99+
    2023-11-21
    动画 CSS 缩放
  • Android列表实现单选点击缩放动画效果
    recycleView单选的时候,一般的处理就是选中的item做个stroke或者字体颜色改变,但要提升用户体验就得加点动画了。也就是点击选中的元素放大,同时之前选中的item缩小,...
    99+
    2024-04-02
  • CSS+jQuery实现的一个放大缩小动画效果
    今天帮朋友写了一些代码,自己觉得写着写着,好几个版本以后,有点满意,于是就贴出来。 都是定死了的。因为需求就只有4个元素。如果是要用CSS的class来处理,那就需要用到CSS3动画...
    99+
    2022-11-15
    jQuery+CSS 放大缩小动画
  • Android实现动画效果详解
    目前Android平台提供了两类动画一类是Tween动画,第二类就是 Frame动画,具体内容介绍请看下文: 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动...
    99+
    2022-06-06
    动画 Android
  • Android实现缩放动画
    本文实例为大家分享了Android实现缩放动画的具体代码,供大家参考,具体内容如下 核心方法 public void startAnimation(Animation animati...
    99+
    2024-04-02
  • Android Flutter如何实现3D动画效果
    这篇文章主要讲解了“Android Flutter如何实现3D动画效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android Flutter如何实现3D动画效果”吧...
    99+
    2023-06-29
  • vue+threejs写物体动画之物体缩放动画效果
    目录写在前面代码说明写在最后写在前面 本文用vue+threejs写物体动画:物体缩放动画。 实现原理:让缩放值根据秒数的增加呈函数式变化,以达到动画展示的效果。 下面是演示gif:...
    99+
    2024-04-02
  • Android利用ViewPager实现可滑动放大缩小画廊效果
    画廊在很多的App设计中都有,如下图所示: 该例子是我没事的时候写的一个小项目,具体源码地址请访问https://github.com/AlexSmille/YingMi。...
    99+
    2022-06-06
    viewpager 画廊 Android
  • Android列表怎么实现单选点击缩放动画效果
    本篇内容介绍了“Android列表怎么实现单选点击缩放动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!recycleView单选的时候...
    99+
    2023-06-20
  • 基于Flutter实现爱心三连动画效果
    目录前言Animation 简介AnimationController 简介应用 - 爱心三连总结前言 我们开始 Flutter 动画相关篇章之旅,在应用中通过动效能够给用户带来更愉...
    99+
    2024-04-02
  • Android Flutter怎么实现仿闲鱼动画效果
    这篇文章主要讲解了“Android Flutter怎么实现仿闲鱼动画效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android Flutter怎么实现仿闲鱼动画效果...
    99+
    2023-07-05
  • Flutter实现心动的动画特效
    目录实现动画混入 SingleTickerProviderStateMixin创建动画抽离成小组件完整代码为了追求更好的用户体验,有时候我们需要一个类似心跳一样跳动着的控件来吸引用户...
    99+
    2024-04-02
  • JetpackCompose实现动画效果的方法详解
    目录概述低级别动画 APIanimate*AsState使用 Animatable 实现颜色变化效果使用 updateTransition 实现颜色和圆角动画remembe...
    99+
    2024-04-02
  • AndroidFlutter实现3D动画效果示例详解
    目录前言AnimatedWidget 简介3D 旋转动画的实现总结前言 上一篇我们介绍了 Animation 和 AnimationController...
    99+
    2024-04-02
  • JetpackCompose实现列表和动画效果详解
    目录创建一个列表消息卡片可交互的动画效果创建一个列表消息卡片 到目前为止,我们只有一个消息的卡片,看上去有点单调,所以让我们来改善它,让它拥有多条信息。我们需要创建一个能够显示多条消...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作