美文网首页Git代码Android UIAndroid工程师
如何实现android炫酷悬浮球菜单

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

作者: 王岩_shang | 来源:发表于2017-01-06 16:04 被阅读6566次

    前言

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

    效果预览

    全能分词 悬浮球效果预览

    思考

    首先我们实现悬浮球时,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 真的是祖国的良心。
    这里也贴下部分的代码实现:
    
    ![展开时源码实现](https://img.haomeiwen.com/i22193/a24c550dc663ff64.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ![显示美女icon实现](https://img.haomeiwen.com/i22193/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)
    
    最后广告下,能否给贫穷的开发者打赏一下下呢?开源不易啊。

    相关文章

      网友评论

      • RealMo:bigbang不错,不过建议此模块单独一个demo比较好。
      • 海上漂泊的码农:请问这个完整的代码都在git上了吗~
        海上漂泊的码农:@王岩_shang 我之前好像下载过好像运行不起来,你这个是个bigbang,功能很多,我只要这一块功能具体在哪块呢。
        海上漂泊的码农:@王岩_shang 我有个项目需求就是要有系统悬浮按钮,可以随手指拖动,点击能够展开二级菜单,你这个都实现了吗
        王岩_shang:@海上漂泊的码农 有的
      • 曾经的那颗星:请问可否让悬浮菜单一直显示?
        王岩_shang:可以的,靠边隐藏逻辑是后续需求新增的

      本文标题:如何实现android炫酷悬浮球菜单

      本文链接:https://www.haomeiwen.com/subject/zgbuvttx.html