热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

底部菜单弹出按钮,纯Dialog自定义菜单栏,打造最简单的动画效果

最近项目用到了底部滑出按钮,拿到需求的时候想了一下实现的方法,发现github有一些库用到了此类菜单,虽然说效果很好,但是不想引入过多的库,所以用原生代码写了一个简单的实现,本人小菜鸟,大佬们觉

最近项目用到了底部滑出按钮,拿到需求的时候想了一下实现的方法,发现github有一些库用到了此类菜单,虽然说效果很好,但是不想引入过多的库,所以用原生代码写了一个简单的实现,本人小菜鸟,大佬们觉得不好请勿喷,咱们下面就开始一步步实现过程吧。。

实现此类需求,我们要想一想怎么去设计才是最简单的方法,做到心中有模型,手中有代码肯定使我们的成功提高一半呀,首先我们知道这个底部按钮弹出,无非简单textView做一个排列,为了我们的效果更佳的美观,我们可以调用shape或者style来设计我们认为最优秀的风格,话不多说,我们先来看一下我们的代码。

dialog布局,这里我们用最简单的布局格式


可以看到我们这边调用了background属性,而我们的这个属性里面引用了我们的drawable下面的也就是我们说的shape,来调节我们dialog布局的圆角,这样就使我们的弹窗更加的立体感有木有,下面我们看这个shape,很简单,就是一个属性设置,这个我们不用过多的讲


现在基本条件都已经具备了,那么我们该怎么实现我们的方式呢,下面开始撸码。


看到上面,我们很轻松的就能看到我们引用了LayoutInflater这个局部引入类,不得不说这个类在android中真的是非常的强大,例如我们自定义view的时候都会用到,想知道这个类的同学可以自行百度一下,这里我们要简单了解几个属性,Window dialogWindow =dialog.getWindow();这个里面我们是获取当前Activity的窗体,从而去显示我们的view,然后我们调用dialogWindow下面的setGravity方法设置我们的dialog从底部弹出, 然后再调用我们的WindowManager.LayoutParams这个属性获得窗口的属性,设置我们的宽度等等然后赋给我们窗口,可能这边有点绕,但是无非就是获取窗口,设置属性,赋给窗口,这时候我们就可以设置我们的dialog.show了,当然在我们调用的时候我们要绑定点击事件或者我们可以引用butterknife去优化我们的代码,是不是很简单的就实现了我们的需求,而且完全不用去引用我们的第三方库,其实实现的方式有很多种,我只是选择了我简单的dialog方式去实现,后期将会为大家带来更多自己的想法,谢谢啦



推荐阅读
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 本文介绍了 Android 开发中常用的滚动视图组件 ScrollView 和 HorizontalScrollView 的基本用法和注意事项,帮助开发者更好地处理屏幕内容超出显示范围的情况。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
author-avatar
陈小扬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有