Android(java)學習筆記101:WindowManager 中LayoutParams的各種屬性

來源:互聯網
上載者:User

標籤:

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值就表示到特定邊的距離。

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 的取值:
 
      應用程式視窗。
      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;

      內部IME視窗,顯示於普通UI之上。應用程式可重新布局以免被此視窗覆蓋。
      public static final int TYPE_INPUT_METHOD      =  FIRST_SYSTEM_WINDOW +11;

      內部IME對話方塊,顯示於當前IME視窗之上。
      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;

 

 

案例實現控制螢幕亮度:

1 private void setScreenBrightness(int paramInt){2 Window localWindow = getWindow();3 WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();4 float f = paramInt / 255.0F;5 localLayoutParams.screenBrightness = f;6 localWindow.setAttributes(localLayoutParams);7 }

 

Android(java)學習筆記101:WindowManager 中LayoutParams的各種屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.