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
Window flag: blur everything behind this window.
(效果:讓給個元件都模糊地在視窗後面)
Constant Value: 4 (0x00000004)
public static final int FLAG_DIM_BEHIND
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
(無法使用,未知)
Constant Value: 4194304 (0x00400000)
public static final int FLAG_DITHER
(抖動的與背景融合)
Constant Value: 4096 (0x00001000)
public static final int FLAG_FULLSCREEN
(全螢幕也就是消除狀態列的顯示)
Constant Value: 1024 (0x00000400)
public static final int FLAG_IGNORE_CHEEK_PRESSES
(不大小得用處,設定這個後手指在螢幕上移動變成無效果)
Constant Value: 32768 (0x00008000)
public static final int FLAG_KEEP_SCREEN_ON
(保持螢幕處於開著狀態)
Constant Value: 128 (0x00000080)
public static final int FLAG_LAYOUT_NO_LIMITS
(允許視窗超出範圍)
Constant Value: 512 (0x00000200)
public static final int FLAG_NOT_FOCUSABLE
(此窗口永远不会得到键盘输入焦点,所以用户无法发送键或其他按钮事件给它)
Constant Value: 8 (0x00000008)
public static final int FLAG_NOT_TOUCHABLE
(設定這個後就不會響應任何的觸碰)
Constant Value: 16 (0x00000010)
public static final int FLAG_SCALED
(不曉得如何使用,使用後會出例外)
Constant Value: 16384 (0x00004000)
public static final int FLAG_SECURE
(字面翻譯是不允許螢幕截屏,但是實際測試DDMS拍照依然可以拍)
Constant Value: 8192 (0x00002000)
public static final int FLAG_SHOW_WALLPAPER
Constant Value: 1048576 (0x00100000)
public static final int FLAG_SHOW_WHEN_LOCKED
(即使是上鎖模式也讓螢幕顯示出來)
Constant Value: 524288 (0x00080000)
public static final int FLAG_SPLIT_TOUCH
(api版本太高無法做測試)
Constant Value: 8388608 (0x00800000)
public static final int FLAG_TOUCHABLE_WHEN_WAKING
(感覺不出來甚麼用處)
Constant Value: 64 (0x00000040)
public static final int FLAG_WATCH_OUTSIDE_TOUCH
Constant Value: 262144 (0x00040000)
各種Type值介紹
public static final int TYPE_APPLICATION
(一般應用程式的視窗型態)
Constant Value: 2 (0x00000002)
public static final int TYPE_APPLICATION_ATTACHED_DIALOG
(屬於對話框等級的,位置在程式視窗型態之上)
Constant Value: 1003 (0x000003eb)
public static final int TYPE_APPLICATION_PANEL
(跟對話框很像,位置在程式視窗型態之上)
Constant Value: 1000 (0x000003e8)
public static final int TYPE_BASE_APPLICATION
(會在其他應用程式的下方)
Constant Value: 1 (0x00000001)
public static final int TYPE_PHONE
(視窗會呈現在所有的應用程式之上,就像來電提示)
(重要提示,當這樣設置時依然可以控制後面的控件)
Constant Value: 2002 (0x000007d2)
public static final int TYPE_PRIORITY_PHONE
(與上面的分不出差別,但可以看出的差別就是當兩個視窗一個是優先另一個非優先,兩個都顯示時,非優先會被優先檔在後面無法顯示,注意:這個設定可能會導致來電時無法正確顯示)
Constant Value: 2007 (0x000007d7)
public static final int TYPE_STATUS_BAR
(測試時無法使用,尚待測試)
Constant Value: 2000 (0x000007d0)
public static final int TYPE_SYSTEM_ALERT
(實際測試與PHONE一樣等級的視窗)
public static final int TYPE_SYSTEM_ERROR
(優先及最高的,通常用來處理系統錯誤,注意,這個比優先電話還要注意擋住頁面)
Constant Value: 2010 (0x000007da)
public static final int TYPE_SYSTEM_OVERLAY
(說誰比較高呢?這個視系統層級的,缺點是這個將無法再繼續回應控件,等於廢物畫面)
Constant Value: 2006 (0x000007d6)
public static final int TYPE_TOAST
(與上面一樣,階層較低,一樣不法回應事件)
Constant Value: 2005 (0x000007d5)
public static final int TYPE_WALLPAPER
(與上面接紹的相反,會在所有視窗的底端)
Constant Value: 2013 (0x000007dd)
沒有留言:
張貼留言