Window层级
程序员文章站
2022-06-22 17:26:48
应用 Window 层级范围是 1~99,子 Window 层级范围是 1000~1999,系统 Window 层级范围是 2000~2999,这些层级范围对应着 WindowManager.LayoutParams 的 type 参数,如果想要 Window 位于所有 Window 的最顶层,那么采用较大的层级即可,很显然系统 Window 的层级是最大的,当我们采用系统层级时,需要声明权限。WindowManager是整个窗口管理机制里面的枢纽,也是这边重点要讲的。WindowManager实现了...
应用 Window 层级范围是 1~99,子 Window 层级范围是 1000~1999,系统 Window 层级范围是 2000~2999,这些层级范围对应着 WindowManager.LayoutParams 的 type 参数,如果想要 Window 位于所有 Window 的最顶层,那么采用较大的层级即可,很显然系统 Window 的层级是最大的,当我们采用系统层级时,需要声明权限。
WindowManager是整个窗口管理机制里面的枢纽,也是这边重点要讲的。WindowManager实现了ViewManager,这个接口定义了我们对于Window的基本操作:
public interface ViewManager
{
public void addView(View view, ViewGroup.LayoutParams params);
public void updateViewLayout(View view, ViewGroup.LayoutParams params);
public void removeView(View view);
}
这三个方法其实就是 WindowManager 对外提供的主要功能,即添加 View、更新 View 和删除 View。看一个通过 WindowManager 添加 Window 的例子:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button floatingButton = new Button(MainActivity.this);
floatingButton.setText("button");
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
0, 0,
PixelFormat.TRANSPARENT
);
// flag 设置 Window 属性
layoutParams.flags= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
// type 设置 Window 类别(层级)
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
layoutParams.gravity = Gravity.CENTER;
WindowManager windowManager = getWindowManager();
windowManager.addView(floatingButton, layoutParams);
}
}
需要申请权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
本文地址:https://blog.csdn.net/qq_40207976/article/details/107985595
推荐阅读
-
.NET Window 服务 出现 错误1053
-
PHP使用递归按层级查找数据的方法
-
php实现window平台的checkdnsrr函数
-
window端口占用怎么处理(解决window端口被占用的方法)
-
详解HTML5 window.postMessage与跨域
-
JQuery中window.onload函数与$(document).ready()的区别实例讲解
-
Javascript之BOM(window对象)详解
-
js兼容写法为document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop(代码实例)
-
window中oracle环境变量设置方法分享
-
在Window 10上安装Docker图文教程