Android利用Badge組件實現(xiàn)未讀消息小紅點
前言
在 App 的運營中,活躍度是一個重要的指標,日活/月活……為了提高活躍度,就發(fā)明了小紅點,然后讓強迫癥用戶“沒法活”。
小紅點雖然很討厭,但是為了 KPI,程序員也不得不屈從運營同學的逼迫(討好),得想辦法實現(xiàn)。這一篇,來介紹一個徽標(Badge)組件,能夠快速搞定應用內的小紅點。
Badge 組件
Badge
組件被 Flutter 官方推薦,利用它讓小紅點的實現(xiàn)非常輕松,只需要2個步驟就能搞定。
1.引入依賴
在 pubspec.yaml
文件種引入相應版本的依賴,如下所示。
badges: ^2.0.3
2.將需要使用小紅點的組件使用 Badge 作為上級組件,設置小紅點的位置、顯示內容、顏色(沒錯,也可以改成小藍點)等參數(shù),示例代碼如下所示。
Badge( badgeContent: Text('3'), position: BadgePosition.topEnd(top: -10, end: -10), badgeColor: Colors.blue, child: Icon(Icons.settings), )
position
可以設置徽標在組件的相對位置,包括右上角(topEnd
)、右下角(bottomEnd
)、左上角(topStart
)、左下角(bottomStart
)和居中(center
)等位置。并可以通過調整垂直方向和水平方向的相對位置來進行位置的細微調整。當然,Badge
組件考慮了很多應用場景,因此還有其他的一些參數(shù):
elevation
:陰影偏移量,默認為2,可以設置為0消除陰影;gradient
:漸變色填充背景;toAnimate
:徽標內容改變后是否啟用動效哦,默認有動效。shape
:徽標的形狀,默認是原型,也可以設置為方形,設置為方形的時候可以使用borderRadius
屬性設置圓角弧度。borderRadius
:圓角的半徑。animationType
:內容改變后的動畫類型,有漸現(xiàn)(fade)、滑動(slide)和縮放(scale)三種效果。showBadge
:是否顯示徽標,我們可以利用這個控制小紅點的顯示與否,比如沒有提醒的時候該值設置為false
即可隱藏掉小紅點。
總的來說,這些參數(shù)能夠滿足所有需要使用徽標的場景了。
實例
我們來看一個實例,我們分別在導航欄右上角、內容區(qū)和底部導航欄使用了三種類型的徽標,實現(xiàn)效果如下。
其中導航欄的代碼如下,這是 Badge
最簡單的實現(xiàn)方式了。
AppBar( title: const Text('Badge Demo'), actions: [ Badge( showBadge: _badgeNumber > 0, padding: const EdgeInsets.all(4.0), badgeContent: Text( _badgeNumber < 99 ? _badgeNumber.toString() : '99+', textAlign: TextAlign.center, style: const TextStyle( color: Colors.white, fontSize: 11.0, ), ), position: BadgePosition.topEnd(top: 4, end: 4), child: IconButton( onPressed: () {}, icon: const Icon( Icons.message_outlined, color: Colors.white, ), ), ), ], ),
內容區(qū)的徽標代碼如下,這里使用了漸變色填充,動畫形式為縮放,并且將徽標放到了左上角,注意如果使用了漸變色那么會覆蓋 badgeColor
指定的背景色。
Badge( showBadge: _badgeNumber > 0, padding: const EdgeInsets.all(6.0), badgeContent: Text( _badgeNumber < 99 ? _badgeNumber.toString() : '99+', textAlign: TextAlign.center, style: const TextStyle( color: Colors.white, fontSize: 10.0, ), ), position: BadgePosition.topStart(top: -10, start: -10), badgeColor: Colors.blue, animationType: BadgeAnimationType.scale, elevation: 0.0, gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Colors.red, Colors.orange, Colors.green, ], ), child: Image.asset( 'images/girl.jpeg', width: 200, height: 200, ), ),
底部導航欄的代碼如下所示,這里需要注意,Badge
組件會根據(jù)內容區(qū)的尺寸自動調節(jié)大小,底部導航欄的顯示控件有限,推薦使用小紅點(不用數(shù)字標識)即可。
BottomNavigationBar(items: [ BottomNavigationBarItem( icon: Badge( showBadge: _badgeNumber > 0, padding: const EdgeInsets.all(2.0), badgeContent: Text( _badgeNumber < 99 ? _badgeNumber.toString() : '99+', textAlign: TextAlign.center, style: const TextStyle( color: Colors.white, fontSize: 11.0, ), ), position: BadgePosition.topEnd(top: -4, end: -6), animationType: BadgeAnimationType.fade, child: const Icon(Icons.home_outlined)), label: '首頁', ), const BottomNavigationBarItem( icon: Icon( Icons.star_border, ), label: '推薦', ), const BottomNavigationBarItem( icon: Icon( Icons.account_circle_outlined, ), label: '我的', ), ]),
總結
本篇介紹了使用 Badge
組件實現(xiàn)小紅點徽標組件??梢钥吹剑?code>Badge 組件的使用非常簡單,相比我們自己從零寫一個 Badge
組件來說,使用它可以讓我們省時省力、快速地完成運營同學要的小紅點。本篇源碼已上傳至:實用組件相關代碼。
到此這篇關于Android利用Badge組件實現(xiàn)未讀消息小紅點的文章就介紹到這了,更多相關Android Badge組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于VSTS的Xamarin.Android持續(xù)集成步驟詳解
這篇文章主要介紹了基于VSTS的Xamarin.Android持續(xù)集成步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04Kotlin創(chuàng)建一個好用的協(xié)程作用域
這篇文章主要介紹了Kotlin創(chuàng)建一個好用的協(xié)程作用域,kotlin中使用協(xié)程,是一定要跟協(xié)程作用域一起配合使用的,否則可能協(xié)程的生命周期無法被準確控制,造成內存泄漏或其他問題2022-07-07基于Android引入IjkPlayer無法播放mkv格式視頻的解決方法
下面小編就為大家分享一篇基于Android引入IjkPlayer無法播放mkv格式視頻的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01RxJava 1升級到RxJava 2過程中踩過的一些“坑”
RxJava2相比RxJava1,它的改動還是很大的,那么下面這篇文章主要給大家總結了在RxJava 1升級到RxJava 2過程中踩過的一些“坑”,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下來要一起看看吧。2017-05-05