在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。

  • 优美的音乐节奏带你浏览这个效果的编码过程
  • 坚持每一天,是每个有理想青年的追求
  • 追寻年轻人的脚步,也许你的答案就在这里

本文章实现的效果如下图所示:

/// 程序入口
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 雪花飘落的效果-深夜创作相关推荐

  1. Android 雪花飘落动画效果 自定义View

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  2. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...

    使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...

  3. php实现页面雪花效果,CSS3如何实现雪花飘落的效果

    通过CSS3中的animation属性来设置动画名称,动画时间.速度以及动画是否循环播放来实现雪花飘落的效果 今天将要分享的是利用CSS3中的animation属性来实现雪花飘落的效果,具有一定的参考 ...

  4. JAVA实现雪花飘落动画效果

     效果如下:  步骤: 一.在项目中创建一个继承JFrame类的MainFrame窗体类.一个继承Jlable类,并实现Runnable接口的自定义标签类SnowFlakeLable及一个背景面板类B ...

  5. 使用Photoshop实现雪花飘落的效果

    一.准备工作 软件环境:PhotoshopCS5 实验目的:雪花飘落的效果 二.实验步骤 1,打开素材图片并将原图层复制 2,在菜单栏内选择:滤镜->像素化->点状化,单元格大小选6  提 ...

  6. 利用html5看雪花飘落的效果

    html5飘落的雪花堆积动画特效 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-T ...

  7. python实现雪花飘落的效果_使用javascript实现雪花飘落的效果

    看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈旧了,那么就学者改掉吧. 包括: 1.对le ...

  8. JS实现雪花飘落特效效果

    1.概述: 以任意图片作为背景,在背景上添加雪花下落的特效效果,此处使用随机颜色.随机大小的彩色雪花实现. 2.效果实现功能: (1)雪花随机出现并随机消失: (2)雪花出现时大小随机: (3)雪花颜 ...

  9. 原生JS实现雪花飘落的效果

    目录 1.代码 index.html <!DOCTYPE html> <html> <head><meta charset="UTF-8" ...

最新文章

  1. asp.net request详细说明
  2. mysql数据库设计中的14个技巧
  3. 广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务
  4. QT3与QT4中uic的使用差异---李家凯老师
  5. JspWriter 与 printwriter区别
  6. PHP数组json占用内存,php - 从json“连接”多个数组 - 堆栈内存溢出
  7. Django Form ModelForm modelfromset
  8. 提交响应后无法调用sendredirect_DDD 指导应用垂直拆分后事务问题
  9. 阿里云云计算 25 SLB的原理
  10. 普林斯顿微积分读本篇十一:最优化和线性化
  11. 利用ansys计算机械结构最小安全系数教程,利用ANSYS计算复杂薄壁杆件截面特性.pdf...
  12. 如何定义StrokeIt手势 常用StrokeIt手势大全
  13. 基于LSTM的股票预测模型_python实现_超详细
  14. html新增和删除行,html5页面结构的变化以及增加和删除标签的总结
  15. aws saa 认证价值大吗?aws认证指的是什么?
  16. Win10安装过程中如何跳过创建Microsoft账户
  17. 微信公众号新手运营指南——四种类别如何选择
  18. android逆向开发工程师需要掌握的技能
  19. 软件企业和双软企业的区别
  20. FPGA数字信号处理(25)数字相关器设计(经典结构)

热门文章

  1. ECCV 2020 论文大盘点-视频理解与分类篇
  2. ECCV2020 | Cityscapes上83.7 mIoU,通过解耦的主体和边缘监督改进语义分割
  3. 百度EasyDL深度学习实战营,免费教你转型AI工程师!
  4. 万万没想到,EfficientNet居然这么火!
  5. 计算机视觉研究入门全指南
  6. 升级! Facebook 模型全部迁移至 PyTorch 框架
  7. 伯克利2019深度学习课程—李沐及其亚马逊同事一起讲述(内附视频链接及PDF下载)
  8. java hook全局钩子,牛逼骚操作:Java 虚拟机关闭钩子(Shutdown Hook)!
  9. 使用Python解析MNIST数据集
  10. 神经网络瘦身:SqueezeNet