WindowManager的简单了解

Posted zzl521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WindowManager的简单了解相关的知识,希望对你有一定的参考价值。

WindowManager是一个接口,如下:

public interface WindowManager extends ViewManager {
...
}

它的Nested Classes有三个分别是:

       WindowManager.LayoutParams
       WindowManager.BadTokenException
       WindowManager.InvalidDisplayException

这里主要看一下 WindowManager.LayoutParams 这个类

技术分享图片

从源码中我们可以看到这个类的继承实现关系,虽然有2000+行的代码(即WindowManager这个interface 的大部分代码都是此类的),但是大部分是常量,我的理解就是一些定义布局的参数(随着我的不断深入,可能我也会更改我的理解)

 这些参数推荐大家去看   https://www.cnblogs.com/henu529/p/7061583.html 这篇博客(如果侵权请大家立马告知,谢谢!!!!)

 

下面给大家一个小栗子看一下:

将mParams的各个属性给了viewToast使用

params.height=WindowManager.LayoutParams.WRAP_CONTENT;
        params.width=WindowManager.LayoutParams.WRAP_CONTENT;
        //设置flag为用户不能发键盘或Button事件传递给Window 和  只要窗口可见,屏幕就一直高亮
        params.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                |WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
//                |WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
        params.format=PixelFormat.TRANSLUCENT;
        params.type=WindowManager.LayoutParams.TYPE_PHONE;
        params.gravity=Gravity.LEFT+Gravity.TOP;
        params.setTitle("Toast");
        params.x=SpUtil.getInt(AddressService.this,ConstantValue.LOCATON_X,0);
        params.y=SpUtil.getInt(AddressService.this,ConstantValue.LOCATON_Y,0);

        viewToast=View.inflate(AddressService.this,R.layout.toast_view,null);
        tv_toast=(TextView)viewToast.findViewById(R.id.tv_toast);

        mWindowManager.addView(viewToast, mParams);

 

以上是关于WindowManager的简单了解的主要内容,如果未能解决你的问题,请参考以下文章

Android 设计模式 笔记 - 深入了解WindowManager

在当前的android片段中禁用屏幕截图[重复]

活动到片段方法调用带有进度条的线程

WindowManager 简单悬浮框的实现

WindowManager 简单悬浮框的实现

小米手机无法使用WindowManager的addView,怎么解决