Flutter 雪花飘落的效果-深夜创作
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
- 优美的音乐节奏带你浏览这个效果的编码过程
- 坚持每一天,是每个有理想青年的追求
- 追寻年轻人的脚步,也许你的答案就在这里
本文章实现的效果如下图所示:
/// 程序入口
void main() {runApp(MaterialApp(//不显示debug标签debugShowCheckedModeBanner: false,//默认显示的首页面home: TestPage(),),);
}
首先来一个全局获取随机透明度的白色颜色的方法,用来生成雪花使用的不同的白色:
//全局定义获取颜色的方法
Color getRandomWhiteColor(Random random) {//透明度 0 ~ 200 255是不透明int a = random.nextInt(200);return Color.fromARGB(a, 255, 255, 255);
}
定义 雪花模型 用来保存雪花的基本属性信息:
///定义 雪花模型 用来保存雪花的基本属性信息
class BobbleBean {//位置Offset postion;//初始位置Offset origin;//颜色Color color;//运动的速度double speed;//半径double radius;
}
/// 雪花背景
class TestPage extends StatefulWidget {@override_TestPageState createState() => _TestPageState();
}class _TestPageState extends State<TestPage> with TickerProviderStateMixin {//创建一个集合用来保存气泡List<BobbleBean> _list = [];//随机数Random _random = new Random(DateTime.now().microsecondsSinceEpoch);//来个动画控制器AnimationController _animationController;//初始化函数中创建气泡@overridevoid initState() {super.initState();Future.delayed(Duration.zero, () {initData();});//创建动画控制器 1秒_animationController = new AnimationController(vsync: this, duration: Duration(milliseconds: 10000));//执行刷新监听_animationController.addListener(() {setState(() {});});//开启气泡的运动_animationController.repeat();// 状态栏隐藏SystemChrome.setEnabledSystemUIOverlays([]);}void initData() {for (int i = 0; i < 2000; i++) {BobbleBean bean = new BobbleBean();//获取随机透明度白色bean.color = getRandomWhiteColor(_random);//设置位置 先来个默认的 绘制的时候再修改double x = _random.nextDouble() * MediaQuery.of(context).size.width;double y = _random.nextDouble() * MediaQuery.of(context).size.height;double z = _random.nextDouble() + 0.5;bean.speed = _random.nextDouble() + 0.01 / z;bean.postion = Offset(x, y);bean.origin = Offset(x, 0);//设置半径bean.radius = 2.0 / z;_list.add(bean);}}... ...}
页面 UI 的构建方法如下:
@overrideWidget build(BuildContext context) {return Scaffold(backgroundColor: Colors.white,///填充布局body: Container(width: double.infinity,height: double.infinity,//层叠布局child: Stack(children: [//第一部分 背景Positioned.fill(child: Image.asset("assets/images/bg_snow.png",fit: BoxFit.fill,),),//第二部分 雪花CustomPaint(size: MediaQuery.of(context).size,//画布painter: SnowCustomMyPainter(list: _list, random: _random),),],),),);}
自定义画布如下:
///创建画布
class SnowCustomMyPainter extends CustomPainter {List<BobbleBean> list;Random random;SnowCustomMyPainter({this.list, this.random}); //先来个画笔Paint _paint = new Paint()..isAntiAlias = true;//具体的绘制功能@overridevoid paint(Canvas canvas, Size size) {// 在绘制前重新计算每个点的位置list.forEach((element) {//左右微抖动double dx = random.nextDouble() * 2.0 - 1.0;//竖直方向位置偏移double dy = element.speed;//位置偏移量计算element.postion += Offset(dx, dy);//重置位置if (element.postion.dy > size.height) {element.postion = element.origin;}});//// //绘制list.forEach((element) {//修改画笔的颜色_paint.color = element.color;//绘制圆canvas.drawCircle(element.postion, element.radius, _paint);});}//刷新 控制@overridebool shouldRepaint(covariant CustomPainter oldDelegate) {//返回false 不刷新return true;}
}
【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注
【x2】各种系列的视频教程 免费开源 关注 你不会迷路
【x3】系列文章 百万 Demo 随时 复制粘贴 使用
【x4】简短的视频不一样的体验
【x5】必须有源码
Flutter 雪花飘落的效果 冬秋的延续 雪是冬的足迹 我们共同努力
不局限于思维,不局限语言限制,才是编程的最高境界。
以小编的性格,肯定是要录制一套视频的,随后会上传
有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人
Flutter 雪花飘落的效果-深夜创作相关推荐
- Android 雪花飘落动画效果 自定义View
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...
- php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...
使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...
- php实现页面雪花效果,CSS3如何实现雪花飘落的效果
通过CSS3中的animation属性来设置动画名称,动画时间.速度以及动画是否循环播放来实现雪花飘落的效果 今天将要分享的是利用CSS3中的animation属性来实现雪花飘落的效果,具有一定的参考 ...
- JAVA实现雪花飘落动画效果
效果如下: 步骤: 一.在项目中创建一个继承JFrame类的MainFrame窗体类.一个继承Jlable类,并实现Runnable接口的自定义标签类SnowFlakeLable及一个背景面板类B ...
- 使用Photoshop实现雪花飘落的效果
一.准备工作 软件环境:PhotoshopCS5 实验目的:雪花飘落的效果 二.实验步骤 1,打开素材图片并将原图层复制 2,在菜单栏内选择:滤镜->像素化->点状化,单元格大小选6 提 ...
- 利用html5看雪花飘落的效果
html5飘落的雪花堆积动画特效 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-T ...
- python实现雪花飘落的效果_使用javascript实现雪花飘落的效果
看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈旧了,那么就学者改掉吧. 包括: 1.对le ...
- JS实现雪花飘落特效效果
1.概述: 以任意图片作为背景,在背景上添加雪花下落的特效效果,此处使用随机颜色.随机大小的彩色雪花实现. 2.效果实现功能: (1)雪花随机出现并随机消失: (2)雪花出现时大小随机: (3)雪花颜 ...
- 原生JS实现雪花飘落的效果
目录 1.代码 index.html <!DOCTYPE html> <html> <head><meta charset="UTF-8" ...
最新文章
- asp.net request详细说明
- mysql数据库设计中的14个技巧
- 广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务
- QT3与QT4中uic的使用差异---李家凯老师
- JspWriter 与 printwriter区别
- PHP数组json占用内存,php - 从json“连接”多个数组 - 堆栈内存溢出
- Django Form ModelForm modelfromset
- 提交响应后无法调用sendredirect_DDD 指导应用垂直拆分后事务问题
- 阿里云云计算 25 SLB的原理
- 普林斯顿微积分读本篇十一:最优化和线性化
- 利用ansys计算机械结构最小安全系数教程,利用ANSYS计算复杂薄壁杆件截面特性.pdf...
- 如何定义StrokeIt手势 常用StrokeIt手势大全
- 基于LSTM的股票预测模型_python实现_超详细
- html新增和删除行,html5页面结构的变化以及增加和删除标签的总结
- aws saa 认证价值大吗?aws认证指的是什么?
- Win10安装过程中如何跳过创建Microsoft账户
- 微信公众号新手运营指南——四种类别如何选择
- android逆向开发工程师需要掌握的技能
- 软件企业和双软企业的区别
- FPGA数字信号处理(25)数字相关器设计(经典结构)
热门文章
- ECCV 2020 论文大盘点-视频理解与分类篇
- ECCV2020 | Cityscapes上83.7 mIoU,通过解耦的主体和边缘监督改进语义分割
- 百度EasyDL深度学习实战营,免费教你转型AI工程师!
- 万万没想到,EfficientNet居然这么火!
- 计算机视觉研究入门全指南
- 升级! Facebook 模型全部迁移至 PyTorch 框架
- 伯克利2019深度学习课程—李沐及其亚马逊同事一起讲述(内附视频链接及PDF下载)
- java hook全局钩子,牛逼骚操作:Java 虚拟机关闭钩子(Shutdown Hook)!
- 使用Python解析MNIST数据集
- 神经网络瘦身:SqueezeNet