android仿微信浮窗的自动贴边可展开悬浮按钮

简介

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

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

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

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

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

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

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

主要功能如下:

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

2.可以拖动

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

4.点击展开按钮监听

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

使用方式:

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

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

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

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

更新记录

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

致谢:

上述的代码是在FloatMenuFloatingActionButtonSpeedDial这两个项目的基础上完成的,感谢上述两个项目的开发者。

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MeteorChenBo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值