简介

最近项目中需要做一个可展开的悬浮按钮,类似微信的浮窗功能。当一段时间不按按钮的时候,按钮能自动贴边,就像IOS的控制中心的功能。在Github上找了半天,找到一个大致符合要求的:FloatMenu,他里面写好了一个基类BaseFloatDailog,直接拿过来用就可以了。但是里面基类中有以下一些问题:

1.通过继承BaseFloatDailog的方式不能设置展开菜单控件的监听

2.构造函数中设置控件的监听会引起程序崩溃

3.在菜单展开后,再拖动菜单,当菜单折叠后,菜单会偏移到其他位置。

3.没有当菜单展开时,周围变暗的效果

4.没有当菜单展开时,点击外围菜单自动折叠的功能。

于是在FloatMenu的基础上,借鉴了以前使用的FloatingActionButtonSpeedDial中点击外围,展开菜单自动折叠的实现,自己解决了以上问题。效果如下:

c3d8c6c24cd8b0e6b8b0719a2a7a8473.gif

主要功能如下:

1.点击展开,再次点击关闭

2.可以拖动

3.展开后会有遮罩,遮罩颜色可以自己设置,点击遮罩展开菜单自动折叠

4.点击展开按钮监听

5.可设置距离顶部不可偏移的高度(如初始设置悬浮按钮不能高于状态栏)和距离底部不可偏移的高度(默认为0)。

使用方式:

直接将源码下载,将其中的类和资源文件拷贝到自己的项目中,再按照我的MainActivity中的写法使用即可。

如果要设置距离顶部和底部不可偏移的距离,直接在初始化时调用函数:

dialog.setOffsetToTop()和dialog.setOffsetToBottom()即可。

源码已经上传到github:https://github.com/MeteorCh/FloatWindow,需要的自取。如果感觉比较好用的话,记得给个star哦。

更新记录

2019.9.5更新:界面重做,使得界面更加扁平化,更加美观。同时支持设置文字功能,具体见代码。效果如下图所示:

rBAADF8xhhmAbuJFABkYq7bZBT0400.gif

致谢:

本帖子中包含资源

您需要 登录 才可以下载,没有帐号?立即注册

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐