WindowManager创建创建悬浮窗

WindowManager创建悬浮窗,比如音量控制的视图弹窗,一些悬浮按钮,悬浮菜单等

 

WindowManager mManager = (WindowManager) getApplicationContext()
				.getSystemService(Context.WINDOW_SERVICE);//WindowManager管理器
RelativeLayout mBottomView = (RelativeLayout) LayoutInflater.from(
				MainActivity.this).inflate(R.layout.window_bottom, null);//布局资源
		WindowManager.LayoutParams mParamsBottom = new WindowManager.LayoutParams();//
		mParamsBottom.type = LayoutParams.TYPE_PHONE;//它置于所有应用程序之上,状态栏之下
		mParamsBottom.format = PixelFormat.RGBA_8888;
		mParamsBottom.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
				| LayoutParams.FLAG_NOT_FOCUSABLE
				| LayoutParams.FLAG_NOT_TOUCHABLE;
		mParamsBottom.gravity = Gravity.LEFT | Gravity.TOP;
		mParamsBottom.x = 0;//显示的位置
		mParamsBottom.y = 200		
		mParamsBottom.width = LayoutParams.MATCH_PARENT;
		mParamsBottom.height = LayoutParams.WRAP_CONTENT;
		mManager.addView(mBottomView, mParamsBottom);


使用悬浮窗需要如下权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />


悬浮窗可以根据不同的flag来覆盖

flag相同时,后弹出的覆盖前弹出

找优先级最高的flag

 

转载于:https://www.cnblogs.com/gmm283029/p/4498952.html

好的,以下是一个简单的使用 Android 系统自带的 WindowManager 实现悬浮窗的示例代码: 1. 创建一个新的 Activity,命名为 FloatingActivity,并在 AndroidManifest.xml 中注册。 2. 在 FloatingActivity 的 onCreate 方法中添加以下代码: ```java // 创建悬浮窗口布局参数 WindowManager.LayoutParams params = new WindowManager.LayoutParams(); // 设置悬浮窗口的位置、大小、透明度等属性 params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; params.format = PixelFormat.RGBA_8888; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; params.gravity = Gravity.CENTER; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.alpha = 1.0f; // 创建悬浮窗口视图 LayoutInflater inflater = LayoutInflater.from(this); View floatingView = inflater.inflate(R.layout.floating_view, null); // 添加悬浮窗口视图 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(floatingView, params); ``` 3. 在 res/layout 目录下创建一个名为 floating_view.xml 的布局文件,用于定义悬浮窗口的视图。 4. 在 floating_view.xml 中添加以下代码: ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF" android:padding="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, world!" /> </RelativeLayout> ``` 5. 运行程序,你将会看到一个显示 "Hello, world!" 的悬浮窗口在屏幕中央。 以上代码只是一个简单的示例,实际的悬浮窗口需要根据具体需求进行设计和实现。另外,由于 Android 8.0 以上版本对悬浮窗口的限制更加严格,需要特别注意权限和适配问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值