安卓手游内实现简单的无权限的悬浮球(含菜单)

比较关键的实现思路~~
一、 布局文件构成?
1、使用2个FrameLayout作为悬浮球、菜单栏 (默认隐藏掉菜单栏);
2、菜单栏 内部 由多个 XXXXLayout布局 实现;

二 、悬浮球代码实现?
1、自定义一个类,假如叫做 Ball , 继承 FrameLayout ,并且实现 OnTouchListener 以便实现 拖动悬浮球的 需求;
2、初始化是必须的 , a: 初始化悬浮球的位置,获取屏幕参数,设定windowManager的layoutparams ; b: 创建出悬浮球,加载布局和控件 ; c: FrameLayout添加悬浮球布局,通过windowManager添加该view;
3、windowManager的参数类型选为:LAST_APPLICATION_WINDOW
4、窗口类型的讲解:https://blog.csdn.net/geloin/article/details/42779025

三、屏幕旋转怎么处理悬浮球?
重写onConfigurationChanged方法,判断横竖屏,进而改写悬浮球的坐标;
怎么改?改变mWindowManager的参数值,xy参数;调用updateViewLayout()方法刷新;

四、实现拖动?
重写onTouch方法

    // 获取相对屏幕的坐标,即以屏幕左上角为原点
    int x = (int) event.getRawX();
    int y = (int) event.getRawY();
    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:    //移动
                float mMoveStartX = event.getX();
                float mMoveStartY = event.getY();
                // 更新浮动窗口位置参数
                mWmParams.x = (int) (x - mTouchStartX);
                mWmParams.y = (int) (y - mTouchStartY);
                //mWindowManager更新view
            break;
        }

END.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值