Android底部导航栏实现,Android开发学习视频

安卓:BottomNavigationBar——底部导航栏控件 BottomNavigationBar是一个用于Android应用程序的底部导航栏控件,通常用于在应用程序的不同页面之间进行快速切换。它提供了一种直观且易于使用的导航方式,使用户可以轻松访问应用程序的各个模块。BottomNavigationBar(底部导航栏)是一种常见的用户界面设计模式,常用于移动应用程序中。 阅读详情
  • Fragment.class

  • 总结

底部导航栏

================================================================

在使用应用软件时,为了方便用户操作和增加界面直观,许多应用都会用到底部导航栏。

我们经常使用的微信、QQ就是很贴切的例子:

在这里插入图片描述

在这里插入图片描述

下面我通过几种方式实现类似效果的底部导航栏。

使用Fragment实现底部导航栏

============================================================================

效果展示


在这里插入图片描述

相关概念介绍:


官方文档

Fragment表示 FragmentActivity中的行为或界面的一部分。可以在一个 Activity中组合多个Fragment,从而构建多窗格界面,并在多个 Activity 中重复使用某个片段。Fragment必须始终托管在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。例如,当Activity 暂停时,Activity的所有片段也会暂停;当Activity 被销毁时,所有片段也会被销毁。

不过,当Activity 正在运行时可以独立操纵每个Fragment,这里就是应用到了每个Fragment的可独立操作这一特性。每个页面使用一个Fragment来实现,所有页面都以同一个activity为宿主,通过获取用户操作隐藏其他页面,显示当前所在的页面对应的Fragment,实现页面间的切换,并且还是可以独立的操作每个页面。

Fragment的使用

Fragment类的代码与Activity非常相识,它包含与 Activity类似的回调方法,如 onCreate()、onStart()、onPause() 和 onStop()。

Fragment生命周期

与Activity对比Fragment的生命周期有个比较有特点的方法,并且在这里是比较重要的:

onCreateView():系统会在片段首次绘制其界面时调用此方法。若Fragment需要加载样式则需要在此方法中使用inflate加载样式文件,并且作为方法的放回值,若不需要的话默认放回NULL。inflate的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化成View。

public class pageFragment1 extends Fragment {

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.tab1, container, false);

return view;

}

}

FragmentManager简介

为了管理Activity中的Fragments,需要使用FragmentManager.

在Activity中要获取FragmentManager需要调用Activity的getFragmentManager()方法。

向FragmentManager中添加Fragment:

可以使用FragmentTransaction来实现,FragmentTransaction可以通过FragmentManager.beginTransaction()来获取,使用add(int containerViewId, Fragment fragment, String tag)方法来添加一个Fragment,remove(Fragment fragment)方法来移除掉一个Fragment。

通过show(Fragment fragment,String tag)和hide(Fragment fragment,String tag)制FragmentManager所管理的Fragment的显示状态,当hide时Fragment不显示,处于暂停状态;show时处于运行状态,允许用户交互。示例代码:

private void selectTab(int i) {

//获取FragmentManager对象

FragmentManager manager = getSupportFragmentManager();

//获取FragmentTransaction对象

FragmentTransaction transaction = manager.beginTransaction();

//先隐藏所有的Fragment

hideFragments(transaction);

switch (i) {

//当选中点击的是第一页的Tab时

case 0:

//设置第一页的ImageButton为绿色

mImg1.setImageResource(R.mipmap.icon1);

//如果第一页对应的Fragment没有实例化,则进行实例化,并显示出来

if (mFrag1 == null) {

mFrag1 = new Fragment();

transaction.add(R.id.id_content, mFrag1);

} else {

//如果第一页对应的Fragment已经实例化,则直接显示出来

transaction.show(mFrag1);

}

break;

case 1:

mImg2.setImageResource(R.mipmap.icon1);

if (mFrag2 == null) {

mFrag2 = new pageFragment2();

transaction.add(R.id.id_content, mFrag2);

} else {

transaction.show(mFrag2);

}

break;

case 2:

mImg3.setImageResource(R.mipmap.icon1);

if (mFrag3 == null) {

mFrag3 = new pageFragment3();

transaction.add(R.id.id_content, mFrag3);

} else {

transaction.show(mFrag3);

}

break;

case 3:

mImg4.setImageResour

HTML+CSS设计一个简单的水平一级导航栏 (3)为了能够改变里的高度和宽度,我们首先让display:inline-block;这里是重点,因为属于inline类型不能够改变高度和宽度,只有转换类型为inline-block才能够改变。(2)#nav里设置导航栏的宽度以及外边框属性(此处font-size=0是为了防止每个超链接选项出现间隙,你可以删除此项对比效果)前面我学习了一段时间的HTML和CSS知识,下面我们来运用知识实现一个简单的水平一级导航栏。这里是在中使用三个标签,为了方便我没有使用或者. 阅读详情

相关推荐

Android 13 SystemUI,底部导航栏新增功能按键、导航栏侧边(左侧,右侧,顶侧)显示。

SystemUI 是Android原生系统极重要的系统APP,本文介绍如何根据需要在原生三个按键BACK HOME RECENT的基础上,新增新的自定义按键。SystemUI总共分为三个版本:Phone手机、Tablet平板、TV版本。Android13中,Phone、Tablet是一样的。

weixin_43522377的博客 5729

flutter底部导航栏填充动画,android视频播放器开发

大型项目屏幕适配UI绘制流程自定义View注:学习Android9.0最新技术,刘海屏适配在原生体验上更高一层路总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。

2401_84408418的博客 1290

Android-Flutter-BottomNavigationBar:该如何优雅实现底部导航栏

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。欢迎大家一起交流讨论啊~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。[外链图片转存中…(img-T3VZ61QS-1711857667768)]欢迎大家一起交流讨论啊~本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录。

2301_76190858的博客 561

RN 第三方组件TabNavigator底部导航栏,Android开发技巧

这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

2401_84003977的博客 969

flutter底部导航栏填充动画,头条android面试

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

2401_84408437的博客 836

顶刊《会计研究》数据复现|最新上市公司数智化数据

本文基于Python文本分析方法构建了中国A股上市公司数智化指标(1991-2024),通过识别年报中的"机器学习""智能医疗"等关键词,量化企业数字化与智能化融合程度。研究发现数智化企业更倾向于非正式渠道的定性披露以规避风险,该指标为监管完善信披规则提供了参考。研究还揭示了数智化对企业信息披露策略的转变,并提出了未来研究方向,包括数智化对绿色创新、ESG表现等影响机制。数据覆盖非金融类上市公司,采用文本挖掘技术构建结构化指标,为相关领域研究提供了微观基础。

PPdata_Academy的博客 1487

智能座舱(七)——智能音频系统

本文剖析车载智能音频系统的核心技术,聚焦音响、功放、麦克风和广播收音机四大组件。音响系统通过多声道布局(如23扬声器阵列)结合动态声场校准算法,实现三维声场覆盖;功放系统采用高效D类技术,支持OTA音效调整和故障自愈;麦克风阵列运用波束成形技术实现精准拾音,并保障隐私安全;广播系统融合数字与网络技术提升音质。核心在于硬件标准化与算法差异化的协同,未来将朝集成化、AI个性化方向发展。

DC20160101的博客 1573

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 838

OpenClaw 企业级自动化系统架构设计与实现

本文介绍基于 OpenClaw 构建的企业级自动化系统的完整架构设计、技术选型、实现细节和性能优化方案。

2604_95445636的博客 484

相机光学(三十八)——VCM(Voice Coil Motor)音圈马达

VCM(Voice Coil Motor)音圈马达全称Voice Coil Montor,电子学里面的音圈电机,是马达的一种。因为原理和扬声器类似,所以叫音圈电机,具有高频响、高精度的特点。其主要原理是在一个永久磁场内,通过改变马达内线圈的直流电流大小,来控制弹簧片的拉伸位置,从而带动上下运动。手机摄像头广泛的使用VCM实现自动对焦功能,通过VCM可以调节镜头的位置,呈现清晰的图像。弹片式结构滚珠式结构摩擦式结构Open loop开马达Close loop闭环马达。

图像学习之旅 7223

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境 注:本次实验主要是《恶意代码分析实战》一书中进入动态恶意代码分析篇章的开始,主要通过Apatedns以及Inetsim来模拟为恶意代码提供其需要的网络环境,本次实验以Lab01-03.exe为例。 一、实验环境及工具。 Vmware虚拟机:win10(win7)、kali 主要工具:Apatedns、Inetsim 二、工具的安装下载 1、Apatedns:需安装至windows虚拟机客户端(win10,win7均可) 下载地址:http

妙蛙种子吃了都会妙妙秒的妙脆角的博客 7936

《AgentScope-Java 深入浅出教程》第1章 AgentScope-Java 简介

AgentScope-Java 是一个面向智能体的编程框架,专门用于构建基于大语言模型(LLM)的 AI 应用程序。│ 你的业务应用 ││ AgentScope-Java 框架 ││ │ 智能体 │ │ 工具 │ │ 记忆 │ │ 模型 │ ││ LLM 服务 (DashScope/OpenAI/...) │能力说明类比ReAct 推理让智能体能够"思考"并"行动"就像人类思考后再做事工具调用让智能体能够执行外部操作就像人使用计算器、搜索引擎记忆管理让智能体能够记住对话历史。

步子哥的博客 592

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Android应用程序签名 debug签名,一文全懂
下一篇: Android组件化和插件化开发简单介绍,kotlin开发android教程
flunsna
博客等级 码龄5年 10粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值