公司网站建设佛山哪家专业,潜江做网站的,深圳市网络营销推广平台,网站规划与网页设计第二版Flutter开发基础之动画专题 动画设计的作用是让UI界面更流畅、直观#xff0c;能够有效的提升用户体验。 在Flutter开发中#xff0c;动画分为多个方面#xff1a; 基础动画、页面交互动画、绘图动画、矩阵变换等。 基本动画
常用的基本动画有透明度动画、缩放动画、旋转动…Flutter开发基础之动画专题 动画设计的作用是让UI界面更流畅、直观能够有效的提升用户体验。 在Flutter开发中动画分为多个方面 基础动画、页面交互动画、绘图动画、矩阵变换等。 基本动画
常用的基本动画有透明度动画、缩放动画、旋转动画、平移动画等。
透明度动画 AnimatedOpacity可以实现基本的透明度变化动画适用于简单的过渡场景。 AnimatedOpacity(opacity: opacity,duration: duration,curve: curve,onEnd: onEnd,child: child,)可以通过设置目标opacity将child初始opacity修改为目标opacity。 FadeTransition可以和AnimationController配合实现子Widget的透明度变换绑定的AnimationController控制动画的开始与结束。 FadeTransition(opacity: opacity,child: child,)在这里对应的State需要绑定SingleTickerProviderStateMixin如果有多个AnimationController需要绑定TickerProviderStateMixinSingleTickerProviderStateMixin和TickerProviderStateMixin都实现于TickerProviderTickerProvider用来发送Ticker对象Ticker对象的作用是获取每一帧刷新的通知 Ticker受到SchedulerBinding的驱动锁屏后会停止刷新可以避免资源浪费。
缩放动画 ScaleTransition可以和AnimationController配合构建缩放动画效果此缩放是等比例的。 ScaleTransition(scale: scale,alignment: alignment,child: child,filterQuality: filterQuality,)旋转动画 RotationTransition配合AnimationController实现旋转效果。 RotationTransition(turns: turns,alignment: alignment,filterQuality: filterQuality,child: child,)平移动画 SlideTransition配合AnimationController和AnimationOffset实现对子Widget的平移变换。 SlideTransition(position: position,transformHitTests: transformHitTests,textDirection: textDirection,child: child,)Widget还可以直接配合Tween和AnimationController实现动画效果这里的Tween就是AnimationTween有一下几种 ColorTweenColor切换动画DecorationTweenContainer的Decoration变化BoxConstraintsTween针对ConstrainedBox使用EdgeInsetsTween一般用于padding或margin变化BorderTween边框变换动画BorderRadiusTween边框圆角变换动画Matrix4Tween矩阵变换动画TextStyleTween文本样式过渡动画TweenSequence串行动画是动画序列的组合动画ConstantTween常量值动画一般与TweenSequence配合组合动画SizeTweensize变换动画RectTweenrect变换动画StepTween与TweenAnimationBuilder配合使用可显著提高动画效率 Widget动画还可以通过AnimatedWidget实现AnimatedWidget会封装好setState状态更新通过Listenable监听Widget动画 AnimatedBuilder继承自AnimatedWidget对AnimatedWidget做了优化。 AnimatedModalBarrier继承自AnimatedWidget可以防止用户与身后的子Widget交互。 SpringSimulation可以和SpringDescription配合AnimationController实现阻尼效果。 页面交互动画
Flutter中可以通过Hero组件来组合不同路由页面的过渡元素通过使用相同的tag绑定不同的Widget确保不同的Widget完成过渡。 Hero(tag: tag,createRectTween: createRectTween,flightShuttleBuilder: flightShuttleBuilder,placeholderBuilder: placeholderBuilder,transitionOnUserGestures: transitionOnUserGestures,child: child,)若过渡效果不满意可以配合PageRouteBuilder实现自定义Hero动画效果。 当需要对相邻或有关联的Widget进行切换过渡时可以使用AnimatedSwitcher实现。 AnimatedSwitcher(duration: duration,reverseDuration: reverseDuration,switchInCurve: switchInCurve,switchOutCurve: switchOutCurve,transitionBuilder: transitionBuilder,layoutBuilder: layoutBuilder,child: child,)绘图动画
绘图动画是Canvas结合Path绘制自定义图形对于完整的Path可以通过PathMetric分解获得任一截数据形成新的Path。 在一定时间内逐步绘制一部分Path实现画线效果我们可以同过自定义一个CustomPainter配合AnimationController实现动画效果。 CustomPaint(painter: painter,foregroundPainter: foregroundPainter,size: size,isComplex: isComplex,willChange: willChange,child: child,)