美文网首页
WindowManager的addView的使用

WindowManager的addView的使用

作者: wenSome | 来源:发表于2024-08-08 11:32 被阅读0次

addView有什么作用:

使用WindowManager的addView方法可以在屏幕上任何位置添加一个自定义的视图(View),而不仅仅是显示在应用的窗口内。这种方式常用于实现悬浮窗、全屏覆盖广告、或者在游戏或应用中显示系统级通知等。以下是一个简单的示例,展示了如何使用WindowManager来创建一个显示图片的页面。

步骤 1: 获取WindowManagerWindowManager.LayoutParams

首先,你需要在你的Activity或服务中获取WindowManager的实例,并创建一个WindowManager.LayoutParams对象来配置你的视图属性(如位置、大小、类型等)。

步骤 2: 创建自定义的View

接下来,你需要创建一个自定义的View(例如,继承自ImageView的类),并在其中加载你的图片。

步骤 3: 将自定义View添加到WindowManager

最后,使用WindowManager的addView方法将你的自定义View添加到屏幕上。

示例代码

下面是一个简单的示例,展示如何完成上述步骤:

        // 1、创建WindowManager和WindowManager.LayoutParams
        WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams mWindowLayoutParams = new WindowManager.LayoutParams();

        // 2、设置WindowLayoutParams的一些属性
        // 安卓8.0之后需要使用TYPE_APPLICATION_OVERLAY
        mWindowLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        mWindowLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;//宽度全屏宽
        mWindowLayoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;//高度全屏高
        mWindowLayoutParams.format = PixelFormat.RGBA_8888;//设置窗口背景色透明
        //给Window设置Flag 作用:状态栏透明、可以接收返回键
        mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        mWindowLayoutParams.gravity = Gravity.CENTER; // 可以根据需要调整位置

        // 3、要显示页面的布局
        ImageView mView = new ImageView(mContext);
        mView.setImageResource(R.drawable.ic_launcher_background);
        mView.setScaleType(ImageView.ScaleType.FIT_XY);

        // 4、显示图片view
        mWindowManager.addView(mView, mWindowLayoutParams);

        // 5、删除图片view,通常在onDestroy调用
        mWindowManager.removeView(mView);

相关文章

网友评论

      本文标题:WindowManager的addView的使用

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