From d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 18:28:45 -0800 Subject: auto import from //depot/cupcake/@135843 --- core/java/android/view/WindowManager.java | 959 ------------------------------ 1 file changed, 959 deletions(-) delete mode 100644 core/java/android/view/WindowManager.java (limited to 'core/java/android/view/WindowManager.java') diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java deleted file mode 100644 index b87cc42..0000000 --- a/core/java/android/view/WindowManager.java +++ /dev/null @@ -1,959 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.view; - -import android.content.pm.ActivityInfo; -import android.graphics.PixelFormat; -import android.os.IBinder; -import android.os.Parcel; -import android.os.Parcelable; -import android.text.TextUtils; -import android.util.Log; - - -/** - * The interface that apps use to talk to the window manager. - *

- * Use Context.getSystemService(Context.WINDOW_SERVICE) to get one of these. - * - * @see android.content.Context#getSystemService - * @see android.content.Context#WINDOW_SERVICE - */ -public interface WindowManager extends ViewManager { - /** - * Exception that is thrown when trying to add view whose - * {@link WindowManager.LayoutParams} {@link WindowManager.LayoutParams#token} - * is invalid. - */ - public static class BadTokenException extends RuntimeException { - public BadTokenException() { - } - - public BadTokenException(String name) { - super(name); - } - } - - /** - * Use this method to get the default Display object. - * - * @return default Display object - */ - public Display getDefaultDisplay(); - - /** - * Special variation of {@link #removeView} that immediately invokes - * the given view hierarchy's {@link View#onDetachedFromWindow() - * View.onDetachedFromWindow()} methods before returning. This is not - * for normal applications; using it correctly requires great care. - * - * @param view The view to be removed. - */ - public void removeViewImmediate(View view); - - public static class LayoutParams extends ViewGroup.LayoutParams - implements Parcelable { - /** - * X position for this window. With the default gravity it is ignored. - * When using {@link Gravity#LEFT} or {@link Gravity#RIGHT} it provides - * an offset from the given edge. - */ - public int x; - - /** - * Y position for this window. With the default gravity it is ignored. - * When using {@link Gravity#TOP} or {@link Gravity#BOTTOM} it provides - * an offset from the given edge. - */ - public int y; - - /** - * Indicates how much of the extra space will be allocated horizontally - * to the view associated with these LayoutParams. Specify 0 if the view - * should not be stretched. Otherwise the extra pixels will be pro-rated - * among all views whose weight is greater than 0. - */ - public float horizontalWeight; - - /** - * Indicates how much of the extra space will be allocated vertically - * to the view associated with these LayoutParams. Specify 0 if the view - * should not be stretched. Otherwise the extra pixels will be pro-rated - * among all views whose weight is greater than 0. - */ - public float verticalWeight; - - /** - * The general type of window. There are three main classes of - * window types: - *

- * - * @see #TYPE_BASE_APPLICATION - * @see #TYPE_APPLICATION - * @see #TYPE_APPLICATION_STARTING - * @see #TYPE_APPLICATION_PANEL - * @see #TYPE_APPLICATION_MEDIA - * @see #TYPE_APPLICATION_SUB_PANEL - * @see #TYPE_APPLICATION_ATTACHED_DIALOG - * @see #TYPE_STATUS_BAR - * @see #TYPE_SEARCH_BAR - * @see #TYPE_PHONE - * @see #TYPE_SYSTEM_ALERT - * @see #TYPE_KEYGUARD - * @see #TYPE_TOAST - * @see #TYPE_SYSTEM_OVERLAY - * @see #TYPE_PRIORITY_PHONE - * @see #TYPE_STATUS_BAR_PANEL - * @see #TYPE_SYSTEM_DIALOG - * @see #TYPE_KEYGUARD_DIALOG - * @see #TYPE_SYSTEM_ERROR - * @see #TYPE_INPUT_METHOD - * @see #TYPE_INPUT_METHOD_DIALOG - */ - public int type; - - /** - * Start of window types that represent normal application windows. - */ - public static final int FIRST_APPLICATION_WINDOW = 1; - - /** - * Window type: an application window that serves as the "base" window - * of the overall application; all other application windows will - * appear on top of it. - */ - public static final int TYPE_BASE_APPLICATION = 1; - - /** - * Window type: a normal application window. The {@link #token} must be - * an Activity token identifying who the window belongs to. - */ - public static final int TYPE_APPLICATION = 2; - - /** - * Window type: special application window that is displayed while the - * application is starting. Not for use by applications themselves; - * this is used by the system to display something until the - * application can show its own windows. - */ - public static final int TYPE_APPLICATION_STARTING = 3; - - /** - * End of types of application windows. - */ - public static final int LAST_APPLICATION_WINDOW = 99; - - /** - * Start of types of sub-windows. The {@link #token} of these windows - * must be set to the window they are attached to. These types of - * windows are kept next to their attached window in Z-order, and their - * coordinate space is relative to their attached window. - */ - public static final int FIRST_SUB_WINDOW = 1000; - - /** - * Window type: a panel on top of an application window. These windows - * appear on top of their attached window. - */ - public static final int TYPE_APPLICATION_PANEL = FIRST_SUB_WINDOW; - - /** - * Window type: window for showing media (e.g. video). These windows - * are displayed behind their attached window. - */ - public static final int TYPE_APPLICATION_MEDIA = FIRST_SUB_WINDOW+1; - - /** - * Window type: a sub-panel on top of an application window. These - * windows are displayed on top their attached window and any - * {@link #TYPE_APPLICATION_PANEL} panels. - */ - public static final int TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW+2; - - /** Window type: like {@link #TYPE_APPLICATION_PANEL}, but layout - * of the window happens as that of a top-level window, not - * as a child of its container. - */ - public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3; - - /** - * End of types of sub-windows. - */ - public static final int LAST_SUB_WINDOW = 1999; - - /** - * Start of system-specific window types. These are not normally - * created by applications. - */ - public static final int FIRST_SYSTEM_WINDOW = 2000; - - /** - * Window type: the status bar. There can be only one status bar - * window; it is placed at the top of the screen, and all other - * windows are shifted down so they are below it. - */ - public static final int TYPE_STATUS_BAR = FIRST_SYSTEM_WINDOW; - - /** - * Window type: the search bar. There can be only one search bar - * window; it is placed at the top of the screen. - */ - public static final int TYPE_SEARCH_BAR = FIRST_SYSTEM_WINDOW+1; - - /** - * Window type: phone. These are non-application windows providing - * user interaction with the phone (in particular incoming calls). - * These windows are normally placed above all applications, but behind - * the status bar. - */ - public static final int TYPE_PHONE = FIRST_SYSTEM_WINDOW+2; - - /** - * Window type: system window, such as low power alert. These windows - * are always on top of application windows. - */ - public static final int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3; - - /** - * Window type: keyguard window. - */ - public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW+4; - - /** - * Window type: transient notifications. - */ - public static final int TYPE_TOAST = FIRST_SYSTEM_WINDOW+5; - - /** - * Window type: system overlay windows, which need to be displayed - * on top of everything else. These windows must not take input - * focus, or they will interfere with the keyguard. - */ - public static final int TYPE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+6; - - /** - * Window type: priority phone UI, which needs to be displayed even if - * the keyguard is active. These windows must not take input - * focus, or they will interfere with the keyguard. - */ - public static final int TYPE_PRIORITY_PHONE = FIRST_SYSTEM_WINDOW+7; - - /** - * Window type: panel that slides out from the status bar - */ - public static final int TYPE_STATUS_BAR_PANEL = FIRST_SYSTEM_WINDOW+8; - - /** - * Window type: panel that slides out from the status bar - */ - public static final int TYPE_SYSTEM_DIALOG = FIRST_SYSTEM_WINDOW+8; - - /** - * Window type: dialogs that the keyguard shows - */ - public static final int TYPE_KEYGUARD_DIALOG = FIRST_SYSTEM_WINDOW+9; - - /** - * Window type: internal system error windows, appear on top of - * everything they can. - */ - public static final int TYPE_SYSTEM_ERROR = FIRST_SYSTEM_WINDOW+10; - - /** - * Window type: internal input methods windows, which appear above - * the normal UI. Application windows may be resized or panned to keep - * the input focus visible while this window is displayed. - */ - public static final int TYPE_INPUT_METHOD = FIRST_SYSTEM_WINDOW+11; - - /** - * Window type: internal input methods dialog windows, which appear above - * the current input method window. - */ - public static final int TYPE_INPUT_METHOD_DIALOG= FIRST_SYSTEM_WINDOW+12; - - /** - * End of types of system windows. - */ - public static final int LAST_SYSTEM_WINDOW = 2999; - - /** - * Specifies what type of memory buffers should be used by this window. - * Default is normal. - * - * @see #MEMORY_TYPE_NORMAL - * @see #MEMORY_TYPE_HARDWARE - * @see #MEMORY_TYPE_GPU - * @see #MEMORY_TYPE_PUSH_BUFFERS - */ - public int memoryType; - - /** Memory type: The window's surface is allocated in main memory. */ - public static final int MEMORY_TYPE_NORMAL = 0; - /** Memory type: The window's surface is configured to be accessible - * by DMA engines and hardware accelerators. */ - public static final int MEMORY_TYPE_HARDWARE = 1; - /** Memory type: The window's surface is configured to be accessible - * by graphics accelerators. */ - public static final int MEMORY_TYPE_GPU = 2; - /** Memory type: The window's surface doesn't own its buffers and - * therefore cannot be locked. Instead the buffers are pushed to - * it through native binder calls. */ - public static final int MEMORY_TYPE_PUSH_BUFFERS = 3; - - /** - * Various behavioral options/flags. Default is none. - * - * @see #FLAG_BLUR_BEHIND - * @see #FLAG_DIM_BEHIND - * @see #FLAG_NOT_FOCUSABLE - * @see #FLAG_NOT_TOUCHABLE - * @see #FLAG_NOT_TOUCH_MODAL - * @see #FLAG_LAYOUT_IN_SCREEN - * @see #FLAG_DITHER - * @see #FLAG_KEEP_SCREEN_ON - * @see #FLAG_FULLSCREEN - * @see #FLAG_FORCE_NOT_FULLSCREEN - * @see #FLAG_IGNORE_CHEEK_PRESSES - */ - public int flags; - - /** Window flag: everything behind this window will be dimmed. - * Use {@link #dimAmount} to control the amount of dim. */ - public static final int FLAG_DIM_BEHIND = 0x00000002; - - /** Window flag: blur everything behind this window. */ - public static final int FLAG_BLUR_BEHIND = 0x00000004; - - /** Window flag: this window won't ever get key input focus, so the - * user can not send key or other button events to it. Those will - * instead go to whatever focusable window is behind it. This flag - * will also enable {@link #FLAG_NOT_TOUCH_MODAL} whether or not that - * is explicitly set. - * - *

Setting this flag also implies that the window will not need to - * interact with - * a soft input method, so it will be Z-ordered and positioned - * independently of any active input method (typically this means it - * gets Z-ordered on top of the input method, so it can use the full - * screen for its content and cover the input method if needed. You - * can use {@link #FLAG_ALT_FOCUSABLE_IM} to modify this behavior. */ - public static final int FLAG_NOT_FOCUSABLE = 0x00000008; - - /** Window flag: this window can never receive touch events. */ - public static final int FLAG_NOT_TOUCHABLE = 0x00000010; - - /** Window flag: Even when this window is focusable (its - * {@link #FLAG_NOT_FOCUSABLE is not set), allow any pointer events - * outside of the window to be sent to the windows behind it. Otherwise - * it will consume all pointer events itself, regardless of whether they - * are inside of the window. */ - public static final int FLAG_NOT_TOUCH_MODAL = 0x00000020; - - /** Window flag: When set, if the device is asleep when the touch - * screen is pressed, you will receive this first touch event. Usually - * the first touch event is consumed by the system since the user can - * not see what they are pressing on. - */ - public static final int FLAG_TOUCHABLE_WHEN_WAKING = 0x00000040; - - /** Window flag: as long as this window is visible to the user, keep - * the device's screen turned on and bright. */ - public static final int FLAG_KEEP_SCREEN_ON = 0x00000080; - - /** Window flag: place the window within the entire screen, ignoring - * decorations around the border (a.k.a. the status bar). The - * window must correctly position its contents to take the screen - * decoration into account. This flag is normally set for you - * by Window as described in {@link Window#setFlags}. */ - public static final int FLAG_LAYOUT_IN_SCREEN = 0x00000100; - - /** Window flag: allow window to extend outside of the screen. */ - public static final int FLAG_LAYOUT_NO_LIMITS = 0x00000200; - - /** Window flag: Hide all screen decorations (e.g. status bar) while - * this window is displayed. This allows the window to use the entire - * display space for itself -- the status bar will be hidden when - * an app window with this flag set is on the top layer. */ - public static final int FLAG_FULLSCREEN = 0x00000400; - - /** Window flag: Override {@link #FLAG_FULLSCREEN and force the - * screen decorations (such as status bar) to be shown. */ - public static final int FLAG_FORCE_NOT_FULLSCREEN = 0x00000800; - - /** Window flag: turn on dithering when compositing this window to - * the screen. */ - public static final int FLAG_DITHER = 0x00001000; - - /** Window flag: don't allow screen shots while this window is - * displayed. */ - public static final int FLAG_SECURE = 0x00002000; - - /** Window flag: a special mode where the layout parameters are used - * to perform scaling of the surface when it is composited to the - * screen. */ - public static final int FLAG_SCALED = 0x00004000; - - /** Window flag: intended for windows that will often be used when the user is - * holding the screen against their face, it will aggressively filter the event - * stream to prevent unintended presses in this situation that may not be - * desired for a particular window, when such an event stream is detected, the - * application will receive a CANCEL motion event to indicate this so applications - * can handle this accordingly by taking no action on the event - * until the finger is released. */ - public static final int FLAG_IGNORE_CHEEK_PRESSES = 0x00008000; - - /** Window flag: a special option only for use in combination with - * {@link #FLAG_LAYOUT_IN_SCREEN}. When requesting layout in the - * screen your window may appear on top of or behind screen decorations - * such as the status bar. By also including this flag, the window - * manager will report the inset rectangle needed to ensure your - * content is not covered by screen decorations. This flag is normally - * set for you by Window as described in {@link Window#setFlags}.*/ - public static final int FLAG_LAYOUT_INSET_DECOR = 0x00010000; - - /** Window flag: invert the state of {@link #FLAG_NOT_FOCUSABLE} with - * respect to how this window interacts with the current method. That - * is, if FLAG_NOT_FOCUSABLE is set and this flag is set, then the - * window will behave as if it needs to interact with the input method - * and thus be placed behind/away from it; if FLAG_NOT_FOCUSABLE is - * not set and this flag is set, then the window will behave as if it - * doesn't need to interact with the input method and can be placed - * to use more space and cover the input method. - */ - public static final int FLAG_ALT_FOCUSABLE_IM = 0x00020000; - - /** Window flag: if you have set {@link #FLAG_NOT_TOUCH_MODAL}, you - * can set this flag to receive a single special MotionEvent with - * the action - * {@link MotionEvent#ACTION_OUTSIDE MotionEvent.ACTION_OUTSIDE} for - * touches that occur outside of your window. Note that you will not - * receive the full down/move/up gesture, only the location of the - * first down as an ACTION_OUTSIDE. - */ - public static final int FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000; - - /** Window flag: a special option intended for system dialogs. When - * this flag is set, the window will demand focus unconditionally when - * it is created. - * {@hide} */ - public static final int FLAG_SYSTEM_ERROR = 0x40000000; - - /** - * Given a particular set of window manager flags, determine whether - * such a window may be a target for an input method when it has - * focus. In particular, this checks the - * {@link #FLAG_NOT_FOCUSABLE} and {@link #FLAG_ALT_FOCUSABLE_IM} - * flags and returns true if the combination of the two corresponds - * to a window that needs to be behind the input method so that the - * user can type into it. - * - * @param flags The current window manager flags. - * - * @return Returns true if such a window should be behind/interact - * with an input method, false if not. - */ - public static boolean mayUseInputMethod(int flags) { - switch (flags&(FLAG_NOT_FOCUSABLE|FLAG_ALT_FOCUSABLE_IM)) { - case 0: - case FLAG_NOT_FOCUSABLE|FLAG_ALT_FOCUSABLE_IM: - return true; - } - return false; - } - - /** - * Mask for {@link #softInputMode} of the bits that determine the - * desired visibility state of the soft input area for this window. - */ - public static final int SOFT_INPUT_MASK_STATE = 0x0f; - - /** - * Visibility state for {@link #softInputMode}: no state has been specified. - */ - public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0; - - /** - * Visibility state for {@link #softInputMode}: please don't change the state of - * the soft input area. - */ - public static final int SOFT_INPUT_STATE_UNCHANGED = 1; - - /** - * Visibility state for {@link #softInputMode}: please hide any soft input - * area when normally appropriate (when the user is navigating - * forward to your window). - */ - public static final int SOFT_INPUT_STATE_HIDDEN = 2; - - /** - * Visibility state for {@link #softInputMode}: please always hide any - * soft input area when this window receives focus. - */ - public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3; - - /** - * Visibility state for {@link #softInputMode}: please show the soft - * input area when normally appropriate (when the user is navigating - * forward to your window). - */ - public static final int SOFT_INPUT_STATE_VISIBLE = 4; - - /** - * Visibility state for {@link #softInputMode}: please always make the - * soft input area visible when this window receives input focus. - */ - public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5; - - /** - * Mask for {@link #softInputMode} of the bits that determine the - * way that the window should be adjusted to accommodate the soft - * input window. - */ - public static final int SOFT_INPUT_MASK_ADJUST = 0xf0; - - /** Adjustment option for {@link #softInputMode}: nothing specified. - * The system will try to pick one or - * the other depending on the contents of the window. - */ - public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0x00; - - /** Adjustment option for {@link #softInputMode}: set to allow the - * window to be resized when an input - * method is shown, so that its contents are not covered by the input - * method. This can not be combined with - * {@link #SOFT_INPUT_ADJUST_PAN}; if - * neither of these are set, then the system will try to pick one or - * the other depending on the contents of the window. - */ - public static final int SOFT_INPUT_ADJUST_RESIZE = 0x10; - - /** Adjustment option for {@link #softInputMode}: set to have a window - * pan when an input method is - * shown, so it doesn't need to deal with resizing but just panned - * by the framework to ensure the current input focus is visible. This - * can not be combined with {@link #SOFT_INPUT_ADJUST_RESIZE}; if - * neither of these are set, then the system will try to pick one or - * the other depending on the contents of the window. - */ - public static final int SOFT_INPUT_ADJUST_PAN = 0x20; - - /** - * Bit for {@link #softInputMode}: set when the user has navigated - * forward to the window. This is normally set automatically for - * you by the system, though you may want to set it in certain cases - * when you are displaying a window yourself. This flag will always - * be cleared automatically after the window is displayed. - */ - public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 0x100; - - /** - * Desired operating mode for any soft input area. May any combination - * of: - * - *