一、animateContentSize修饰符可为大小变化添加动画效果

如果想为容器大小变化添加动画和使用该修饰符,用法如下:

 modifier = Modifier.animateContentSize()

当然了,如果想修改动画类型和处理动画结束监听事件,我们可以为其指定animationSpce和finishedListener,finishedListener回调有initialValue(动画开始前的初始值)和targetValue(动画结束后的目标值)两个参数。下面写个简单的例子:

@Composable
fun compose_animateContentSize(){var message by remember { mutableStateOf("Hello") }Column() {Button(onClick = { message += message}) {Text("change")}Box(modifier = Modifier.background(Color.Blue).animateContentSize(animationSpec = tween(),finishedListener = { initialValue, targetValue  ->Log.e("animateContentSize","初始值:"+initialValue.width + "," + initialValue.height);Log.e("animateContentSize","目标值:"+targetValue.width + "," + targetValue.height);})) {Text(text = message, color = Color.White)}}
}

二、Crossfade可使用淡入淡出动画在两个布局之间添加动画效果

这里需要注意的是Crossfade不是修饰符,而是可组合函数,里面有targetState和content必传参数,targetState用于指定当前布局状态,content是显示的内容;有modifier和animationSpec两个可选参数,modifier用于修饰Crossfade,animationSpec用于指定动画类型,使用如下:

@Composable
fun compose_crossfade() {var currentPage by remember { mutableStateOf(1) }Column {Button(onClick = { currentPage = if (currentPage == 1) 2 else 1 }) {Text("change")}Crossfade(targetState = currentPage,modifier = Modifier.fillMaxSize().background(if (currentPage == 1) Color.White else Color.Blue),animationSpec = spring()) { screen ->when (screen) {1 -> Text("这是第一个页面", color = Color.Black)2 -> Text("这是第二个页面", color = Color.White)}}}
}

Compose_23--动画之animateContentSize和Crossfade相关推荐

  1. Compose 动画 (五) : animateContentSize / animateEnterExit / Crossfade / AnimatedContent

    1. 前言 AnimatedVisibility.animateXxxAsState.animateContentSize.Crossfade.AnimatedContent 这几个API,都是Com ...

  2. Unity动画控制器animator.CrossFade

    需要特别注意: 1.CrossFade虽然可以不用任何逻辑来链接而直接跳转,但是CrossFade只能覆盖其他动画,当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败.造成动画依 ...

  3. Compose-Animation高级别动画

    目录 前言 AnimatedVisibility isScrollingUp FAB scaffold animateContentSize Crossfade 顶部气泡下弹 前言 AnimatedV ...

  4. Win10系列:JavaScript动画3

    "交叉进出"动画也是Windows动画库中的动画效果."交叉进出"动画的动画效果是在应用程序界面上隐藏一个元素并同时在相同位置显示另一个元素的时候,被隐藏的元素 ...

  5. Compose 页面切换动画

    Compose 页面切换动画 前因后果 Compose 正式版已经发布了一个多月了,从 Compose beta 版本发布之后各大网站中热度就一直不减,官方也一直在为开发者们推出学习 Compose ...

  6. Unity中如何用脚本调用动画(Animation)

    public class Cube : MonoBehaviour {private Animation animation;// Use this for initializationvoid St ...

  7. 在C++中自己实现动画系统(一):骨骼动画与编辑器

    转:https://www.gameres.com/478091.html 每套游戏引擎都会包含动画系统:一些游戏引擎会采用最简单的直播动画的形式(如Unity的Animation方案)仅支持简单动画 ...

  8. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  9. Android 常用图片框架对比

    在Android中,进行内存优化,最重要的优化处理是对图片进行内存的优化处理,毕竟图片占用的内存是非常大的,对于图片的内存处理,是android中内存优化的重中之重.目前开源的4大图片处理框架都对图片 ...

  10. Android-Glide使用

    图片加载很是重要,我也对比过别的库,觉得还是Glide好用,我只是简单的分享下我开发用到的相关知识,整理下项目相关的库,废话不多说,直接开始吧 Glide的配置 配置很简单,只要在Module的Gra ...

最新文章

  1. php72w redis,docker php7安装php-redis
  2. LeetCode Algorithm 6. Z 字形变换
  3. [react] 什么是浅层渲染?
  4. 腾讯内容平台部-视频内容理解算法实习生
  5. 把MSDE 2000 打包的自己的安装程序说明
  6. 阿里巴巴数据中台实践(PPT)
  7. 多传感器融合定位 第七章 基于滤波的融合方法
  8. 从外观上如何识别单模和多模光纤
  9. 程序员职场背锅甩锅指南
  10. 软件测试管理工具——禅道(安装、讲解)
  11. 工作了一辈子,你的住房公积金一共能有多少钱?
  12. Lambda 表达式详解
  13. [4G5G专题-109]:部署 - LTE RF射频优化的流程、原因综合分析、解决办法大全
  14. SLCP验厂辅导,SLCP数据收集和验证工具整合成在线格式的托管平台来完成
  15. Redis String命令大全
  16. 北京交通大学计算机考研分数2019,2019北京交通大学考研复试分数线
  17. 飞塔防火墙固定IP改动态IP网络设置
  18. np.where函数的使用
  19. [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
  20. beats耳机用安卓手机影响音效么_100元以内性价比高无线蓝牙耳机推荐:音质最好的蓝牙耳机排行榜10强...

热门文章

  1. 宝塔linux 解压文件,宝塔面板能否解压缩文件
  2. 生意宝,淘宝,唯品会,58同城,去哪儿背后的赚钱生意经(转)
  3. 使用WebDriver 登录163邮箱
  4. python用户画像_研究用户应该从哪几个维度去构建用户画像模型?
  5. 任意7个数字,选出5个进行组合排列,并使用Excel打印组合的所有情况。
  6. 处女作《Web全栈开发进阶之路》出版了!
  7. (1-2层) 物理层下面的传输媒体
  8. 苹果4s忘记id密码怎么办_iPhone手机ID密码忘记了怎么办?三种方法轻松解决问题...
  9. 惠普触控板使用指南_惠普笔记本触摸板使用技巧
  10. 劲爆!群晖docker视频