热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

直播带货系统源码利用FloatingActionButton实现展开/折叠多级悬浮菜单

直播带货系统源码利用FloatingActionButton实现展开折叠多级悬浮菜单的相关代码1.大家看一下,我们最终提供出来的调用的示例:初始化2个

直播带货系统源码利用FloatingActionButton实现 展开/折叠多级悬浮菜单的相关代码
1.大家看一下,我们最终提供出来的调用的示例:

//初始化2个Item弹出菜单
val expandFbItemList: MutableList<MultiFabItem> &#61; mutableListOf(MultiFabItem(...),MultiFabItem(...))val context &#61; LocalContext.current//创建一个MultiFloatingActionButton组件MultiFloatingActionButton(srcIcon &#61; Icons.Filled.Add,showLabels &#61; true,items &#61; expandFbItemList) {//item被点击了Toast.makeText(context.applicationContext,"点击了:${it.label}",Toast.LENGTH_SHORT).show()}

2.我们需要实现展开和折叠功能&#xff0c;首先需要定义一个状态类

enum class MultiFabState {Collapsed,Expanded
}

3.我们需要外部能修改菜单内的数据&#xff0c;定义一个Item实体bean

class MultiFabItem(//Fab中心Iconval icon: ImageVector,//提示文本内容val label: String,//Fab中心Icon颜色val srcIconColor: Color &#61; Color.White,//提示文本内容颜色val labelTextColor: Color &#61; Color.White,//提示文本内容区域背景色val labelBackgroundColor: Color &#61; Color.Black.copy(alpha &#61; 0.6F),//Fab按钮背景色val fabBackgroundColor: Color &#61; Color.Unspecified,
)

4.定义一个MultiFloatingActionButton的Compose方法

&#64;Composable
fun MultiFloatingActionButton(modifier: Modifier &#61; Modifier,//“&#43;”号按钮的图片srcIcon: ImageVector,//“&#43;”号按钮的颜色srcIconColor: Color &#61; Color.White,//“&#43;”号按钮区域背景色fabBackgroundColor: Color &#61; Color.Unspecified,//是否显示item的label内容showLabels: Boolean &#61; true,//所有展开的菜单Itemitems: List<MultiFabItem>,//菜单Item的点击回调onFabItemClicked: (item: MultiFabItem) -> Unit
)

5.定义动画&#xff0c;用于折叠和展开菜单显示的动画

//下面【省略号】的部分代码&#xff0c;文章【末尾会有全量的代码】【贴图】&#xff0c;有需要的可以去看一下。
//当前菜单默认状态处于&#xff1a;Collapsed
val currentState &#61; remember { mutableStateOf(MultiFabState.Collapsed) }
//创建过渡对象&#xff0c;用于管理多个动画值&#xff0c;并且根据状态变化运行这些值
val transition &#61; updateTransition(targetState &#61; currentState, label &#61; "")
//用于&#43;号按钮的旋转动画
val rotateAnim: Float by transition.animateFloat(.....) { state ->//根据state来设置最终的角度if (state.value &#61;&#61; MultiFabState.Collapsed) 0F else -45F
}
//透明度动画
val alphaAnim: Float by transition.animateFloat(....) { state ->if (state.value &#61;&#61; MultiFabState.Expanded) 1F else 0F
}
//记录每个Item的收缩动画的Transition
val shrinkListAnim:MutableList<Float> &#61; mutableListOf()
items.forEachIndexed { index, _ ->val shrinkAnim by transition.animateFloat(.....)//添加到收缩列表中shrinkListAnim.add(index,shrinkAnim)
}

6.使用Box包裹我们的所有FloatingActionButton

Box(modifier &#61; modifier, contentAlignment &#61; Alignment.BottomEnd) {items.forEachIndexed{index, item ->Row(....){if(showLabels){Text(....)}FloatingActionButton(....)}}FloatingActionButton(....)
}

以上就是直播带货系统源码利用FloatingActionButton实现 展开/折叠多级悬浮菜单的相关代码&#xff0c; 更多内容欢迎关注之后的文章


推荐阅读
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细介绍了如何使用JavaScript实现面部交换功能,包括基本原理和具体实现步骤。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
author-avatar
手机用户2502891303_279
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有