Flutter是通过Animation组件来实现动画效果的

main.dart文件中的内容与上一篇显示的代码相同

这一篇博客主要关注放大缩小的动画效果

1、WelcomeScreen  widget继承了StatefulWidget组件,

在initState方法中设置动画效果

2、动画效果主要通过

Animation组件来实现

AnimationController设置动画执行持续的时间长短
controller = AnimationController(duration: Duration(seconds: 1), vsync: this); //AnimationController
CurvedAnimation设置动画的效果
animation = CurvedAnimation(parent: controller, curve: Curves.decelerate);

controller.forward()设置动画的执行,并且添加监听器

controller.forward()之后的状态是完成的即

AnimationStatus.completed

controller.reverse(from: 1.0);

之后的状态是丢失的即

AnimationStatus.dismissed

    controller.forward();animation.addStatusListener((status){if (status == AnimationStatus.completed){controller.reverse(from: 1.0);}else if (status == AnimationStatus.dismissed){controller.forward();}});controller.addListener(() {setState(() {});print(animation.value);});

完整的代码如下所示:

import 'package:flutter/material.dart';
import 'login_screen.dart';
import 'registration_screen.dart';class WelcomeScreen extends StatefulWidget {static String id = 'welcome_screen';@override_WelcomeScreenState createState() => _WelcomeScreenState();
}class _WelcomeScreenState extends State<WelcomeScreen>with SingleTickerProviderStateMixin {AnimationController controller;Animation animation;@overridevoid initState() {super.initState();controller = AnimationController(duration: Duration(seconds: 1), vsync: this); //AnimationController//    animation = ColorTween(begin: Colors.blueGrey, end: Colors.white)
//        .animate(controller);animation = CurvedAnimation(parent: controller, curve: Curves.decelerate);controller.forward();animation.addStatusListener((status){if (status == AnimationStatus.completed){controller.reverse(from: 1.0);}else if (status == AnimationStatus.dismissed){controller.forward();}});controller.addListener(() {setState(() {});print(animation.value);});}@overrideWidget build(BuildContext context) {return Scaffold(backgroundColor: Colors.white,body: Padding(padding: EdgeInsets.symmetric(horizontal: 24.0),child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.stretch,children: <Widget>[Row(children: <Widget>[Hero(tag: 'logo',child: Container(child: Image.asset('images/logo.png'),height: animation.value * 100,),),Text('Falsh Chat',style: TextStyle(fontSize: 45.0,fontWeight: FontWeight.w900,),),],),SizedBox(height: 48.0,),Padding(padding: EdgeInsets.symmetric(vertical: 16.0),child: Material(elevation: 5.0,color: Colors.lightBlueAccent,borderRadius: BorderRadius.circular(30.0),child: MaterialButton(onPressed: () {Navigator.pushNamed(context, LoginScreen.id);},minWidth: 200.0,height: 42.0,child: Text('Log In',),),),),Padding(padding: EdgeInsets.symmetric(vertical: 16.0),child: Material(color: Colors.blueAccent,borderRadius: BorderRadius.circular(30.0),elevation: 5.0,child: MaterialButton(onPressed: () {Navigator.pushNamed(context, RegistrationScreen.id);},minWidth: 200.0,height: 42.0,child: Text('Register',),),),),],),),);}
}

整个效果如下图所示:

112、Flutter实现图片放大缩小的动画小相关推荐

  1. js 图片放大缩小(动画效果)

    本文实现鼠标滑过图片事件,鼠标滑到图片上则图片逐渐放大,鼠标划走图片逐渐缩小到原大小.下面分析整个过程: 图片逐渐放大缩小怎么实现? 1.用css设置图片的宽和高的不同值可以实现大小不同的图片,那么通 ...

  2. iphone iPhone开发中如何将制作图片放大缩小代码实现案例

    1:原文摘自:http://mobile.51cto.com/iphone-285108.htm iPhone开发中如何将制作图片放大缩小案例是本文要介绍的内容,主要是来学习iphone开发中动画的制 ...

  3. imageView图片放大缩小及旋转

    imageView图片放大缩小及旋转 一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCen ...

  4. CSS3圆圈动画放大缩小循环动画效果

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  5. css3 图片放大缩小闪烁效果

    直接把图片替换就可以了,我的图片是透明的,所以body设置为黑色的,不不要可以去掉 <!doctype html> <html lang="en"> < ...

  6. vue项目 一行js代码搞定点击图片放大缩小

    一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...

  7. 图片放大缩小旋转左移右移镜像倒影android

    图片放大缩小旋转左移右移镜像倒影 demo: TestImage 1. 将 meinv.jpg 图片拷贝到以下目录TestImage\app\src\main\res\mipmap-hdpi 1.An ...

  8. 点击图片放大缩小功能

    1.点击图片放大缩小的思路 图片部分: <table><div><img style="width:62px;height:83px;display:block ...

  9. [IPhone] 如何将制作图片放大缩小的动作

    在IPhone SDK开发范例大全中,有很多的范例码 下面这段范例码,示范了两张图片的交换,以及放大缩小的动画 动画效果请参照下图 #import <UIKit/UIKit.h> #def ...

最新文章

  1. 7.5. Function
  2. Android 即时通讯开发小结(二)
  3. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!
  4. [认证授权] 2.OAuth2授权(续) amp;amp; JSON Web Token
  5. 错误解决:常出现在iis搭建网站
  6. [MOSS开发]:如何使用用户控件
  7. C php反序列化,php反序列化漏洞 - anansec的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 挑战NPC(洛谷-P4258)
  9. 【Pytorch】 .item()==>得到元素张量里面的一个元素值,便可以循环、查看...操作
  10. 《代码大全》代码生成
  11. tomcat在linux服务器上部署应用
  12. MongoDB高可用集群搭建(主从、分片、路由、安全验证)
  13. 浙江工业大学2020考研经验分享
  14. 串口热拔插学习(转载)
  15. 使用frp进行内网穿透
  16. 模板设计模式的两种方式
  17. kubelet参数解释about kubelet gc image and evict pod.
  18. 使用Hadoop MapReduce进行大数据分析
  19. M5311nbiot 模组入坑 (接入华为物联平台)
  20. Whitening Sentence Representations for Better Semantics and Faster Retrieval论文学习

热门文章

  1. 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
  2. 岳父岳母-12个未接电话
  3. 英国几个有名的英语考试总结
  4. 小学信息技术 用计算机画画 教学目标,三年级下册信息技术教学计划4篇
  5. 高中计算机教学工作计划,2017高中信息技术教学工作计划
  6. 计算机基础教学质量分析报告,张丹菲信息技术质量分析报告1
  7. Excel如何如何比较两列同行内容是否一致
  8. (十一)51单片机——用AT24C02实现存储秒表数据(附成果展示)
  9. 图表点编辑数据无反应_word图表无法编辑数据 word图表不能编辑数据
  10. bzoj 2298 problem a