最近项目用到了底部滑出按钮,拿到需求的时候想了一下实现的方法,发现github有一些库用到了此类菜单,虽然说效果很好,但是不想引入过多的库,所以用原生代码写了一个简单的实现,本人小菜鸟,大佬们觉得不好请勿喷,咱们下面就开始一步步实现过程吧。。
1,实现此类需求,我们要想一想怎么去设计才是最简单的方法,做到心中有模型,手中有代码肯定使我们的成功提高一半呀,首先我们知道这个底部按钮弹出,无非简单textView做一个排列,为了我们的效果更佳的美观,我们可以调用shape或者style来设计我们认为最优秀的风格,话不多说,我们先来看一下我们的代码。
1.1 dialog布局,这里我们用最简单的布局格式
可以看到我们这边调用了background属性,而我们的这个属性里面引用了我们的drawable下面的也就是我们说的shape,来调节我们dialog布局的圆角,这样就使我们的弹窗更加的立体感有木有,下面我们看这个shape,很简单,就是一个属性设置,这个我们不用过多的讲
现在基本条件都已经具备了,那么我们该怎么实现我们的方式呢,下面开始撸码。
看到上面,我们很轻松的就能看到我们引用了LayoutInflater这个局部引入类,不得不说这个类在android中真的是非常的强大,例如我们自定义view的时候都会用到,想知道这个类的同学可以自行百度一下,这里我们要简单了解几个属性,Window dialogWindow =dialog.getWindow();这个里面我们是获取当前Activity的窗体,从而去显示我们的view,然后我们调用dialogWindow下面的setGravity方法设置我们的dialog从底部弹出, 然后再调用我们的WindowManager.LayoutParams这个属性获得窗口的属性,设置我们的宽度等等然后赋给我们窗口,可能这边有点绕,但是无非就是获取窗口,设置属性,赋给窗口,这时候我们就可以设置我们的dialog.show了,当然在我们调用的时候我们要绑定点击事件或者我们可以引用butterknife去优化我们的代码,是不是很简单的就实现了我们的需求,而且完全不用去引用我们的第三方库,其实实现的方式有很多种,我只是选择了我所了解的方式去实现,后期将会为大家带来更多自己的想法,谢谢啦