保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

AndroidApp首页主流框架搭建

  DrawerLayoutNavigationViewToolbarViewPagerBottomNavigationView效果
  页面结构解析
  这是一个比较常见的APP首页的结构,侧边栏主页,侧边栏里是一些菜单,主页由底部菜单控制内容区,内容区是可滑动的子页面。整体比较舒服合理,各自为阵,却又能关联在一起,加上又是大众喜爱的MaterialDesign风格,所以成为了当下APP首页的主流结构。
  上图是做的一个简单的思维导图,并不复杂,理清了结构就能事半功倍。页面布局1。首页
  即整个大的容器。
  lt;?xmlversion1。0encodingutf8?includelayoutlayoutappbarmainandroid:layoutwidthmatchparentandroid:layoutheightmatchparentcom。google。android。material。navigation。NavigationViewandroid:ididnavviewandroid:layoutwidthwrapcontentandroid:layoutheightmatchparentandroid:layoutgravitystartandroid:fitsSystemWindowstrueapp:headerLayoutlayoutnavheadermainapp:menumenuactivitymaindrawerandroidx。drawerlayout。widget。DrawerLayout
  DrawerLayout包裹着include的主页和侧边栏内容NavigationView。appbarmain是主页内容,采用include的方式引用是为了结构清晰,避免混乱。侧边栏NavigationView分为头部布局headerLayout和菜单menu,注意一个是layout一个是menu。其他需要注意的是,NavigationView的位置应与主内容appbarmain同级,且在主内容之后。关于DrawerLayout更多使用可以查看:DrawerLayout使用详解。2。主页
  这里主页说的是首页除侧边栏以外的页面。
  lt;?xmlversion1。0encodingutf8?com。google。android。material。appbar。AppBarLayoutandroid:layoutwidthmatchparentandroid:layoutheightwrapcontentandroid:themestyleAppTheme。AppBarOverlaycom。google。android。material。appbar。AppBarLayoutincludelayoutlayoutcontentmaincom。google。android。material。floatingactionbutton。FloatingActionButtonandroid:ididfabandroid:layoutwidthwrapcontentandroid:layoutheightwrapcontentandroid:layoutgravitybottomendandroid:layoutmarginRightdimendp20android:layoutmarginEnddimendp20android:layoutmarginBottomdimendp70app:srcCompatandroid:drawableicdialogemailandroidx。coordinatorlayout。widget。CoordinatorLayout
  上面是标题,中间是内容区,FloatingActionButton可以忽略。3。主页内容区
  效果同2一样
  lt;?xmlversion1。0encodingutf8?LinearLayoutandroid:layoutwidthmatchparentandroid:layoutheightmatchparentandroid:orientationverticalcom。google。android。material。bottomnavigation。BottomNavigationViewandroid:ididbottomnavigationandroid:layoutwidthmatchparentandroid:layoutheightwrapcontentandroid:layoutmarginTop8dpandroid:background?android:attrwindowBackgroundapp:layoutconstraintBottomtoTopOfidviewPagerapp:menumenubottomnavigationLinearLayoutandroidx。constraintlayout。widget。ConstraintLayout
  上面是ViewPager,可滑动的内容区,填充一个一个的Fragment子页面。下面是BottomNavigationView底部菜单,与上面的ViewPager关联。
  到此页面布局的部分介绍完毕,下面开始说代码部分。代码部分1。侧边栏
  我们要在toolbar上加一个按钮,把侧边栏关联起来,让其点击可以弹出侧边栏。
  Drawer关联ToolbarprivatefuninitActionBarDrawer(){valtoggleActionBarDrawerToggle(this,drawerlayout,toolbar,R。string。navigationdraweropen,R。string。navigationdrawerclose)drawerlayout。addDrawerListener(toggle)toggle。syncState()}2。内容区
  关联了侧边栏,我们来看内容区,上面说过内容区是ViewPager包含的一个个子页面Fragment,来看代码的实现
  初始化FragmentprivatefuninitFragments(){valviewPagerAdapterCommonViewPagerAdapter(supportFragmentManager)viewPagerAdapter。addFragment(HomeFragment())viewPagerAdapter。addFragment(TreeFragment())viewPagerAdapter。addFragment(NaviFragment())viewPagerAdapter。addFragment(ProjectFragment())viewpager。offscreenPageLimit1viewpager。adapterviewPagerAdapter}
  处理事件1。侧边栏点击事件侧边栏点击事件navview。setNavigationItemSelectedListener{Handlenavigationviewitemclickshere。when(it。itemId){R。id。navcollect{ToastUtilKt。showToast(收藏)}R。id。navshare{ToastUtilKt。showToast(分享)}R。id。navabout{ToastUtilKt。showToast(关于)}R。id。navlogout{ToastUtilKt。showToast(退出)}}关闭侧边栏drawerlayout。closeDrawer(GravityCompat。START)true}
  根据itemId判断触发事件,并关闭侧边栏,这一步可选,也可以不关闭保持侧边栏打开的状态。2。viewpager滑动监听viewpager滑动监听viewpager。addOnPageChangeListener(object:OnPageChangeListener{overridefunonPageScrollStateChanged(state:Int){}overridefunonPageScrolled(position:Int,positionOffset:Float,positionOffsetPixels:Int){}overridefunonPageSelected(position:Int){bottomnavigation。menu。getItem(position)。isCheckedtrue设置checked为true,但是不能触发ItemSelected事件,所以滑动时也要设置一下标题when(position){0{toolbar。titleresources。getString(R。string。appname)}1{toolbar。titleresources。getString(R。string。titletree)}2{toolbar。titleresources。getString(R。string。titlenavi)}else{toolbar。titleresources。getString(R。string。titleproject)}}}})
  viewpager滑动之后底部对应的菜单选中,并重新设置标题。3。bottomnavigation底部菜单点击事件bottomnavigation点击事件bottomnavigation。setOnNavigationItemSelectedListener{when(it。itemId){R。id。navigationhome{viewpager。currentItem0returnsetOnNavigationItemSelectedListenertrue}R。id。navigationtree{viewpager。currentItem1returnsetOnNavigationItemSelectedListenertrue}R。id。navigationnavi{viewpager。currentItem2returnsetOnNavigationItemSelectedListenertrue}R。id。navigationproject{viewpager。currentItem3returnsetOnNavigationItemSelectedListenertrue}}false}
  底部菜单点击的时候也让viewpager滑动的响应的位置,同第2步其实是相互关联的。
  到此,整个搭建就完成了,从页面布局到初始化控件,再到处理事件,整体思路要清晰,搭建起来就很快,小的功能细节再调试完善完善就ok了。完整代码https:github。comyechaoawanandroidkotlin
  写作不易,有用就点个赞呗

为什么华为不当组装厂?余承东反思核心领域不能被卡脖子转眼间,华为荣耀分家已是两年前,总部依旧面临巨大压力,去年全球销售收入同比下滑28。6,但净利润上千亿,活了下来。余承东坦言:以前太相信全球化分工,没有进军半导体,结果被……区块链是元宇宙的核心技术今天给大家介绍一下元宇宙的核心技术区块链,关于区块链和元宇宙之间的关系,今天给大家从数字经济的这个词里面来讲一下区块链到底是怎么撑起一个元宇宙的。首先我们要搞清楚一个概念……怀念我的爷爷奶奶英语作文RememberingMyGrandparents第一篇:Whenmemorybeganforme,mygrandfatherwaspastsixtyagreattall……诚信的名人名言在一个人民的国家中还要有一种推动的枢纽,这就是美德。孟德斯鸠人不能象走兽那样活着,应该追求知识和美德。但丁勿以恶小而为之,勿以善小而不为。惟贤惟德,能服于人。刘备……六一儿童节送什么,送一份安全给宝贝,入门儿童手表选购指南自从有了孩子之后,生活就开始变得更加丰富多彩起来。但是对于孩子安全的问题,我们这些初为父母的80、90后却感到无比的焦虑。在孩子上幼儿园之前,基本上都是随时看管在身边,基本上不……争议!倪非凡枯坐板凳席,出场时间为零,蔡斌重点启用王唯漪6月2日凌晨,中国女排出征世界女排联赛,第一场比赛就上演逆转好戏,蔡斌带领的中国女排在首局1625惨败的情况下,强势爆发,依靠着老队员们的积极调整,王媛媛、丁霞、龚翔宇、李盈莹……跻身财经人物,养鸡赚上亿!这5位过气明星,早已是商业大佬今年520当天,49岁的李冰冰发布了一条微博,称爱美景爱生活,但绝口不提爱人。这让不少人都很遗憾她至今未婚,也让人想起和她传绯闻最多的男明星任泉。众所周……世联赛即将开打!老将有望获蔡斌重用,龚翔宇或被重点提拔世联赛即将开打!老将有望获蔡斌重用,龚翔宇或被重点提拔。网友热议一针见血地指出:龚翔宇,中国女排的劳模,目前国内女排最好的接应,虽然进攻实力一直受到诟病,但是她的一传防守是国内……互娱发声全面布局虚拟现实娱乐内容生态的商业蓝海互娱发声近日,锋尚文化以网络互动方式召开2021年度业绩说明会,与投资者进行了充分的沟通交流。其中,锋尚文化副总经理兼锋尚互娱总经理李斌对投资人提出的有关元宇宙、虚拟数字……粤媒怒了,CBA赞助商侮辱广东男篮!官方迅速删言论,不敢回应北京时间6月1日,现阶段正处于CBA联赛的休赛期,多数球队和球员正在放假。而赛场上没有比赛,CBA赛场下倒是有不少争议事件发生,联赛官方赞助商近日做出一个对CBA俱乐部广东不尊……李宁官方账号暗讽广东男篮引来争议,这是个人行为还是官方操作?今天早上李宁官方账号冲上热搜,原因是在自己的短视频评论区留言暗讽广东男篮,尽管事后李宁官方这边删除了视频和评论。但是这一行为仍然引来了广东球迷以及广东球员周鹏和赵睿的不满,他们……古里奇的神奇之旅小学作文晚上,古里奇看完了科幻小说,关上灯,还没躺下,忽然,一道刺眼的白光闪过,一只巨大的白鸽飞落在了床边。鸽子转动着会发光的眼睛说:你好,古里奇,我叫奥蓝,是拉秘奥星球的使者,……
爱的一瞬间作文500字风撕着树老人的日历,我听到它们落地时那一声声叹息。那片片的日历该是树老人的段段记忆吧?那么,在我的记忆长河中,是否也有那片片日历呢?黄昏的阴影轻轻地飘散在马路上。我在马路……寻找那失去的信任600字作文下午,从我的房间里传来呜呜的声音,我躺在床上,泪水已经将枕头浸湿一个小时前的那一幕还在我的眼前徘徊我和小伙伴们在一起玩耍,可没多久大家就感觉有点无聊。实在忍受不了那沉闷的……华为苹果小米价格战拉开帷幕,618手机大跳水,附上推荐清单话说618是上半年里最适合更换新手机的时间应该没人会反对吧?经过半年沉淀,各家手机厂商的旗舰产品基本发布完毕,很多平时缺货的机型,在618前后产能也稳定下来了。那么,具体……牛市行情将持续约两年,布局首选科技股股市上涨已经一个多月,上证指数和科创板均已成功站上牛熊分界线,意味着牛市正式来临。进入6月之后,虽震荡难免,但整体上67月的行情将比5月份还强得多。预计324033……中国人的太空航天之旅,浪漫与科技并存我国的太空航天史并不长,但是每一步都相当稳健,让我们一直看一下我国的飞船发射历史:1999年11月20日凌晨6点,神舟一号飞船发射升空,于1999年11月21日凌晨3点4……拍卖会三年级作文今天,一节自修课上,同学们正聚精会神的做作业。忽然,一只小鸟从窗外飞了进来,把同学们吓了一大跳。还是张帆眼疾手快,挑起来一抓,可惜没抓住。我紧接着一扑,抓住了!我们在欢喜之余,……闻泰科技子公司买下英国最大芯片制造商,美国开始使坏【文观察者网齐倩】去年7月,闻泰科技全资子公司安世半导体宣布已完成收购英国最大芯片制造商NewportWaferFab(下称NWF)的交易协议签署。但时隔近一年后,今年5月,英……三年亏超百亿!威马汽车赴港上市,李嘉诚家族这次押对宝了?本文来源:时代财经作者:林前6月1日,威马汽车向港交所递交招股说明书,将在主板市场上市,海通国际、招银国际、中银国际为联席保荐人。这意味着,威马汽车即将成为继蔚小理之后,……精华动物园小学作文500字汇总七篇在学习、工作乃至生活中,说到作文,大家肯定都不陌生吧,作文一定要做到主题集中,围绕同一主题作深入阐述,切忌东拉西扯,主题涣散甚至无主题。那么你有了解过作文吗?下面是小编为大家整……彻底关闭小米手机自动更新小米手机或者红米手机在使用过程中,总是会自动更新升级系统,以至于呢造成手机经常反应慢或者卡死的现象!今天就教大家彻底关闭小米手机自动更新。首先先去系统更新页面,点击右上角……Vivo新旗舰200W充电?小米12S入网,搭载天玑9000据爆料,Vivo新旗舰将采用200W的充电头,全线向下兼容120W、80W、66W等。早前小米官方就爆料拥有200W的充电技术,但目前商用的国内最快的是RealmeGTNeo3……小米13和小米13Pro可能提前公布近日,小米已经定下早日发布新一代旗舰产品的规定。因此,该公司在12月举行了小米11和小米12的发布会,急于成为首批提供高通全新高端硬件平台的旗舰之一。今年很可能会延续早期发布的……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网