<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們介紹了幾篇 Flutter 的動畫控制類,相信大家對動畫也有了一定的瞭解,可以通過這些基礎的動畫控制類實現自己想要的動畫效果。在 Flutter 中也提供了一些封裝好的動畫元件,以便我們快速應用。本篇我們來介紹漸現效果 —— AnimatedOpacity
。
顧名思義,AnimatedOpacity
就是用於動態展示元件的透明度。實際上,它實現的是將其子元件的透明度動態地從初始值過渡到指定值的動畫效果。AnimatedOpacity
的構造方法如下:
const AnimatedOpacity({ Key? key, this.child, required this.opacity, Curve curve = Curves.linear, required Duration duration, VoidCallback? onEnd, this.alwaysIncludeSemantics = false, })
對應的引數為:
child
:要控制透明度的子元件;opacity
:最終的透明度值,需要是介於0-1之間的值;curve
:動效曲線,預設是線性的Curves.linear
,可以使用 Curves
來構建曲線效果;duration
:動效時長;alwaysIncludeSemantics
:是否總是包含語意資訊,預設是 false
。這個主要是用於輔助存取的,如果是 true
,則不管透明度是多少,都會顯示語意資訊(可以輔助朗讀),這對於視障人員來說會更友好。onEnd
:動畫結束回撥方法。應用來說就很簡單了,只需要把需要漸現的元件作為 AnimatedOpacity
的子元件,然後在發生事件到時候更改透明度即可。我們實現下面的圖片漸現效果。
透明度漸變.gif
實現程式碼如下:
class AnimatedOpacityDemo extends StatefulWidget { const AnimatedOpacityDemo({Key? key}) : super(key: key); @override _AnimatedOpacityDemoState createState() => _AnimatedOpacityDemoState(); } class _AnimatedOpacityDemoState extends State<AnimatedOpacityDemo> { var opacity = 0.0; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('AnimatedOpacity 動畫'), ), body: Center( child: Stack( alignment: Alignment.center, children: [ Text('小姐姐在哪'), AnimatedOpacity( duration: Duration(seconds: 3), opacity: opacity, child: ClipOval( child: Image.asset( 'images/beauty.jpeg', width: 300, height: 300, ), ), curve: Curves.ease, ), ], ), ), floatingActionButton: FloatingActionButton( child: Text( opacity == 0 ? 'Show' : 'Hide', style: TextStyle( color: Colors.white, ), textAlign: TextAlign.center, ), onPressed: () { setState(() { opacity = opacity == 0 ? 1.0 : 0.0; }); }, ), ); } }
在相簿類應用中,我們經常會看到一張圖片逐漸漸變為另一張圖片,從而提供更好的圖片瀏覽體驗,甚至造成一種時光如梭的感覺。這種效果可以使用 AnimatedOpactity
實現。將一張圖片的透明度逐漸降低到0,另一張的透明度逐漸升高到1,從而可以實現圖片漸變過渡的效果,例如下面的效果,是不是感覺小姐姐由清純風變成高冷風的過渡更自然?
小姐姐風格變化.gif
實現的方式其實就是使用 Stack將兩張圖片堆疊在一起,然後讓兩張圖片的透明度往相反的方向變化就可以實現這樣的效果了,程式碼如下:
class _SwtichImageDemoState extends State<SwtichImageDemo> { var opacity1 = 1.0; var opacity2 = 0.0; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('圖片切換'), brightness: Brightness.dark, backgroundColor: Colors.black, ), backgroundColor: Colors.black, body: Center( child: Stack( alignment: Alignment.center, children: [ AnimatedOpacity( duration: Duration(milliseconds: 5000), opacity: opacity1, child: ClipOval( child: Image.asset( 'images/beauty.jpeg', width: 300, height: 300, ), ), curve: Curves.ease, ), AnimatedOpacity( duration: Duration(milliseconds: 5000), opacity: opacity2, child: ClipOval( child: Image.asset( 'images/beauty2.jpeg', width: 300, height: 300, ), ), curve: Curves.ease, ), ], ), ), floatingActionButton: FloatingActionButton( child: Text( '變', style: TextStyle( color: Colors.white, ), textAlign: TextAlign.center, ), onPressed: () { setState(() { opacity1 = 0.0; opacity2 = 1.0; }); }, ), ); } }
本篇介紹了 Flutter 自帶的漸現動畫元件 AnimatedOpacity
的使用,藉助 AnimatedOpacity
可以簡化漸現動畫的實現,比如一個元件的消失動畫,兩張圖片的漸現切換過渡等效果。
以上就是Flutter使用AnimatedOpacity實現圖片漸現動畫的詳細內容,更多關於Flutter圖片漸現動畫的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45