当前位置: 首页 > news >正文

装饰网站建设软件下载百度提交网站改版

装饰网站建设软件下载,百度提交网站改版,网站建设需要的设备,舆情报告总结目录前言AnimatedVisibilityisScrollingUpFABscaffoldanimateContentSizeCrossfade顶部气泡下弹前言 AnimatedVisibility 驱动可视性相关动画,即布局显隐 animateContentSize 内容变换动画相关 Crossfade 布局(或者页面)切换过渡动画 Animat…

目录

      • 前言
      • AnimatedVisibility
        • isScrollingUp
        • FAB
        • scaffold
      • animateContentSize
      • Crossfade
      • 顶部气泡下弹

前言

AnimatedVisibility 驱动可视性相关动画,即布局显隐
animateContentSize 内容变换动画相关
Crossfade 布局(或者页面)切换过渡动画


AnimatedVisibility

需求:插入 FAB(浮动按钮)到 scaffold 布局内,我们需要当列表向下滑动时 FAB 自动收起,向上滑动时展开

完整实现流程:

  1. scaffold 定义状态,检测 lazycolumn 滚动方向
  2. 根据滚动方向来动态指定 extend 变量是否为 true
  3. 将 extend 变量传递给 FAB 函数,动态显隐文本
  4. 结束

isScrollingUp

再开始工作之前,需要为 LazyListState 自己编写一个扩展方法 isScrollingUp,用来检测当前滚动方向

@Composable
private fun LazyListState.isScrollingUp(): Boolean {var previousIndex by remember(this) { mutableStateOf(firstVisibleItemIndex) }var previousScrollOffset by remember(this) { mutableStateOf(firstVisibleItemScrollOffset) }return remember(this) {derivedStateOf {if (previousIndex != firstVisibleItemIndex) {previousIndex > firstVisibleItemIndex} else {previousScrollOffset >= firstVisibleItemScrollOffset}.also {previousIndex = firstVisibleItemIndexpreviousScrollOffset = firstVisibleItemScrollOffset}}}.value
}

FAB

定义一个 FAB 组件,使用 FloatingActionButton 可以便于自定义

AnimatedVisibility 函数可以使得组件显隐过渡平滑,且能根据 API 自定义显隐过程的持续时间以及过程
最简单的使用方法是将其包裹你想要动态显隐的组件,并使用 visible 属性控制显隐

@Composable
private fun HomeFloatingActionButton(// 是否显隐,由上级scaffold定义extended: Boolean,onClick: () -> Unit
) {// 一个标准的带图标与文本的FABFloatingActionButton(onClick = onClick) {Row(modifier = Modifier.padding(horizontal = 16.dp)) {Icon(imageVector = Icons.Default.Edit,contentDescription = null)// 根据extend的值判断是否显示隐藏AnimatedVisibility(visible = extended) {Text(text = stringResource(R.string.edit),modifier = Modifier.padding(start = 8.dp, top = 3.dp))}}}
}

scaffold

按步骤走

@Composable
fun Home() {// 第一步:定义lazycolumn状态val lazyListState = rememberLazyListState()Scaffold(...floatingActionButton = {HomeFloatingActionButton(// 第三步,判断当前滚动方向,将布尔返回值作为形参传递给HomeFloatingActionButtonextended = lazyListState.isScrollingUp(),)}) { padding ->LazyColumn(// 第二步:基于lazycolumn指定状态state = lazyListState,) {...}}
}

animateContentSize

用于变换布局大小

@Composable
fun ContentSizeComp() {// 定义收缩状态var isExpanded by remember {mutableStateOf(false)}Box(Modifier.fillMaxWidth().background(Color.LightGray).animateContentSize()   // 在这里注册.clickable {isExpanded = !isExpanded}) {Text(text = "this is adasdj qpowdj pja sipojd pqoi jpqoj psqoj pqojs poqj  opj po jsopdjqpo jopqj qosp jdopqs jdqsp djqs opdqjs dpqsj dp qs",modifier = Modifier.padding(12.dp),// 默认显示一行文本,一旦isExpanded变化就显示全部文本// 此过程类似于点击卡片自动展开的效果,并且有过渡动画哦!maxLines = if (isExpanded) 1000 else 1)}
}

Crossfade

Crossfade 一般用于切换布局使得过渡柔和平缓

@Composable
fun CrossFadeComp() {var layoutState by remember {mutableStateOf(false)}Column(Modifier.fillMaxWidth()) {Button(onClick = { layoutState = !layoutState }) {Text(text = "切换布局")}// Crossfade包裹需要执行页面切换动画的composable内容Crossfade(// 需要监听的状态targetState = layoutState,// 自定义动画animationSpec = tween(1000)) {// it即被监听的状态哦~if (it) {Icon(Icons.Default.Delete, "")} else {Icon(Icons.Default.Favorite, "")}}}
}

顶部气泡下弹

需求:点击按钮后于 app 顶部下弹一个全宽度小卡片,过一段时间自己收回去(类似于顶部弹出气泡通知)

同理,为提供流畅的显示隐藏动画,需要使用 AnimatedVisibility 包裹组件,且这里用到了自定义动画

enter 定义入场动画及起始点;
exit 定义出场动画及动画截止点;

tween 可以设置动画的持续时间与 ease

@Composable
private fun EditMessage(shown: Boolean) {AnimatedVisibility(visible = shown,// 入场动画enter = slideInVertically(// 初始Y轴位置定义为负的总高度,此时卡片完全隐藏在顶部// 则入场动画为 -fullHeight -> 0initialOffsetY = { fullHeight -> -fullHeight },// 动画扩展设置animationSpec = tween(durationMillis = 150, easing = LinearOutSlowInEasing)),// 出场动画exit = slideOutVertically(// 同理,出场动画设置终止位置// 故动画为 0 -> -fullHeighttargetOffsetY = { fullHeight -> -fullHeight },animationSpec = tween(durationMillis = 250, easing = FastOutLinearInEasing))) {Surface(modifier = Modifier.fillMaxWidth(),color = MaterialTheme.colors.secondary,elevation = 4.dp) {Text(text = stringResource(R.string.edit_message),modifier = Modifier.padding(16.dp))}}
}

http://www.yayakq.cn/news/640919/

相关文章:

  • 龙华网网站大学网站 作风建设专题
  • 作文网站网址大全网站地图 百度
  • 做公众号首图网站四川网站建设公司
  • 网站建设比较好卡片式网站
  • 做网站的维护成本网站下拉箭头怎么做的
  • 学校网站设计及代码怎样把网站做成软件
  • 深圳网站建设服务哪家便宜网站建设是前端后端吗
  • 如何做网站的薪酬调查模板网站好还是定制网站好
  • 本地企业网站建设服务网站制作报价单模板
  • 阿里云自助建站河北省建设厅网站官网业务系统
  • 桂林哪里学建设网站wordpress如何修改博客模板
  • dede大气黑色网站源码seo管理
  • 网站开发报价明细wordpress免签支付插件
  • 网站移动端是什么情况无锡做智能网站
  • 九江建企业网站猎头做单的网站
  • 凡科网站建设平台好么图片wordpress博客
  • 狠狠做网站深圳需要做网站的公司有哪些
  • 做网站前北京网络广播电视台
  • 五合一网站建设方案wordpress 无法登录界面
  • 哪个网站可以做艺术字wordpress 图片延迟加载插件
  • 给企业做网站的公司福州网站建设推广
  • 网站群建设代理手机如何登入网站服务器
  • 网站管理助手4.0长沙企业网站建设报价
  • 河南省和城乡建设厅网站首页wordpress如何修改登录地址
  • 中英文 微信网站 怎么做怎么上传做 好的网站
  • 做棋牌网站建设哪家便宜网页制作三剑客是指哪三个软件
  • wordpress农业站模板行业网站策划方案
  • 做窗帘的效果图网站免费拥有自己的网站
  • 岳阳网站优化深圳软牛科技有限公司
  • wordpress网站属于什么网站吗有什么免费企业网站是做企业黄页的