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

Android實現(xiàn)流動的漸變色邊框效果

 更新時間:2022年06月15日 09:11:01   作者:島上碼農(nóng)  
本文將帶大家學習一下如何利用toast中的motion_toast組件實現(xiàn)一個流動的漸變色邊框效果,文中的示例代碼講解詳細,快跟隨小編一起學習學習吧

前言

記得在介紹 motion_toast 一篇的時候,開篇有一張動圖,邊框是漸變色而且感覺是流動的。這個動效挺有趣的,當時也有人問怎么實現(xiàn),經(jīng)過上一篇《讓你的聊天氣泡豐富多彩!》后,有了實現(xiàn)思路了。

實現(xiàn)思路

首先要實現(xiàn)但是漸變色邊框,這個其實可以參考上一篇的CustomPaint 的漸變填充實現(xiàn)。繪制一個矩形邊框,然后讓漸變色的區(qū)域填充到矩形區(qū)域內(nèi)就可以了。

void paint(Canvas canvas, Size size) {
  final rectWidth = 300.0, rectHeight = 100.0;
  Rect rect = Offset(
          size.width / 2 - rectWidth / 2, size.height / 2 - rectHeight / 2) &
      Size(rectWidth, rectHeight);
  final paint = Paint()
    ..shader = LinearGradient(
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
      colors: colors,
      ),
    ).createShader(rect)
    ..style = PaintingStyle.stroke
    ..strokeWidth = 8.0;
  canvas.drawRect(rect, paint);
}

繪制出來的效果如下圖所示。

然后是讓漸變色流動起來,這里就需要動畫了,通過動畫控制漸變填充的角度,周而復始就能夠形成不斷流動的效果。這里還是要用到 LinearGradienttransform 屬性。Flutter 內(nèi)置了一個GradientRotation旋轉(zhuǎn)變換的類,正好可以進行角度變換實現(xiàn)角度控制,GradientRotation 接收一個角度值實現(xiàn)對漸變的角度控制,下面是0度和90度的對比圖,可以看到0度到90度邊框的漸變色起始位置正好是旋轉(zhuǎn)了90度。

有了以上兩個基礎,我們通過一個 Animation 對象動畫過程中的值來控制旋轉(zhuǎn)角度就可以了。

void paint(Canvas canvas, Size size) {
  final rectWidth = 300.0, rectHeight = 100.0;
  Rect rect = Offset(
          size.width / 2 - rectWidth / 2, size.height / 2 - rectHeight / 2) &
      Size(rectWidth, rectHeight);
  final paint = Paint()
    ..shader = LinearGradient(
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
      colors: colors,
      transform: GradientRotation(
        animation * 2 * pi,
      ), //改變 transform 值實現(xiàn)漸變旋轉(zhuǎn)效果
    ).createShader(rect)
    ..style = PaintingStyle.stroke
    ..strokeWidth = 8.0;
  canvas.drawRect(rect, paint);
}

動畫配置代碼如下,2秒旋轉(zhuǎn)一周,使用 Curves.linear 實現(xiàn)勻速旋轉(zhuǎn)。

class _GradientBoundDemoState extends State<GradientBoundDemo>
    with SingleTickerProviderStateMixin {
  late Animation<double> animation;
  late AnimationController controller;

  @override
  void initState() {
    super.initState();
    controller =
        AnimationController(duration: const Duration(seconds: 2), vsync: this);
    animation = Tween<double>(begin: 0, end: 1.0).animate(CurvedAnimation(
      parent: controller,
      curve: Curves.linear,
    ))
      ..addListener(() {
        setState(() {});
      });
    controller.repeat();
  }
  
  //...
}

實現(xiàn)的效果如下所示。

調(diào)整一下顏色和 LinearGradientbeginend 參數(shù),還可以實現(xiàn)一些有趣的效果。下面這個效果就和開篇那個效果有點接近了。

如果是畫成圓圈邊框的話,做 Loading 效果其實也不錯。

源碼已經(jīng)提交至:繪圖相關源碼,文件名為:gradient_bound_demo.dart。

總結(jié)

本篇介紹了自定義繪制漸變色邊框,并通過動畫實現(xiàn)流動的效果,繪圖加動畫組合能夠?qū)崿F(xiàn)很多既有創(chuàng)意又有取的效果,大家也可以嘗試一下看看有哪些有趣的玩法。

到此這篇關于Android實現(xiàn)流動的漸變色邊框效果的文章就介紹到這了,更多相關Android漸變色邊框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android編程之SMS讀取短信并保存到SQLite的方法

    Android編程之SMS讀取短信并保存到SQLite的方法

    這篇文章主要介紹了Android編程之SMS讀取短信并保存到SQLite的方法,涉及Android針對SMS短信及SQLite數(shù)據(jù)庫的相關操作技巧,需要的朋友可以參考下
    2015-11-11
  • Android 讀取Properties配置文件的小例子

    Android 讀取Properties配置文件的小例子

    這篇文章主要介紹了Android 讀取Properties配置文件的小例子,有需要的朋友可以參考一下
    2014-01-01
  • 詳解Kotlin Android開發(fā)中的環(huán)境配置

    詳解Kotlin Android開發(fā)中的環(huán)境配置

    這篇文章主要介紹了詳解Kotlin Android開發(fā)中的環(huán)境配置的相關資料,需要的朋友可以參考下
    2017-06-06
  • Android中的SpannableString與SpannableStringBuilder詳解

    Android中的SpannableString與SpannableStringBuilder詳解

    這篇文章主要給大家介紹了關于Android中SpannableString與SpannableStringBuilder的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • Android事件沖突解決懸浮窗拖拽處理方案

    Android事件沖突解決懸浮窗拖拽處理方案

    這篇文章主要為大家介紹了Android事件沖突解決懸浮窗拖拽處理方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android項目中引用本地aar文件的方法

    Android項目中引用本地aar文件的方法

    這篇文章主要介紹了Android項目中引用本地aar文件的方法,本文講解了什么是aar文件、導出aar文件方法、引用本地的aar文件方法等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Android帶清除按鈕、密碼可見小眼睛的輸入框

    Android帶清除按鈕、密碼可見小眼睛的輸入框

    這篇文章主要介紹了Android帶清除按鈕、密碼可見小眼睛的輸入框,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 適配AndroidQ拍照和讀取相冊圖片的實現(xiàn)方法

    適配AndroidQ拍照和讀取相冊圖片的實現(xiàn)方法

    這篇文章主要介紹了適配AndroidQ拍照和讀取相冊圖片的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 詳解如何在Flutter中使用媒體播放器

    詳解如何在Flutter中使用媒體播放器

    現(xiàn)在的app功能越來越強大,除了基本的圖文之外,還需要各種各樣的其他的功能,比如視頻,和直播,那么如何在flutter中使用媒體播放器呢?一起來看看吧
    2023-03-03
  • Android相機管理工具類

    Android相機管理工具類

    這篇文章主要為大家詳細介紹了Android相機管理工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評論

浏阳市| 綦江县| 桦川县| 秀山| 永登县| 黑龙江省| 广东省| 莎车县| 海口市| 海丰县| 维西| 古浪县| 包头市| 怀来县| 同德县| 丰镇市| 家居| 沐川县| 庐江县| 民乐县| 钟祥市| 肇源县| 温州市| 咸阳市| 南京市| 黑河市| 贺兰县| 仁布县| 亳州市| 读书| 黄平县| 遵义县| 章丘市| 琼中| 安达市| 合山市| 甘谷县| 奉化市| 五莲县| 吴旗县| 依兰县|