summaryrefslogtreecommitdiffstats
path: root/include/android/window.h
blob: 436bf3a8307ce001aba6c6fdaf1fc56e87c1d86e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
/*
 * Copyright (C) 2010 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.
 */

/**
 * @addtogroup NativeActivity Native Activity
 * @{
 */

/**
 * @file window.h
 */

#ifndef ANDROID_WINDOW_H
#define ANDROID_WINDOW_H

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Window flags, as per the Java API at android.view.WindowManager.LayoutParams.
 */
enum {
    /**
     * As long as this window is visible to the user, allow the lock
     * screen to activate while the screen is on.  This can be used
     * independently, or in combination with {@link
     * AWINDOW_FLAG_KEEP_SCREEN_ON} and/or {@link
     * AWINDOW_FLAG_SHOW_WHEN_LOCKED}
     */
    AWINDOW_FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001,
    /** Everything behind this window will be dimmed. */
    AWINDOW_FLAG_DIM_BEHIND                 = 0x00000002,
    /**
     * Blur everything behind this window.
     * @deprecated Blurring is no longer supported.
     */
    AWINDOW_FLAG_BLUR_BEHIND                = 0x00000004,
    /**
     * 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 AWINDOW_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 AWINDOW_FLAG_ALT_FOCUSABLE_IM} to modify this behavior.
     */
    AWINDOW_FLAG_NOT_FOCUSABLE              = 0x00000008,
    /** this window can never receive touch events. */
    AWINDOW_FLAG_NOT_TOUCHABLE              = 0x00000010,
    /**
     * Even when this window is focusable (its
     * {@link AWINDOW_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.
     */
    AWINDOW_FLAG_NOT_TOUCH_MODAL            = 0x00000020,
    /**
     * 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.
     *
     * @deprecated This flag has no effect.
     */
    AWINDOW_FLAG_TOUCHABLE_WHEN_WAKING      = 0x00000040,
    /**
     * As long as this window is visible to the user, keep
     * the device's screen turned on and bright.
     */
    AWINDOW_FLAG_KEEP_SCREEN_ON             = 0x00000080,
    /**
     * Place the window within the entire screen, ignoring
     * decorations around the border (such as the status bar).  The
     * window must correctly position its contents to take the screen
     * decoration into account.
     */
    AWINDOW_FLAG_LAYOUT_IN_SCREEN           = 0x00000100,
    /** allow window to extend outside of the screen. */
    AWINDOW_FLAG_LAYOUT_NO_LIMITS           = 0x00000200,
    /**
     * Hide all screen decorations (such as the 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. A fullscreen window will ignore a value of {@link
     * AWINDOW_SOFT_INPUT_ADJUST_RESIZE}; the window will stay
     * fullscreen and will not resize.
     */
    AWINDOW_FLAG_FULLSCREEN                 = 0x00000400,
    /**
     * Override {@link AWINDOW_FLAG_FULLSCREEN} and force the
     * screen decorations (such as the status bar) to be shown.
     */
    AWINDOW_FLAG_FORCE_NOT_FULLSCREEN       = 0x00000800,
    /**
     * Turn on dithering when compositing this window to
     * the screen.
     * @deprecated This flag is no longer used.
     */
    AWINDOW_FLAG_DITHER                     = 0x00001000,
    /**
     * Treat the content of the window as secure, preventing
     * it from appearing in screenshots or from being viewed on non-secure
     * displays.
     */
    AWINDOW_FLAG_SECURE                     = 0x00002000,
    /**
     * A special mode where the layout parameters are used
     * to perform scaling of the surface when it is composited to the
     * screen.
     */
    AWINDOW_FLAG_SCALED                     = 0x00004000,
    /**
     * 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 {@link AMOTION_EVENT_ACTION_CANCEL} to indicate this so
     * applications can handle this accordingly by taking no action on
     * the event until the finger is released.
     */
    AWINDOW_FLAG_IGNORE_CHEEK_PRESSES       = 0x00008000,
    /**
     * A special option only for use in combination with
     * {@link AWINDOW_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.
     */
    AWINDOW_FLAG_LAYOUT_INSET_DECOR         = 0x00010000,
    /**
     * Invert the state of {@link AWINDOW_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 {@link
     * AWINDOW_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.
     */
    AWINDOW_FLAG_ALT_FOCUSABLE_IM           = 0x00020000,
    /**
     * If you have set {@link AWINDOW_FLAG_NOT_TOUCH_MODAL}, you
     * can set this flag to receive a single special MotionEvent with
     * the action
     * {@link AMOTION_EVENT_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 {@link AMOTION_EVENT_ACTION_OUTSIDE}.
     */
    AWINDOW_FLAG_WATCH_OUTSIDE_TOUCH        = 0x00040000,
    /**
     * Special flag to let windows be shown when the screen
     * is locked. This will let application windows take precedence over
     * key guard or any other lock screens. Can be used with
     * {@link AWINDOW_FLAG_KEEP_SCREEN_ON} to turn screen on and display windows
     * directly before showing the key guard window.  Can be used with
     * {@link AWINDOW_FLAG_DISMISS_KEYGUARD} to automatically fully dismisss
     * non-secure keyguards.  This flag only applies to the top-most
     * full-screen window.
     */
    AWINDOW_FLAG_SHOW_WHEN_LOCKED           = 0x00080000,
    /**
     * Ask that the system wallpaper be shown behind
     * your window.  The window surface must be translucent to be able
     * to actually see the wallpaper behind it; this flag just ensures
     * that the wallpaper surface will be there if this window actually
     * has translucent regions.
     */
    AWINDOW_FLAG_SHOW_WALLPAPER             = 0x00100000,
    /**
     * When set as a window is being added or made
     * visible, once the window has been shown then the system will
     * poke the power manager's user activity (as if the user had woken
     * up the device) to turn the screen on.
     */
    AWINDOW_FLAG_TURN_SCREEN_ON             = 0x00200000,
    /**
     * When set the window will cause the keyguard to
     * be dismissed, only if it is not a secure lock keyguard.  Because such
     * a keyguard is not needed for security, it will never re-appear if
     * the user navigates to another window (in contrast to
     * {@link AWINDOW_FLAG_SHOW_WHEN_LOCKED}, which will only temporarily
     * hide both secure and non-secure keyguards but ensure they reappear
     * when the user moves to another UI that doesn't hide them).
     * If the keyguard is currently active and is secure (requires an
     * unlock pattern) than the user will still need to confirm it before
     * seeing this window, unless {@link AWINDOW_FLAG_SHOW_WHEN_LOCKED} has
     * also been set.
     */
    AWINDOW_FLAG_DISMISS_KEYGUARD           = 0x00400000,
};

#ifdef __cplusplus
};
#endif

#endif // ANDROID_WINDOW_H

/** @} */