WindowManager使用笔记

https://blog.csdn.net/Love667767/article/details/105735008

WindowManager

在这里插入图片描述

Window 的类型有很多种,总的来说分为三大类型,分别是 Application Window(应用程序窗口) 、Sub Window (子窗口)、 System Window (系统窗口)。

窗口类型Type 值
应用程序窗口1 ~ 99
子窗口1000 ~ 1999
系统窗口2000 ~ 2999

在一般情况下, Type 值越大则 Z-Oder 排序越靠前,就越靠近用户。

一、使用WindowManager实现悬浮窗

实例:

WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams = new WindowManager.LayoutParams();
View mView = LayoutInflater.from(mContext).inflate(R.layout.pop_message_view, null);
//设置图片格式,效果为背景透明
mLayoutParams.format = PixelFormat.RGBA_8888;
//悬浮窗位置
mLayoutParams.x = 768; 
mLayoutParams.y = 100;
//悬浮窗大小
mLayoutParams.width = 1026;
mLayoutParams.height = 400;
//悬浮窗起始位置
mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
//悬浮窗口类型
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
//悬浮窗动画
mLayoutParams.windowAnimations = R.style.toast_anim_view;
mWindowManager.addView(mView, mLayoutParams);

注意事项:

​ 1、WindowManager设置位置x,y生效的前提:设置LayoutParams.gravity

​ 2、WindowManager要设置宽高

​ 3、WindowManager的view布局最外层不能设置marchParent会导致位置属性不生效

​ 4、在AndroidManifest.xml内添加权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

二、WindowManager主要使用方法
//添加视图
public void addView(View view, ViewGroup.LayoutParams params);
//更新视图
public void updateViewLayout(View view, ViewGroup.LayoutParams params);
//移除视图
public void removeView(View view);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值