19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 2098365d7663cbd82979a5700faf0050220b01084dJeff Brown * Provides low-level communication with the system window manager for 2198365d7663cbd82979a5700faf0050220b01084dJeff Brown * operations that are bound to a particular context, display or parent window. 2298365d7663cbd82979a5700faf0050220b01084dJeff Brown * Instances of this object are sensitive to the compatibility info associated 2398365d7663cbd82979a5700faf0050220b01084dJeff Brown * with the running application. 2498365d7663cbd82979a5700faf0050220b01084dJeff Brown * 2598365d7663cbd82979a5700faf0050220b01084dJeff Brown * This object implements the {@link ViewManager} interface, 2698365d7663cbd82979a5700faf0050220b01084dJeff Brown * allowing you to add any View subclass as a top-level window on the screen. 2798365d7663cbd82979a5700faf0050220b01084dJeff Brown * Additional window manager specific layout parameters are defined for 2898365d7663cbd82979a5700faf0050220b01084dJeff Brown * control over how windows are displayed. It also implements the {@link WindowManager} 2998365d7663cbd82979a5700faf0050220b01084dJeff Brown * interface, allowing you to control the displays attached to the device. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Applications will not normally use WindowManager directly, instead relying 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the higher-level facilities in {@link android.app.Activity} and 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.app.Dialog}. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Even for low-level window manager access, it is almost never correct to use 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this class. For example, {@link android.app.Activity#getWindowManager} 3798365d7663cbd82979a5700faf0050220b01084dJeff Brown * provides a window manager for adding windows that are associated with that 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * activity -- the window manager will not normally allow you to add arbitrary 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * windows that are not associated with an activity. 4098365d7663cbd82979a5700faf0050220b01084dJeff Brown * 4198365d7663cbd82979a5700faf0050220b01084dJeff Brown * @see WindowManager 4298365d7663cbd82979a5700faf0050220b01084dJeff Brown * @see WindowManagerGlobal 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4598365d7663cbd82979a5700faf0050220b01084dJeff Brownpublic final class WindowManagerImpl implements WindowManager { 4698365d7663cbd82979a5700faf0050220b01084dJeff Brown private final WindowManagerGlobal mGlobal = WindowManagerGlobal.getInstance(); 4798365d7663cbd82979a5700faf0050220b01084dJeff Brown private final Display mDisplay; 48d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown private final Window mParentWindow; 49a53de0629f3b94472c0f160f5bbe1090b020feabDianne Hackborn 50a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown public WindowManagerImpl(Display display) { 51a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown this(display, null); 52d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 535be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 54a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown private WindowManagerImpl(Display display, Window parentWindow) { 5598365d7663cbd82979a5700faf0050220b01084dJeff Brown mDisplay = display; 5698365d7663cbd82979a5700faf0050220b01084dJeff Brown mParentWindow = parentWindow; 57d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 585be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 5998365d7663cbd82979a5700faf0050220b01084dJeff Brown public WindowManagerImpl createLocalWindowManager(Window parentWindow) { 60a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown return new WindowManagerImpl(mDisplay, parentWindow); 61a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown } 62a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown 63a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown public WindowManagerImpl createPresentationWindowManager(Display display) { 64a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown return new WindowManagerImpl(display, mParentWindow); 65d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 665be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 67d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown @Override 68d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown public void addView(View view, ViewGroup.LayoutParams params) { 6998365d7663cbd82979a5700faf0050220b01084dJeff Brown mGlobal.addView(view, params, mDisplay, mParentWindow); 70d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 715be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 72d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown @Override 73d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown public void updateViewLayout(View view, ViewGroup.LayoutParams params) { 7498365d7663cbd82979a5700faf0050220b01084dJeff Brown mGlobal.updateViewLayout(view, params); 75d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 765be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 77d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown @Override 78d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown public void removeView(View view) { 7998365d7663cbd82979a5700faf0050220b01084dJeff Brown mGlobal.removeView(view, false); 80d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown } 815be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 82d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown @Override 83d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown public void removeViewImmediate(View view) { 8498365d7663cbd82979a5700faf0050220b01084dJeff Brown mGlobal.removeView(view, true); 855be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn } 865be8de3420ba4c9d816b98e29bdec11715f6b626Dianne Hackborn 87d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown @Override 88d32460c5b7bea7b06e345397fdbaca58d9732dcfJeff Brown public Display getDefaultDisplay() { 8998365d7663cbd82979a5700faf0050220b01084dJeff Brown return mDisplay; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 92