弱化版悬浮窗

项目需要一个悬浮窗,但是只是在应用内显示,所以写了一个弱化的悬浮窗;

1.使用Acitvity的Context来初始化的WindowManager;

2.使用windowmanager.addview将自定义的View来直接在根布局上添加一层布局,根部局是FrameLayout所以会显示在最上层;

3.自定义view继承linearlayout(这是我的,你可以随意),view的布局用xml定义的,然后用layoutinflater.(layout,root)引入,用this做root即可绑定在一起;

4.在自定义view中重写ontouch事件,实现跟随手指移动;

自定义View类,View管理类,对外开放接口,便捷调用;

建议:

mWindowParams.type 

不要使用,这样就只是对view的布局操作不算是系统承认的悬浮窗不用涉及到权限;

注意:具体的代码网上有很多,我的例子放到了自己的github上,此处只说注意的地方

        mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        mWindowParams.gravity = Gravity.START | Gravity.TOP;

这两个属性一定要有,第一个还好说是为了不让悬浮窗霸占焦点用的,第二个就有点匪夷所思了,但是一定要有,不然在计算手指跟随的时候会出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值