Android 说说WindowManager.LayoutParams类(一)

 WindowManager.LayoutParams 是 WindowManager 接口的嵌套类;继承于 ViewGroup.LayoutParams 。
         它的内容十分丰富。其实WindowManager.java的主要内容就是由这个类定义构成。下面来分析一下这个类:

         定义
         public static class WindowManager.LayoutParams extends ViewGroup.LayoutParams implements Parcelable

         继承关系
        java.lang.Object
        android.view.ViewGroup.LayoutParams
        android.view.WindowManager.LayoutParams

        继承来的属性与常量
        从ViewManager.LayoutParams 继承来的属性:
        android:layout_height
        Specifies the basic height of the view.
        android:layout_width
        Specifies the basic width of the view.

        从ViewManager.LayoutParams继承的常量:
        FILL_PARENT
        WRAP_CONTENT
        MATCH_PARENT

        两个变量:
        width
        height

        属性及可用的常量定义

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

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

       3. public float horizontalWeight;
       public float verticalWeight;
       在纵/横向上,为关联的view预留了多少扩展空间(像素)。如果是0,那么此view不能被拉伸。
       其他情况下,扩展空间(像素)将被widget所均分。

       4. 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 的取值:

java代码:
  1. //应用程序窗口。
  2. public static final int FIRST_APPLICATION_WINDOW = 1; 

  3. //所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。 
  4. public static final int TYPE_BASE_APPLICATION =1;

  5. //普通应用功能程序窗口。token必须设置为Activity的token,以指出该窗口属谁。
  6. public static final int TYPE_APPLICATION = 2;

  7. //用于应用程序启动时所显示的窗口。应用本身不要使用这种类型。
  8. //它用于让系统显示些信息,直到应用程序可以开启自己的窗口。 
  9. public static final int TYPE_APPLICATION_STARTING = 3; 

  10. //应用程序窗口结束。
  11. public static final int LAST_APPLICATION_WINDOW = 99;

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

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

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

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

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

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

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

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

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

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

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

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

  36. //锁屏窗口。
  37. public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW +4;

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

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

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

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

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

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

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

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

  54. //墙纸窗口。
  55. public static final int TYPE_WALLPAPER = FIRST_SYSTEM_WINDOW +13;

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

  58. //系统窗口结束。
  59. public static final int LAST_SYSTEM_WINDOW = 2999;
复制代码


系列之Android 说说WindowManager.LayoutParams类(二)的帖子链接
http://www.eoeandroid.com/thread-84921-1-1.html
系列之Android 说说WindowManager.LayoutParams类(三)的帖子链接
http://www.eoeandroid.com/thread-84922-1-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值