2011年5月3日

Android WindowManager

WindowManager類解說
正文
一、结构
public interface WindowManager extends android.view.ViewManager

android.view.WindowManager

二、概述
该接口用于与窗口管理器交互。通过 Context.getSystemService(Context.WINDOW_SERVICE)可以获取到WindowManager的实例。(译者注:如:WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
参见

三、内部类

public static class WindowManager.LayoutParams

四、公共方法
public abstract Display getDefaultDisplay()
获取默认的显示对象
返回值
默认的Display对象

public abstract void removeViewImmediate (View view)
removeView(View) 的一个特殊扩展,在方法返回前能够立即调用该视图层次的View.onDetachedFromWindow() 方法。 不适用于一般的程序;如果您要正确无误的使用它,那您就需要格外小心了。
参数
                   view 需要移除的视图

WindowManager.LayoutParams
各種Flag用處

public static final int FLAG_BLUR_BEHIND

Since: API Level 1
Window flag: blur everything behind this window.
(效果:讓給個元件都模糊地在視窗後面)
Constant Value: 4 (0x00000004)

public static final int FLAG_DIM_BEHIND

Since: API Level 1
Window flag: everything behind this window will be dimmed. Use dimAmount to control the amount of dim.
(慢慢地暗下來)
Constant Value: 2 (0x00000002)

public static final int FLAG_DISMISS_KEYGUARD

Since: API Level 5
 (無法使用,未知)
Constant Value: 4194304 (0x00400000)

public static final int FLAG_DITHER

Since: API Level 1
 (抖動的與背景融合)
Constant Value: 4096 (0x00001000)

public static final int FLAG_FULLSCREEN

Since: API Level 1
 (全螢幕也就是消除狀態列的顯示)
Constant Value: 1024 (0x00000400)

public static final int FLAG_IGNORE_CHEEK_PRESSES

Since: API Level 1
 (不大小得用處,設定這個後手指在螢幕上移動變成無效果)
Constant Value: 32768 (0x00008000)

public static final int FLAG_KEEP_SCREEN_ON

Since: API Level 1
 (保持螢幕處於開著狀態)
Constant Value: 128 (0x00000080)

public static final int FLAG_LAYOUT_NO_LIMITS

Since: API Level 1
 (允許視窗超出範圍)
Constant Value: 512 (0x00000200)

public static final int FLAG_NOT_FOCUSABLE

Since: API Level 1
 (此窗口永远不会得到键盘输入焦点,所以用户无法发送键或其他按钮事件给它)
Constant Value: 8 (0x00000008)

public static final int FLAG_NOT_TOUCHABLE

Since: API Level 1
 (設定這個後就不會響應任何的觸碰)
Constant Value: 16 (0x00000010)

public static final int FLAG_SCALED

Since: API Level 1
 (不曉得如何使用,使用後會出例外)
Constant Value: 16384 (0x00004000)

public static final int FLAG_SECURE

Since: API Level 1
 (字面翻譯是不允許螢幕截屏,但是實際測試DDMS拍照依然可以拍)
Constant Value: 8192 (0x00002000)

public static final int FLAG_SHOW_WALLPAPER

Since: API Level 5
Constant Value: 1048576 (0x00100000)

public static final int FLAG_SHOW_WHEN_LOCKED

Since: API Level 5
 (即使是上鎖模式也讓螢幕顯示出來)
Constant Value: 524288 (0x00080000)

public static final int FLAG_SPLIT_TOUCH

Since: API Level 11
 (api版本太高無法做測試)
Constant Value: 8388608 (0x00800000)

public static final int FLAG_TOUCHABLE_WHEN_WAKING

Since: API Level 1
 (感覺不出來甚麼用處)
Constant Value: 64 (0x00000040)

public static final int FLAG_WATCH_OUTSIDE_TOUCH

Since: API Level 3
Constant Value: 262144 (0x00040000)
(這個方法會搭配FLAG_NOT_TOUCH_MODAL使用,使視窗可以外部的碰觸事件會)



各種Type值介紹

public static final int TYPE_APPLICATION

Since: API Level 1
 (一般應用程式的視窗型態)
Constant Value: 2 (0x00000002)

public static final int TYPE_APPLICATION_ATTACHED_DIALOG

Since: API Level 3
 (屬於對話框等級的,位置在程式視窗型態之上)
Constant Value: 1003 (0x000003eb)
Constant Value: 1001 (0x000003e9)

public static final int TYPE_APPLICATION_PANEL

Since: API Level 1
 (跟對話框很像,位置在程式視窗型態之上)
Constant Value: 1000 (0x000003e8)

public static final int TYPE_BASE_APPLICATION

Since: API Level 1
 (會在其他應用程式的下方)
Constant Value: 1 (0x00000001)

public static final int TYPE_PHONE

Since: API Level 1
 (視窗會呈現在所有的應用程式之上,就像來電提示)
(重要提示,當這樣設置時依然可以控制後面的控件)
Constant Value: 2002 (0x000007d2)

public static final int TYPE_PRIORITY_PHONE

Since: API Level 1
 (與上面的分不出差別,但可以看出的差別就是當兩個視窗一個是優先另一個非優先,兩個都顯示時,非優先會被優先檔在後面無法顯示,注意:這個設定可能會導致來電時無法正確顯示)
Constant Value: 2007 (0x000007d7)

public static final int TYPE_STATUS_BAR

Since: API Level 1
 (測試時無法使用,尚待測試)
Constant Value: 2000 (0x000007d0)

public static final int TYPE_SYSTEM_ALERT

Since: API Level 1
 (實際測試與PHONE一樣等級的視窗)
Constant Value: 2003 (0x000007d3)

public static final int TYPE_SYSTEM_ERROR

Since: API Level 1
 (優先及最高的,通常用來處理系統錯誤,注意,這個比優先電話還要注意擋住頁面)
Constant Value: 2010 (0x000007da)

public static final int TYPE_SYSTEM_OVERLAY

Since: API Level 1
 (說誰比較高呢?這個視系統層級的,缺點是這個將無法再繼續回應控件,等於廢物畫面)
Constant Value: 2006 (0x000007d6)

public static final int TYPE_TOAST

Since: API Level 1
 (與上面一樣,階層較低,一樣不法回應事件)
Constant Value: 2005 (0x000007d5)

public static final int TYPE_WALLPAPER

Since: API Level 5
 (與上面接紹的相反,會在所有視窗的底端)
Constant Value: 2013 (0x000007dd)

沒有留言:

ShareThis