来控制FAB的放置; (FabAlignmentMode)可以设置为中心或结束。...FAB和BottomAppBar之间的间距; FabCradleRoundedCornerRadius指定切口周围角的圆度; FabCradleVerticalOffset指定FAB和BottomAppBar...如果fabCradleVerticalOffset为0,则FAB的中心将与BottomAppBar的顶部对齐。...当项目有3到5个顶层(底部)目的地导航到时,可以使用此模式。...可视高度由开发人员选择,应足以表明有额外的内容,允许用户触发某个动作或扩展Bottom Sheets; STATE_EXPANDED: Bottom Sheets是可见的并且它的最大高度并且不是拖拽或沉降
,请注意看 fab 和值的变化: ?...BottomSheet BottomSheet 看命名就知道是从底部弹出的菜单,展示 BottomSheet 有两种方式,分别是 showBottomSheet 和 showModalBottomSheet...,两种方式只有在展示类型上的差别,方法调用无差,而且 showBottomSheet 和 fab 有组合动画,showModalBottomSheet 则没有,看下实际的例子吧。...在 ListView 中增加一个 BottomSheet 的按钮,因为 BottomSheet 需要的 context 也不能是 Scaffold 下的 context,所以需要通过 Builder 进行包裹一层...可以看到 showBottomSheet 会充满整个屏幕,然后 fab 会跟随一起到 AppBar 的底部位置,而 showModalBottomSheet 展示的高度不会超过半个屏幕的高度,但是 fab
协调布局的含义,指的是内部控件互相之前的动作关联,比如在A视图的位置发生变化之时,B视图的位置也按照某种规则来变化,仿佛弹钢琴有了协奏曲一般。...,有以下几个办法: 1、使用layout_gravity属性,指定子视图在CoordinatorLayout内部的对齐方式。... <android.support.design.widget.FloatingActionButton android:id="@+id/fab_btn...); btn_bottomsheet = (Button) findViewById(R.id.btn_bottomsheet); btn_bottomsheet.setOnClickListener...("隐藏底部弹窗"); } else { behavior.setState(BottomSheetBehavior.STATE_HIDDEN); btn_bottomsheet.setText
,有兴趣的看源码吧 有关材料设计,我写过一个系列:详见--Android材料设计Material Design 开篇前言 3.1:BottomNavigationBar的使用: 为了方便起见,我写了一个...} ---- 3.4:BottomSheet与FloatingActionButton的结合 mBottomSheetBehavior = BottomSheetBehavior.from(mBottomSheet..., boolean show) { //获取fab头顶的高度 int hatHeight = coordinatorLayout.getBottom() - fab.getBottom...) { //获取fab头顶的高度 ValueAnimator animator = ValueAnimator.ofFloat(0, 1); animator.addUpdateListener...(animation -> { fab.setScaleX((Float) animation.getAnimatedValue()); fab.setScaleY
主要是要注意涉及到小红点 val mBnv = findViewById(R.id.bnv) val badgeDrawable...BottomSheetDialog.gif 7.MaterialButton 这个相对简单,没啥介绍的,唯一有亮点的地方就是含有icon的button,但其实这些一般都会在项目里面有,而且也用不到那么多的功能...8.MaterialCardView 这个和CardView差别也不大,主要是背景色的设置有区别,是app开头的属性 9.MaterialCheckBox 这个和CheckBox可以说完全没有区别,继承自...cornerSize表示设置的大小,有RelativeCornerSize和AbsoluteCornerSize,RelativeCornerSize构造方法接收一个百分比,范围0-1;AbsoluteCornerSize...CornerFamily,它表示处理的方式,有ROUNDED和CUT两种,ROUNDED是圆角,CUT是直接将圆角部分裁切掉. setAllCornerSizes(ShapeAppearanceModel.PILL
无论sheet、fullScreenCover还是bottomSheet(半高模态视图)都得到充分的支持和统一的管理。...源地址[4] SheetKit中每个功能的代码都集中在一到两个文件中。如果只需要其中部分的功能,直接在项目中添加对应的文件或许是不错的选择。...image-20210916190606032 下面的代码将展示一个预设的bottomSheet视图: sheetKit.present(with: .bottomSheet){ Text("Hello...world")} bottomSheet1 bottomSheet可以自定义配置。...在不同高度变化时,有两种方式可以获得提醒。
Material Design是一种有质感的设计风格,还会提供一些默认的交互动画。...对于没有相关基础的人,在正式学习App的UI之前,建议先了解Material Design相关的知识 关于Material Design设计风格的资料 MaterialApp MaterialApp代表使用...Material设计风格的应用,里面包含了其所需要的基本控件。...中的 ActionBar body Widget 当前页面所显示的主要内容 floatingActionButton Widget Material中所定义的FAB,是一个悬浮的功能按钮 floatingActionButtonLocation...默认为 ThemeData.scaffoldBackgroundColor bottomNavigationBar Widget 显示在底部的导航栏 bottomSheet Widget 底部永久性显示的提示框
现在 Button 有了一个绿色的强调色并且字体间的间距变大了。 ? 那么为什么会这样呢?...到 1.2.0-alpha06 版本开始支持。使用 Shape 可以进行变通。下面章节会详细介绍。...更新到 MDC 1.1.0 从 1.0.0 到 1.1.0 有了很多新变化: 完整的 Material Theming Dark Theme 支持 Android 10 手势导航支持 新组件:扩展 FAB...但是,升级后,您可能会注意到某些控件颜色和其他属性的某些意外更改。 ? 在上面的示例中,按钮发生了变化、文本和图标的颜色发生了变化。FAB 现在变成了蓝绿色,并且文本字段看起来完全不同。不用担心。...但是我们意识到这可能并不适合您的品牌和设计系统。
其实细分来说,是BottomSheet、BottomSheetDialog、BottomSheetDialogFragment 2.BottomSheet 与主界面同层级关系,可以事件触发,如果有设置显示高度的话...默认无此状态(可通过app:behavior_hideable 启用此状态),启用后用户将能通过向下滑动完全隐藏 bottom sheet 3.BottomSheetDialog 可以看到弹出来之后是有一个半透明的蒙层的...behavior = BottomSheetBehavior.from(view) //设置弹出高度 behavior.peekHeight = 350 } 有一个...behavior.addBottomSheetCallback(bottomSheetCallback); behavior.setHideable(cancelable); } return container; } 到这里...8.设置默认全屏显示 既然有了上面的方法,是不是有思路了,那有人说了,我把高度设置全屏不就完事了吗 事实上还真不行,BottomSheetDialogFragment只会显示实际高度,即布局有效高度,即使根布局高度
UI设计给我出了个难题:在一个界面上设计一个始终位于屏幕右下角的浮动按钮 翻阅好多博客(几乎都是几年前的):都是说要导入这么一个依赖 compile ‘com.getbase:floatingactionbutton...几经摸索,也没找到最新版Floatactionbutton的正确依赖。...突然想到,新建项目有个Basic Activity,里面正好有这么个玩意,如图可见 于是新建项目,研究源码,果然适用SDK最新版本。 当然还有各种各样的坑,也顺便记录一下。...app:fabSize条件浮动按钮的大小,normal正常大小,mini迷你大小。 android:layout_gravity:控制按钮的位置。...最后一个问题,如何将按钮浮动到其他页面上,Basic项目是这么做的。 先设计按钮界面,然后通过 include引入底层页面,完美解决。 示例源码: <?
icon图标 }) 属性有很多,能用到的也就那么几个,大部分都是使用的默认值。...除了onPressed是必选以外,其余的属性基本上用的不是特别的多,有一些没有涉及到的属性,有兴趣可以自己下来了解。..., this.backgroundColor, this.heroTag = const _DefaultHeroTag(), //hero效果使用的tag,系统默认会给所有FAB使用同一个tag...bottomSheet 底部划出组件,一般很少直接使用,而是使用showModalBottomSheet弹出,比如从底部弹出分享框。...总结 Flutter的基础的组件就讲到这里,涉及到的大都是常用的组件,部分东西没有涉及到或者说没有详细说明,可能是因为我认为不用过多说明,可能是因为没有太多时间,也可能是因为我自己也不看明白,如果你不懂
,有兴趣的看源码吧 有关材料设计,我写过一个系列:详见--Android材料设计Material Design 开篇前言 3.1:BottomNavigationBar的使用: 为了方便起见,我写了一个...} ---- 3.4:BottomSheet与FloatingActionButton的结合 mBottomSheetBehavior = BottomSheetBehavior.from(mBottomSheet..., boolean show) { //获取fab头顶的高度 int hatHeight = coordinatorLayout.getBottom() - fab.getBottom...ttt.png ---- 3.上线 好吧,不是上传到各大市场,毕竟现在个人app很难上去 在前端界面上提供下载地址,很简单,拷到服务器上就行了,然后访问就能下载了 ?...下载2.png ---- 基本上的点都讲到了,虽然不是面面俱到,整体hold住就差不多了 源码在最后,有兴趣的可以看看,总结以下,到此为止,用了五天的时间做了以下事: 1.使用SpringBoot
效果如下图所示: 正文 本文的优化,从逻辑、UI和功能三个方向上进行,之前的代码实际上是有一些逻辑问题。...= null 在发送消息到客户端的时候对这个线程池进行初始化,并且执行子线程,修改sendToClient()函数,代码如下: fun sendToClient(msg: String) {...= null 在发送消息到服务端的时候对这个线程池进行初始化,并且执行子线程,修改sendToServer()函数,代码如下: fun sendToServer(msg: String) {...① BottomSheet使用 Android中的布局可以实现这样的功能,因为底部是一样的,所以可以写在一起,目前我们先这么来写,后续可能会有改动。...,这里我把它抽离到这个函数中。
在上一篇文章中,我们介绍了如何将应用构建到全面屏设备。然而有些交互可能导致应用的某些视图被系统栏遮盖,导致用户无法看见或操作。本文正是为帮助您解决这个问题而撰写——如何判断安全的交互区域。...我们来看一个使用系统窗口区域的例子。我们有一个悬浮操作按钮 (FAB),它位于屏幕右下角,距离屏幕边缘 16dp (这符合设计指南中的要求)。...具体到本例中,FAB 位于底部右侧边缘附近,因此我们可以使用 systemWindowInsets.bottom 和 systemWindowInsets.right 值来增加 FAB 下方和右方的边距...这里让我们仍然使用 FAB 来举例: 注意看上图,在导航栏模式下,FAB 不会进入导航栏占据的高度 (48dp)。...从屏幕底部开始向上滑动,可以让用户切换最近使用的应用 (Recent)。 在系统手势区域中,系统手势操作优先于应用自己的手势操作。您可能已经注意到系统手势区域有两个获取方法。
pop页面方法,会把跳转的页面pop掉 上面是一种很常见的场景,涉及到复杂场景更加难以预测,解决方法也有:定位页面栈的栈顶是否是Loading弹窗,选择性Pop,实现麻烦 上面这些痛点,简直个个致命,当然...bottomSheet; final bool?...return false; } return true; } else { return true; } } } 几个问题解决方案 穿透背景 穿透背景有俩个解决方案...很明显translucent是有希望的,尝试了几次,然后成功实现了想要的效果 注意,这边有几个坑点,提一下 务必使用Listener控件来使用behavior属性,使用GestureDetector中behavior...区分 最后 这个库花了一些时间去构思和实现,算是解决几个很大的痛点 如果大家对返回事件有什么好的处理思路,麻烦在评论里告知,谢谢!
锚定效应:消费者将专注于商品价格牌,轻易被零售商提供的折扣所吸引 Anchoring: Consumers anchor on the list price and are attracted by...性质 自身价格弹性是一个负数 自身价格弹性是一个纯数值 自身价格弹性的范围是从0到负的无穷大 3 弹性/刚性需求 价格弹性:如果某种产品价格上涨1%导致其需求量下降超过1%,我们就说产品需求是有价格弹性...(price elastic)的或相对于价格有弹性。...绝对值大于1 需求相对于价格有弹性:某种产品价格一定比例的上涨导致其需求量更大比例的下降,我们也称该产品的需求相对于价格有弹性。...直观因素 可用的生产能力,有生产能力 有弹性 时间调整。
消费型机器人(Consumer Robots)已经出现在我们的生活中——虽然比有些人预期的时间缓慢,但这样的情势即将发生改变。 机器人来了!这是我们早已知道的事了。...主要用于装配线的工业机器人已经存在几十年了,但其应用仍呈指数级成长。另一方面,消费型机器人则以较缓慢的步伐出现在我们的生活中,但这样的情况即将发生改变。...市调公司Juniper Research预测,到2020年,全美有10%的家庭至少会有一个机器人,较2016年的4%微幅增加。 ?...在 《零边际成本社会》(The Zero Marginal Cost Society)这本畅销书中,作者Jeremy Rifkin指出:“透过3D打印机,产品也能客制化,以最低的成本创造出量身定做的单一产品或小量生产...(来源:Juniper Research) 机器人专家不必再受到现成可用组件的束缚,他们现在可以在舒适的办公室、家庭或附近的工作坊(Fab Lab),随时设计与打印自已想要的组件。
在客户服务领域,呼叫中心一直是企业与用户沟通的核心渠道。然而,传统的人力呼叫模式正面临效率瓶颈和高昂成本的双重挑战。随着人工智能技术的快速发展,AI外呼系统凭借其技术创新和成本优势,正在重塑这一行业。...一、效率革命:从有限到无限的算力突破传统人工客服受限于生理条件,每日最多处理100-200通电话,且需轮班休息。...二、成本重构:从线性增长到边际趋零人力成本是传统呼叫中心的核心支出(约占60%-70%),而AI外呼的边际成本极低。...三、技术演进:从规则引擎到意图理解的跨越早期AI外呼依赖固定话术,难以应对复杂场景。但大模型与搜索增强技术(RAG)的融合,使新一代系统具备多轮对话、上下文理解等能力。...AI外呼的崛起印证了技术如何将高成本、低效率的传统模式转变为智能化、规模化的服务网络。随着NLP、大模型等技术的持续突破,AI外呼将不再局限于“替代人力”,而是成为企业数字化转型的核心引擎。
近年来,如何将模型与深度学习相结合也引发了研究者的兴趣。...贝叶斯建模的主要思想是使用一些观察到的数据 D 来推断模型参数θ的后验分布,采用的贝叶斯定理如下: 其中 p(D|θ)是似然,p(D)是边际似然(或证据),而 p(θ)是先验,D * 是未见过的新数据...但相比先验,人们的注意力更多地集中在后验预测的性质上,比如预估以上等式的积分或使用边际似然进行贝叶斯模型选择。...遵循先验错误指定的考量,作者建议考虑 BNN 的替代先验并在论文中回顾了在权重空间和函数空间中定义的先验,还展示了如何将这些思想扩展到神经网络的(贝叶斯)合奏。...而且,在某些情况下,甚至可以仅从数据中学习到这些模型有用的先验。
因为有了一次 pre-scroll 操作,我们才可以让子view在第一次执行嵌套滑动分发的时候,带上自己没有消费的距离,也就是 unconsumedY : 到这里 Android 的嵌套滑动机制就比较明了了..., 最终表现就是,不管你的列表有多少数据,都给你一次性加载出来。...关于bottomsheet的基础使用,我们可以参考官方文档或者网上的文章,这里找了一篇,没有使用过这个组件的可以先快速看一下:https://www.jianshu.com/p/0a7383e0ad0f...这里的 bottomsheet Dialog 的布局,其实是 design 包里面内置的,我们也可以自己实现这个dialog,布局是这样的: 这里需要让它第二个子view传入一个 behavior...,这里是系统 BottomSheet 手势的behavior。
领取专属 10元无门槛券
手把手带您无忧上云