最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Flutter制作一個(gè)火箭發(fā)射動(dòng)畫

 更新時(shí)間:2022年03月23日 15:57:20   作者:島上碼農(nóng)  
北京時(shí)間10月16日0時(shí)23分,神舟十三號(hào)飛船成功發(fā)射,為慶祝這一喜事,本文將用Flutter制作一個(gè)火箭發(fā)射動(dòng)畫,感興趣的小伙伴可以動(dòng)手試一試

前言

北京時(shí)間10月16日0時(shí)23分,神舟十三號(hào)飛船成功發(fā)射,目前三名航天員已經(jīng)順利進(jìn)駐空間站,開始為期6個(gè)月的“太空差旅”生活。

國(guó)家的航天技術(shù)的突飛猛進(jìn)也讓?shí)u上碼農(nóng)很自豪,今天看 Flutter 的動(dòng)畫知識(shí),看到了 AnimatedPositioned 這個(gè)組件,可以用于控制組件的相對(duì)位置移動(dòng)。結(jié)合這個(gè)神舟十三號(hào)的發(fā)射,靈機(jī)一動(dòng),正好可以使用AnimatedPositioned 這個(gè)組件實(shí)現(xiàn)火箭發(fā)射動(dòng)畫。話不多說(shuō),先上效果!

效果說(shuō)明

這里其實(shí)是兩張圖片疊加,一張是背景地球星空的背景圖,一張是火箭?;鸺诎l(fā)射過(guò)程中有兩個(gè)變化:

  • 高度越來(lái)越高,其實(shí)就是相對(duì)圖片背景圖底部的位置越來(lái)越大就可以實(shí)現(xiàn);
  • 尺寸越來(lái)越小,這個(gè)可以控制整個(gè)組件的尺寸實(shí)現(xiàn)。

然后是動(dòng)畫取消的選擇,火箭的速度是越來(lái)越快,試了幾個(gè) Flutter 自帶的曲線,發(fā)現(xiàn) easeInCubic 這個(gè)效果挺不錯(cuò)的,開始慢,后面越來(lái)越快,和火箭發(fā)射的過(guò)程是類似的。

AnimatedPositioned介紹

AnimatedPositioned組件的使用方式其實(shí)和 AnimatedContainer 類似。只是AnimatedPositionedPositioned 組件的替代。構(gòu)造方法定義如下:

const AnimatedPositioned({
    Key? key,
    required this.child,
    this.left,
    this.top,
    this.right,
    this.bottom,
    this.width,
    this.height,
    Curve curve = Curves.linear,
    required Duration duration,
    VoidCallback? onEnd,
  }) 

前面的參數(shù)和 Positioned 一樣,后面是動(dòng)畫控制參數(shù),這些參數(shù)的定義和 AnimatedContainer 的是一樣的:

  • curve:動(dòng)畫效果曲線;
  • duration:動(dòng)畫時(shí)長(zhǎng);
  • onEnd:動(dòng)畫結(jié)束后回調(diào)。

我們可以改變 lefttop,width等參數(shù)來(lái)實(shí)現(xiàn)動(dòng)畫過(guò)渡的效果。比如我們的火箭發(fā)射,就是修改 bottom (飛行高度控制)和 width (尺寸大小控制)來(lái)實(shí)現(xiàn)的。

火箭發(fā)射動(dòng)畫實(shí)現(xiàn)

有了上面的兩個(gè)分析,火箭發(fā)射動(dòng)畫就簡(jiǎn)單了!完整代碼如下:

class RocketLaunch extends StatefulWidget {
  RocketLaunch({Key? key}) : super(key: key);

  @override
  _RocketLaunchState createState() => _RocketLaunchState();
}

class _RocketLaunchState extends State<RocketLaunch> {
  var rocketBottom = -80.0;
  var rocketWidth = 160.0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('火箭發(fā)射'),
        brightness: Brightness.dark,
        backgroundColor: Colors.black,
      ),
      backgroundColor: Colors.black,
      body: Center(
        child: Stack(
          alignment: Alignment.bottomCenter,
          children: [
            Image.asset(
              'images/earth.jpeg',
              height: double.infinity,
              fit: BoxFit.fill,
            ),
            AnimatedPositioned(
              child: Image.asset(
                'images/rocket.png',
                fit: BoxFit.fitWidth,
              ),
              bottom: rocketBottom,
              width: rocketWidth,
              duration: Duration(seconds: 5),
              curve: Curves.easeInCubic,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Text(
          '發(fā)射',
          style: TextStyle(
            color: Colors.white,
          ),
          textAlign: TextAlign.center,
        ),
        onPressed: () {
          setState(() {
            rocketBottom = MediaQuery.of(context).size.height;
            rocketWidth = 40.0;
          });
        },
      ),
    );
  }
}

其中一開始設(shè)置 bottom 為負(fù)值,是為了隱藏火箭的焰火,這樣會(huì)更有感覺(jué)一些。然后就是在點(diǎn)擊發(fā)射按鈕的時(shí)候,通過(guò) setState 更改底部距離和火箭尺寸就可以搞定了。

總結(jié)

通過(guò)神舟十三飛船發(fā)射,來(lái)一個(gè)火箭動(dòng)畫是不是挺有趣?其實(shí)這篇主要的知識(shí)點(diǎn)還是介紹 AnimatedPositioned 的應(yīng)用。通過(guò) AnimatedPositioned可以實(shí)現(xiàn)很多層疊組件的相對(duì)移動(dòng)變化效果,比如進(jìn)度條的滑塊,滑動(dòng)開關(guān)等。各位 Flutter 玩家也可以利用 AnimatedPositioned 這個(gè)組件自己來(lái)玩一下好玩的動(dòng)畫效果哦!

到此這篇關(guān)于基于Flutter制作一個(gè)火箭發(fā)射動(dòng)畫的文章就介紹到這了,更多相關(guān)Flutter火箭發(fā)射動(dòng)畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flutter控制組件顯示和隱藏三種方式詳解

    Flutter控制組件顯示和隱藏三種方式詳解

    這篇文章主要為大家介紹了Flutter控制組件顯示和隱藏三種方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android側(cè)滑導(dǎo)航欄的實(shí)例代碼

    Android側(cè)滑導(dǎo)航欄的實(shí)例代碼

    這篇文章主要介紹了Android側(cè)滑導(dǎo)航欄的實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 打造酷炫的AndroidStudio插件

    打造酷炫的AndroidStudio插件

    這篇文章主要為大家詳細(xì)介紹了如何打造酷炫的AndroidStudio插件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android自動(dòng)獲取輸入短信驗(yàn)證碼庫(kù)AutoVerifyCode詳解

    Android自動(dòng)獲取輸入短信驗(yàn)證碼庫(kù)AutoVerifyCode詳解

    這篇文章主要為大家詳細(xì)介紹了Android自動(dòng)獲取輸入短信驗(yàn)證碼庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android中TextView實(shí)現(xiàn)超過(guò)固定行數(shù)顯示“...展開全部”

    Android中TextView實(shí)現(xiàn)超過(guò)固定行數(shù)顯示“...展開全部”

    這篇文章主要給大家介紹了關(guān)于Android中TextView如何實(shí)現(xiàn)超過(guò)固定行數(shù)顯示"...展開全部"的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Android自定義View繪圖實(shí)現(xiàn)拖影動(dòng)畫

    Android自定義View繪圖實(shí)現(xiàn)拖影動(dòng)畫

    這篇文章主要介紹了Android自定義View繪圖實(shí)現(xiàn)拖影動(dòng)畫,,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android 操作系統(tǒng)獲取Root權(quán)限 原理詳細(xì)解析

    Android 操作系統(tǒng)獲取Root權(quán)限 原理詳細(xì)解析

    許多機(jī)友新購(gòu)來(lái)的Android機(jī)器沒(méi)有破解過(guò)Root權(quán)限,無(wú)法使用一些需要高權(quán)限的軟件,以及進(jìn)行一些高權(quán)限的操作,其實(shí)破解手機(jī)Root權(quán)限是比較簡(jiǎn)單及安全的,破解Root權(quán)限的原理就是在手機(jī)的/system/bin/或/system/xbin/目錄下放置一個(gè)可執(zhí)行文件“su”
    2013-10-10
  • 詳解Android應(yīng)用中ListView列表選項(xiàng)欄的編寫方法

    詳解Android應(yīng)用中ListView列表選項(xiàng)欄的編寫方法

    這篇文章主要介紹了Android應(yīng)用中ListView列表選項(xiàng)欄的編寫方法,講解了使用安卓自帶的ListView與自定義multiple ListView的方法,需要的朋友可以參考下
    2016-03-03
  • Android View滑動(dòng)的實(shí)現(xiàn)分析示例

    Android View滑動(dòng)的實(shí)現(xiàn)分析示例

    View滑動(dòng)是Android實(shí)現(xiàn)自定義控件的基礎(chǔ),同時(shí)在開發(fā)中難免會(huì)遇到View的滑動(dòng)處理,其實(shí)不管是那種滑動(dòng)方法,基本思路是類似的;當(dāng)點(diǎn)擊事件傳到View時(shí),系統(tǒng)記下觸摸點(diǎn)的坐標(biāo),手指移動(dòng)時(shí)系統(tǒng)記下移動(dòng)后的左邊并算出偏移量,通過(guò)偏移量來(lái)修改View的坐標(biāo)
    2022-08-08
  • Flutter利用ORM框架管理數(shù)據(jù)庫(kù)詳解

    Flutter利用ORM框架管理數(shù)據(jù)庫(kù)詳解

    使用?ORM?框架最大的好處是簡(jiǎn)化了數(shù)據(jù)庫(kù)維護(hù)的代碼量,使得我們可以專注于業(yè)務(wù)代碼實(shí)現(xiàn)。本篇,我們看看如何使用ORM框架管理數(shù)據(jù)庫(kù)版本遷移,需要的可以參考一下
    2023-04-04

最新評(píng)論

永川市| 封开县| 三穗县| 松溪县| 巴南区| 丹江口市| 陕西省| 屯昌县| 枝江市| 玛曲县| 铜川市| 汉川市| 徐汇区| 石城县| 左权县| 呈贡县| 嘉善县| 图木舒克市| 达尔| 南和县| 阳东县| 柳河县| 从江县| 密山市| 大埔县| 巴马| 巧家县| 柳林县| 景泰县| 增城市| 黄冈市| 仙游县| 习水县| 秦皇岛市| 乌苏市| 甘孜| 霍山县| 沈丘县| 剑阁县| 宁强县| 乌什县|