如何实现android炫酷悬浮球菜单

前言

悬浮球菜单这件事,很多篇文章都有讲过,那为什么我还要再写一篇呢?因为我觉得我们的实现比较酷炫,另外有必要总结下实现的思路,供大家来参考。毕竟做什么事,思路先行,如果没有思路,只会复制粘贴代码,那和咸鱼有什么区别?

效果预览

全能分词 悬浮球效果预览











思考

首先我们实现悬浮球时,WindowManager是离不开的,对它的用法可以自行360搜索。可以看到我们的悬浮球是有二级目录的,存在着两个不同的view之间的相互切换。对于这两级切换,大致实现有两种方式:

1.只使用一个布局文件,其中的元素通过 gone 或 visiable 来实现显示或隐藏。这样做的好处是统一在一个布局中处理,但是坏处也很明显,一要随着切换要自行控制LayoutParam 属性,保证所有的view都可以显示完全,另外则是需要把逻辑放到一个view里面,如果你写 代码的习惯不好,不懂得模块化,写出的东西会非常难看。

2.使用两个布局,通过按钮点击来向WindowManager中添加和移除view,这样显然没有了上面的坏处了,但是你还需要计算,保证两个view的中心点的位置是重合的,不然,一上一下的,你看着也难受,是吧。
so,我们采用了第二种实现方式,这样整个控件的书写可以分为以下四个步骤:


1>实现美女图片iocn到展开布局的切换,也就一个点击事件。


2>实现展开布局的动画与布局,哈哈,这部分有点复杂,不过封装的还可以,对照源码应该看得懂。


3>实现在屏幕不同位置时,展开布局的变化。


4>展开前中心点与展开后中心点位置重合计算。```
# 实现
具体的实现可以参考源码:[ArcTipViewController](https://github.com/l465659833/Bigbang/blob/master/app/src/main/java/com/forfan/bigbang/util/ArcTipViewController.java),没墙github 真的是祖国的良心。
这里也贴下部分的代码实现:


![展开时源码实现](http://upload-images.jianshu.io/upload_images/22193-a24c550dc663ff64.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![显示美女icon实现](http://upload-images.jianshu.io/upload_images/22193-bf24594b7a6a692e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
参考源代码阅读本文,风味更佳哦。
# 链接
* [全能分词开源](https://github.com/l465659833/Bigbang/)


* [Apk下载地址](http://zhushou.360.cn/detail/index/soft_id/3539904)


* [Google Play 下载地址](https://play.google.com/store/apps/details?id=com.forfan.bigbang)


作者:王岩_shang
链接:https://www.jianshu.com/p/56abca9fb592
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


作者:王岩_shang
链接:https://www.jianshu.com/p/56abca9fb592
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Android)