1. WindowManager 中LayoutParams的各种属性

WindowManager.LayoutParams 是 WindowManager 接口的嵌套类(内部类);它继承于 ViewGroup.LayoutParams; 它用于向WindowManager描述Window的管理策略。

(1)
 public int x;
   如果忽略gravity属性,那么它表示窗口的绝对X位置。   什么是gravity属性呢?简单地说,就是窗口如何停靠。  当设置了 Gravity.LEFT 或 Gravity.RIGHT 之后,x值就表示到特定边的距离。2.
 public int y;

如果忽略gravity属性,那么它表示窗口的绝对Y位置。 当设置了 Gravity.TOP 或 Gravity.BOTTOM 之后,y值就表示到特定边的距离。

(2)

public float horizontalWeight; public float verticalWeight;
   在纵/横向上,为关联的view预留了多少扩展空间(像素)。如果是0,那么此view不能被拉伸。
   其他情况下,扩展空间(像素)将被widget所均分。
(3)
 public int type;
窗口类型。有3种主要类型:
Applicationwindows:
        取值在 FIRST_APPLICATION_WINDOW 和 LAST_APPLICATION_WINDOW 之间。是通常的、顶层的应用程序窗口。必须将 token 设置成 activity 的 token 。
Sub_windows:
        取值在 FIRST_SUB_WINDOW 和 LAST_SUB_WINDOW 之间。 与顶层窗口相关联,token 必须设置为它所附着的宿主窗口的 token。
Systemwindows:
        取值在 FIRST_SYSTEM_WINDOW 和 LAST_SYSTEM_WINDOW 之间。用于特定的系统功能。它不能用于应用程序,使用时需要特殊权限。
 
下面定义了 type 的取值:
 
      应用程序窗口。
      public static final int FIRST_APPLICATION_WINDOW = 1;
 
      所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。     
      public static final int TYPE_BASE_APPLICATION   =1;       
 
      普通应哟功能程序窗口。token必须设置为Activity的token,以指出该窗口属谁。
      public static final int TYPE_APPLICATION       = 2;
       用于应用程序启动时所显示的窗口。应用本身不要使用这种类型。
      它用于让系统显示些信息,直到应用程序可以开启自己的窗口。   
      public static final int TYPE_APPLICATION_STARTING = 3;
       
      应用程序窗口结束。
      public static final int LAST_APPLICATION_WINDOW = 99;

子窗口。子窗口的Z序和坐标空间都依赖于他们的宿主窗口。
      public static final int FIRST_SUB_WINDOW       = 1000;

面板窗口,显示于宿主窗口上层。
      public static final int TYPE_APPLICATION_PANEL  = FIRST_SUB_WINDOW;

媒体窗口,例如视频。显示于宿主窗口下层。
      public static final int TYPE_APPLICATION_MEDIA  = FIRST_SUB_WINDOW+1;

应用程序窗口的子面板。显示于所有面板窗口的上层。(GUI的一般规律,越“子”越靠上)
      public static final int TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW +2;

对话框。类似于面板窗口,绘制类似于顶层窗口,而不是宿主的子窗口。
      public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW +3;

媒体信息。显示在媒体层和程序窗口之间,需要实现透明(半透明)效果。(例如显示字幕)
      public static final int TYPE_APPLICATION_MEDIA_OVERLAY  = FIRST_SUB_WINDOW +4;

子窗口结束。( End of types of sub-windows )
      public static final int LAST_SUB_WINDOW        = 1999;

系统窗口。非应用程序创建。
     public static final int FIRST_SYSTEM_WINDOW    = 2000;

状态栏。只能有一个状态栏;它位于屏幕顶端,其他窗口都位于它下方。
     public static final int TYPE_STATUS_BAR        =  FIRST_SYSTEM_WINDOW;

搜索栏。只能有一个搜索栏;它位于屏幕上方。
      public static final int TYPE_SEARCH_BAR        = FIRST_SYSTEM_WINDOW+1;

电话窗口。它用于电话交互(特别是呼入)。它置于所有应用程序之上,状态栏之下。
      public static final int TYPE_PHONE            = FIRST_SYSTEM_WINDOW+2;

系统提示。它总是出现在应用程序窗口之上。
      public static final int TYPE_SYSTEM_ALERT      =  FIRST_SYSTEM_WINDOW +3;

锁屏窗口。
      public static final int TYPE_KEYGUARD          = FIRST_SYSTEM_WINDOW +4;

信息窗口。用于显示toast。
      public static final int TYPE_TOAST            = FIRST_SYSTEM_WINDOW +5;

系统顶层窗口。显示在其他一切内容之上。此窗口不能获得输入焦点,否则影响锁屏。
      public static final int TYPE_SYSTEM_OVERLAY    =  FIRST_SYSTEM_WINDOW +6;

电话优先,当锁屏时显示。此窗口不能获得输入焦点,否则影响锁屏。
      public static final int TYPE_PRIORITY_PHONE    =  FIRST_SYSTEM_WINDOW +7;

系统对话框。(例如音量调节框)。
      public static final int TYPE_SYSTEM_DIALOG     =  FIRST_SYSTEM_WINDOW +8;

锁屏时显示的对话框。
      public static final int TYPE_KEYGUARD_DIALOG   =  FIRST_SYSTEM_WINDOW +9;

系统内部错误提示,显示于所有内容之上。
      public static final int TYPE_SYSTEM_ERROR      =  FIRST_SYSTEM_WINDOW +10;

内部输入法窗口,显示于普通UI之上。应用程序可重新布局以免被此窗口覆盖。
      public static final int TYPE_INPUT_METHOD      =  FIRST_SYSTEM_WINDOW +11;

内部输入法对话框,显示于当前输入法窗口之上。
      public static final int TYPE_INPUT_METHOD_DIALOG= FIRST_SYSTEM_WINDOW +12;

墙纸窗口。 public static final int TYPE_WALLPAPER         = FIRST_SYSTEM_WINDOW +13;

状态栏的滑动面板。 public static final int TYPE_STATUS_BAR_PANEL   = FIRST_SYSTEM_WINDOW +14;

系统窗口结束。     public static final int LAST_SYSTEM_WINDOW     = 2999;

案例实现控制屏幕亮度:

 private void setScreenBrightness(int paramInt){
Window localWindow = getWindow();
WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();
float f = paramInt / 255.0F;
localLayoutParams.screenBrightness = f;
localWindow.setAttributes(localLayoutParams);
}

最新文章

  1. js中参数不对应问题
  2. php模拟数据库常用操作效果
  3. 关于yuv与rgb的互转
  4. dubbo源码分析3-service bean的创建与发布
  5. asf与vga视频为何无法同步播放?我来给你解释!
  6. Qt 经典出错信息之”Basic XLib functionality test failed!”(Z..z..)
  7. ios 游戏《魂斗罗》 AL文件素材破解
  8. 认识div(division)在排版中的作用
  9. 递归实现生成Grey码
  10. chrome 下的 proxy 插件安装
  11. mysql迁移-----拷贝mysql目录/load data/mysqldump/into outfile
  12. Linux批量ping脚本
  13. Hackers' Crackdown UVA - 11825 (状压dp)
  14. Kafka基础简介
  15. Python 全栈开发八 文件处理
  16. rabbitmq_坑
  17. 大数据学习:storm流式计算
  18. Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用
  19. js结构化命名的思考
  20. 第一次使用mpvue的小记

热门文章

  1. poj1000 A+B Problem
  2. 实现 Web 后端和客户端之间的分布式和认证通讯
  3. 四轴飞行diy全套入门教程(从最基础的开始)
  4. 安装Sublime Text 2插件的方法
  5. Nginx 禁止IP访问
  6. BZOJ 2243: [SDOI2011]染色 (树链剖分+线段树合并)
  7. Light oj 1236 - Pairs Forming LCM (约数的状压思想)
  8. Linux下移植pjsip,使用QT开发
  9. MVC神韵---你想在哪解脱!(十四)
  10. Measuring Signal Similarities