112、Flutter实现图片放大缩小的动画小
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实现图片放大缩小的动画小相关推荐
- js 图片放大缩小(动画效果)
本文实现鼠标滑过图片事件,鼠标滑到图片上则图片逐渐放大,鼠标划走图片逐渐缩小到原大小.下面分析整个过程: 图片逐渐放大缩小怎么实现? 1.用css设置图片的宽和高的不同值可以实现大小不同的图片,那么通 ...
- iphone iPhone开发中如何将制作图片放大缩小代码实现案例
1:原文摘自:http://mobile.51cto.com/iphone-285108.htm iPhone开发中如何将制作图片放大缩小案例是本文要介绍的内容,主要是来学习iphone开发中动画的制 ...
- imageView图片放大缩小及旋转
imageView图片放大缩小及旋转 一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCen ...
- CSS3圆圈动画放大缩小循环动画效果
代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- css3 图片放大缩小闪烁效果
直接把图片替换就可以了,我的图片是透明的,所以body设置为黑色的,不不要可以去掉 <!doctype html> <html lang="en"> < ...
- vue项目 一行js代码搞定点击图片放大缩小
一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...
- 图片放大缩小旋转左移右移镜像倒影android
图片放大缩小旋转左移右移镜像倒影 demo: TestImage 1. 将 meinv.jpg 图片拷贝到以下目录TestImage\app\src\main\res\mipmap-hdpi 1.An ...
- 点击图片放大缩小功能
1.点击图片放大缩小的思路 图片部分: <table><div><img style="width:62px;height:83px;display:block ...
- [IPhone] 如何将制作图片放大缩小的动作
在IPhone SDK开发范例大全中,有很多的范例码 下面这段范例码,示范了两张图片的交换,以及放大缩小的动画 动画效果请参照下图 #import <UIKit/UIKit.h> #def ...
最新文章
- 7.5. Function
- Android 即时通讯开发小结(二)
- 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!
- [认证授权] 2.OAuth2授权(续) amp;amp; JSON Web Token
- 错误解决:常出现在iis搭建网站
- [MOSS开发]:如何使用用户控件
- C php反序列化,php反序列化漏洞 - anansec的个人空间 - OSCHINA - 中文开源技术交流社区...
- 挑战NPC(洛谷-P4258)
- 【Pytorch】 .item()==>得到元素张量里面的一个元素值,便可以循环、查看...操作
- 《代码大全》代码生成
- tomcat在linux服务器上部署应用
- MongoDB高可用集群搭建(主从、分片、路由、安全验证)
- 浙江工业大学2020考研经验分享
- 串口热拔插学习(转载)
- 使用frp进行内网穿透
- 模板设计模式的两种方式
- kubelet参数解释about kubelet gc image and evict pod.
- 使用Hadoop MapReduce进行大数据分析
- M5311nbiot 模组入坑 (接入华为物联平台)
- Whitening Sentence Representations for Better Semantics and Faster Retrieval论文学习