欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter進階之實現(xiàn)動畫效果(三)

 更新時間:2018年08月18日 16:58:16   作者:何小有  
這篇文章主要為大家詳細介紹了Flutter進階之實現(xiàn)動畫效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在上一篇文章:Flutter進階—實現(xiàn)動畫效果(二)的最后,我們實現(xiàn)了一個控件,其中包含各種布局和狀態(tài)處理控件。以及使用自定義的動畫感知繪圖代碼繪制單個Bar的控件。還有一個浮動按鈕控件,用于啟動條形圖高度的動畫變化。

現(xiàn)在開始向我們的單個條形添加顏色,在Bar類的height字段下添加一個color字段,并且更新Bar.lerp以使其兩者兼容。在上一篇文章中,介紹過“l(fā)erp”是“線性內(nèi)插”或“線性插值”的一種簡短形式。

class Bar {
 Bar(this.height, this.color);
 final double height;
 final Color color;

 static Bar lerp(Bar begin, Bar end, double t) {
  return new Bar(
   lerpDouble(begin.height, end.height, t),
   Color.lerp(begin.color, end.color, t)
  );
 }
}

要在我們的應(yīng)用程序中使用彩色條形,需要更新BarChartPainter以從Bar獲取條形顏色。

class BarChartPainter extends CustomPainter {
 // ...
 @override
 void paint(Canvas canvas, Size size) {
  final bar = animation.value;
  final paint = new Paint()
   // 從Bar獲取條形顏色
   ..color = bar.color
   ..style = PaintingStyle.fill;
  // ...
 // ...
 }

在main.dart同級目錄下新建color_palette.dart文件,用于獲取顏色。

import 'package:flutter/material.dart';
import 'dart:math';

class ColorPalette {
 static final ColorPalette primary = new ColorPalette(<Color>[
  Colors.blue[400],
  Colors.red[400],
  Colors.green[400],
  Colors.yellow[400],
  Colors.purple[400],
  Colors.orange[400],
  Colors.teal[400],
 ]);

 ColorPalette(List<Color> colors) : _colors = colors {
  // bool isNotEmpty:如果此集合中至少有一個元素,則返回true
  assert(colors.isNotEmpty);
 }

 final List<Color> _colors;

 Color operator [](int index) => _colors[index % length];

 // 返回集合中的元素數(shù)量
 int get length => _colors.length;

 /*
 int nextInt(
  int max
 )
 生成一個非負隨機整數(shù),范圍從0到max(包括max)
  */
 Color random(Random random) => this[random.nextInt(length)];
}

我們將把Bar.empty和Bar.random工廠構(gòu)造函數(shù)放在Bar上。

class Bar {
 Bar(this.height, this.color);
 final double height;
 final Color color;

 factory Bar.empty() => new Bar(0.0, Colors.transparent);
 factory Bar.random(Random random) {
  return new Bar(
   random.nextDouble() * 100.0,
   ColorPalette.primary.random(random)
  );
 }

 static Bar lerp(Bar begin, Bar end, double t) {
  return new Bar(
    lerpDouble(begin.height, end.height, t),
    Color.lerp(begin.color, end.color, t)
  );
 }
}

在main.dart中,我們需要創(chuàng)建一個空的Bar和一個隨機的Bar。我們將為前者使用完全透明的顏色,后者將使用隨機顏色。

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
 // ...
 @override
 void initState() {
  // ...
  tween = new BarTween(new Bar.empty(), new Bar.random(random));
  animation.forward();
 }
 // ...
 void changeData() {
  setState(() {
   tween = new BarTween(
    tween.evaluate(animation),
    new Bar.random(random),
   );
   animation.forward(from: 0.0);
  });
 }
 // ...
}

現(xiàn)在應(yīng)用程序的效果如下圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android自定義View九宮格手勢密碼解鎖

    Android自定義View九宮格手勢密碼解鎖

    這篇文章主要為大家詳細介紹了Android自定義View九宮格手勢密碼解鎖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android平臺基于Pull方式對XML文件解析與寫入方法詳解

    Android平臺基于Pull方式對XML文件解析與寫入方法詳解

    這篇文章主要介紹了Android平臺基于Pull方式對XML文件解析與寫入方法,結(jié)合實例形式分析了Android基于Pull方式對xml文件解析及寫入操作的步驟、原理與操作技巧,需要的朋友可以參考下
    2016-10-10
  • Android中Handler消息傳遞機制

    Android中Handler消息傳遞機制

    這篇文章主要介紹了Android中Handler消息傳遞機制 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Android WorkManager淺談

    Android WorkManager淺談

    這篇文章主要介紹了Android WorkManager淺談,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Android自定義圖片集合

    Android自定義圖片集合

    這篇文章主要為大家分享了內(nèi)容相當(dāng)豐富的Android自定義圖片集合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Flutter 如何設(shè)置App的主色調(diào)與字體

    Flutter 如何設(shè)置App的主色調(diào)與字體

    App 開發(fā)過程中,肯定希望給用戶帶來一致的體驗,這其中最基礎(chǔ)的就是色調(diào)、字體保持一致。在 Flutter 中,可以設(shè)置全局的主題色調(diào)和字體,從而在其他頁面引用主色調(diào)和字體,實現(xiàn)頁面展示層面的一致。
    2021-05-05
  • 詳解Android中Handler的內(nèi)部實現(xiàn)原理

    詳解Android中Handler的內(nèi)部實現(xiàn)原理

    這篇文章主要介紹了Android中Handler的內(nèi)部實現(xiàn)原理,對Handler和消息循環(huán)的實現(xiàn)原理進行源碼分析,需要的朋友可以參考下
    2015-12-12
  • Android設(shè)計模式之適配器(Adapter)模式

    Android設(shè)計模式之適配器(Adapter)模式

    這篇文章主要介紹了Android設(shè)計模式之適配器(Adapter)模式,以源碼解析的方式分析適配器模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android事件分發(fā)機制深入刨析原理及源碼

    Android事件分發(fā)機制深入刨析原理及源碼

    Android?的事件分發(fā)機制大體可以分為三部分:事件生產(chǎn)、事件分發(fā)?、事件消費。事件的生產(chǎn)是由用戶點擊屏幕產(chǎn)生,我們這次著重分析事件的分發(fā)和消費,因為事件分發(fā)和處理聯(lián)系的過于緊密,這篇文章將把事件的分發(fā)和消費放在一起分析
    2023-04-04
  • Android界面上拉下拉的回彈效果實例代碼

    Android界面上拉下拉的回彈效果實例代碼

    這篇文章主要介紹了Android界面上拉下拉的回彈效果實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03

最新評論