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

Android?Flutter實(shí)現(xiàn)頁面切換轉(zhuǎn)場動畫效果

 更新時(shí)間:2022年06月01日 10:22:17   作者:島上碼農(nóng)  
Hero組件非常適合從列表、概覽頁切換到詳情頁轉(zhuǎn)場動畫場合。本文將利用Hero組件制作一個(gè)簡單的頁面切換轉(zhuǎn)場動畫效果,感興趣的可以了解一下

前言

寫了一篇基礎(chǔ)的性能優(yōu)化的內(nèi)容,繼續(xù)我們的動畫相關(guān)的介紹。今天的主角是英雄 —— Hero 組件。Hero 組件非常適合從列表、概覽頁切換到詳情頁轉(zhuǎn)場動畫場合。因?yàn)榭梢詫蓚€(gè)頁面的組件串起來動畫,體驗(yàn)上會覺得整個(gè)操作的連貫性非常好。下面是我們這篇要做的一個(gè)效果。

屏幕錄制2021-11-09 下午9.39.49.gif

Hero 動畫過程

Hero 本質(zhì)是是在不同的路由頁面做了一個(gè)中轉(zhuǎn)層,然后通過動畫完成過渡,下面用4張圖是官方演示的過程。

動畫開始前,會準(zhǔn)備一個(gè)空的遮罩層(Overlay)。此時(shí)目標(biāo)路由頁面還沒生成。

轉(zhuǎn)場前

t = 0.0,即動畫開始時(shí),源頁面已經(jīng)從屏幕消失,遮罩層出現(xiàn)在屏幕上,此時(shí)目標(biāo)路由頁面已經(jīng)構(gòu)建好,并且在遮罩層下方不可見。但此時(shí) Flutter 渲染引擎已經(jīng)計(jì)算出從遮罩層到目標(biāo)路由頁面的動畫路徑。

起始階段

動畫過程中,英雄飛起來,逐步飛到目標(biāo)頁面。使用的是Tween<Rect>方式更改外形和位置,默認(rèn)是使用 MaterialRectArcTween 對象完成動畫。

飛行過程

動畫結(jié)束:遮罩層消失,只剩下目標(biāo)路由頁面。而源頁面恢復(fù)到它對應(yīng)的路由狀態(tài)(以便返回時(shí)使用逆向的動畫)。

動畫結(jié)束

Hero 基礎(chǔ)示例

下面來看我們本篇?jiǎng)赢嬓Ч膶?shí)現(xiàn)。對于 Hero 最簡單的應(yīng)用,就是前后兩個(gè)路由頁面的 Hero 組件使用相同的 tag 標(biāo)識,然后所有動畫都交給 Hero 來完成了 —— 果然是超級英雄,啥都不用我們管!當(dāng)然,為了用戶體驗(yàn),前后兩個(gè)頁面的組件最好是具有相同的內(nèi)容(比如圖片),然后如果組件樹結(jié)構(gòu)是一致的話效果更好。

我們這個(gè)示例的第一個(gè)頁面就是兩張小尺寸的圖片,這里的關(guān)鍵是 Hero 組件的 tag 標(biāo)簽,兩張圖片使用了不同的 tag,這是因?yàn)橥粋€(gè)頁面的多個(gè) Hero 不能共用 tag 。

Widget?build(BuildContext?context)?{
??return?Scaffold(
????appBar:?AppBar(
??????title:?Text('Hero?基礎(chǔ)動畫'),
??????brightness:?Brightness.dark,
????),
????body:?Center(
??????child:?Row(
????????mainAxisAlignment:?MainAxisAlignment.spaceEvenly,
????????crossAxisAlignment:?CrossAxisAlignment.center,
????????children:?[
??????????Hero(
????????????tag:?'beauty1',
????????????child:?RoundImage(
??????????????onTap:?()?{
????????????????Navigator.of(context).push(
??????????????????MaterialPageRoute(
????????????????????builder:?(context)?=>?HeroDetail(
??????????????????????tag:?'beauty1',
??????????????????????assetImageName:?'images/beauty.jpeg',
????????????????????),
??????????????????),
????????????????);
??????????????},
??????????????assetImageName:?'images/beauty.jpeg',
??????????????imageSize:?80.0,
????????????),
??????????),
??????????//?省略圖片2
????????],
??????),
????),
??);
}

詳情頁面只有一個(gè)居中的圖片,也是用的 Hero 組件。只是為了和源頁面一致,這里的 tag,圖片資源都是由源頁面?zhèn)鬟f進(jìn)來。

class?HeroDetail?extends?StatelessWidget?{
??final?String?tag;
??final?String?assetImageName;
??const?HeroDetail({Key??key,?required?this.tag,?required?this.assetImageName})
??????:?super(key:?key);

??@override
??Widget?build(BuildContext?context)?{
????return?Scaffold(
??????appBar:?AppBar(
????????title:?Text('Hero?基礎(chǔ)動畫詳情'),
????????brightness:?Brightness.dark,
??????),
??????body:?Center(
????????child:?SizedBox(
??????????width:?200,
??????????height:?200,
??????????child:?Hero(
????????????tag:?this.tag,
????????????child:?RoundImage(
??????????????onTap:?()?{
????????????????Navigator.of(context).pop();
??????????????},
??????????????assetImageName:?this.assetImageName,
??????????????imageSize:?200.0,
????????????),
??????????),
????????),
??????),
????);
??}
}

這樣就完成了我們前面的轉(zhuǎn)場動畫效果,源碼已上傳至:動畫相關(guān)源碼。怎么樣?有了 Hero之后,是不是感覺英雄救場一樣,讓你的轉(zhuǎn)場輕松多了!

總結(jié)

本篇介紹了 Hero 動畫的基本過程和基礎(chǔ)示例。借助 Hero,對于我們很多場景可以讓轉(zhuǎn)場效果更好,比如說從商品列表切換到商品詳情,從資訊列表到資訊詳情。都可以給用戶帶來更好的體驗(yàn)。

以上就是Android Flutter實(shí)現(xiàn)頁面切換轉(zhuǎn)場動畫效果的詳細(xì)內(nèi)容,更多關(guān)于Android Flutter頁面切換轉(zhuǎn)場動畫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android自定義控件基本原理詳解(一)

    Android自定義控件基本原理詳解(一)

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件基本原理,了解一下自定義控件的要求和實(shí)現(xiàn)的基本原理,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android 自定義 View 中使用 Spannable的實(shí)例詳解

    Android 自定義 View 中使用 Spannable的實(shí)例詳解

    這篇文章主要介紹了Android 自定義 View 中使用 Spannable的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Android WebView使用的技巧與一些坑

    Android WebView使用的技巧與一些坑

    這篇文章主要為大家詳細(xì)介紹了Android WebView使用的技巧與一些坑,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android 保存Fragment 切換狀態(tài)實(shí)例代碼

    Android 保存Fragment 切換狀態(tài)實(shí)例代碼

    本文主要介紹Android Fragment的應(yīng)用,這里給大家用實(shí)例代碼詳細(xì)介紹了Android Fragment 切換狀態(tài),有需要的小伙伴可以參考下
    2016-07-07
  • Android自定義View實(shí)現(xiàn)角度選擇器

    Android自定義View實(shí)現(xiàn)角度選擇器

    前幾天在Google Photos查看照片,用了一下它的圖片剪裁功能,于是我馬上就被其界面和操作吸引。后來想模仿做一個(gè)和Google Photos裁圖頁面幾乎一模一樣的角度選擇器,本文比較基礎(chǔ),在閱讀本文前只需要掌握最基礎(chǔ)的自定義View知識和Android事件知識。下面來一起學(xué)習(xí)下吧。
    2016-11-11
  • Listview加載的性能優(yōu)化是如何實(shí)現(xiàn)的

    Listview加載的性能優(yōu)化是如何實(shí)現(xiàn)的

    在android開發(fā)中Listview是一個(gè)很重要的組件,它以列表的形式根據(jù)數(shù)據(jù)的長自適應(yīng)展示具體內(nèi)容,用戶可以自由的定義listview每一列的布局,接下來通過本文給大家介紹Listview加載的性能優(yōu)化是如何實(shí)現(xiàn)的,對listview性能優(yōu)化相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Android中Activity啟動默認(rèn)不顯示輸入法解決方法

    Android中Activity啟動默認(rèn)不顯示輸入法解決方法

    這篇文章主要介紹了Android中Activity啟動默認(rèn)不顯示輸入法解決方法,一般是因?yàn)榘琧heckbox控件導(dǎo)致Activity啟動默認(rèn)不顯示輸入法,本文給出了正確解決方法,需要的朋友可以參考下
    2015-06-06
  • Android獲得內(nèi)/外置存儲卡路徑的方法

    Android獲得內(nèi)/外置存儲卡路徑的方法

    我們知道Android上一般都有外置的存儲卡,內(nèi)置存儲卡路徑大家都知道怎么獲得的。那么如何獲取外置存儲卡的位置呢?下面小編通過本文給大家分享下
    2017-01-01
  • Android中使用ZXing生成二維碼(支持添加Logo圖案)

    Android中使用ZXing生成二維碼(支持添加Logo圖案)

    ZXing是谷歌的一個(gè)開源庫,可以用來生成二維碼、掃描二維碼。接下來通過本文給大家介紹Android中使用ZXing生成二維碼(支持添加Logo圖案),需要的朋友參考下
    2017-01-01
  • Android自定義字母導(dǎo)航欄

    Android自定義字母導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了Android自定義字母導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論