美文网首页
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