扩展ExtendedFloatingActionButton滚动收缩展开行为

news2024/9/24 11:30:33

效果

在这里插入图片描述

首先ExtendedFloatingActionButton有默认的Behavior : ExtendedFloatingActionButtonBehavior,这个类是为了ExtendedFloatingActionButton不被SnakBar所遮挡,并且这个类它是protected,所以为了保留原有的设计,自定义的Behavior不能在外部定义,必须自定义一个ExtendedFloatingActionButton子类,然后在子类中实现一个ExtendedFloatingActionButtonBehavior类即可,并且自定义的ExtendedFloatingActionButton子类必须是非final的。

ExtendedFloatingActionButton实现了CoordinatorLayout.AttachedBehavior接口,默认Behavior

在这里插入图片描述

这个接口是一个单一抽象接口(SAM接口),用于设置该View的默认Behavior,此方法在CoordinatorLayout#getResolvedLayoutParams(View)中被调用:

在这里插入图片描述

可以看到这个接口是给View实现的,所以ExtendedFloatingActionButton自然是实现了该接口并返回ExtendedFloatingActionButtonBehavior实例:

在这里插入图片描述

自定义Behavior

创建一个ExtendedFloatingActionButton子类并在其中创建一个自定义的Behavior,并从getBehavior()方法中返回

open class ExtendedFAB @JvmOverloads constructor(
    context: Context,
    attributeSet: AttributeSet? = null,
) : ExtendedFloatingActionButton(context, attributeSet) {

    private val fabBehavior = ExtendedFABBehavior(context, attributeSet)

    override fun getBehavior(): CoordinatorLayout.Behavior<ExtendedFloatingActionButton> {
        return fabBehavior
    }

    protected class ExtendedFABBehavior(
        context: Context,
        attributeSet: AttributeSet?
    ) : ExtendedFloatingActionButtonBehavior<ExtendedFloatingActionButton>(context, attributeSet) {
        override fun onStartNestedScroll(
            coordinatorLayout: CoordinatorLayout,
            child: ExtendedFloatingActionButton,
            directTargetChild: View,
            target: View,
            axes: Int,
            type: Int
        ): Boolean {
            return axes == ViewCompat.SCROLL_AXIS_VERTICAL
        }

        override fun onNestedScroll(
            coordinatorLayout: CoordinatorLayout,
            child: ExtendedFloatingActionButton,
            target: View,
            dxConsumed: Int,
            dyConsumed: Int,
            dxUnconsumed: Int,
            dyUnconsumed: Int,
            type: Int,
            consumed: IntArray
        ) {
            if (dyConsumed > 0) {
                shrink(child)
            } else {
                extend(child)
            }
        }

        private fun extend(child: ExtendedFloatingActionButton) {
            child.extend()
        }

        private fun shrink(child: ExtendedFloatingActionButton) {
            child.shrink()
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言单元测试

1、Go语言单元测试 Go语言中的测试依赖 go test 命令&#xff0c;go test 命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录 内&#xff0c;所有以 _test.go 为后缀名的源代码文件都是 go test 测试的一部分&#xff0c;不会被 go build 编译到最终的可执行 文件…

【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

链接&#xff1a;https://pan.baidu.com/s/18oE308_NVNPaCOACw_H5Hw?pwdabc1 利用爬虫抓取双色球开奖号码&#xff0c;获取完整数据&#xff0c;简洁45行代码实现&#xff0c;更新时间2023-06-28 这是网上的数据&#xff0c;怎么将它爬取下来 它将只爬取最近30期的双色球开…

星辰秘典:解开Python项目的神秘面纱——迷宫之星(迷宫探索与求解)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;你好&#x…

文件系统理解——磁盘文件

磁盘文件 1. 问题提出2. 了解磁盘的物理结构2.1 磁盘大体结构2.2 磁盘的具体物理结构 3.对磁盘结构逻辑抽象3.1 OS是通过CSH方法进行扇区的管理的吗&#xff1f;3.2 磁盘逻辑过程 4.文件系统4.1 管理思想4.2 区结构Boot BlockSuper BlockGroup Descriptor Tableinode Table &am…

共享办公室在国内外的发展史以及现状介绍

共享办公室&#xff0c;这个曾经陌生的概念&#xff0c;如今已成为全球范围内炙手可热的话题。在这个时代&#xff0c;越来越多的人开始关注灵活性和协作性&#xff0c;而共享办公室正是在这种需求下应运而生的。本文将带您一探共享办公室的国内外发展史、国内当前发展现状以及…

记录一次nginx占用cpu饱满解决

一天下午&#xff0c;突然就爆满了。刚开始服务器都登不上&#xff0c;后来服务器可以登录上&#xff0c;宝塔进不去&#xff0c;网站访问不了&#xff0c;top后发现nginx爆满 执行下列代码&#xff0c;停止nginx服务 systemctl stop nginx 虽然停止了 可以上宝塔 再次手动…

硬件工程师JD

不知道这么做合不合适&#xff0c;我先发一个试试&#xff0c;团队在招人&#xff0c; 岗位是 航天航空电子工程师1&#xff0c;混合电推和起发电方向&#xff1b; 电机控制硬件工程师1&#xff0c;新能源汽车电机控制器硬件开发方向。 工作内容&#xff1a; 1、负责硬件系…

美国首只杠杆比特币期货ETF开盘,成交量近550万美元!

纽约时间6月27日&#xff0c;美国首只杠杆比特币期货ETF&#xff08;股票代码&#xff1a;BITX&#xff09;在CBOE BZX交易所开盘&#xff0c;成交量近550万美元&#xff0c;成为今年推出的ETF中首日交易量最大的产品。 BITX的推出&#xff0c;正值贝莱德(BlackRock)向SEC递交现…

【教学类-36-04】Midjounery 各种图片切割(通用公式)

作品展示&#xff1a; 6*6切割36图 5*4图&#xff1a;20张 问题产生&#xff1a; 之前的代码是&#xff1a;一张图的四个坐标&#xff0c;有4张就要写4行。 后续发现&#xff0c;Midjounery生成的图片矩阵X Y数量不等&#xff0c;不仅有3*3&#xff0c;还有4*3、5*4的结构&am…

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境&#xff01;参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后&#xff0c;在cmd命令输入adb connect 127.0.0.1:62001&#xff0c;显示出设备则表示…

虚拟稀疏卷积在多模态 3D 目标检测中的应用

论文背景 虚拟点云生成时&#xff0c;从图像中生成的虚拟点非常密集&#xff0c;在检测过程中引入了大量的冗馀计算量。同时&#xff0c;不准确的深度补全所带来的噪声会显著降低检测精度。 早期利用图像特征扩展LiDAR点的特征的方法&#xff0c;如语义掩膜和二维CNN特征。他…

机器学习11:逻辑回归-Logistic Regression

目录 1.计算概率 2.损失和正则化 2.1 逻辑回归的损失函数 2.2 逻辑回归中的正则化 3.参考文献 1.计算概率 许多问题需要概率估计作为输出。逻辑回归是一种极其有效的概率计算机制。实际上&#xff0c;我们可以通过以下两种方式使用返回的概率&#xff1a; 原始概率&…

Appium安装部署

目录 一、检查Java环境 二、安装android SDK 一、检查Java环境 Android SDK依赖ava环境&#xff0c;因此需要先安装jdk。在CMD中输入java -version 出现下图的结果&#xff0c;说明当前环境已安装jdk 如果提示java命令无效&#xff0c;请安装后进行下一步。 二、安装androi…

360手机打开USB调试+文件传输

360手机USB调试文件传输[用户版] 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 *360手机USB调试 &#xff0c;必须提前打开“开发者模式USB调试”进行 【操作流程】 打开&#xff1a;开发者模式、USB调…

vue3进阶-----单文件组件

目录 三.vue3进阶 1.单文件组件 1-1组件定义-重塑经脉&#xff0c;断了&#xff1f; 1-2单文件组件(SFC)-独立日 1-3Vue-CLI创建项目-锅灶升级 1-4 vuecli选项介绍 1-5 VueCLI创建项目-风云再起 index.html main.js 作用 ES6 导入 导出 解决跨域之“Vue-Cli配置跨域…

Vue 自定义ColorPicker

Vue 自定义ColorPicker 创建自定义组件ColorPicker.vue <template><div class"box"><div class"picker-box"><div class"color" :style"{ background: color }"></div><div class"el-icon-arr…

使用元类实现ORM

使用元类实现ORM ORM 是 python编程语言后端web框架 Django的核心思想&#xff0c;“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;简称ORM。 我们想实现的目标是: 创建一个实例对象&#xff0c;用创建它的类名当做数据表名&#xff0c;用创建它的类属…

十分钟实现 Android Camera2 相机拍照

1. 前言 因为工作中要使用Android Camera2 API&#xff0c;但因为Camera2比较复杂&#xff0c;网上资料也比较乱&#xff0c;有一定入门门槛&#xff0c;所以花了几天时间系统研究了下&#xff0c;并在CSDN上记录了下&#xff0c;希望能帮助到更多的小伙伴。 上篇文章 我们使用…

【数据分享】1929-2022年全球站点的逐月平均压力数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

paddlespeech 声纹识别embedding向量提取;TTS文本合成语音

1、声纹识别embedding向量提取 参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md https://aistudio.baidu.com/aistudio/projectdetail/4…