iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用Android Flutter实现创意时钟
  • 277
分享到

怎么使用Android Flutter实现创意时钟

2023-07-05 19:07:03 277人浏览 独家记忆
摘要

这篇文章主要介绍“怎么使用Android Flutter实现创意时钟”,在日常操作中,相信很多人在怎么使用Android Flutter实现创意时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

这篇文章主要介绍“怎么使用Android Flutter实现创意时钟”,在日常操作中,相信很多人在怎么使用Android Flutter实现创意时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Android Flutter实现创意时钟”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

本案例使用的环境是:

Flutter (Channel stable, 2.2.3, on MacOS 11.0.1 20B29 darwin-arm, locale zh-Hans-CN)
    • Flutter version 2.2.3 at /Users/moon/Documents/sdk/flutter
    • Framework revision f4abaa0735 (2 months aGo), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • dart version 2.13.4
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror Https://storage.flutter-io.cn

1.构建一个代表时间的小格子

一个最普通的Container 里包含一个text

_Number() {  return Container(    width: 40,    height: 40,    child: Text(      "5",      style: TextStyle(color: Colors.white, fontSize: 16),    ),  );}

通过看上边的gif图就能设计出来,小格子是有状态的,是当前的时间点数字的话背景色改变,同时也可以让这个数字的字体变大一点,区别于其他数字,而且他会在所在的列里位于屏幕的中部。 所以先简单封装下这个小格子。

_Number(int number, bool isActive) {  var backgroundColor;  var numberSize;  if (isActive) {    backgroundColor = Colors.black;    numberSize = 18.0;  } else {    backgroundColor = Colors.deepPurpleAccent;    numberSize = 16.0;  }  return Container(    alignment: Alignment.center,    width: _nORMalSize,    height: _normalSize,    child: Text(      "$number",      style: TextStyle(color: Colors.white, fontSize: numberSize),    ),  );

2.构建一列小格子

既然是几列数字条构成的一个时钟,所以想下大概是绘制出一条就可以了,其他的几个传不同的数字和状态就可以, Compose里用column,Flutter里同样有这个东西,当然用listview 或其他的容器都可以。

child: Column(  children: [      _Number(1 , false,),      _Number(2 , false,),      _Number(3 , false,),      _Number(4 , false,),      _Number(5 , true,),  ],))

怎么使用Android Flutter实现创意时钟

为了美观可以切个圆角,这点compose的modifier就体现出了优势, 可以直接clip column,但Flutter却没那么强大,只能根据位置对每个小格子单独处理了。

if (number == 0) {  borderRadius = BorderRadius.only(      topLeft: Radius.circular(15), topRight: Radius.circular(15));} else if (number == (totalSize - 1)) {  borderRadius = BorderRadius.only(      bottomLeft: Radius.circular(15), bottomRight: Radius.circular(15));} else {  borderRadius = BorderRadius.all(Radius.zero);}
decoration: BoxDecoration(  color: backgroundColor,  borderRadius: borderRadius,),

或许还有其简单方式设置边角,请朋友提示。

怎么使用Android Flutter实现创意时钟

3.构建多列小格子

同理搞出六列格子,代表双位的时分秒,可以用row 包裹六个 column ,设置外层container的子widget都居中,接受当前时间作为状态,突出显示就可以了。 比如现在是21:49:15

怎么使用Android Flutter实现创意时钟

这样就画出了一个单独的静态时间刻度。

4.关于Align

这个图好像不太对,一种乱糟糟的感觉,需要能一眼看出当前时间才行,即把所有时间对齐在一条线上。

这方面Compose 发挥了优势, modifier的 offset 可以轻松实现位移。

val mid = (range.last - range.first) / 2f val offset = 40.dp * (mid - current)Modifier .offset(y = offset)

flutter 里貌似没这么方便了,怎么实现呢,我使用了Align组件,简单说明下, 以下摘自官方。

Align 组件可以调整子组件的位置,并且可以根据子组件的宽高来确定自身的的宽高,定义如下:

Align({  Key key,  this.alignment = Alignment.center,  this.widthFactor,  this.heightFactor,  Widget child,})
  • alignment : 需要一个AlignmentGeometry类型的值,表示子组件在父组件中的起始位置。AlignmentGeometry 是一个抽象类,它有两个常用的子类:Alignment和 FractionalOffset

  • widthFactorheightFactor是用于确定Align 组件本身宽高的属性;它们是两个缩放因子,会分别乘以子元素的宽、高,最终的结果就是Align 组件的宽高。如果值为null,则组件的宽高将会占用尽可能多的空间。

举例如下

Container(  height: 120.0,  width: 120.0,  color: Colors.blue[50],  child: Align(    alignment: Alignment.topRight,    child: FlutterLogo(      size: 60,    ),  ),)

怎么使用Android Flutter实现创意时钟

我显式指定了Container的宽、高都为120。如果我不显式指定宽高,而通过同时指定widthFactorheightFactor 为2也是可以达到同样的效果:

Align(  widthFactor: 2,  heightFactor: 2,  alignment: Alignment.topRight,  child: FlutterLogo(    size: 60,  ),),

5.对齐时间线

分析,Align实际上就是把原高度扩大为之前的 heightFactor 倍数,而它的子widget仍然处于Align的顶部,而当前时间点位于column顶部的距离是已知的,所以要让当前时间点的数字定位于 Align的中间 ,需要补齐(或截掉)当前时间点的格子下边的空间。 为了示意明确,我给总体背景和 Align 背景都加了颜色。

怎么使用Android Flutter实现创意时钟

第一列: 小时首位,只有三个格子, 当前是2, 2位于第三个,所以需要给下边补齐两个格子, 第二列:小时的末位,共有10个格子,当前数字也是2 ,也位于第三个,为了让上下相等,需要截掉4以下的数字,让2位于中间位置。

以此类推。

这下就可以发现规律了。 高度的系数因子为 :

(current * 2 + 1)/numbers.length

numbers.length 是列的长度。 因此, 每列的函数可以写为

_columnNumber(List<int> numbers, int current) {  List<Widget> list = [];  numbers.forEach((e) {    list.add(_Number(e, e == current, numbers.length));  });  return Container(    color: Colors.white,    child: Align(      alignment: Alignment.topCenter,      widthFactor: 1,      heightFactor: (current *2 + 1)/numbers.length,      child: Container(        height: numbers.length * _normalSize,        margin: EdgeInsets.only(left: 5, right: 5),        child: Column(          children: list,        )),    ),  );}

到此,关于“怎么使用Android Flutter实现创意时钟”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么使用Android Flutter实现创意时钟

本文链接: https://www.lsjlt.com/news/354713.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用Android Flutter实现创意时钟
    这篇文章主要介绍“怎么使用Android Flutter实现创意时钟”,在日常操作中,相信很多人在怎么使用Android Flutter实现创意时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • JavaScript如何实现创意时钟项目
    小编给大家分享一下JavaScript如何实现创意时钟项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、最终效果展示:二、项...
    99+
    2024-04-02
  • 怎么使用JS实现电子时钟
    本篇内容介绍了“怎么使用JS实现电子时钟”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码呈上:<!DOCTYPE html...
    99+
    2023-07-02
  • 怎么使用Android Flutter实现弹幕效果
    本篇内容介绍了“怎么使用Android Flutter实现弹幕效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言需求要点如下:...
    99+
    2023-07-02
  • Android怎么实现简单时钟View的方法
    这篇文章给大家分享的是有关Android怎么实现简单时钟View的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过Canvas的平移与旋转简化绘图逻辑是一个非常有用的技巧,下面的时钟view就是利用这个方法...
    99+
    2023-05-30
    android view
  • java怎么实现时间时钟
    Java中可以使用`java.util.Date`类和`java.text.SimpleDateFormat`类来实现时间时钟。首先...
    99+
    2023-08-29
    java
  • 怎么使用JavaScript实现网页电子时钟
    这篇文章主要讲解了“怎么使用JavaScript实现网页电子时钟”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用JavaScript实现网页电子时钟”吧!如图就是一个简易的网页电子时钟...
    99+
    2023-07-02
  • Android Flutter怎么使用相机实现拍摄照片
    本篇内容介绍了“Android Flutter怎么使用相机实现拍摄照片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用相机前的准...
    99+
    2023-07-05
  • 使用css3怎么实现一个LED 数字时钟
    使用css3怎么实现一个LED 数字时钟?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言...
    99+
    2023-06-08
  • Android使用Flutter实现录音插件
    目录安卓部分手动注册Android和Dart的通讯安卓录音Dart module部分iOS部分手动注册插件iOS插件Dart调用部分原生提供功能,Dart module 通过 met...
    99+
    2022-11-13
    Android Flutter录音 Android 录音功能
  • 怎么在Python下使用Pygame实现时钟效果
    这篇文章主要讲解了“怎么在Python下使用Pygame实现时钟效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Python下使用Pygame实现时钟效果”吧!本文实例为大家分享了P...
    99+
    2023-06-20
  • Android Flutter基于WebSocket怎么实现即时通讯功能
    这篇文章主要介绍“Android Flutter基于WebSocket怎么实现即时通讯功能”,在日常操作中,相信很多人在Android Flutter基于WebSocket怎么实现即时通讯功能问题上存在疑惑,小编查阅了各...
    99+
    2023-06-29
  • Qt怎么实现电子时钟
    今天小编给大家分享一下Qt怎么实现电子时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、项目介绍利用Qt实现显示与桌面上...
    99+
    2023-07-02
  • Android Flutter异步编程怎么实现
    这篇文章主要介绍“Android Flutter异步编程怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android Flutter异步编程怎么实现”文章能帮助大家解决问...
    99+
    2023-07-05
  • 怎么用原生js实现电子时钟
    这篇文章主要介绍“怎么用原生js实现电子时钟”,在日常操作中,相信很多人在怎么用原生js实现电子时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用原生js实现电子时钟”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • 怎么在Html5中使用canvas实现一个粒子时钟
    这篇文章将为大家详细讲解有关怎么在Html5中使用canvas实现一个粒子时钟,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先要创建一个html文件并添加一个canvas画布,如下:<...
    99+
    2023-06-09
  • Android Flutter实现精灵图的使用详解
    目录前言如何使用精灵图自定义实现加载Flame加载精灵图前言 在日常开发中遇到的图片展示一般是静态图和Gif图两种形式(静态和动态的不同)。与此同时当需要对图片做效果时让其动起来,常...
    99+
    2024-04-02
  • java实现时钟代码怎么写
    以下是一个简单的Java代码示例,用于实现一个时钟:```javaimport java.time.LocalTime;import...
    99+
    2023-08-29
    java
  • Android中怎么使用flow实现倒计时
    本篇内容主要讲解“Android中怎么使用flow实现倒计时”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中怎么使用flow实现倒计时”吧!现在因为有了协程和Flow,我们可以借助...
    99+
    2023-06-30
  • 怎么使用gps校时母钟
    这篇文章主要讲解了“怎么使用gps校时母钟”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用gps校时母钟”吧!gps校时母钟采用的是先进的多模卫星接收...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作