美文网首页
Window的使用

Window的使用

作者: 名字_都被占了 | 来源:发表于2018-05-24 09:56 被阅读0次

首先先申请SYSTEM_ALERT_WINDOW权限

在桌面显示一个悬浮按钮的例子:

        final Button button=new Button(this);
        button.setText("我是按钮");
        final WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        final WindowManager.LayoutParams params = new
                WindowManager.LayoutParams();
        params.type = WindowManager.LayoutParams.TYPE_TOAST;//TYPE_PHONE需要获取手机的悬浮窗权限,TYPE_TOAST不需要手机的悬浮窗权限便可以显示,但是android7.0有问题了,需要换成TYPE_PHONE才行
        params.format = PixelFormat.RGBA_8888;
        params.gravity = Gravity.LEFT | Gravity.TOP;
        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
        params.width = ViewGroup.LayoutParams.WRAP_CONTENT;// 另外windowManager.getDefaultDisplay().getWidth();获取屏幕的宽度
        params.height =ViewGroup.LayoutParams.WRAP_CONTENT;// 另外windowManager.getDefaultDisplay().getHeight();获取屏幕的高度
        params.x = 100;
        params.y = 300;
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        Log.d("CeShi", "anxiale");
                        break;
                    case MotionEvent.ACTION_MOVE:
                        params.x= (int) event.getRawX()-button.getWidth()/2;
                        params.y= (int) event.getRawY()-button.getHeight()/2;
                        windowManager.updateViewLayout(button,params);//可以在app中拖动,出了app就不能拖动了
                        break;
                }
                return true;
            }
        });
        windowManager.addView(button, params);

参考文章:
http://www.jianshu.com/p/167fd5f47d5c
https://www.liaohuqiu.net/cn/posts/android-windows-manager/

相关文章

网友评论

      本文标题:Window的使用

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