首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义View:手撸一个带FAB凹槽的底部导航栏

: 导航栏与页面跳转:使用谷歌官方提供的现成组件BottomNavigationView+Navigation组件+Fragment的方式来实现; FAB停靠导航栏:利用协调者布局CoordinatorLayout...(主要涉及:BottomNavigationView Navigation Fragment Canvas Path Animation CoordinatorLayout) 实现过程 导航栏与页面跳转...由于谷歌官方有现成的导航相关组件BottomNavigationView和Navigation组件,一般来说如果没什么特殊需求的话只需要自己定义下导航路由图和底部导航菜单menu文件,定义导航item...以及每个item对应的页面使用Fragment组件来实现,页面跳转、item切换动画等的相关功能都是现成的,方便快捷。...导航栏中间大按钮停靠 在之前已经在导航栏上留好了放置大按钮的位置,接下来就是想办法把这个按钮塞进去,并且设置按钮的中心点与导航栏的顶部居中对齐。

26610

使用导航组件: 条件导航 | MAD Skills

这是第二个关于导航 (Navigation) 的 MAD Skills 系列,本文是导航组件系列的第二篇文章,如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 在应用中导航时使用...在本文中,我将通过添加条件导航来修复这个问题,并且当用户首次启用应用时指导我们的用户做出选择。...如果您跟着文章一起操作,也可以检出仓库中的代码。...现在当我运行应用时,它会导航至 SelectionFragment。后续应用的启动将会记住我做出的选择并将我导航至正确的起始目的地。 就是如此!我们在 DonutTracker 应用中添加了条件导航。...通过条件导航,当用户首次启动 DonutTracker 应用时,应用将触发一次流程,将用户导航至 SelectionFragment。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    写一个MVVM快速开发框架:谈一谈“单Activity+多Fragment”模式

    Navigation组件 Navigation是Jetpack组件之一,很早之前iOS就是采用的这种跳转方式,当时就在想Android为啥没有,没多久Navigation就面世了。...,NavController可以控制跳转、返回、动画、监听等操作。...Navigation 我们通常使用底部导航栏将app划分出不同的功能,这些都是单独的module,但是在navigation中怎么进行module间的跳转呢?...navController.navigate(item.itemId) return true } }) 偷懒的话可以将BottomNavigationView...使用的menu中的id与navGraph中设置成一样的啊哈哈哈哈 基本上ARouter+Navigation可以满足大部分的页面跳转需求,但还是有一些难点,就是不同moduel之间的navGraph怎么相互控制

    1.8K40

    Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)

    它就不报错了,这句话的意思是未使用导航的许可。因为我现在还没有使用这个nav_graph.xml所以要加上这一句话告诉AS,让它放心。等我们真正去使用时,是没有影响的,去不去掉都行。 3....enterAnim表示进入BFragment的动画,exitAnim表示退出BFragment的动画,这些都是Navgation中自带的。...可以看到,底部的导航栏已经出来了,而且还可以点击,点击之后还有动画效果,并且图标和文字的颜色还有变化,因为实际上我只是放了灰色图标而已。...那么这些工作就都是BottomNavigationView帮我们完成的,的确是省了不少事情,当然这个动画效果和点击之后的颜色都是可以让开发者自行改的。...navController = Navigation.findNavController(this, R.id.nav_host_fragment); //通过setupWithNavController将底部导航和导航控制器进行绑定

    10.2K42

    听说谷歌Baba更新了 Material UI ...

    脑图呈现文本重点 前期配置 当初LZ前期配置遇了不少坑,这里我们一起回顾下: Step 1:打开工程目录下的build.gradle文件,并添加maven引用 allprojects {    repositories...Bottom Navigation BottomNavigationView创建底部导航栏,用户只需轻点一下即可轻松浏览和切换顶级内容视图。 ...当项目有3到5个顶层(底部)目的地导航到时,可以使用此模式。...使用也是很Easy,如下: 创建一个菜单资源 ,最多5个导航目标(BottomNavigationView不支持超过5个项目); 在内容下面放置BottomNavigationView; 将BottomNavigationView...下面着撸起实现: Step 1:搞个布局玩玩 外层使用CoordinatorLayout包裹,底部导航栏采用BottomNavigationView,中间内容区域,很Easy咯~ <?

    3K20

    Jetpack组件之Navigation

    为此,Jetpack提供了Navigation组件,方便我们管理页面和AppBar。...方便添加页面切换动画。 页面间类型安全的参数传递。 支持深层链接DeepLink。 通过NavigationUI类,对菜单、底部导航、抽屉菜单导航进行统一的管理。...使用Toolbar时,Navigation组件会自动处理导航按钮的点击事件,因此无需覆盖onSupportNavigateUp()。...当用户通过显式深层链接打开您的应用时,任务返回堆栈会被清除,并被替换为相应的深层链接页面。当用户从深层链接页面按下返回按钮时,他们会返回到相应的导航堆栈。...形式为 {params} 的路径参数占位符与一个或多个字符相匹配。 可以使用查询参数占位符代替路径参数,也可以将查询参数占位符与路径参数结合使用。

    3K20

    Material Design 在 Android 中的应用

    整个分享过程,感觉自己就是为了将PPT内容放完就等于完成任务似的,导致听的人迷迷糊糊的,一个点还没有放完就跳到了另一个点,致使整个分享结束,听众吸收的部分很少。...我想了下,就按照我做这个小项目,需要的控件顺序说起吧,这样也相当于大家跟我一起做出一个具有Material Design风格的APP了。 1、主题 一个项目的开始,你得先确定这个项目的主题颜色是什么?...那么底下就需要一个tab进行切换,BottomNavigationView便开始登场。从名字就可以看出 「底部导航view」,主要的作用在于给每个模块一个导航定位的功能。 先看一下效果: ?...8、转场动画 交互有了,现在看是添加点击跳转效果了。咱们之前跳转动画都是在startActivity之后调用overridePendingTransition方法,传入进入和退出的动画实现跳转动画。...使用时,需在setContentView()之前加上 window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS) 跳转时候这样写: startActivity

    1.3K20

    安卓Navigation系列——进阶篇

    是谷歌的一个实现底部导航的组件, app:menu属性为底部导航栏指定元素,新建一个bottom_nav_menu的menu资源文件 <?...val navController = navHostFragment.navController //fragment与BottomNavigationView的交互交给...NavigationUI bottom_nav_view.setupWithNavController(navController) } } 通过NavigationUI库,将BottomNavigationView...那么我们是不能在布局文件中通过app:navGraph属性指定自定义的导航资源文件了,只能在布局文件中去掉app:navGraph这个属性,然后在添加FixFragmentNavigator的同时,通过代码将导航资源文件设置进去...FixFragmentNavigator navController.navigatorProvider.addNavigator(fragmentNavigator) //通过代码将导航资源文件设置进去

    3.2K30

    Android 多返回栈技术详解

    作者注: 这里有一个非常重要的事情需要大家注意,在同一个 FragmentManager 中绝对不应该将含有 addToBackStack() 的事务和不含的事务混在一起: 返回栈的事务无法察觉返回栈之外的...这些 Fragment 已经完全将状态保存,并且 FragmentManager 会随同事务状态一起保持它们的状态。...在 Navigation 中启用多返回栈 如果您正在使用 NavigationUI,它是用于连接您的 NavController 到 Material 视图组件的一系列专用助手,您会发现对于菜单项、BottomNavigationView...比如,在 Compose 中,任何全局的导航模式 (无论是底部导航栏、导航边栏、抽屉式导航栏或者任何您能想到的形式) 都可以使用我们在与 底部导航栏集成 所介绍的相同的技术,并且结合 saveState...和 restoreState 属性一起调用 navigate(): onClick = { navController.navigate(screen.route) { // 当用户选择子项时在返回栈中弹出到导航图中的起始目的地

    96810

    30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    用于将骨骼动画应用到 3D 模型上。它是实现角色动画的重要组件之一,可以让游戏角色在运动中更加自然和流畅。...Capsule Collider 可以与刚体组件一起使用,以便让游戏对象能够受到外力的作用,并且可以与其他类型的碰撞体进行碰撞检测。...与效应器一起使用的碰撞器通常不设置为触发器,以便其他碰撞器可以与它碰撞。...用于将两个物体连接在一起,使它们相对运动。与其他关节组件不同,Relative Joint 2D允许开发者指定相对移动向量,而不是像其他关节组件一样强制物体在特定方向上移动。...Toggle Group组件可以将一组Toggle开关选项组织在一起,并实现单选或多选的逻辑控制。

    2.9K35

    Cesium入门之五:认识Cesium中的Viewer

    baseLayerPicker:false,//地图图层组件 fullscreenButton:false,//全屏组件 geocoder:false,//地理编码搜索组件...flyTo(target, options): 使相机飞行到指定的目标位置,并设置相应的动画效果和参数。 forceResize(): 强制刷新Viewer的大小和位置。...Viewer构造函数的初始化选项 animation: 是否显示动画控制面板,默认为true。当启用时,动画小部件会在场景下方展示当前时间和时间轴,可以通过鼠标交互来改变时间。...如果不把焦点从当前元素移开,用户将不能使用键盘或鼠标来与Cesium Viewer进行交互。...如果您将这个值设置为0或1,将禁用MSAA,将不会进行多重采样,从而降低了渲染质量。 需要注意的是,增加MSAA采样数会增加GPU的计算负担和内存消耗,可能会影响场景的性能。

    2.5K41

    【愚公系列】《AIGC辅助软件开发》013-AI辅助客户端编程:AI辅助 iOS 应用开发

    #### 3.3 动画与过渡- **基本动画**:了解如何使用 `withAnimation` 添加简单的动画效果。- **过渡效果**:学习如何在视图之间添加过渡效果,如淡入淡出、缩放等。...**实践**: - 创建一个自定义的评分组件,并在多个视图中复用。### 5. 实践与项目开发通过构建实际项目,将学习到的知识应用到实践中。...列表(List)`List` 是 SwiftUI 中显示一组数据的列表视图,通常与 `ForEach` 一起使用。...动画与过渡(Animations and Transitions)SwiftUI 提供了简单的方式来为视图添加动画效果。...这里的 `import SwiftUI` 导入了 SwiftUI 框架,使你可以使用框架中的组件来构建用户界面。### 2.

    9110

    为 Vue 的惰性加载加一个进度条

    准备项目 首先需要一种让进度条与 Vue Router 通信的方法。事件总线模式比较合适。 事件总线是一个 Vue 实例的单例。...不过可以创建一个进度条,并使它在页面加载时完成。 由于不能真正反映进度,所以描绘的进度只是进行了随机跳跃。...一旦路由告诉我们已经导航到尚未加载的页面,它将会开始加载动画。...页面顶端的进度条 为延迟加载触发进度条 现在 ProgressBar 正在事件总线上侦听异步组件加载事件。当某些资源以这种方式加载时应该触发动画。...带有 import 语句的组件不会被归为函数。 总结 在本文中,我们禁用了在 Vue 应用中的预取和预加载功能,并创建了一个进度条组件,该组件可显示以模拟加载页面时的实际进度。

    3.3K30

    Flutter 组件集录 | 桌面导航 NavigationRail

    ---- 2.首尾组件与折叠 leading 和 trailing 属性相当于两个插槽,如下所示,表示导航菜单外的首尾组件。...偷瞄一些源码可以看出 trailing 是和导航菜单一起被放入 Column 中的。...这就是组件分离的好处之一:既可以简化构建结构,增加可读性,又可以将相对独立的构建逻辑内聚在一起。我们完全可以在日常开发中对这样的分离进行借鉴和发挥。...这个动画控制器在 extended 属性变化时,展开折叠导航栏的动画。如下源码所示,可以看出关于这个动画更多的细节。...这里的 ClipRect 组件套的很迷,我试了一下去除后并不影响动画效果,一开始不知道为什么要加。之后将动画时长拉长,进行了一些测试发现端倪,如果不进行裁剪,就会出现如下的不和谐情况。

    3.3K20

    Android Studio 4.0重磅发布:全新的 Motion 编辑器及众多更新都在这里!

    它提供了用于创建、编辑和预览 MotionLayout 动画的强大界面。...它可以在当前运行应用上的视图之间导航、动画化和过渡,同时还能保持像素级调试 UI 的能力。...Kotlin Android 实时模板 实时模板(Live Templates)是 IntelliJ 的一项便捷功能,允许你输入简单的关键字将常见的构造插入代码中。...UI 开发和 Profile CPU Profiler 更新:使 UI 导航起来更加直观,并且让数据更易于理解 R8 规则更新:用于代码缩减规则的智能编辑器功能,例如语法高亮显示、完成和错误检查...http://d.android.com/studio/ 与往常一样,我们感谢大家的任何反馈。如果发现错误或问题,请提交 issue。

    4.7K30
    领券