首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【翻译】MotionLayout实现折叠工具栏(Part 2)

本系列教程,我会讲解如何使用 MotionLayout 来创建一个我们已经非常熟悉的动画行为:一个折叠工具栏动画( a Collapsing Toolbar )。...让我们先看下 CoordinatorLayout 版本的实现效果,注意图片在工具栏几乎快要完全折叠之前是不会开始渐变到主色彩动画的: ?...现在我们看看 MotionLayout 的实现,我们会发现图片渐变在整个过渡动画中是统一稳定的。也就是说:随着工具栏折叠动画的开始,图片便立刻发生渐变,一直持续到工具栏完全到达折叠状态: ?...因此我们得到的是一个非常平滑的过渡动画,从工具栏开始发生折叠一直到工具栏完全达到折合状态为止。这也很好的解释了我们所看到的 MotionLayout 对动画行为的实现。...最终标题文本会走在工具栏折叠动画之前,接着折叠完全结束的时候直接回落到正确的位置上: ?

1.6K30

【翻译】MotionLayout实现折叠工具栏(Part 1)

【翻译】MotionLayout实现折叠工具栏(Part 1) 2018-08-13 by Liuqingwen | Tags: Android 翻译 | Hits ?...本系列教程,我会讲解如何使用 MotionLayout 来创建一个我们已经非常熟悉的动画行为:一个折叠工具栏动画( a Collapsing Toolbar )。...我们开始之前,有必要在这里澄清一下: CoordinatorLayout 中使用 CollapsingToolbarLayout 来实现折叠工具栏是没任何问题的。...当然实际 App 开发过程我应该会使用 AppBarLayout 布局配合 Toolbar 控件吧。 如果在设计视图中查看这个布局,我们能看到布局所展示的工具栏处于展开的状态: ?...展开和折叠状态下, RecyclerView 列表的上边缘是处于不同位置的,因为它被约束到了 ID 为 toolbar_image 的 ImageView 图片下边缘,而这个过渡动画的实现正是由于控制着这个位置变量的值

1.9K31
您找到你想要的搜索结果了吗?
是的
没有找到

利用flutter_downloader插件Flutter实现文件下载

后期我也会不定时更新一些和Flutter有关的文章,希望大家可以多多支持。本文记录的便是我利用Flutter实现文件下载功能的过程。...接下来我们可以 Terminal 输入 flutter packagesget或者点击 IDE 左上角的 Packagesget字样安装依赖。 ?...实现文件读写的插件,Flutter中文网对该插件有着详细的介绍(https://flutterchina.club/reading-writing-files/),这里我们需要明白一个问题,就是iOS...这个插件可以实现后台下载,分别基于 Android 的 WorkManager 和 iOS 的 NSURLSessionDownloadTask 实现的。...插件配置 iOS端配置 启用 background mode 想要执行这一步,我们Xcode打开该项目的 iOS module,如下图所示: ?

5.9K30

vuepress实现代码折叠、高亮

最近在vuepress撰写UI框架文档时发现在组件插入演示代码没高亮,虽然文档markdown写代码有高亮但就无法实现折叠了,而且vuepress没有提供折叠代码的配置,因此实现一个折叠组件外加代码高亮的插件就十分有必要...一、编写代码折叠mixin.js /docs/.vuepress下创建mixin.js文件,编写代码折叠逻辑。...,效果如图: 可点击显示隐藏代码 二、高亮代码 组件插入代码想使得代码语法高亮可以用highlight插件 1....全局引入 enhanceApp.js 引入highlight插件,这里使用与element-ui一样的color-brewer主题 import '....使用 之后包装代码的外层div加上v-highlight指令,并在code标签标明代码模板类型为html/javascript/css <div class="code-content"

1.8K40

Flutter 探索 StreamBuilderimage

偶尔,周期结束之前可能会发出一些值。 Dart ,您可以创建一个返回 Stream 的容量,该容量可以异步进程处于活动状态时发射一些值。...假设您需要根据一个 Stream 的快照在 Flutter 构造一个小部件,那么有一个名为 StreamBuilder 的小部件。...在这个博客,我们将探索 Flutter 的 StreamBuilder。我们还将实现一个演示程序,并向您展示如何在您的 Flutter 应用程序中使用 StreamBuilder。...initialData: 将利用这些数据制作初始快照 required AsyncWidgetBuilder builder: 生成过程由此生成器使用 如何实现 dart 文件的代码: 你需要分别在你的代码实现它...如果传递的值不为空,那么当 connectionState 等待时,hasData 属性在任何事件首先都将为 true StreamBuilder( initialData: 0, //

2.5K00

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Flutter实现 MethodChannel 通信 )

文章目录 一、MethodChannel 简介 二、MethodChannel Dart 端的实现 1、MethodChannel 构造函数 2、invokeMethod 函数 3、MethodChannel...Flutter 调用在该方法 , 仅能调用一次 Android 方法 ; MethodChannel 原型 : /// A named channel for communicating with platform.../platform-channels/> class MethodChannel { } 二、MethodChannel Dart 端的实现 ---- 1、MethodChannel 构造函数 MethodChannel...与 Flutter 的消息编解码器也要保持一致 ; 2、invokeMethod 函数 创建了 MethodChannel 实例对象之后 , 通过调用 @optionalTypeArgs...与 Native 通信 的 Dart 包 ; import 'package:flutter/services.dart'; 然后 , 定义并实现 MethodChannel 对象实例 ; static

88420

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Flutter实现 BasicMessageChannel 通信 )

文章目录 一、BasicMessageChannel 简介 二、BasicMessageChannel Dart 端的实现 1、BasicMessageChannel 构造方法 2、使用 BasicMessageChannel...计算结果 ; 二、BasicMessageChannel Dart 端的实现 ---- 1、BasicMessageChannel 构造方法 Dart 端 BasicMessageChannel...名称 , 必须一致 ; MessageCodec codec 参数 : 消息编解码器 , 有 4 实现类型 ; Native 应用端 与 Flutter 的消息编解码器也要保持一致 ;...与 Native 通信 的 Dart 包 ; import 'package:flutter/services.dart'; 然后 , 定义并实现 MethodChannel 对象实例 ; static...Android 应用 : https://github.com/han1202012/flutter_native 注意 : 上面两个工程要放在同一个目录 , 否则编译不通过 ; 博客源码快照 :

2.8K21

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Flutter实现 EventChannel 通信 )

文章目录 一、EventChannel 简介 二、EventChannel Dart 端的实现 1、EventChannel 构造方法 2、创建广播流 Stream 3、设置监听回调函数 4、EventChannel...Flutter 应用 ; 该通信时单向的 , 收到信息的一方无法回复 ; 二、EventChannel Dart 端的实现 ---- 1、EventChannel 构造方法 EventChannel...EventChannel 接收到 Native 信息后 , 回调的方法 (message) { setState(() { /// 接收到消息 , 显示界面...与 Native 通信 的 Dart 包 ; import 'package:flutter/services.dart'; import 'dart:async'; 然后 , 定义并实现 EventChannel...EventChannel 接收到 Native 信息后 , 回调的方法 (message) { setState(() { /// 接收到消息 , 显示界面

1.1K20

flutter系列之:flutter自定义themes

简介 一般情况下我们flutter搭建的app基本上都是用的是MaterialApp这种设计模式,MaterialApp为我们接下来使用的按钮,菜单等提供了统一的样式,那么这种样式能不能进行修改或者自定义呢...MaterialApp的themes MaterialApp也是一种StatefulWidget,MaterialApp中跟theme相关的属性有这样几个: final ThemeData?...那么如果我们想要实现自定义themes的功能,就可以利用这个ThemeData类来重写其中要重写的颜色。...除了ThemeData,flutter还有一个类叫做Theme。...这就意味着,flutter,子widget可以使用和父widget不同的主题,非常的棒。 自定义themes的使用 那么如何使用自定义themes呢?有两种方式。

1.2K40

Flutter实现延时操作

本文是异步编程的延时策略篇章,Flutter实现延时操作有两种方式,一种是通过Future,另一种是通过Timer。...1 Future Flutter实现延时 1秒的操作,使用Fluture来实现,代码如下: ///代码清单 1-1 ///方式一 ///参数一 延时的时间 ///参数二...Future的延时操作的三种方式,这三种方式 是小编实现延时操作的一些思路,一般建议使用代码清单1-1所示的第一种,对于代码清单1-2与1-3所示的whenComplete与then函数,功能更强大...1-5也使用到了catchError函数,在这里,当then这几个函数任何一个处理出现 异常,都会回调此方法,如这里函数二通过 throw抛出的一个异常,catchError函数捕捉到这个异常...Timer来实现的,实际开发,如果只是一个单纯的延时操作,小编建议使用Timer,如下代码清单2-2所示,在当前Widget销毁时取消延时任务,可避免内存泄漏。

2.6K30

Flutter NestedScrollView实现的一个经典滑动折叠头部图片的效果

*** Flutter是谷歌推出的最新的移动开发框架。...Flutter NestedScrollView 滑动组件是用来处理复杂情况下的滑动应用场景,如向上滑动视图时,要折叠隐藏一部分内容,这时候就需要使用到 NestedScrollView 与 SliverAppBar...本节是使用 NestedScrollView 结合 SliverAppBar 与 TabBar 、TabBarView 实现折叠头部效果undefined 【x1】微信公众号的每日提醒 随时随记...主体部分 body: buildTabBarView(), ); } [在这里插入图片描述] body对应的是页面主体部分,使用 TabBarView 装载了三个 Widget ,当然实际应用场景...,是 SliverAppBar 的 flexibleSpace 属性配置的,当然就是使用了 FlexibleSpaceBar,代码如下: String imageUrl = "https:

2.6K11

Flutter开发·Flutter动画的实现与使用

AnimationController的构造方法定义了如下主要参数: duration:动画持续的时间 lowerBound:动画最小值,默认值0 upperBound:动画最大值,默认值1 vsync...因为Flutter屏幕刷新时会通知Ticker,锁屏后屏幕会停止刷新,所以Ticker就不会再触发。...Flutter中提供了Tween对象来实现补间动画。...下面是直接使用ColorTween的一个例子,初始化tween后通过animate方法可以得到Animation对象,就可以控件通过获取Animation对象的value来不停地改变控件的属性,从而实现了一个控件由红到绿的变化...一些情况的需求场景下,我们并不只是希望动画只执行一次,而是需要重复的进行循环动画,如下图实现一个心跳效果: 其实代码很简单,动画控制器中提供了一个addStatusListener方法来监听动画状态的变化

1.4K00

Android笔记:原生App嵌入Flutter

首先有一个可以运行的原生项目 第一步:新建Flutter module Terminal进入到项目根目录,执行flutter create -t module ‘module名字’例如:flutter...create -t module flutter-native 执行完毕,就会发现项目目录下生成了一个module 第二步:同步Flutter module依赖 进入到新生成的Flutter module...结束之后.android/Flutter/build/outputs/aar/目录下会生成flutter-debug.aar 第三步:设置JDK版本 app的build.gradle文件中加入: compileOptions...{ sourceCompatibility 1.8 targetCompatibility 1.8 } 第四步:依赖Flutter module settings.gradle中加入 include...app/build.gradle dependencies { …… implementation project(':flutter') } 到此准备过程结束,写代码测试一下,我使用的是

1.6K40
领券