droid_wrap/android/view.rs
1/*
2 * Copyright (c) 2024. The RigelA open source project team and
3 * its contributors reserve all rights.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 * See the License for the specific language governing permissions and limitations under the License.
12 */
13
14//noinspection SpellCheckingInspection
15/**
16视图和输入法(如软键盘)之间交互的框架类。
17*/
18#[cfg(feature = "android_view_inputmethod")]
19pub mod inputmethod;
20
21use crate::{
22 android::{
23 content::{Context, ContextWrapper},
24 graphics::{Canvas, Rect},
25 os::Bundle,
26 },
27 java::lang::{CharSequence, Integer, Runnable},
28 JObjNew, JObjRef, JProxy, JType,
29};
30use droid_wrap_derive::{
31 java_class, java_constructor, java_field, java_implement, java_interface, java_method,
32};
33use std::sync::Arc;
34
35/**
36此类代表用户界面组件的基本构建块。View 占据屏幕上的矩形区域,负责绘制和事件处理。View 是小部件的基类,用于创建交互式 UI 组件(按钮、文本字段等)。ViewGroup 子类是布局的基类,布局是不可见的容器,用于容纳其他 View(或其他 ViewGroup)并定义其布局属性。
37开发人员指南
38有关使用此类开发应用程序用户界面的信息,请阅读用户界面开发人员指南。
39使用视图窗口中的所有视图都排列在一棵树中。您可以从代码中添加视图,也可以通过在一个或多个 XML 布局文件中指定视图树来添加视图。有许多专门的视图子类,它们充当控件或能够显示文本、图像或其他内容。创建视图树后,通常您可能希望执行以下几种常见操作:
40- 设置属性:例如,设置 android.widget.TextView 的文本。不同视图子类的可用属性和设置方法会有所不同。请注意,在构建时已知的属性可以在 XML 布局文件中设置。
41- 设置焦点:框架将处理移动焦点以响应用户输入。要强制将焦点移到特定视图,请调用 requestFocus。
42- 设置侦听器:视图允许客户端设置侦听器,当视图发生有趣的事情时,这些侦听器将收到通知。例如,所有视图都允许您设置一个侦听器,以便在视图获得或失去焦点时收到通知。您可以使用 setOnFocusChangeListener(View.OnFocusChangeListener) 注册此类侦听器。其他视图子类提供更专业的侦听器。例如,按钮会公开一个侦听器,以便在单击按钮时通知客户端。
43- 设置可见性:您可以使用 setVisibility(int) 隐藏或显示视图。注意:Android 框架负责测量、布局和绘制视图。除非您实际实施了 ViewGroup,否则您不应自己调用对视图执行这些操作的方法。
44有关更多信息,请查阅官方文档。
45*/
46#[java_class(name = "android/view/View")]
47pub struct View;
48
49impl View {
50 /// 用于标记没有ID的View。
51 pub const NO_ID: i32 = -1;
52
53 /// 赋予不属于活动的视图的最后一个 ID。
54 pub const LAST_APP_AUTOFILL_ID: i32 = i32::MAX / 2;
55
56 /// 此视图可见。与 setVisibility 和 ` ` 一起使用。
57 pub const VISIBLE: i32 = 0x00000000;
58
59 /// 此视图不可见,但出于布局目的它仍占用空间。与 setVisibility 和 ` ` 一起使用。
60 pub const INVISIBLE: i32 = 0x00000004;
61
62 /// 此视图是看不见的,并且没有任何空间用于布局目的。与setVisibility一起使用。
63 pub const GONE: i32 = 0x00000008;
64
65 /**
66 从代码创建视图时使用的简单构造函数。
67 `context` 视图在其中运行的上下文,通过它可以访问当前主题、资源等。
68 */
69 #[java_constructor]
70 pub fn new(context: &Context) -> Self {}
71
72 /**
73 发送 AccessibilityEvent 的便捷方法。TYPE_ANNOUNCEMENT AccessibilityEvent 建议无障碍服务向其用户宣布指定的文本。
74 注意:使用此 API 生成的事件不具有语义含义,仅适用于特殊情况。应用通常可以通过准确提供其 UI 的语义来实现正确的无障碍行为。它们不需要指定向用户宣布的具体内容。一般来说,只宣布转换,不要为按钮按下等简单操作生成确认消息。相反,请简明扼要地标记控件,对于重大的 UI 更改(如窗口更改),请使用 android.app.Activity.setTitle(CharSequence) 和 setAccessibilityPaneTitle(CharSequence)。使用 setAccessibilityLiveRegion(int) 通知用户用户界面内关键视图的更改。这些仍应谨慎使用,因为它们可能会在每次更新视图时生成通知。
75 `text` 通知文本。
76 */
77 #[java_method]
78 pub fn announce_for_accessibility<CS: CharSequence>(&self, text: &CS) {}
79
80 /**
81 返回视图的宽度。
82 返回:视图的宽度(以像素为单位)。
83 */
84 #[java_method]
85 pub fn get_width(&self) -> i32 {}
86
87 /**
88 返回视图的高度。
89 返回:视图的高度(以像素为单位)。
90 */
91 #[java_method]
92 pub fn get_height(&self) -> i32 {}
93
94 //noinspection SpellCheckingInspection
95 /**
96 调用此操作可以尝试将焦点集中到特定视图或其子视图之一。如果视图不可聚焦(isFocusable返回false),或者由于其他条件而无法聚焦(当设备处于触摸模式、不可见、未启用或没有大小时,在触摸模式下无法聚焦(isForusableInTouchMode)),则视图实际上不会聚焦。另请参阅focusSearch(int),这是用来表示有焦点,并希望视图的父母寻找下一个焦点的方法。这相当于用参数FOCUS_DOWN和null调用requestFocus(int, Rect)。
97 返回:这个视图或它的一个后代是否真的成为焦点。
98 */
99 #[java_method]
100 pub fn request_focus(&self) -> bool {}
101
102 /**
103 当此视图想要放弃焦点时调用。如果焦点被清除,则调用 onFocusChanged(boolean, int, Rect)。
104 注意:当不处于触摸模式时,框架将在焦点清除后尝试将焦点放在从顶部开始的第一个可聚焦视图上。因此,如果此视图是从顶部开始的第一个可获得焦点的视图,则将调用与清除焦点相关的所有回调,之后框架将焦点放在此视图上。
105 */
106 #[java_method]
107 pub fn clear_focus(&self) {}
108
109 /**
110 在以此视图为根的层次结构中查找当前具有焦点的视图。
111 返回:当前具有焦点的视图,如果找不到焦点视图,则返回 null。
112 */
113 #[java_method]
114 pub fn find_focus(&self) -> Option<Self> {}
115
116 /**
117 指示此视图的激活状态。
118 返回:如果视图已激活,则返回 true,否则返回 false
119 */
120 #[java_method]
121 pub fn is_activated(&self) -> bool {}
122
123 /**
124 更改此视图的激活状态。视图可以激活也可以不激活。请注意,激活与选择不同。选择是一种瞬时属性,表示用户当前正在与之交互的视图(层次结构)。激活是一种长期状态,用户可以将视图移入或移出。例如,在启用单选或多选的列表视图中,当前选择集中的视图处于激活状态。(嗯,是的,我们对这里的术语深感抱歉。)激活状态会向下传播到设置该状态的视图的子级。
125 `activated` 如果必须激活视图,则为 true,否则为 false
126 */
127 #[java_method]
128 pub fn set_activated(&self, activated: bool) {}
129
130 /**
131 此视图的可视 x 位置(以像素为单位)。这相当于 TranslationX 属性加上当前 Left 属性。
132 返回:此视图的可视 x 位置(以像素为单位)。
133 */
134 #[java_method]
135 pub fn get_x(&self) -> f32 {}
136
137 /**
138 设置此视图的可视 x 位置(以像素为单位)。这相当于将 TranslationX 属性设置为传入的 x 值与当前 left 属性之间的差值。
139 `x` 此视图的可视 x 位置(以像素为单位)。
140 */
141 #[java_method]
142 pub fn set_x(&self, x: f32) {}
143
144 /**
145 此视图的视觉 y 位置(以像素为单位)。这相当于 TranslationY 属性加上当前的 Top 属性。
146 返回:此视图的视觉 y 位置(以像素为单位)。
147 */
148 #[java_method]
149 pub fn get_y(&self) -> f32 {}
150
151 /**
152 设置此视图的视觉 y 位置(以像素为单位)。这相当于将 TranslationY 属性设置为传入的 y 值与当前 top 属性之间的差值。
153 `y` 此视图的视觉 y 位置(以像素为单位)。
154 */
155 #[java_method]
156 pub fn set_y(&self, y: f32) {}
157
158 /**
159 查找具有给定 ID 的第一个后代视图,如果 ID 与 getId() 匹配,则查找视图本身,如果 ID 无效 (< 0) 或层次结构中没有匹配的视图,则返回 null。
160 注意:在大多数情况下 - 取决于编译器支持 - 生成的视图会自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式转换。
161 返回:如果找到,则返回具有给定 ID 的视图,否则返回 null
162 `id` 要搜索的 ID
163 */
164 #[java_method]
165 pub fn find_view_by_id(&self, id: i32) -> Option<Self> {}
166
167 /**
168 返回视图的内容描述。
169 注意:不要覆盖此方法,因为它不会影响呈现给无障碍服务的内容描述。您必须调用 setContentDescription(CharSequence) 来修改内容描述。
170 返回:内容描述
171 */
172 #[java_method]
173 pub fn get_content_description<CS: CharSequence>(&self) -> Option<CS> {}
174
175 /**
176 设置视图的内容描述。内容描述简要描述视图,主要用于辅助功能支持,以确定应如何向用户呈现视图。对于没有文本表示的视图(如 android.widget.ImageButton),有用的内容描述会解释视图的作用。例如,用于拨打电话的带有电话图标的图像按钮可以使用“呼叫”作为其内容描述。用于保存文件的软盘图像可以使用“保存”。这应该省略角色或状态。角色是指视图的用户界面元素类型,例如按钮或复选框。状态是指视图经常变化的属性,例如按钮的开/关状态或音量滑块的音频级别。内容描述更新并不频繁,并且在元素的语义内容(而不是状态)发生变化时使用。例如,在音乐播放期间,播放按钮可能会更改为暂停按钮。
177 `content_description` 内容描述。
178 */
179 #[java_method]
180 pub fn set_content_description<CS: CharSequence>(&self, content_description: Option<CS>) {}
181
182 /**
183 设置此视图的标识符。标识符在此视图的层次结构中不必唯一。标识符应为正数。
184 `id` 用于标识视图的数字
185 */
186 #[java_method]
187 pub fn set_id(&self, id: i32) {}
188
189 /**
190 返回此视图的标识符。
191 返回:用于标识视图的正整数,如果视图没有 ID,则返回 NO_ID
192 */
193 #[java_method]
194 pub fn get_id(&self) -> i32 {}
195
196 /**
197 单击此视图时注册要调用的回调。如果此视图不可点击,则将设为可点击。
198 `l` 将运行的回调
199 */
200 #[java_method]
201 pub fn set_on_click_listener<L: View_OnClickListener + JProxy>(&self, l: &L) {}
202
203 /**
204 注册一个回调,当此视图被点击并按住时调用。如果此视图不是长按可点击的,则变为长按可点击的。
205 `l` 将运行的回调
206 */
207 #[java_method]
208 pub fn set_on_long_click_listener<L: View_OnLongClickListener + JProxy>(&self, l: &L) {}
209
210 /**
211 获取与此视图关联的 LayoutParams。所有视图都应具有布局参数。这些参数为此视图的父级提供参数,指定应如何排列。
212 ViewGroup.LayoutParams 有许多子类,这些子类对应于负责排列其子级的 ViewGroup 的不同子类。如果此视图未附加到父 ViewGroup 或 setLayoutParams(ViewGroup.LayoutParams) 未成功调用,则此方法可能返回 null。当视图附加到父 ViewGroup 时,此方法不得返回 null。
213 返回:与此视图关联的 LayoutParams,如果尚未设置参数,则返回 null
214 */
215 #[java_method]
216 pub fn get_layout_params(&self) -> Option<ViewGroup_LayoutParams> {}
217
218 /**
219 设置与此视图相关的布局参数。这些参数为该视图的父级提供参数,指定应如何排列。ViewGroup 有许多子类。LayoutParams,这些对应于负责排列其子级的 ViewGroup 的不同子类。
220 `params` 此视图的布局参数,不能为空
221 */
222 #[java_method]
223 pub fn set_layout_params(&self, params: &ViewGroup_LayoutParams) {}
224
225 /**
226 设置此视图的可见性状态。
227 `visibility` VISIBLE、INVISIBLE 或 GONE 之一。
228 */
229 #[java_method]
230 pub fn set_visibility(&self, visibility: i32) {}
231
232 /**
233 返回此视图的可见性状态。
234 返回:VISIBLE、INVISIBLE 或 GONE 之一。
235 */
236 #[java_method]
237 pub fn get_visibility(&self) -> i32 {}
238
239 /**
240 如果已定义,则调用此视图的 OnClickListener。执行与点击相关的所有常规操作:报告可访问性事件、播放声音等。
241 返回:如果已分配一个被调用的 OnClickListener,则返回 True,否则返回 false。
242 */
243 #[java_method]
244 pub fn perform_click(&self) -> bool {}
245
246 /**
247 指示此视图是否对点击事件作出反应。如果视图可点击,则返回 true,否则返回 false
248 */
249 #[java_method]
250 pub fn is_clickable(&self) -> bool {}
251
252 /**
253 启用或禁用此视图的点击事件。当视图可点击时,每次点击时它的状态都会更改为“按下”。子类应将视图设置为可点击,以便对用户的点击做出视觉反应。
254 `clickable` true 表示视图可点击,否则为 false
255 */
256 #[java_method]
257 pub fn set_clickable(&self, clickable: bool) {}
258
259 /**
260 禁用时启用或禁用此视图的单击事件。
261 `clickable_when_disabled` true使视图可单击,否则为false
262 */
263 #[java_method]
264 pub fn set_allow_click_when_disabled(&self, clickable_when_disabled: bool) {}
265
266 /**
267 指示此视图是否对长按事件作出反应。
268 返回:如果视图可长按,则返回 true,否则返回 false
269 */
270 #[java_method]
271 pub fn is_long_clickable(&self) -> bool {}
272
273 /**
274 启用或禁用此视图的长按事件。当视图可长按时,它会对用户按住按钮的时间长于点击做出反应。此事件可以启动侦听器或上下文菜单。
275 `long_clickable` true 表示视图可长按,否则为 false
276 */
277 #[java_method]
278 pub fn set_long_clickable(&self, long_clickable: bool) {}
279
280 /**
281 指示此视图是否对上下文点击反应。
282 返回:如果视图是上下文可单击的,则为false,否则否则
283 */
284 #[java_method]
285 pub fn is_context_clickable(&self) -> bool {}
286
287 /**
288 启用或禁用此视图的上下文点击。此事件可以启动侦听器。
289 `context_clickable` true 表示使视图对上下文点击做出反应,否则为 false
290 */
291 #[java_method]
292 pub fn set_context_clickable(&self, context_clickable: bool) {}
293
294 /**
295 返回此视图是否具有附加的 OnClickListener。如果有侦听器,则返回 true,如果没有,则返回 false。
296 */
297 #[java_method]
298 pub fn has_on_click_listeners(&self) -> bool {}
299
300 /**
301 返回此视图是否具有附加的 OnLongClickListener。如果有侦听器,则返回 true,如果没有,则返回 false。
302 */
303 #[java_method]
304 pub fn has_on_long_click_listeners(&self) -> bool {}
305
306 /**
307 返回屏幕是否应保持开启,对应于 KEEP_SCREEN_ON 的当前值。
308 返回:如果设置了 KEEP_SCREEN_ON,则返回 true。
309 */
310 #[java_method]
311 pub fn get_keep_screen_on(&self) -> bool {}
312
313 /**
314 控制屏幕是否应保持开启,修改 KEEP_SCREEN_ON 的值。
315 `keep_screen_on` 提供 true 以设置 KEEP_SCREEN_ON。
316 */
317 #[java_method]
318 pub fn set_keep_screen_on(&self, keep_screen_on: bool) {}
319
320 /**
321 获取此视图的父级。请注意,父级是 ViewParent,不一定是 View。
322 返回:此视图的父级。
323 */
324 #[java_method]
325 pub fn get_parent<VP: ViewParent>(&self) -> Option<VP> {}
326
327 /**
328 注册一个回调,当此视图中按下硬件键时调用该回调。软件输入法中的按键通常不会触发此侦听器的方法。
329 `l` 要附加到此视图的按键侦听器
330 */
331 #[java_method]
332 pub fn set_on_key_listener<L: View_OnKeyListener>(&self, l: &L) {}
333
334 /// 如果此视图位于当前具有 IME 可聚焦状态的窗口中,则为 true。
335 #[java_method]
336 pub fn has_ime_focus(&self) -> bool {}
337
338 /**
339 如果此视图具有嵌套滚动父级,则返回 true。
340 嵌套滚动父级的存在表明此视图已启动嵌套滚动,并且已被视图层次结构中更高层次的祖先视图接受。
341 返回:此视图是否具有嵌套滚动父级
342 */
343 #[java_method]
344 pub fn has_nested_scrolling_parent(&self) -> bool {}
345
346 /// 二进制兼容性存根。当我们最终完成 O API 时将被删除。
347 #[java_method]
348 pub fn get_tooltip<CS: CharSequence>(&self) -> Option<CS> {}
349
350 /**
351 返回视图的工具提示文本。
352 注意:不要重写此方法,因为它不会影响工具提示中显示的文本。您必须调用 setTooltipText(CharSequence) 来修改工具提示文本。
353 返回:工具提示文本
354 */
355 #[java_method]
356 pub fn get_tooltip_text<CS: CharSequence>(&self) -> Option<CS> {}
357
358 /// 二进制兼容性存根。当我们最终完成 O API 时将被删除。
359 #[java_method]
360 pub fn set_tooltip<CS: CharSequence>(&self, tooltip_text: Option<CS>) {}
361
362 /**
363 设置工具提示文本,该文本将显示在视图旁边的小弹出窗口中。工具提示将显示在:
364 长按时,除非另有处理(通过 OnLongClickListener 或上下文菜单)。
365 悬停时,在指针停止移动后的短暂延迟后
366 注意:不要覆盖此方法,因为它不会影响工具提示中显示的文本。
367 `tooltip_text` 工具提示文本,如果不需要工具提示,则为 null。
368 */
369 #[java_method]
370 pub fn set_tooltip_text<CS: CharSequence>(&self, tooltip_text: Option<CS>) {}
371
372 /**
373 导致 Runnable 被添加到消息队列,在指定的时间过后运行。Runnable 将在用户界面线程上运行。
374 返回:如果 Runnable 成功放入消息队列,则返回 true。如果失败,则返回 false,通常是因为处理消息队列的 looper 正在退出。请注意,结果为 true 并不意味着 Runnable 将被处理 - 如果 looper 在消息传递时间发生之前退出,则消息将被丢弃。
375 `action` 将执行的 Runnable。
376 `delay_millis` Runnable 执行前的延迟(以毫秒为单位)。
377 */
378 #[java_method]
379 pub fn post_delayed<R: Runnable>(&self, action: &R, delay_millis: u64) -> bool {}
380
381 /**
382 设置一个回调,当触控笔 MotionEvent 在该视图的边界内发生时,应调用该回调。回调将从 UI 线程调用。
383 设置回调允许此视图充当手写委托器,以便可以通过触控笔在此委托器视图上的移动来启动委托编辑器视图的手写模式。回调实现应显示并聚焦委托编辑器视图。
384 如果为 isHandwritingDelegate() 返回 true 的视图在相同地触控笔 MotionEvent 序列正在进行时创建输入连接,则将为该视图启动手写模式。
385 一个常见的用例是自定义视图看起来像文本编辑器,但实际上不支持文本编辑本身,单击自定义视图会导致显示 EditText。为了在这种情况下支持手写启动,可以在自定义视图上调用此方法以将其配置为委托器。
386 EditText 应调用 setIsHandwritingDelegate 将其设置为委托。回调实现通常与显示 EditText 的单击侦听器实现相同。
387 如果传递了 null,则此视图将不再充当手写启动委托人。
388 `callback` 当触控笔 MotionEvent 在该视图的范围内发生时应调用的回调
389 */
390 #[java_method]
391 pub fn set_handwriting_delegator_callback<R: Runnable>(&self, callback: Option<&R>) {}
392
393 /**
394 返回由 setHandwritingDelegatorCallback 设置的回调,当触控笔 MotionEvent 在该视图的范围内发生时应调用该回调。该回调只能从 UI 线程调用。
395 */
396 #[java_method]
397 pub fn get_handwriting_delegator_callback<R: Runnable>(&self) -> Option<R> {}
398
399 /**
400 导致 Runnable 被添加到消息队列。Runnable 将在用户界面线程上运行。
401 返回:如果 Runnable 成功放入消息队列,则返回 true。如果失败,则返回 false,通常是因为处理消息队列的循环程序正在退出。
402 `action` 将执行的 Runnable。
403 */
404 #[java_method]
405 pub fn post<R: Runnable>(&self, action: &R) -> bool {}
406
407 /**
408 使 Runnable 在下一个动画时间步骤执行。Runnable 将在用户界面线程上运行。
409 `action` 将执行的 Runnable。
410 */
411 #[java_method]
412 pub fn post_on_animation<R: Runnable>(&self, action: &R) {}
413
414 /**
415 使 Runnable 在指定的时间量过去后在下一个动画时间步骤执行。 Runnable 将在用户界面线程上运行。
416 `action` 将执行的 Runnable。
417 `delay_millis` Runnable 执行前的延迟(以毫秒为单位)。
418 */
419 #[java_method]
420 pub fn post_on_animation_delayed<R: Runnable>(&self, action: &R, delay_millis: u64) {}
421
422 /**
423 从消息队列中移除指定的 Runnable。
424 返回:如果此视图可以要求 Handler 移除 Runnable,则返回 true,否则返回 false。当返回值为 true 时,Runnable 可能已从消息队列中实际移除(例如,如果 Runnable 尚未在队列中)。
425 `action` 要从消息处理队列中移除的 Runnable
426 */
427 #[java_method]
428 pub fn remove_callbacks<R: Runnable>(&self, action: &R) -> bool {}
429}
430
431/// 定义视图父类的职责。这是视图想要与其父类交互时看到的 API。
432#[java_interface(name = "android/view/ViewParent")]
433pub trait ViewParent {
434 #[doc(hidden)]
435 type VP: ViewParent;
436
437 /// 当发生某些更改导致此视图父级的子级布局无效时调用。这将安排视图树的布局过程。
438 fn request_layout(&self);
439
440 /// 指示是否在此视图父级上请求布局。
441 /// 返回:如果请求布局,则返回 true,否则返回 false
442 fn is_layout_requested(&self) -> bool;
443
444 /**
445 当子视图希望视图层次结构收集透明区域并将其报告给窗口合成器时调用。在视图层次结构中“打”洞的视图(例如 SurfaceView)可以使用此 API 来提高系统的性能。当层次结构中不存在此类视图时,此优化是不必要的,并且可能会略微降低视图层次结构的性能。
446 `child` 请求透明区域计算的视图
447 */
448 fn request_transparent_region(&self, child: &View);
449
450 /**
451 如果父级存在则返回该父级,否则返回 null。
452 返回:ViewParent,如果此 ViewParent 没有父级则返回 null。
453 */
454 fn get_parent(&self) -> Option<Self::VP>;
455
456 /**
457 当此父级的子级需要焦点时调用
458 `child` 此 ViewParent 需要焦点的子级。此视图将包含焦点视图。它不一定是实际具有焦点的视图。
459 `focused` 实际具有焦点的子级后代视图
460 */
461 fn request_child_focus(&self, child: &View, focused: &View);
462
463 /**
464 告诉视图层次结构需要重新评估全局视图属性。
465 `child` 属性已更改的视图。
466 */
467 fn recompute_view_attributes(&self, child: &View);
468
469 /**
470 当此父级的子级放弃焦点时调用
471 `child` 放弃焦点的视图
472 */
473 fn clear_child_focus(&self, child: &View);
474
475 /**
476 查找指定方向上想要获得焦点的最近视图
477 `v` 当前获得焦点的视图
478 `direction` FOCUS_UP、FOCUS_DOWN、FOCUS_LEFT 和 FOCUS_RIGHT 之一
479 */
480 fn focus_search(&self, v: &View, direction: i32) -> View;
481
482 /**
483 更改子项的 z 顺序,使其位于所有其他子项之上。如果此容器使用顺序相关的布局方案(例如 LinearLayout),则此顺序更改可能会影响布局。在 android.os.Build.VERSION_CODES.KITKAT 之前,此方法应随后调用此父项的 requestLayout() 和 View.invalidate(),以强制父项使用新的子项顺序重新绘制。
484 `child` 要置于 z 顺序顶部的子项
485 */
486 fn bring_child_to_front(&self, child: &View);
487
488 /**
489 显示指定视图或其祖先的上下文菜单。在大多数情况下,子类不需要覆盖此。但是,如果将子类直接添加到窗口管理器(例如,ViewManager.addView(View, ViewGroup.LayoutParams)),则它应该覆盖此并显示上下文菜单。
490 返回:如果显示上下文菜单,则返回 true,否则返回 false
491 `original_view` 首次调用上下文菜单的源视图
492 */
493 fn show_context_menu_for_child(&self, original_view: &View) -> bool;
494
495 /**
496 当子项的可绘制状态发生改变时,将在父项上调用此方法。
497 `child` 可绘制状态发生改变的子项。
498 */
499 fn child_drawable_state_changed(&self, child: &View);
500
501 /**
502 当子级不希望此父级及其祖先使用 ViewGroup.onInterceptTouchEvent(MotionEvent) 拦截触摸事件时调用。此父级应将此调用传递给其父级。此父级必须在触摸期间遵守此请求(即,仅在此父级收到向上或取消后清除标志。
503 `disallow_intercept` 如果子级不希望父级拦截触摸事件,则为 True。
504 */
505 fn request_disallow_intercept_touch_event(&self, disallow_intercept: bool);
506
507 /**
508 当子视图现在具有或不再跟踪瞬态时调用。 “瞬态”是视图可能持有的任何状态,但不应反映在视图当前呈现的数据模型中。此状态仅影响视图本身向用户呈现的内容,例如正在进行的动画的当前状态或文本选择操作的状态。瞬态可用于向视图系统的其他组件提示特定视图正在跟踪复杂但封装的内容。例如,ListView 可能承认具有瞬态的列表项视图应保留在其位置或稳定项 ID 中,而不是将该视图视为可由后备适配器轻松替换。
509 这使得适配器实现更简单,而不需要跟踪正在进行的项目视图动画的状态,以便在意外回收和重新绑定附加项目视图时可以恢复它们。当子视图或其子树中的视图开始或结束内部瞬态跟踪时,将在父视图上调用此方法。
510 `child` 状态已改变的子视图
511 `has_transient_state` 如果此子视图具有瞬时状态,则为 true
512 */
513 fn child_has_transient_state_changed(&self, child: &View, has_transient_state: bool);
514
515 /**
516 要求执行新的 View.fitSystemWindows(Rect) 调度。
517 */
518 fn request_fit_system_windows(&self);
519
520 /**
521 获取给定 View 的父级,以实现可访问性。由于某些 View 未暴露给可访问性层,因此可访问性的父级不一定是 View 的直接父级,而是前任。
522 返回:父级,如果未找到,则返回 null。
523 */
524 fn get_parent_for_accessibility(&self) -> Option<Self::VP>;
525
526 /**
527 通知视图父级,其某个后代的可访问性状态已更改,并且子树的结构不同。
528 `child` 子树已更改的直接子级。
529 `source` 发生更改的后代视图。不能为 null。
530 `change_type` 发生的更改类型的位掩码。以下一个或多个:
531 AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE
532 AccessibilityEvent.CONTENT_CHANGE_TYPE_TEXT AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_STARTED
533 AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_CANCELLED AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_DROPPED
534 */
535 fn notify_subtree_accessibility_state_changed(
536 &self,
537 child: &View,
538 source: &View,
539 change_type: i32,
540 );
541
542 /**
543 告知此视图父级是否可以解析布局方向。请参阅 View.setLayoutDirection(int)
544 返回:如果此视图父级可以解析布局方向,则返回 True。
545 */
546 fn can_resolve_layout_direction(&self) -> bool;
547
548 /**
549 告知此视图父级布局方向是否已解析。请参阅 View.setLayoutDirection(int)
550 返回:如果此视图父级布局方向已解析,则返回 True。
551 */
552 fn is_layout_direction_resolved(&self) -> bool;
553
554 /**
555 返回此视图的父布局方向。请参阅 View.getLayoutDirection()
556 返回:如果布局方向为 RTL,则返回 View.LAYOUT_DIRECTION_RTL;如果布局方向不是 RTL,则返回 View.LAYOUT_DIRECTION_LTR。
557 */
558 fn get_layout_direction(&self) -> i32;
559
560 /**
561 告知此视图父级是否可以解析文本方向。请参阅 View.setTextDirection(int)
562 返回:如果此视图父级可以解析文本方向,则返回 True。
563 */
564 fn can_resolve_text_direction(&self) -> bool;
565
566 /**
567 告知此视图父文本方向是否已解析。请参阅 View.setTextDirection(int)
568 返回:如果此视图父文本方向已解析,则返回 true。
569 */
570 fn is_text_direction_resolved(&self) -> bool;
571
572 /**
573 返回此视图父文本方向。参见 View.getTextDirection()
574 返回:已解析的文本方向。返回以下之一:
575 View.TEXT_DIRECTION_FIRST_STRONG View.TEXT_DIRECTION_ANY_RTL、View.TEXT_DIRECTION_LTR、View.TEXT_DIRECTION_RTL、View.TEXT_DIRECTION_LOCALE
576 */
577 fn get_text_direction(&self) -> i32;
578
579 /**
580 告知此视图父级是否可以解决文本对齐问题。请参阅 View.setTextAlignment(int)
581 返回:如果此视图父级可以解决文本对齐问题,则返回 True。
582 */
583 fn can_resolve_text_alignment(&self) -> bool;
584
585 /**
586 告知此视图父级是否可以解决文本对齐问题。请参阅 View.setTextAlignment(int)
587 返回:如果此视图父级可以解决文本对齐问题,则返回 True。
588 */
589 fn is_text_alignment_resolved(&self) -> bool;
590
591 /**
592 对启动嵌套滚动操作的子视图做出反应,在适当的情况下声明嵌套滚动操作。此方法将在子视图调用 View.startNestedScroll(int) 时调用。视图层次结构中的每个父视图都将有机会通过返回 true 来响应和声明嵌套滚动操作。
593 此方法可能被 ViewParent 实现覆盖,以指示视图何时愿意支持即将开始的嵌套滚动操作。如果它返回 true,则此 ViewParent 将成为目标视图的嵌套滚动父视图,直至滚动操作完成。当嵌套滚动完成时,此 ViewParent 将收到对 onStopNestedScroll(View) 的调用。
594 如果此 ViewParent 接受嵌套滚动操作,则返回 true
595 `child` 包含目标的此 ViewParent 的直接子视图
596 `target` 发起嵌套滚动的视图
597 `nested_scroll_axes` 由 View.SCROLL_AXIS_HORIZONTAL、View.SCROLL_AXIS_VERTICAL 或两者组成的标志
598 */
599 fn on_start_nested_scroll(&self, child: &View, target: &View, nested_scroll_axes: i32) -> bool;
600
601 /**
602 对成功声明嵌套滚动操作做出反应。此方法将在 onStartNestedScroll 返回 true 后调用。它为视图及其超类提供了对嵌套滚动执行初始配置的机会。此方法的实现应始终调用其超类对此方法的实现(如果存在)。
603 `child` 此 ViewParent 的直接子级,包含 target
604 `target` 启动嵌套滚动的视图
605 `nested_scroll_axes` 由 View.SCROLL_AXIS_HORIZONTAL、View.SCROLL_AXIS_VERTICAL 或两者组成的标志
606 */
607 fn on_nested_scroll_accepted(&self, child: &View, target: &View, nested_scroll_axes: i32);
608
609 /**
610 对嵌套滚动操作结束做出反应。在嵌套滚动操作后执行清理。当嵌套滚动停止时,将调用此方法,例如当嵌套触摸滚动以 MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL 事件结束时。此方法的实现应始终调用其超类对此方法的实现(如果存在)。
611 `target` 启动嵌套滚动的视图
612 */
613 fn on_stop_nested_scroll(&self, target: &View);
614
615 /**
616 对正在进行的嵌套滚动做出反应。当 ViewParent 的当前嵌套滚动子视图分派嵌套滚动事件时,将调用此方法。要接收对此方法的调用,ViewParent 必须先前已为 onStartNestedScroll(View, View, int) 调用返回 true。
617 滚动距离的已消耗部分和未消耗部分均报告给 ViewParent。例如,实现可以选择使用已消耗部分来匹配或追踪多个子元素的滚动位置。未消耗部分可用于允许连续拖动多个滚动或可拖动元素,例如滚动垂直抽屉内的列表,一旦到达内部滚动内容的边缘,抽屉便开始拖动。
618 `target` 控制嵌套滚动的后代视图
619 `dx_consumed` 目标已消耗的水平滚动距离(以像素为单位)
620 `dy_consumed` 目标已消耗的垂直滚动距离(以像素为单位)
621 `dx_unconsumed` 目标未消耗的水平滚动距离(以像素为单位)
622 `dy_unconsumed` 目标未消耗的垂直滚动距离(以像素为单位)
623 */
624 fn on_nested_scroll(
625 &self,
626 target: &View,
627 dx_consumed: i32,
628 dy_consumed: i32,
629 dx_unconsumed: i32,
630 dy_unconsumed: i32,
631 );
632
633 /**
634 从嵌套滚动请求一次抛出。此方法表示嵌套滚动子视图已检测到适合抛出的条件。通常,这意味着触摸滚动已在滚动方向上以达到或超过可滚动轴上的最小抛出速度的速度结束。
635 如果嵌套滚动子视图通常会抛出但位于其自身内容的边缘,则可以使用此方法将抛出委托给其嵌套滚动父视图。父视图可以选择使用抛出或观察子视图的抛出。
636 返回:如果此父视图消耗了抛出或以其他方式对抛出做出反应,则为 true
637 `target` 发起嵌套滚动的视图。
638 `velocity_x` 水平速度(以像素/秒为单位)。
639 `velocity_y` 垂直速度(以像素/秒为单位)。
640 `consumed` 如果子视图消耗了抛出,则为 true,否则为 false。
641 */
642 fn on_nested_fling(
643 &self,
644 target: &View,
645 velocity_x: f32,
646 velocity_y: f32,
647 consumed: bool,
648 ) -> bool;
649
650 /**
651 在目标视图使用嵌套的快速滑动之前对其做出反应。此方法表示嵌套滚动子视图已检测到沿每个轴具有给定速度的快速滑动。通常,这意味着触摸滚动已在滚动方向上以达到或超过沿可滚动轴的最小快速滑动速度的速度结束。
652 如果嵌套滚动父视图正在将运动作为预滚动的一部分使用,则它可能也适合使用预快速滑动以完成相同的运动。通过从此方法返回 true,父视图表示子视图也不应该快速滑动其自己的内部内容。
653 返回:如果此父视图在目标视图之前使用了快速滑动,则返回 true
654 `target` 发起嵌套滚动的视图。
655 `velocity_x` 水平速度(以像素/秒为单位)。
656 `velocity_y` 垂直速度(以像素/秒为单位)。
657 */
658 fn on_nested_pre_fling(&self, target: &View, velocity_x: f32, velocity_y: f32) -> bool;
659
660 /**
661 在目标处理目标后代视图委托的可访问性操作之前,对它做出反应。如果目标希望让其父链中的视图有机会在正常处理发生之前对事件做出反应,则目标后代视图可以调用此方法。
662 最常见的是滚动事件,例如 android.view.accessibility.AccessibilityNodeInfo.ACTION_SCROLL_FORWARD。支持充当嵌套滚动父级的 ViewParent 应覆盖此方法并采取相应行动,以通过可访问性系统实现滚动。
663 返回:true,如果此 ViewParent 使用了此操作
664 `target` 调度此操作的目标视图。
665 `action` 正在执行的操作;请参阅 android.view.accessibility.AccessibilityNodeInfo。
666 `arguments` 可选的操作参数。
667 */
668 fn on_nested_pre_perform_accessibility_action(
669 &self,
670 target: &View,
671 action: i32,
672 arguments: Option<Bundle>,
673 ) -> bool;
674}
675
676/// 当视图被点击时调用的回调的接口定义。
677#[allow(non_camel_case_types)]
678#[java_interface(name = "android/view/View$OnClickListener")]
679pub trait View_OnClickListener {
680 /**
681 当单击某个视图时调用。
682 `v` 被单击的视图。
683 */
684 fn on_click(&self, v: View);
685}
686
687#[doc(hidden)]
688#[allow(non_camel_case_types)]
689#[java_class(name = "android/view/View$OnClickListenerImpl")]
690pub struct View_OnClickListenerImpl(Box<dyn Fn(View) + Send + Sync>);
691
692impl View_OnClickListenerImpl {
693 pub fn from_fn(func: impl Fn(/* v */ View) + Send + Sync + 'static) -> Arc<Self> {
694 Self::new(View_OnClickListenerImplDefault(Box::new(func)))
695 }
696}
697
698impl Default for View_OnClickListenerImplDefault {
699 fn default() -> Self {
700 Self(Box::new(|v| unimplemented!("{:?}", v)))
701 }
702}
703
704#[java_implement]
705impl View_OnClickListener for View_OnClickListenerImpl {
706 fn on_click(&self, v: View) {
707 self.0(v)
708 }
709}
710
711/**
712接口允许您向 Activity 添加和删除子视图。要获取此类的实例,请调用 Context.getSystemService()。
713*/
714#[java_interface(name = "android/view/ViewManager")]
715pub trait ViewManager: JType {
716 /**
717 将传递的 LayoutParams 分配给传递的 View,并将该视图添加到窗口。对于某些编程错误,例如在未移除第一个视图的情况下向窗口添加第二个视图,将抛出 WindowManager.BadTokenException。
718 如果窗口位于辅助显示器上并且找不到指定的显示器,则抛出 WindowManager.InvalidDisplayException(请参阅 android.app.Presentation)。
719 `view` 要添加到此窗口的视图。
720 `params` 要分配给视图的 LayoutParams。
721 */
722 fn add_view(
723 &self,
724 view: &View,
725 params: &ViewGroup_LayoutParams,
726 ) -> Result<(), <Self as JType>::Error>;
727
728 #[doc(hidden)]
729 fn update_view_layout(&self, view: &View, params: &ViewGroup_LayoutParams);
730
731 #[doc(hidden)]
732 fn remove_view(&self, view: &View);
733}
734
735/**
736应用用于与窗口管理器通信的接口。每个窗口管理器实例都绑定到一个 Display。要获取与显示器关联的 WindowManager,请调用 Context.createWindowContext(Display, int, Bundle) 以获取显示器的 UI 上下文,然后在 UI 上下文上调用 Context.getSystemService(String) 或 Context.getSystemService(Class)。
737在特定显示器上显示窗口的最简单方法是创建一个 Presentation,它会自动获取显示器的 WindowManager 和上下文。
738*/
739#[java_interface(name = "android/view/WindowManager")]
740pub trait WindowManager: ViewManager {
741 #[doc(hidden)]
742 const PARCEL_KEY_SHORTCUTS_ARRAY: &'static str = "shortcuts_array";
743
744 /**
745 removeView 的特殊变体,在返回之前立即调用给定视图层次结构的 View.onDetachedFromWindow() 方法。这不适用于普通应用程序;正确使用它需要非常小心。
746 `view` 要删除的视图。
747 */
748 fn remove_view_immediate(&self, view: &View);
749
750 /**
751 返回此WindowManager实例将创建新窗口的显示器。尽管有此方法的名称,但返回的显示器不一定是系统的主要显示器(请参见Display.DEFAULT_DISPLAY)。
752 返回的显示可能是此窗口管理器实例正在管理的辅助显示。将其视为此WindowManager实例默认使用的显示。要在其他显示器上创建窗口,您需要为该显示器获得一个WindowManager。 (有关更多信息,请参见WindowManager类文档。)
753 返回:此窗口管理器正在管理的显示器。
754 */
755 #[deprecated(note = "改用 Context.getDisplay()。")]
756 #[java_method]
757 fn get_default_display(&self) -> Display {}
758}
759
760#[doc(hidden)]
761#[java_class(name = "android/view/WindowManagerImpl")]
762pub struct WindowManagerImpl;
763
764impl ViewManager for WindowManagerImpl {
765 #[java_method]
766 fn add_view(
767 &self,
768 view: &View,
769 params: &ViewGroup_LayoutParams,
770 ) -> Result<(), <Self as JType>::Error> {
771 }
772
773 #[java_method]
774 fn update_view_layout(&self, view: &View, params: &ViewGroup_LayoutParams) {}
775
776 #[java_method]
777 fn remove_view(&self, view: &View) {}
778}
779
780impl WindowManager for WindowManagerImpl {
781 #[java_method]
782 fn remove_view_immediate(&self, view: &View) {}
783}
784
785/**
786ViewGroup 是一种特殊视图,可以包含其他视图(称为子视图)。视图组是布局和视图容器的基类。
787此类还定义了 ViewGroup.LayoutParams 类,该类用作布局参数的基类。另请参阅 ViewGroup.LayoutParams 以了解布局属性。
788
789开发者指南
790有关创建用户界面布局的更多信息,请阅读 XML 布局开发者指南。以下是自定义 ViewGroup 的完整实现,它实现了简单的 android.widget.FrameLayout,并能够在左右边缘堆叠子视图。
791@sample development/samples/ApiDemos/src/com/example/android/apis/view/CustomLayout.java 完整版
792如果您正在实现示例中所示的 XML 布局属性,则这是它们在 res/values/attrs.xml 中的对应定义:
793@sample development/samples/ApiDemos/res/values/attrs.xml CustomLayout
794最后,布局管理器可以在 XML 布局中使用,如下所示:
795@sample development/samples/ApiDemos/res/layout/custom_layout.xml 完整版
796*/
797#[java_class(name = "android/view/ViewGroup", extends=View)]
798pub struct ViewGroup;
799
800impl ViewGroup {
801 /**
802 添加子视图。如果子视图上尚未设置布局参数,则此 ViewGroup 的默认参数将设置在该子视图上。
803 注意:不要从 draw(Canvas)、onDraw(Canvas)、dispatchDraw(Canvas) 或任何相关方法调用此方法。
804 `child` 要添加的子视图
805 */
806 #[java_method]
807 pub fn add_view(&self, child: &View) {}
808
809 /**
810 调用此方法可从 ViewGroup 中删除所有子视图。
811 注意:不要从 draw(Canvas)、onDraw(Canvas)、dispatchDraw(Canvas) 或任何相关方法调用此方法。
812 */
813 #[java_method]
814 pub fn remove_all_views(&self) {}
815
816 /**
817 当 ViewGroup 子类必须先知道其在屏幕上的大小,然后才能计算要渲染的子视图数量时,此方法会由 ViewGroup 子类调用,以从自身移除子视图。例如 Gallery 或 ListView,它们可能“有”50 个子视图,但实际上只渲染当前可容纳在屏幕上的对象内的子视图数量。除非您正在扩展 ViewGroup 并了解视图测量和布局管道,否则请不要调用此方法。
818 注意:不要从 draw(Canvas)、onDraw(Canvas)、dispatchDraw(Canvas) 或任何相关方法调用此方法。
819 */
820 pub fn remove_all_views_in_layout(&self) {}
821}
822
823impl ViewManager for ViewGroup {
824 #[java_method]
825 fn add_view(
826 &self,
827 view: &View,
828 params: &ViewGroup_LayoutParams,
829 ) -> Result<(), <Self as JType>::Error> {
830 }
831
832 #[java_method]
833 fn update_view_layout(&self, view: &View, params: &ViewGroup_LayoutParams) {}
834
835 #[java_method]
836 fn remove_view(&self, view: &View) {}
837}
838
839impl ViewParent for ViewGroup {
840 type VP = Self;
841
842 #[java_method]
843 fn request_layout(&self) {}
844
845 #[java_method]
846 fn is_layout_requested(&self) -> bool {}
847
848 #[java_method]
849 fn request_transparent_region(&self, child: &View) {}
850
851 #[java_method(type_bound=(Self::VP, ViewParent))]
852 fn get_parent(&self) -> Option<Self::VP> {}
853
854 #[java_method]
855 fn request_child_focus(&self, child: &View, focused: &View) {}
856
857 #[java_method]
858 fn recompute_view_attributes(&self, child: &View) {}
859
860 #[java_method]
861 fn clear_child_focus(&self, child: &View) {}
862
863 #[java_method]
864 fn focus_search(&self, v: &View, direction: i32) -> View {}
865
866 #[java_method]
867 fn bring_child_to_front(&self, child: &View) {}
868
869 #[java_method]
870 fn show_context_menu_for_child(&self, original_view: &View) -> bool {}
871
872 #[java_method]
873 fn child_drawable_state_changed(&self, child: &View) {}
874
875 #[java_method]
876 fn request_disallow_intercept_touch_event(&self, disallow_intercept: bool) {}
877
878 #[java_method]
879 fn child_has_transient_state_changed(&self, child: &View, has_transient_state: bool) {}
880
881 #[java_method]
882 fn request_fit_system_windows(&self) {}
883
884 #[java_method(type_bound=(Self::VP, ViewParent))]
885 fn get_parent_for_accessibility(&self) -> Option<Self::VP> {}
886
887 #[java_method]
888 fn notify_subtree_accessibility_state_changed(
889 &self,
890 child: &View,
891 source: &View,
892 change_type: i32,
893 ) {
894 }
895
896 #[java_method]
897 fn can_resolve_layout_direction(&self) -> bool {}
898
899 #[java_method]
900 fn is_layout_direction_resolved(&self) -> bool {}
901
902 #[java_method]
903 fn get_layout_direction(&self) -> i32 {}
904
905 #[java_method]
906 fn can_resolve_text_direction(&self) -> bool {}
907
908 #[java_method]
909 fn is_text_direction_resolved(&self) -> bool {}
910
911 #[java_method]
912 fn get_text_direction(&self) -> i32 {}
913
914 #[java_method]
915 fn can_resolve_text_alignment(&self) -> bool {}
916
917 #[java_method]
918 fn is_text_alignment_resolved(&self) -> bool {}
919
920 #[java_method]
921 fn on_start_nested_scroll(&self, child: &View, target: &View, nested_scroll_axes: i32) -> bool {
922 }
923
924 #[java_method]
925 fn on_nested_scroll_accepted(&self, child: &View, target: &View, nested_scroll_axes: i32) {}
926
927 #[java_method]
928 fn on_stop_nested_scroll(&self, target: &View) {}
929
930 #[java_method]
931 fn on_nested_scroll(
932 &self,
933 target: &View,
934 dx_consumed: i32,
935 dy_consumed: i32,
936 dx_unconsumed: i32,
937 dy_unconsumed: i32,
938 ) {
939 }
940
941 #[java_method]
942 fn on_nested_fling(
943 &self,
944 target: &View,
945 velocity_x: f32,
946 velocity_y: f32,
947 consumed: bool,
948 ) -> bool {
949 }
950
951 #[java_method]
952 fn on_nested_pre_fling(&self, target: &View, velocity_x: f32, velocity_y: f32) -> bool {}
953
954 #[java_method]
955 fn on_nested_pre_perform_accessibility_action(
956 &self,
957 target: &View,
958 action: i32,
959 arguments: Option<Bundle>,
960 ) -> bool {
961 }
962}
963
964/**
965视图使用 LayoutParams 来告诉其父级它们希望如何布局。请参阅 ViewGroup 布局属性,了解此类支持的所有子视图属性的列表。
966基本 LayoutParams 类仅描述视图希望的宽度和高度。对于每个维度,它可以指定以下之一:
967FILL_PARENT(在 API 级别 8 及更高版本中重命名为 MATCH_PARENT),这意味着视图希望与其父级一样大(减去填充)
968WRAP_CONTENT,这意味着视图希望足够大以包含其内容(加上填充)
969
970一个确切的数字
971对于不同的 ViewGroup 子类,有 LayoutParams 的子类。例如,AbsoluteLayout 有自己的 LayoutParams 子类,它添加了 X 和 Y 值。
972
973开发人员指南
974有关创建用户界面布局的更多信息,请阅读 XML 布局开发人员指南。
975*/
976#[allow(non_camel_case_types)]
977#[java_class(name = "android/view/ViewGroup$LayoutParams")]
978pub struct ViewGroup_LayoutParams;
979
980impl ViewGroup_LayoutParams {
981 /// 视图请求的高度或宽度的特殊值。FILL_PARENT 表示视图希望与其父级一样大,减去父级的填充(如果有)。
982 #[deprecated(note = "从 API 级别 8 开始,此值已弃用,并由 MATCH_PARENT 取代。")]
983 pub const FILL_PARENT: i32 = -1;
984
985 /// 视图请求的高度或宽度的特殊值。MATCH_PARENT 表示视图希望与其父级一样大,减去父级的填充(如果有)。在 API 级别 8 中引入。
986 pub const MATCH_PARENT: i32 = -1;
987
988 /// 视图请求的高度或宽度的特殊值。WRAP_CONTENT 表示视图希望足够大以容纳其自己的内部内容,同时考虑其自己的填充。
989 pub const WRAP_CONTENT: i32 = -2;
990
991 /// 有关视图所需宽度的信息。可以是常量 FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 取代)或 WRAP_CONTENT 之一,也可以是确切的大小。
992 #[java_field]
993 pub fn get_width(&self) -> i32 {}
994
995 /// 有关视图所需宽度的信息。可以是常量 FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 取代)或 WRAP_CONTENT 之一,也可以是确切的大小。
996 #[java_field]
997 pub fn set_width(&self, value: i32) {}
998
999 /// 有关视图所需高度的信息。可以是常量 FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 取代)或 WRAP_CONTENT 之一,也可以是确切的大小。
1000 #[java_field]
1001 pub fn get_height(&self) -> i32 {}
1002
1003 /// 有关视图所需高度的信息。可以是常量 FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 取代)或 WRAP_CONTENT 之一,也可以是确切的大小。
1004 #[java_field]
1005 pub fn set_height(&self, value: i32) {}
1006
1007 /**
1008 创建一组具有指定宽度和高度的新布局参数。
1009 `width` 宽度,可以是 WRAP_CONTENT、FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 替换),也可以是固定大小(以像素为单位)
1010 `height` 高度,可以是 WRAP_CONTENT、FILL_PARENT(在 API 级别 8 中由 MATCH_PARENT 替换),也可以是固定大小(以像素为单位)
1011 */
1012 #[java_constructor]
1013 pub fn new(width: i32, height: i32) -> Self {}
1014}
1015
1016/**
1017支持边距的布局的每个子视图布局信息。请参阅 ViewGroup 边距布局属性,查看此类支持的所有子视图属性的列表。
1018*/
1019#[allow(non_camel_case_types)]
1020#[java_class(name = "android/view/ViewGroup$MarginLayoutParams", extends=ViewGroup_LayoutParams)]
1021pub struct ViewGroup_MarginLayoutParams;
1022
1023impl ViewGroup_MarginLayoutParams {
1024 /// 默认的开始和结束边距。
1025 pub const DEFAULT_MARGIN_RELATIVE: u32 = Integer::MIN_VALUE;
1026
1027 /// 子项的左边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1028 #[java_field]
1029 pub fn get_left_margin(&self) -> i32 {}
1030
1031 /// 子项的左边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1032 #[java_field]
1033 pub fn set_left_margin(&self, value: i32) {}
1034
1035 /// 子项的上边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1036 #[java_field]
1037 pub fn get_top_margin(&self) -> i32 {}
1038
1039 /// 子项的上边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1040 #[java_field]
1041 pub fn set_top_margin(&self, value: i32) {}
1042
1043 /// 子项的右边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1044 #[java_field]
1045 pub fn get_right_margin(&self) -> i32 {}
1046
1047 /// 子项的右边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1048 #[java_field]
1049 pub fn set_right_margin(&self, value: i32) {}
1050
1051 /// 子项的底部边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1052 #[java_field]
1053 pub fn get_bottom_margin(&self) -> i32 {}
1054
1055 /// 子项的底部边距(以像素为单位)。边距值应为正数。为此字段重新分配新值后,调用 setLayoutParams(ViewGroup. LayoutParams)。
1056 #[java_field]
1057 pub fn set_bottom_margin(&self, value: i32) {}
1058
1059 #[doc(hidden)]
1060 #[java_constructor]
1061 pub fn new(width: i32, height: i32) -> Self {}
1062
1063 #[doc(hidden)]
1064 #[java_constructor]
1065 pub fn from_layout_params(source: &ViewGroup_LayoutParams) -> Self {}
1066}
1067
1068#[doc(hidden)]
1069#[allow(non_camel_case_types)]
1070#[java_class(name = "android/view/WindowManager$LayoutParams", extends=ViewGroup_LayoutParams)]
1071pub struct WindowManager_LayoutParams;
1072
1073impl WindowManager_LayoutParams {
1074 /// 代表正常应用程序窗口的窗口类型的启动。
1075 pub const FIRST_APPLICATION_WINDOW: i32 = 1;
1076
1077 /// 窗口类型:作为整个应用程序的“基础”窗口的应用程序窗口;所有其他应用程序窗口将显示在其上方。在多用户系统中,仅显示在拥有该应用程序的用户窗口上。
1078 pub const TYPE_BASE_APPLICATION: i32 = 1;
1079
1080 /// 窗口类型:普通应用程序窗口。令牌必须是活动令牌,用于标识窗口所属用户。在多用户系统中,仅显示在所属用户的窗口上。
1081 pub const TYPE_APPLICATION: i32 = 2;
1082
1083 /// 窗口类型:应用程序启动时显示的特殊应用程序窗口。应用程序本身不使用它;系统使用它来显示某些内容,直到应用程序可以显示自己的窗口。在多用户系统中,显示在所有用户的窗口上。
1084 pub const TYPE_APPLICATION_STARTING: i32 = 3;
1085
1086 /// 窗口类型:TYPE_APPLICATION 的变体,确保窗口管理器将等待此窗口绘制完毕后再显示应用。在多用户系统中,仅显示在拥有该应用的用户窗口上。
1087 pub const TYPE_DRAWN_APPLICATION: i32 = 4;
1088
1089 /// 申请窗口类型的结束。
1090 pub const LAST_APPLICATION_WINDOW: i32 = 99;
1091
1092 /// 子窗口类型的开始。这些窗口的标记必须设置为它们所附加到的窗口。这些类型的窗口在 Z 顺序上紧挨着它们所附加到的窗口,并且它们的坐标空间相对于它们所附加到的窗口。
1093 pub const FIRST_SUB_WINDOW: i32 = 1000;
1094
1095 /// 窗口类型:位于应用程序窗口顶部的面板。这些窗口出现在其附属窗口的顶部。
1096 pub const TYPE_APPLICATION_PANEL: i32 = Self::FIRST_SUB_WINDOW;
1097
1098 /// 窗口类型:用于显示媒体(如视频)的窗口。这些窗口显示在其附属窗口的后面。
1099 pub const TYPE_APPLICATION_MEDIA: i32 = Self::FIRST_SUB_WINDOW + 1;
1100
1101 /// 窗口类型:应用程序窗口顶部的子面板。这些窗口显示在其附属窗口和任何 TYPE_APPLICATION_PANEL 面板的顶部。
1102 pub const TYPE_APPLICATION_SUB_PANEL: i32 = Self::FIRST_SUB_WINDOW + 2;
1103
1104 /// 窗口类型:类似于 TYPE_APPLICATION_PANEL,但窗口的布局与顶层窗口一样,而不是作为其容器的子窗口。
1105 pub const TYPE_APPLICATION_ATTACHED_DIALOG: i32 = Self::FIRST_SUB_WINDOW + 3;
1106
1107 /// 窗口类型:用于在媒体窗口顶部显示覆盖层的窗口。这些窗口显示在 TYPE_APPLICATION_MEDIA 和应用程序窗口之间。它们应该是半透明的,以便于使用。这是一个非常丑陋的 hack,因此:
1108 pub const TYPE_APPLICATION_MEDIA_OVERLAY: i32 = Self::FIRST_SUB_WINDOW + 4;
1109
1110 /// 窗口类型:位于应用程序窗口及其子面板窗口上方的子面板。这些窗口显示在其附属窗口和任何 TYPE_APPLICATION_SUB_PANEL 面板的上方。
1111 pub const TYPE_APPLICATION_ABOVE_SUB_PANEL: i32 = Self::FIRST_SUB_WINDOW + 5;
1112
1113 /// 子窗口类型的结束。
1114 pub const LAST_SUB_WINDOW: i32 = 1999;
1115
1116 /// 启动系统特定的窗口类型。这些窗口类型通常不是由应用程序创建的。
1117 pub const FIRST_SYSTEM_WINDOW: i32 = 2000;
1118
1119 /// 窗口类型:状态栏。只能有一个状态栏窗口;它位于屏幕顶部,所有其他窗口都向下移动,因此它们位于其下方。在多用户系统中显示在所有用户的窗口上。
1120 pub const TYPE_STATUS_BAR: i32 = Self::FIRST_SYSTEM_WINDOW;
1121
1122 /// 窗口类型:搜索栏。只能有一个搜索栏窗口;它位于屏幕顶部。在多用户系统中显示在所有用户的窗口上。
1123 pub const TYPE_SEARCH_BAR: i32 = Self::FIRST_SYSTEM_WINDOW + 1;
1124
1125 /// 窗口类型:电话。这些是非应用程序窗口,用于为用户提供与电话的交互(尤其是来电)。这些窗口通常位于所有应用程序之上,但在状态栏后面。在多用户系统中显示在所有用户的窗口上。
1126 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1127 pub const TYPE_PHONE: i32 = Self::FIRST_SYSTEM_WINDOW + 2;
1128
1129 /// 窗口类型:系统窗口,例如低电量警报。这些窗口始终位于应用程序窗口之上。在多用户系统中,仅显示在拥有用户的窗口上。
1130 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1131 pub const TYPE_SYSTEM_ALERT: i32 = Self::FIRST_SYSTEM_WINDOW + 3;
1132
1133 /// 窗口类型:键盘保护窗口。在多用户系统中显示在所有用户的窗口上。
1134 pub const TYPE_KEYGUARD: i32 = Self::FIRST_SYSTEM_WINDOW + 4;
1135
1136 /// 窗口类型:瞬态通知。在多用户系统中,仅显示在拥有用户的窗口上。
1137 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1138 pub const TYPE_TOAST: i32 = Self::FIRST_SYSTEM_WINDOW + 5;
1139
1140 /// 窗口类型:系统覆盖窗口,需要显示在所有其他窗口之上。这些窗口不得获取输入焦点,否则会干扰键盘保护。在多用户系统中,仅显示在拥有用户的窗口上。
1141 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1142 pub const TYPE_SYSTEM_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 6;
1143
1144 /// 窗口类型:优先手机 UI,即使键盘锁处于活动状态也需要显示。这些窗口不得获取输入焦点,否则会干扰键盘锁。在多用户系统中显示在所有用户的窗口上。
1145 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1146 pub const TYPE_PRIORITY_PHONE: i32 = Self::FIRST_SYSTEM_WINDOW + 7;
1147
1148 /// 窗口类型:在多用户系统中从状态栏滑出的面板显示在所有用户的窗口上。
1149 pub const TYPE_SYSTEM_DIALOG: i32 = Self::FIRST_SYSTEM_WINDOW + 8;
1150
1151 /// 窗口类型:键盘保护显示的对话框在多用户系统中显示在所有用户的窗口上。
1152 pub const TYPE_KEYGUARD_DIALOG: i32 = Self::FIRST_SYSTEM_WINDOW + 9;
1153
1154 /// 窗口类型:内部系统错误窗口,显示在所有可能出现的窗口之上。在多用户系统中,仅显示在所属用户的窗口上。
1155 #[deprecated(note = "适用于非系统应用。请改用 TYPE_APPLICATION_OVERLAY。")]
1156 pub const TYPE_SYSTEM_ERROR: i32 = Self::FIRST_SYSTEM_WINDOW + 10;
1157
1158 /// 窗口类型:内部输入法窗口,显示在正常 UI 上方。可以调整应用程序窗口的大小或平移,以便在显示此窗口时保持输入焦点可见。在多用户系统中,仅显示在拥有用户的窗口上。
1159 pub const TYPE_INPUT_METHOD: i32 = Self::FIRST_SYSTEM_WINDOW + 11;
1160
1161 /// 窗口类型:内部输入法对话窗口,显示在当前输入法窗口上方。在多用户系统中,仅显示在所属用户的窗口上。
1162 pub const TYPE_INPUT_METHOD_DIALOG: i32 = Self::FIRST_SYSTEM_WINDOW + 12;
1163
1164 /// 窗口类型:壁纸窗口,放置在任何想要位于壁纸之上的窗口后面。在多用户系统中,仅显示在拥有该壁纸的用户窗口上。
1165 pub const TYPE_WALLPAPER: i32 = Self::FIRST_SYSTEM_WINDOW + 13;
1166
1167 /// 窗口类型:在多用户系统中从状态栏滑出的面板显示在所有用户的窗口上。
1168 pub const TYPE_STATUS_BAR_PANEL: i32 = Self::FIRST_SYSTEM_WINDOW + 14;
1169
1170 /**
1171 窗口类型:安全系统覆盖窗口,需要显示在所有其他窗口之上。这些窗口不得获取输入焦点,否则会干扰键盘保护。
1172 这与 TYPE_SYSTEM_OVERLAY 完全相同,不同之处在于只有系统本身才被允许创建这些覆盖层。应用程序无法获得创建安全系统覆盖层的权限。
1173 在多用户系统中仅显示在所属用户的窗口上。
1174 */
1175 pub const TYPE_SECURE_SYSTEM_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 15;
1176
1177 /// 窗口类型:拖放式伪窗口。最多只有一个拖放层,并放置在所有其他窗口之上。在多用户系统中,仅显示在拥有该窗口的用户窗口上。
1178 pub const TYPE_DRAG: i32 = Self::FIRST_SYSTEM_WINDOW + 16;
1179
1180 /// 窗口类型:在多用户系统中,从状态栏滑出的面板显示在所有用户的窗口上。这些窗口显示在状态栏和任何 TYPE_STATUS_BAR_PANEL 窗口的顶部。
1181 pub const TYPE_STATUS_BAR_SUB_PANEL: i32 = Self::FIRST_SYSTEM_WINDOW + 17;
1182
1183 /// 窗口类型:(鼠标)指针在多用户系统中显示在所有用户的窗口上。
1184 pub const TYPE_POINTER: i32 = Self::FIRST_SYSTEM_WINDOW + 18;
1185
1186 /// 窗口类型:导航栏(与状态栏不同)在多用户系统中显示在所有用户的窗口上。
1187 pub const TYPE_NAVIGATION_BAR: i32 = Self::FIRST_SYSTEM_WINDOW + 19;
1188
1189 /// 窗口类型:用户更改系统音量时显示的音量级别覆盖/对话框。在多用户系统中,显示在所有用户的窗口上。
1190 pub const TYPE_VOLUME_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 20;
1191
1192 /// 窗口类型:启动进度对话框,位于所有内容之上。在多用户系统中显示在所有用户的窗口上。
1193 pub const TYPE_BOOT_PROGRESS: i32 = Self::FIRST_SYSTEM_WINDOW + 21;
1194
1195 /// 当系统 UI 栏隐藏时,窗口类型会消耗输入事件。在多用户系统中,显示在所有用户的窗口上。
1196 pub const TYPE_INPUT_CONSUMER: i32 = Self::FIRST_SYSTEM_WINDOW + 22;
1197
1198 /// 窗口类型:导航栏面板(当导航栏与状态栏不同时)在多用户系统中显示在所有用户的窗口上。
1199 pub const TYPE_NAVIGATION_BAR_PANEL: i32 = Self::FIRST_SYSTEM_WINDOW + 24;
1200
1201 /// 窗口类型:显示覆盖窗口。用于模拟辅助显示设备。在多用户系统中显示在所有用户的窗口上。
1202 pub const TYPE_DISPLAY_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 26;
1203
1204 /// 窗口类型:放大覆盖窗口。用于在启用辅助放大功能时突出显示放大的部分。在多用户系统中显示在所有用户的窗口上。
1205 pub const TYPE_MAGNIFICATION_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 27;
1206
1207 /// 窗口类型:私人虚拟显示器上方的演示窗口。
1208 pub const TYPE_PRIVATE_PRESENTATION: i32 = Self::FIRST_SYSTEM_WINDOW + 30;
1209
1210 /// 窗口类型:语音交互层的窗口。
1211 pub const TYPE_VOICE_INTERACTION: i32 = Self::FIRST_SYSTEM_WINDOW + 31;
1212
1213 //noinspection SpellCheckingInspection
1214 /// 窗口类型:仅由连接的 android.accessibilityservice.AccessibilityService 覆盖的窗口,用于拦截用户交互,而不会更改无障碍服务可以自检的窗口。具体而言,无障碍服务只能自检视力正常的用户可以与之交互的窗口,也就是说,他们可以触摸这些窗口或在这些窗口中键入内容。例如,如果有一个可触摸的全屏无障碍覆盖,那么它下面的窗口即使被可触摸窗口覆盖,也将是无障碍服务可自检的。
1215 pub const TYPE_ACCESSIBILITY_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 32;
1216
1217 /// 窗口类型:语音交互层的起始窗口。
1218 pub const TYPE_VOICE_INTERACTION_STARTING: i32 = Self::FIRST_SYSTEM_WINDOW + 33;
1219
1220 /// 用于显示用于调整停靠堆栈大小的句柄的窗口。此窗口归系统进程所有。
1221 pub const TYPE_DOCK_DIVIDER: i32 = Self::FIRST_SYSTEM_WINDOW + 34;
1222
1223 /// 窗口类型:类似于 TYPE_APPLICATION_ATTACHED_DIALOG,但由快速设置图块使用。
1224 pub const TYPE_QS_DIALOG: i32 = Self::FIRST_SYSTEM_WINDOW + 35;
1225
1226 /// 窗口类型:直接显示在键盘保护上方。此层保留用于屏幕截图动画、区域选择和 UI。在多用户系统中,仅显示在拥有用户的窗口上。
1227 pub const TYPE_SCREENSHOT: i32 = Self::FIRST_SYSTEM_WINDOW + 36;
1228
1229 /// 窗口类型:在外部显示器上演示的窗口。
1230 pub const TYPE_PRESENTATION: i32 = Self::FIRST_SYSTEM_WINDOW + 37;
1231
1232 /// 窗口类型:应用叠加窗口显示在所有活动窗口(类型介于 FIRST_APPLICATION_WINDOW 和 LAST_APPLICATION_WINDOW 之间)上方,但位于状态栏或 IME 等关键系统窗口下方。系统可能会随时更改这些窗口的位置、大小或可见性,以减少用户的视觉混乱并管理资源。需要 android.Manifest.permission#SYSTEM_ALERT_WINDOW 权限。系统将调整具有此窗口类型的进程的重要性,以降低低内存终止程序终止它们的可能性。在多用户系统中,仅显示在拥有用户的屏幕上。
1233 pub const TYPE_APPLICATION_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 38;
1234
1235 /// 窗口类型:用于在其他窗口上方添加辅助功能窗口放大功能的窗口。这会将窗口置于覆盖窗口中。
1236 pub const TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY: i32 = Self::FIRST_SYSTEM_WINDOW + 39;
1237
1238 /// 窗口类型:通知栏和键盘保护。只能有一个状态栏窗口;它位于屏幕顶部,所有其他窗口都向下移动,位于其下方。在多用户系统中,显示在所有用户的窗口上。
1239 pub const TYPE_NOTIFICATION_SHADE: i32 = Self::FIRST_SYSTEM_WINDOW + 40;
1240
1241 /// 窗口类型:用于在屏幕的非常规部分(即屏幕的左侧或底部)显示状态栏。在多用户系统中显示在所有用户的窗口上。
1242 pub const TYPE_STATUS_BAR_ADDITIONAL: i32 = Self::FIRST_SYSTEM_WINDOW + 41;
1243
1244 /// 系统窗口类型的结束。
1245 pub const LAST_SYSTEM_WINDOW: i32 = 2999;
1246
1247 /// 当没有合适的类型时在内部使用。
1248 pub const INVALID_WINDOW_TYPE: i32 = -1;
1249
1250 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
1251 pub const MEMORY_TYPE_NORMAL: i32 = 0;
1252
1253 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
1254 pub const MEMORY_TYPE_HARDWARE: i32 = 1;
1255
1256 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
1257 pub const MEMORY_TYPE_GPU: i32 = 2;
1258
1259 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
1260 pub const MEMORY_TYPE_PUSH_BUFFERS: i32 = 3;
1261
1262 /// 窗口标志:只要此窗口对用户可见,就允许在屏幕打开时激活锁定屏幕。这可以单独使用,也可以与 FLAG_KEEP_SCREEN_ON 和/或 FLAG_SHOW_WHEN_LOCKED 结合使用
1263 pub const FLAG_ALLOW_LOCK_WHILE_SCREEN_ON: u32 = 0x00000001;
1264
1265 /// 窗口标志:此窗口后面的所有内容都将变暗。使用 dimAmount 来控制暗淡程度。
1266 pub const FLAG_DIM_BEHIND: u32 = 0x00000002;
1267
1268 /// 窗口标志:为该窗口启用模糊功能。
1269 pub const FLAG_BLUR_BEHIND: u32 = 0x00000004;
1270
1271 /**
1272 窗口标志:此窗口永远不会获得按键输入焦点,因此用户无法向其发送按键或其他按钮事件。这些事件将转至其后面的任何可获得焦点的窗口。此标志还将启用 FLAG_NOT_TOUCH_MODAL,无论是否明确设置。
1273 设置此标志还意味着窗口将不需要与软输入法交互,因此它将按 Z 顺序排列并独立于任何活动输入法定位(通常这意味着它在输入法之上按 Z 顺序排列,因此它可以使用全屏显示其内容并在需要时覆盖输入法。您可以使用 FLAG_ALT_FOCUSABLE_IM 来修改此行为。
1274 */
1275 pub const FLAG_NOT_FOCUSABLE: u32 = 0x00000008;
1276
1277 /**
1278 窗口标志:此窗口永远不能接收触摸事件。
1279 此标志的目的是将触摸留给该窗口下方的某个窗口来处理(按 Z 顺序)。
1280 从Android Build.VERSION_CODES#S开始,出于安全原因,触摸事件通过包含此标志的窗口(即。在该窗口的边界内)将仅在以下一项(或多项)为真的情况下被递送到该触摸消费窗口:
1281 相同的UID:该窗口属于拥有该触摸消费窗口的同一UID。
1282 受信任的窗口:此窗口受信任。可信窗口包括(但不限于)辅助窗口(TYPE_ACCESSIBILITY_OVERLAY)、输入法(TYPE_INPUT_METHOD)和辅助窗口(TYPE_VOICE_INTERACTION)。类型为_APPLICATION_OVERLAY的窗口不受信任,请参见下文。
1283 不可见窗口:该窗口是视图#消失或视图#不可见。
1284 全透明窗口:此窗口的LayoutParams#Alpha等于0。
1285 一个具有足够透明度的SAW窗口:该窗口的类型为_APPLICATION_OVERLAY,其LayoutParams#Alpha小于或等于最大遮挡不透明度(见下文),并且它是触摸路径中该UID的唯一类型为_APPLICATION_OVERLAY的窗口。
1286 具有足够透明度的多个SAW窗口:从该UID开始的触摸路径中的多个重叠的TYPE_APPLICATION_OVERLAY窗口具有低于或等于最大遮挡不透明度的组合遮挡不透明度。有关如何计算该值的信息,请参见下面的组合遮挡不透明度一节。
1287 如果这些情况都不成立,则不会传递触摸,并且会将一条消息记录到LogCAT。
1288 最大遮挡不透明度此值为 0.8。如果应用希望从系统收集此值(而不是对其进行硬编码),则可能需要使用 android.hardware.input.InputManager#getMaximumObscuringOpacityForTouch()。
1289 组合遮挡不透明度
1290 一组窗口的组合遮挡不透明度是通过使用结合和交换运算将该集合中所有窗口的不透明度值组合而获得的,定义为:opacity({A,B}) = 1 - (1 - opacity(A))*(1 - opacity(B)),其中 ` `) = 1 - (1 - opacity(W1)) * ... * (1 - opacity(Wn))
1291 */
1292 pub const FLAG_NOT_TOUCHABLE: u32 = 0x00000010;
1293
1294 /// 窗口标志:即使此窗口可聚焦(其 FLAG_NOT_FOCUSABLE 未设置),也允许将窗口外的任何指针事件发送到其后面的窗口。否则它将自己消耗所有指针事件,无论它们是否在窗口内。
1295 pub const FLAG_NOT_TOUCH_MODAL: u32 = 0x00000020;
1296
1297 /// 窗口标志:设置后,如果按下触摸屏时设备处于休眠状态,您将收到此首次触摸事件。通常,首次触摸事件会被系统消耗,因为用户看不到他们按下的是什么。
1298 #[deprecated(note = "该标志无效。")]
1299 pub const FLAG_TOUCHABLE_WHEN_WAKING: u32 = 0x00000040;
1300
1301 /// 窗口标志:只要此窗口对用户可见,就保持设备屏幕开启且明亮。
1302 pub const FLAG_KEEP_SCREEN_ON: u32 = 0x00000080;
1303
1304 /**
1305 附加窗口的窗口标志:将窗口放置在整个屏幕内,忽略来自父窗口的任何限制。
1306 注意:在具有displayCutout的显示器上,可以将窗口放置,以便在必要时根据LayoutInDisplayCutOutMode避免显示屏区域。
1307 */
1308 pub const FLAG_LAYOUT_IN_SCREEN: u32 = 0x00000100;
1309
1310 /// 窗口标志:允许窗口延伸到屏幕之外。
1311 pub const FLAG_LAYOUT_NO_LIMITS: u32 = 0x00000200;
1312
1313 /**
1314 窗口标志:显示此窗口时隐藏所有屏幕装饰(例如状态栏)。这允许窗口为自己使用整个显示空间 - 当设置了此标志的应用窗口位于顶层时,状态栏将被隐藏。全屏窗口将忽略窗口的 softInputMode 字段的 SOFT_INPUT_ADJUST_RESIZE 值;窗口将保持全屏并且不会调整大小。
1315 您可以通过 android.R.attr#windowFullscreen 属性在您的主题中控制此标志;此属性会在标准全屏主题中自动为您设置,例如 android.R.style#Theme_NoTitleBar_Fullscreen、android.R.style#Theme_Black_NoTitleBar_Fullscreen、android.R.style#Theme_Light_NoTitleBar_Fullscreen、android.R.style#Theme_Holo_NoActionBar_Fullscreen、android.R.style#Theme_Holo_Light_NoActionBar_Fullscreen、android.R.style#Theme_DeviceDefault_NoActionBar_Fullscreen 和 android.R.style#Theme_DeviceDefault_Light_NoActionBar_Fullscreen。
1316 */
1317 #[deprecated(note = "将WindowInsetsController#hide(int)与Type#statusBars()一起使用。")]
1318 pub const FLAG_FULLSCREEN: u32 = 0x00000400;
1319
1320 /// 窗口标志:覆盖 FLAG_FULLSCREEN 并强制显示屏幕装饰(例如状态栏)。
1321 #[deprecated(note = "该值“意外”成为 API,不应被第三方应用程序使用。")]
1322 pub const FLAG_FORCE_NOT_FULLSCREEN: u32 = 0x00000800;
1323
1324 /// 窗口标志:将此窗口合成到屏幕时启用抖动。
1325 #[deprecated(note = "此标志不再使用。")]
1326 pub const FLAG_DITHER: u32 = 0x00001000;
1327
1328 /**
1329 窗口标志:将窗口内容视为安全,防止其出现在屏幕截图中或在非安全显示器上查看。
1330 有关安全表面和安全显示的更多详细信息,请参阅 android.view.Display#FLAG_SECURE。
1331 */
1332 pub const FLAG_SECURE: u32 = 0x00002000;
1333
1334 /// 窗口标志:一种特殊模式,其中布局参数用于在表面合成到屏幕时执行表面的缩放。
1335 pub const FLAG_SCALED: u32 = 0x00004000;
1336
1337 /// 窗口标志:用于用户将屏幕贴在脸上时经常使用的窗口,它将积极过滤事件流以防止在这种情况下意外按压(对于特定窗口可能不是所需的),当检测到这样的事件流时,应用程序将收到一个 CANCEL 运动事件来指示这一点,因此应用程序可以通过在手指释放之前不对事件采取任何操作来相应地处理此问题。
1338 pub const FLAG_IGNORE_CHEEK_PRESSES: u32 = 0x00008000;
1339
1340 /// 窗口标志:一个特殊选项,仅与 FLAG_LAYOUT_IN_SCREEN 结合使用。当请求在屏幕上布局时,您的窗口可能会出现在屏幕装饰(例如状态栏)的上方或后面。通过同时包含此标志,窗口管理器将报告所需的插入矩形,以确保您的内容不会被屏幕装饰覆盖。此标志通常由 Window 为您设置,如 Window#setFlags 中所述
1341 #[deprecated(note = "插图将始终传送到您的应用程序。")]
1342 pub const FLAG_LAYOUT_INSET_DECOR: u32 = 0x00010000;
1343
1344 /**
1345 窗口标志:设置后,反转窗口的输入法可聚焦性。
1346 设置此标志的效果取决于是否设置了 FLAG_NOT_FOCUSABLE:如果未设置 FLAG_NOT_FOCUSABLE,即当窗口可聚焦时,设置此标志将阻止此窗口成为输入法的目标。因此,它将无法与输入法交互,并将位于输入法之上(除非其上方有另一个输入法目标)。
1347 如果设置了 FLAG_NOT_FOCUSABLE,则设置此标志会要求窗口成为输入法目标,即使窗口无法聚焦。因此,它将位于输入法之下。注意:设置了 FLAG_NOT_FOCUSABLE 的窗口无法与输入法交互,无论此标志如何。
1348 */
1349 pub const FLAG_ALT_FOCUSABLE_IM: u32 = 0x00020000;
1350
1351 /// 窗口标志:如果您已设置 FLAG_NOT_TOUCH_MODAL,则可以设置此标志以接收单个特殊 MotionEvent,其动作为 MotionEvent#ACTION_OUTSIDE MotionEvent.ACTION_OUTSIDE,用于发生在窗口外的触摸。请注意,您不会收到完整的向下/移动/向上手势,只会收到第一个向下的位置作为 ACTION_OUTSIDE。
1352 pub const FLAG_WATCH_OUTSIDE_TOUCH: u32 = 0x00040000;
1353
1354 /// 窗口标志:特殊标志,允许在屏幕锁定时显示窗口。这将使应用程序窗口优先于键盘保护或任何其他锁定屏幕。可以与 FLAG_KEEP_SCREEN_ON 一起使用,在显示键盘保护窗口之前直接打开屏幕并显示窗口。可以与 FLAG_DISMISS_KEYGUARD 一起使用,以自动完全关闭非安全键盘保护。此标志仅适用于最顶部的全屏窗口。
1355 #[deprecated(
1356 note = "请使用 android.R.attr#showWhenLocked 或 android.app.Activity#setShowWhenLocked(boolean) 来防止意外的双重生命周期事件。"
1357 )]
1358 pub const FLAG_SHOW_WHEN_LOCKED: u32 = 0x00080000;
1359
1360 /**
1361 窗口标志:要求系统壁纸显示在窗口后面。窗口表面必须是半透明的,才能真正看到其后面的壁纸;此标志仅确保如果此窗口实际上有半透明区域,壁纸表面就会出现。
1362 您可以通过 android.R.attr#windowShowWallpaper 属性在您的主题中控制此标志;此属性会在标准壁纸主题中自动为您设置,例如 android.R.style#Theme_Wallpaper、android.R.style#Theme_Wallpaper_NoTitleBar、android.R.style#Theme_Wallpaper_NoTitleBar_Fullscreen、android.R.style#Theme_Holo_Wallpaper、android.R.style#Theme_Holo_Wallpaper_NoTitleBar、android.R.style#Theme_DeviceDefault_Wallpaper 和 android.R.style#Theme_DeviceDefault_Wallpaper_NoTitleBar。
1363 设置此标志后,发送到此窗口的所有触摸事件也会发送到壁纸,用于与动态壁纸交互。检查 LayoutParams#areWallpaperTouchEventsEnabled(),默认情况下设置为 ` `。在窗口上显示敏感信息时,如果您想禁用将触摸事件发送到壁纸,请使用 LayoutParams#setWallpaperTouchEventsEnabled(boolean)。
1364 */
1365 pub const FLAG_SHOW_WALLPAPER: u32 = 0x00100000;
1366
1367 /// 窗口标志:当设置为添加窗口或使窗口可见时,一旦窗口显示出来,系统就会触发电源管理器的用户活动(就像用户唤醒了设备一样)来打开屏幕。
1368 #[deprecated(
1369 note = "请使用 android.R.attr#turnScreenOn 或 android.app.Activity#setTurnScreenOn(boolean) 来防止意外的双重生命周期事件。"
1370 )]
1371 pub const FLAG_TURN_SCREEN_ON: u32 = 0x00200000;
1372
1373 /// 窗口标志:设置后,仅当窗口不是安全锁定的键盘保护时,才会关闭键盘保护。由于这种键盘保护不是出于安全考虑,因此当用户导航到另一个窗口时,它将永远不会重新出现(与 FLAG_SHOW_WHEN_LOCKED 相反,FLAG_SHOW_WHEN_LOCKED 只会暂时隐藏安全和非安全键盘保护,但确保当用户移动到不隐藏它们的另一个 UI 时它们会重新出现)。如果键盘保护当前处于活动状态且是安全的(需要解锁凭证),则用户仍需要确认它才能看到此窗口,除非也设置了 FLAG_SHOW_WHEN_LOCKED。
1374 #[deprecated(
1375 note = "改用 FLAG_SHOW_WHEN_LOCKED 或 KeyguardManager#requestDismissKeyguard。由于只要窗口上带有此标志的活动处于焦点状态,keyguard 就会一直被关闭,因此 keyguard 无法防止意外触摸屏幕,这是不希望的。"
1376 )]
1377 pub const FLAG_DISMISS_KEYGUARD: u32 = 0x00400000;
1378
1379 /// 窗口标志:设置后,窗口将接受超出其范围的触摸事件,并将其发送到也支持拆分触摸的其他窗口。如果未设置此标志,则第一个向下的指针将确定所有后续触摸将转到哪个窗口,直到所有指针都向上移动。如果设置了此标志,则每个向下的指针(不一定是第一个)将确定该指针的所有后续触摸将转到哪个窗口,直到该指针向上移动,从而允许将多个指针的触摸拆分到多个窗口。
1380 pub const FLAG_SPLIT_TOUCH: u32 = 0x00800000;
1381
1382 /**
1383 指示该窗口是否应加速硬件。请求硬件加速并不能保证它会发生。
1384 此标志只能通过编程控制以启用硬件加速。要通过编程为给定窗口启用硬件加速,请执行以下操作:
1385 Window w = activity.getWindow(); // 在 Activity 的 onCreate() 中
1386 例如
1387 w.setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
1388 重要的是要记住,必须在设置活动或对话框的内容视图之前设置此标志。
1389 在使用 android.R.attr#hardwareAccelerated 在清单中启用硬件加速后,此标志不能用于禁用硬件加速。如果您需要有选择地以编程方式禁用硬件加速(例如用于自动测试),请确保在清单中将其关闭,并在需要时使用上述方法在活动或对话框中启用它。
1390 如果活动或应用程序上的 android.R.attr#hardwareAccelerated android:hardwareAccelerated XML 属性设置为 true,则系统会自动设置此标志。
1391 */
1392 pub const FLAG_HARDWARE_ACCELERATED: u32 = 0x01000000;
1393
1394 //noinspection SpellCheckingInspection
1395 /**
1396 窗口标志:允许窗口内容延伸到屏幕的过扫描区域(如果有)。窗口仍应正确定位其内容以将过扫描区域考虑在内。
1397 可以通过android.R.attr#windowOverscan属性在您的主题中控制该标志;该属性是在标准过扫描主题中为您自动设置的,例如android.R.style#Theme_Holo_NoActionBar_Overscan、android.R.style#Theme_Holo_Light_NoActionBar_Overscan、android.R.style#Theme_DeviceDefault_NoActionBar_Overscan和android.R.style#Theme_DeviceDefault_Light_NoActionBar_Overscan。
1398 当为窗口启用此标志时,其正常内容可能会被显示屏的过扫描区域在一定程度上遮挡。为了确保用户可以看到该内容的关键部分,您可以使用 View#setFitsSystemWindows(boolean) View.setFitsSystemWindows(boolean) 在视图层次结构中设置应应用适当偏移的点。(这可以通过直接调用此函数、使用视图层次结构中的 android.R.attr#fitsSystemWindows 属性或实现您自己的 View#fitSystemWindows(android.graphics.Rect) View.fitSystemWindows(Rect) 方法来完成)。
1399 这种定位内容元素的机制与布局和 View#setSystemUiVisibility(int) View.setSystemUiVisibility(int) 的等效用法相同;这里有一个示例布局,它将在设置此过扫描标志的情况下正确定位其 UI 元素:
1400 development/samples/ApiDemos/res/layout/overscan_activity.xml 完整版
1401 */
1402 #[deprecated(note = "从Android 11开始,任何Android产品都不再设置过范围的区域。")]
1403 pub const FLAG_LAYOUT_IN_OVERSCAN: u32 = 0x02000000;
1404
1405 /**
1406 窗口标志:请求一个半透明的状态栏,并带有系统提供的最少的背景保护。
1407 您可以通过 android.R.attr#windowTranslucentStatus 属性在您的主题中控制此标志;此属性会在标准半透明装饰主题中自动为您设置,例如 android.R.style#Theme_Holo_NoActionBar_TranslucentDecor、android.R.style#Theme_Holo_Light_NoActionBar_TranslucentDecor、android.R.style#Theme_DeviceDefault_NoActionBar_TranslucentDecor 和 android.R.style#Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor。
1408 当为窗口启用此标志时,它会自动设置系统 UI 可见性标志 View#SYSTEM_UI_FLAG_LAYOUT_STABLE 和 View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。
1409 注意:对于支持 android.content.pm.PackageManager#FEATURE_AUTOMOTIVE 的设备,可以忽略此标志。
1410 */
1411 #[deprecated(note = "改用半透明颜色的 Window#setStatusBarColor(int)。")]
1412 pub const FLAG_TRANSLUCENT_STATUS: u32 = 0x04000000;
1413
1414 /**
1415 窗口标志:请求一个半透明的导航栏,并带有系统提供的最少的背景保护。
1416 您可以通过 android.R.attr#windowTranslucentNavigation 属性在您的主题中控制此标志;此属性会在标准半透明装饰主题中自动为您设置,例如 android.R.style#Theme_Holo_NoActionBar_TranslucentDecor、android.R.style#Theme_Holo_Light_NoActionBar_TranslucentDecor、android.R.style#Theme_DeviceDefault_NoActionBar_TranslucentDecor 和 android.R.style#Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor。
1417 当为窗口启用此标志时,它会自动设置系统 UI 可见性标志 View#SYSTEM_UI_FLAG_LAYOUT_STABLE 和 View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION。
1418 注意:对于支持 android.content.pm.PackageManager#FEATURE_AUTOMOTIVE 的设备,汽车制造商可以禁用此标志。
1419 */
1420 #[deprecated(note = "改用半透明颜色的 Window#setNavigationBarColor(int)。")]
1421 pub const FLAG_TRANSLUCENT_NAVIGATION: u32 = 0x08000000;
1422
1423 /// 本地焦点模式窗口的标志。本地焦点模式窗口可以使用 Window#setLocalFocus(boolean, boolean) 独立于窗口管理器控制焦点。通常,此模式下的窗口不会从窗口管理器获取触摸/按键事件,而只能通过使用 Window#injectInputEvent(InputEvent) 的本地注入来获取事件。
1424 pub const FLAG_LOCAL_FOCUS_MODE: u32 = 0x10000000;
1425
1426 /**
1427 窗口标志:允许触摸在手势过程中从一个窗口滑入相邻窗口,而不是在手势持续期间被捕获。
1428 此标志仅更改此窗口的触摸焦点行为。触摸可以滑出窗口但不一定滑回(除非具有触摸焦点的其他窗口允许)。
1429 */
1430 pub const FLAG_SLIPPERY: u32 = 0x20000000;
1431
1432 /// 窗口标志:当请求使用附加窗口进行布局时,附加窗口可能会与父窗口的屏幕装饰(例如导航栏)重叠。通过包含此标志,窗口管理器将在父窗口的装饰框架内布局附加窗口,使其不与屏幕装饰重叠。
1433 #[deprecated(note = "使用 setFitInsetsTypes(int) 来确定附加窗口是否与系统栏重叠。")]
1434 pub const FLAG_LAYOUT_ATTACHED_IN_DECOR: u32 = 0x40000000;
1435
1436 /// 标志,指示此窗口负责绘制系统栏的背景。如果设置,系统栏将以透明背景绘制,并且此窗口中的相应区域将用Window#getStatusBarColor()和Window#getNavationBarColor()中指定的颜色填充。
1437 pub const FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS: u32 = 0x80000000;
1438
1439 /// 在系统进程中,我们全局不使用硬件加速,因为那里有许多线程在处理 UI,它们之间会发生冲突。如果 UI 的某些部分确实需要使用硬件加速,可以设置此标志来强制使用。这基本上是针对锁屏的。如果其他人也使用它,那么你可能错了。
1440 pub const PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED: i32 = 1 << 1;
1441
1442 /// 默认情况下,壁纸在滚动时会发送新的偏移量。如果壁纸没有执行任何有用的操作(它们不会影响壁纸滚动操作),则可以通过调用 android.service.wallpaper.WallpaperService.Engine#setOffsetNotificationsEnabled(boolean) 选择跳过这些通知。
1443 pub const PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS: i32 = 1 << 2;
1444
1445 /// 当设置 LayoutParams#TYPE_APPLICATION_OVERLAY 时,窗口将保持可见,即使为另一个可见窗口设置了 LayoutParams#SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS。
1446 pub const PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY: i32 = 1 << 3;
1447
1448 /// 在多用户系统中,如果设置了此标志并且所有者是系统进程,则此窗口将显示在所有用户屏幕上。这将覆盖通常仅显示在所有者用户的屏幕上的窗口类型的默认行为。请参阅每种窗口类型以确定其默认行为。
1449 pub const SYSTEM_FLAG_SHOW_FOR_ALL_USERS: i32 = 1 << 4;
1450
1451 /// 标记以允许此窗口具有不受限制的手势排除。
1452 pub const PRIVATE_FLAG_UNRESTRICTED_GESTURE_EXCLUSION: i32 = 1 << 5;
1453
1454 /// 永远不要为窗口的位置变化制作动画。
1455 pub const PRIVATE_FLAG_NO_MOVE_ANIMATION: i32 = 1 << 6;
1456
1457 /// 窗口标志:特殊标志,用于限制窗口大小为原始大小([320x480] x 密度)。用于为在兼容模式下运行的应用程序创建窗口。
1458 pub const PRIVATE_FLAG_COMPATIBLE_WINDOW: i32 = 1 << 7;
1459
1460 /// 窗口标志:用于系统对话框的特殊选项。设置此标志后,窗口在创建时将无条件地要求焦点。
1461 pub const PRIVATE_FLAG_SYSTEM_ERROR: i32 = 1 << 8;
1462
1463 /// 标记以指示仅在必要时才测量窗口的视图层次结构。如果窗口大小可以通过 LayoutParams 获知,我们可以使用该大小来重新布局窗口,并且我们不必在布局视图之前测量视图层次结构。这减少了执行测量的机会。
1464 pub const PRIVATE_FLAG_OPTIMIZE_MEASURE: i32 = 1 << 9;
1465
1466 /// 阻止当前窗口后面的壁纸接收触摸事件的标志。
1467 pub const PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS: i32 = 1 << 10;
1468
1469 /// 强制状态栏窗口始终可见的标志。如果在设置此标志时状态栏处于隐藏状态,则将再次显示。这只能通过 LayoutParams#TYPE_STATUS_BAR 设置。
1470 pub const PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR: i32 = 1 << 11;
1471
1472 /// 标记表示窗口框架应为添加显示切口框架的请求框架。仅当给定的特定尺寸小于父框架且窗口覆盖显示切口时才适用。扩展框架不会大于父框架。
1473 pub const PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT: i32 = 1 << 12;
1474
1475 /// 此标记将使窗口忽略应用程序可见性,而是完全依赖装饰视图可见性来确定窗口可见性。最近使用此功能在启动应用程序后继续绘制。
1476 pub const PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY: i32 = 1 << 13;
1477
1478 /// 标志表明无论当前的窗口模式配置如何,该子窗口都应始终布局在父框架中。
1479 pub const PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME: i32 = 1 << 14;
1480
1481 /// 标志表明此窗口始终绘制状态栏背景,无论其他标志是什么。
1482 pub const PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS: i32 = 1 << 15;
1483
1484 /// 标记用于指示如果设备支持,此窗口需要持续性能模式。
1485 pub const PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE: i32 = 1 << 16;
1486
1487 /// 标志,用于指示当此窗口可见时,应用程序进程添加的属于TYPE_TOAST类型的任何窗口或需要android.app.AppOpsManager#OP_SYSTEM_ALERT_WINDOW权限的窗口都应被隐藏。
1488 pub const SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS: i32 = 1 << 19;
1489
1490 /// 表示此窗口是某些设备上存在的圆角覆盖,这意味着它将被排除在外:屏幕截图、屏幕放大和镜像。
1491 pub const PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY: i32 = 1 << 20;
1492
1493 //noinspection SpellCheckingInspection
1494 /**
1495 标记指示在未缩放的屏幕坐标上计算可放大区域时将排除此窗口,这可以避免放大边界上的剪切。它应该用于不可放大的叠加层。
1496 注意与 PRIVATE_FLAG_NOT_MAGNIFIABLE 不同,此标志不影响放大功能。如果您希望窗口不可放大且不导致剪切,则需要将两者结合起来。
1497 */
1498 pub const PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION: i32 = 1 << 21;
1499
1500 //noinspection SpellCheckingInspection
1501 /**
1502 标记以防止窗口被辅助功能放大镜放大。
1503 TODO(b/190623172): 这只是暂时的解决办法,需要寻找其他方法。
1504 */
1505 pub const PRIVATE_FLAG_NOT_MAGNIFIABLE: i32 = 1 << 22;
1506
1507 /// 标记表示状态栏窗口处于强制显示导航栏的状态,除非导航栏窗口明确设置为 View#GONE。仅当通过 LayoutParams#TYPE_STATUS_BAR 设置时才会生效。
1508 pub const PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION: i32 = 1 << 23;
1509
1510 /// 标志表明窗口与颜色空间无关,并且颜色可以解释为任何颜色空间。
1511 pub const PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC: i32 = 1 << 24;
1512
1513 /// 标记请求创建 BLAST(缓冲区作为 LayerState)层。如果未指定,客户端将收到 BufferQueue 层。
1514 pub const PRIVATE_FLAG_USE_BLAST: i32 = 1 << 25;
1515
1516 /// 标志表示窗口正在控制系统栏的外观。因此我们不需要通过读取其系统 UI 标志来调整它以实现兼容性。
1517 pub const PRIVATE_FLAG_APPEARANCE_CONTROLLED: i32 = 1 << 26;
1518
1519 /// 标志表示窗口正在控制系统栏的行为。因此我们不需要通过读取其窗口标志或系统 UI 标志来调整它以实现兼容性。
1520 pub const PRIVATE_FLAG_BEHAVIOR_CONTROLLED: i32 = 1 << 27;
1521
1522 /// 标记表示窗口正在自行控制如何适应窗口插入。因此我们无需调整其属性来适应窗口插入。
1523 pub const PRIVATE_FLAG_FIT_INSETS_CONTROLLED: i32 = 1 << 28;
1524
1525 /// 标记以表明该窗口是受信任的覆盖。
1526 pub const PRIVATE_FLAG_TRUSTED_OVERLAY: i32 = 1 << 29;
1527
1528 /// 标志表明窗口的父框架应该由 IME 插入。
1529 pub const PRIVATE_FLAG_INSET_PARENT_FRAME_BY_IME: i32 = 1 << 30;
1530
1531 /**
1532 标记表示我们想要拦截和处理所有用户的全局拖放。此标记允许窗口即使不可见也考虑拖放事件,并将接收系统中所有活动用户的拖放。
1533 使用此标志向窗口提供附加数据,包括 ClipData(包含具有 DragEvent#ACTION_DRAG_STARTED 事件的所有项目)和具有 DragEvent#ACTION_DROP 事件的实际拖动表面。如果窗口消耗了拖放,则拖动表面的清理(作为 DragEvent#ACTION_DROP 的一部分提供)将由窗口承担。
1534 */
1535 pub const PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP: i32 = 1 << 31;
1536
1537 /// 确定此窗口的软输入区域所需的可见性状态的位的 softInputMode 掩码。
1538 pub const SOFT_INPUT_MASK_STATE: i32 = 0x0f;
1539
1540 /// softInputMode 的可见性状态:未指定状态。当窗口获得焦点时,系统可能会显示或隐藏软件键盘,以获得更好的用户体验。
1541 pub const SOFT_INPUT_STATE_UNSPECIFIED: i32 = 0;
1542
1543 /// softInputMode 的可见性状态:请不要改变软输入区域的状态。
1544 pub const SOFT_INPUT_STATE_UNCHANGED: i32 = 1;
1545
1546 /// SoftInputMode的可见性状态:通常合适时(用户向前导航到您的窗口时),请隐藏任何软输入区域)。
1547 pub const SOFT_INPUT_STATE_HIDDEN: i32 = 2;
1548
1549 /// softInputMode 的可见性状态:当此窗口获得焦点时,请始终隐藏任何软输入区域。
1550 pub const SOFT_INPUT_STATE_ALWAYS_HIDDEN: i32 = 3;
1551
1552 /**
1553 softInputMode 的可见性状态:请在正常适当的时候显示软输入区域(当用户向前导航到您的窗口时)。
1554 对于以 android.os.Build.VERSION_CODES#P 及更高版本为目标的应用程序,除非存在一个焦点视图,并且在窗口聚焦时从 View#onCheckIsTextEditor() 返回“ ” ,否则此标志将被忽略。
1555 */
1556 pub const SOFT_INPUT_STATE_VISIBLE: i32 = 4;
1557
1558 /**
1559 SoftInputMode的可见性状态:当此窗口接收输入焦点时,请始终使软输入区域可见。
1560 对于以 android.os.Build.VERSION_CODES#P 及更高版本为目标的应用程序,除非存在一个焦点视图,并且在窗口聚焦时从 View#onCheckIsTextEditor() 返回“ ” ,否则此标志将被忽略。
1561 */
1562 pub const SOFT_INPUT_STATE_ALWAYS_VISIBLE: i32 = 5;
1563
1564 /// 软输入模式 (softInputMode) 的掩码,用于确定应如何调整窗口以适应软输入窗口。
1565 pub const SOFT_INPUT_MASK_ADJUST: i32 = 0xf0;
1566
1567 /// softInputMode 的调整选项:未指定。系统将根据窗口的内容尝试选择其中一个。
1568 pub const SOFT_INPUT_ADJUST_UNSPECIFIED: i32 = 0x00;
1569
1570 /// softInputMode 的调整选项:设置为允许在显示输入法时调整窗口大小,以便输入法不会覆盖其内容。这不能与 SOFT_INPUT_ADJUST_PAN 结合使用;如果两者都未设置,则系统将尝试根据窗口的内容选择其中一个。如果窗口的布局参数标志包括 FLAG_FULLSCREEN,则将忽略 softInputMode 的此值;窗口不会调整大小,但会保持全屏显示。
1571 #[deprecated(
1572 note = "使用 ` ` 调用 Window#setDecorFitsSystemWindows(boolean) 并在根内容视图上安装一个适合 Type#ime() 类型插入的 OnApplyWindowInsetsListener。"
1573 )]
1574 pub const SOFT_INPUT_ADJUST_RESIZE: i32 = 0x10;
1575
1576 /// softInputMode 的调整选项:设置为在显示输入法时让窗口平移,这样它就不需要处理调整大小,而只需由框架平移以确保当前输入焦点可见。这不能与 SOFT_INPUT_ADJUST_RESIZE 结合使用;如果两者都未设置,则系统将尝试根据窗口的内容选择其中一个。
1577 pub const SOFT_INPUT_ADJUST_PAN: i32 = 0x20;
1578
1579 /// softInputMode 的调整选项:设置为不根据显示的输入法调整窗口。窗口不会调整大小,也不会平移以使其焦点可见。
1580 pub const SOFT_INPUT_ADJUST_NOTHING: i32 = 0x30;
1581
1582 /// for softInputMode:设置用户将向前导航到窗口时。 通常,该系统会自动为您设置,尽管您可能需要在自己显示窗口时在某些情况下设置它。 显示窗口后,该标志将始终自动清除。
1583 pub const SOFT_INPUT_IS_FORWARD_NAVIGATION: i32 = 0x100;
1584
1585 /// screenBrightness 和 buttonBrightness 的默认值表示此窗口的亮度值不会被覆盖,而应该使用正常的亮度策略。
1586 pub const BRIGHTNESS_OVERRIDE_NONE: f32 = -1.0;
1587
1588 /// screenBrightness 和 buttonBrightness 的值表示当此窗口位于前面时,屏幕或按钮背光亮度应设置为最低值。
1589 pub const BRIGHTNESS_OVERRIDE_OFF: f32 = 0.0;
1590
1591 /// screenBrightness 和 buttonBrightness 的值表示当此窗口位于前面时,屏幕或按钮背光亮度应设置为最高值。
1592 pub const BRIGHTNESS_OVERRIDE_FULL: f32 = 1.0;
1593
1594 /// 未指定 rotationAnimation 的值,表示缺乏偏好。
1595 pub const ROTATION_ANIMATION_UNSPECIFIED: i32 = -1;
1596
1597 /// rotationAnimation 的值指定此窗口在旋转后将在视觉上旋转进或旋转出。
1598 pub const ROTATION_ANIMATION_ROTATE: i32 = 0;
1599
1600 //noinspection SpellCheckingInspection
1601 /// rotationAnimation 的值指定此窗口在旋转后淡入或淡出。
1602 pub const ROTATION_ANIMATION_CROSSFADE: i32 = 1;
1603
1604 //noinspection SpellCheckingInspection
1605 /// rotationAnimation 的值指定此窗口在旋转后将立即消失或出现。
1606 pub const ROTATION_ANIMATION_JUMPCUT: i32 = 2;
1607
1608 //noinspection SpellCheckingInspection
1609 /// rotationAnimation 的值用于指定无缝旋转模式。其工作原理与 JUMPCUT 类似,但如果无法在不暂停屏幕的情况下应用旋转,则会回退到 CROSSFADE。例如,这对于相机应用来说是理想的选择,这些应用不希望取景器内容旋转或淡入淡出(而是无缝),但在无法应用无缝旋转的应用转换场景中也不希望出现 ROTATION_ANIMATION_JUMPCUT。
1610 pub const ROTATION_ANIMATION_SEAMLESS: i32 = 3;
1611
1612 /// 指示此窗口是否希望HDR转换被禁用。
1613 pub const DISPLAY_FLAG_DISABLE_HDR_CONVERSION: i32 = 1 << 0;
1614
1615 /**
1616 仅当 DisplayCutout 完全包含在系统栏内或 DisplayCutout 深度不超过 16 dp 时,窗口才可以延伸到 DisplayCutout 区域,但这取决于 OEM 的选择。否则,窗口的布局不会与 DisplayCutout 区域重叠。
1617 实际上,这意味着如果窗口未设置 FLAG_FULLSCREEN 或 View#SYSTEM_UI_FLAG_FULLSCREEN,则如果切口位于顶部边缘,则它可以延伸到纵向切口区域。对于 View#SYSTEM_UI_FLAG_HIDE_NAVIGATION 和屏幕底部的切口,情况也是如此。否则(即全屏或横向),它会被布置成不与切口区域重叠。
1618 通常采取的不与状态栏和导航栏重叠的预防措施足以确保没有重要内容与 DisplayCutout 重叠。
1619 注意:当 DisplayCutout 与系统栏位于不同侧时,OEM 可以选择让窗口始终延伸到 DisplayCutout 区域,无论是否设置了凹口标志,前提是 DisplayCutout 与窗口的重叠部分最多为 16dp。在这种情况下,OEM 必须为用户提供选择加入/退出的选项。
1620 android:windowLayoutInDisplayCutoutMode
1621 */
1622 pub const LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT: i32 = 0;
1623
1624 /**
1625 窗口始终可以延伸到屏幕短边的 DisplayCutout 区域。
1626 窗口永远不会延伸到屏幕长边上的 DisplayCutout 区域,除非 DisplayCutout 的深度不超过 16 dp,但这取决于 OEM 的选择。
1627 注意:OEM 可以选择让窗口延伸到长边的 DisplayCutout 区域,但前提是凹口与窗口的重叠部分最多为 16dp。在这种情况下,OEM 必须为用户提供选择加入/退出的选项。
1628 窗口必须确保没有重要内容与DisplayCutout重叠。
1629 在此模式下,无论窗口是否隐藏了系统栏,窗口都会在纵向和横向显示屏短边的切口下延伸:
1630 角落中的切口被视为位于短边:
1631 另一方面,如果切口位于显示器的长边上,则会应用信箱,使得窗口不会延伸到任一长边的切口中:
1632 注意:Android 可能不允许内容视图在视图级别与系统栏重叠。要覆盖此行为并允许内容能够延伸到切口区域,请使用 ` ` 调用 Window#setDecorFitsSystemWindows(boolean)。
1633 android:windowLayoutInDisplayCutoutMode
1634 */
1635 pub const LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES: i32 = 1;
1636
1637 /**
1638 窗口永远不会与DisplayCutout区域重叠。
1639 这应该与暂时设置 View#SYSTEM_UI_FLAG_FULLSCREEN 或 View#SYSTEM_UI_FLAG_HIDE_NAVIGATION 的窗口一起使用,以避免在设置或清除相应标志时重新布局窗口。
1640 android:windowLayoutInDisplayCutoutMode
1641 */
1642 pub const LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER: i32 = 2;
1643
1644 /**
1645 窗口始终可以延伸到屏幕所有边缘的 DisplayCutout 区域。
1646 窗口必须确保没有重要内容与DisplayCutout重叠。
1647 在这种模式下,无论窗口是否隐藏了系统栏,窗口都会在纵向和横向显示屏的所有边缘的切口下延伸。
1648 注意:Android 可能不允许内容视图在视图级别与系统栏重叠。要覆盖此行为并允许内容能够延伸到切口区域,请使用 ` ` 调用 Window#setDecorFitsSystemWindows(boolean)。
1649 android:windowLayoutInDisplayCutoutMode
1650 */
1651 pub const LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS: i32 = 3;
1652
1653 /// 不为该窗口构建输入通道。因此该通道将无法接收输入。
1654 pub const INPUT_FEATURE_NO_INPUT_CHANNEL: i32 = 1 << 0;
1655
1656 /// 当此窗口获得焦点时,不会针对所有输入事件调用用户活动,因此应用程序必须自行执行此操作。仅应由键盘锁和手机应用程序使用。仅应由键盘锁和手机应用程序使用。
1657 pub const INPUT_FEATURE_DISABLE_USER_ACTIVITY: i32 = 1 << 1;
1658
1659 /// 输入侦测窗口。此窗口将接收其可触摸区域内的所有指针事件,但不会阻止事件按 Z 顺序发送到其下方的其他窗口。输入事件将分派到事件坐标处顶部非侦测窗口上方的所有侦测窗口。
1660 pub const INPUT_FEATURE_SPY: i32 = 1 << 2;
1661
1662 pub const LAYOUT_CHANGED: i32 = 1 << 0;
1663
1664 pub const TYPE_CHANGED: i32 = 1 << 1;
1665
1666 pub const FLAGS_CHANGED: i32 = 1 << 2;
1667
1668 pub const FORMAT_CHANGED: i32 = 1 << 3;
1669
1670 pub const ANIMATION_CHANGED: i32 = 1 << 4;
1671
1672 pub const DIM_AMOUNT_CHANGED: i32 = 1 << 5;
1673
1674 pub const TITLE_CHANGED: i32 = 1 << 6;
1675
1676 pub const ALPHA_CHANGED: i32 = 1 << 7;
1677
1678 pub const MEMORY_TYPE_CHANGED: i32 = 1 << 8;
1679
1680 pub const SOFT_INPUT_MODE_CHANGED: i32 = 1 << 9;
1681
1682 pub const SCREEN_ORIENTATION_CHANGED: i32 = 1 << 10;
1683
1684 pub const SCREEN_BRIGHTNESS_CHANGED: i32 = 1 << 11;
1685
1686 pub const ROTATION_ANIMATION_CHANGED: i32 = 1 << 12;
1687
1688 pub const BUTTON_BRIGHTNESS_CHANGED: i32 = 1 << 13;
1689
1690 pub const SYSTEM_UI_VISIBILITY_CHANGED: i32 = 1 << 14;
1691
1692 pub const SYSTEM_UI_LISTENER_CHANGED: i32 = 1 << 15;
1693
1694 pub const INPUT_FEATURES_CHANGED: i32 = 1 << 16;
1695
1696 pub const PRIVATE_FLAGS_CHANGED: i32 = 1 << 17;
1697
1698 pub const USER_ACTIVITY_TIMEOUT_CHANGED: i32 = 1 << 18;
1699
1700 pub const TRANSLUCENT_FLAGS_CHANGED: i32 = 1 << 19;
1701
1702 pub const SURFACE_INSETS_CHANGED: i32 = 1 << 20;
1703
1704 pub const PREFERRED_REFRESH_RATE_CHANGED: i32 = 1 << 21;
1705
1706 pub const DISPLAY_FLAGS_CHANGED: i32 = 1 << 22;
1707
1708 pub const PREFERRED_DISPLAY_MODE_ID: i32 = 1 << 23;
1709
1710 pub const ACCESSIBILITY_ANCHOR_CHANGED: i32 = 1 << 24;
1711
1712 pub const ACCESSIBILITY_TITLE_CHANGED: i32 = 1 << 25;
1713
1714 pub const COLOR_MODE_CHANGED: i32 = 1 << 26;
1715
1716 pub const INSET_FLAGS_CHANGED: i32 = 1 << 27;
1717
1718 pub const MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED: i32 = 1 << 28;
1719
1720 pub const BLUR_BEHIND_RADIUS_CHANGED: i32 = 1 << 29;
1721
1722 pub const PREFERRED_MIN_DISPLAY_REFRESH_RATE: i32 = 1 << 30;
1723
1724 pub const PREFERRED_MAX_DISPLAY_REFRESH_RATE: i32 = 1 << 31;
1725
1726 /// 此窗口的 X 位置。使用默认重力时,它会被忽略。使用 Gravity.LEFT 或 Gravity.START 或 Gravity.RIGHT 或 Gravity.END 时,它会提供与给定边缘的偏移量。
1727 #[java_field]
1728 pub fn get_x(&self) -> i32 {}
1729
1730 /// 此窗口的 X 位置。使用默认重力时,它会被忽略。使用 Gravity.LEFT 或 Gravity.START 或 Gravity.RIGHT 或 Gravity.END 时,它会提供与给定边缘的偏移量。
1731 #[java_field]
1732 pub fn set_x(&self, value: i32) {}
1733
1734 /// 此窗口的 Y 位置。使用默认重力时,它会被忽略。使用 Gravity.TOP 或 Gravity.BOTTOM 时,它会提供与给定边缘的偏移量。
1735 #[java_field]
1736 pub fn get_y(&self) -> i32 {}
1737
1738 /// 此窗口的 Y 位置。使用默认重力时,它会被忽略。使用 Gravity.TOP 或 Gravity.BOTTOM 时,它会提供与给定边缘的偏移量。
1739 #[java_field]
1740 pub fn set_y(&self, value: i32) {}
1741
1742 /// 指示将为与这些 LayoutParams 关联的视图水平分配多少额外空间。如果视图不应拉伸,请指定 0。否则,额外的像素将在权重大于 0 的所有视图之间按比例分配。
1743 #[java_field]
1744 pub fn get_horizontal_weight(&self) -> f32 {}
1745
1746 /// 指示将为与这些 LayoutParams 关联的视图水平分配多少额外空间。如果视图不应拉伸,请指定 0。否则,额外的像素将在权重大于 0 的所有视图之间按比例分配。
1747 #[java_field]
1748 pub fn set_horizontal_weight(&self, value: f32) {}
1749
1750 /// 指示将为与这些 LayoutParams 关联的视图垂直分配多少额外空间。如果视图不应拉伸,请指定 0。否则,额外的像素将在权重大于 0 的所有视图之间按比例分配。
1751 #[java_field]
1752 pub fn get_vertical_weight(&self) -> f32 {}
1753
1754 /// 指示将为与这些 LayoutParams 关联的视图垂直分配多少额外空间。如果视图不应拉伸,请指定 0。否则,额外的像素将在权重大于 0 的所有视图之间按比例分配。
1755 #[java_field]
1756 pub fn set_vertical_weight(&self, value: f32) {}
1757
1758 /// 窗口的一般类型。窗口类型主要有三类:
1759 /// 应用程序窗口(范围从 FIRST_APPLICATION_WINDOW 到 LAST_APPLICATION_WINDOW)是普通的顶层应用程序窗口。对于这些类型的窗口,必须将令牌设置为它们所属活动的令牌(如果令牌为空,通常会为您完成此操作)。
1760 /// 子窗口(范围从 FIRST_SUB_WINDOW 到 LAST_SUB_WINDOW)与另一个顶层窗口相关联。对于这些类型的窗口,令牌必须是它所附加到的窗口的令牌。
1761 /// 系统窗口(范围从 FIRST_SYSTEM_WINDOW 到 LAST_SYSTEM_WINDOW)是供系统用于特定目的的特殊类型的窗口。它们通常不应由应用程序使用,并且使用它们需要特殊权限。
1762 #[java_field]
1763 pub fn get_type(&self) -> i32 {}
1764
1765 /// 窗口的一般类型。窗口类型主要有三类:
1766 /// 应用程序窗口(范围从 FIRST_APPLICATION_WINDOW 到 LAST_APPLICATION_WINDOW)是普通的顶层应用程序窗口。对于这些类型的窗口,必须将令牌设置为它们所属活动的令牌(如果令牌为空,通常会为您完成此操作)。
1767 /// 子窗口(范围从 FIRST_SUB_WINDOW 到 LAST_SUB_WINDOW)与另一个顶层窗口相关联。对于这些类型的窗口,令牌必须是它所附加到的窗口的令牌。
1768 /// 系统窗口(范围从 FIRST_SYSTEM_WINDOW 到 LAST_SYSTEM_WINDOW)是供系统用于特定目的的特殊类型的窗口。它们通常不应由应用程序使用,并且使用它们需要特殊权限。
1769 #[java_field]
1770 pub fn set_type(&self, value: i32) {}
1771
1772 /**
1773 如果窗口类型是警报窗口,则返回 true。
1774 `type` 窗口类型。如果窗口类型是警报窗口,则返回 true。
1775 */
1776 #[java_method]
1777 pub fn is_system_alert_window_type(r#type: i32) {}
1778
1779 #[deprecated(note = "这被忽略了")]
1780 #[java_field]
1781 pub fn get_memory_type(&self) -> i32 {}
1782
1783 #[deprecated(note = "这被忽略了")]
1784 #[java_field]
1785 pub fn set_memory_type(&self, value: i32) {}
1786
1787 /// 各种行为选项/标志。默认为无。
1788 #[java_field]
1789 pub fn get_flags(&self) -> u32 {}
1790
1791 /// 各种行为选项/标志。默认为无。
1792 #[java_field]
1793 pub fn set_flags(&self, value: u32) {}
1794
1795 /// 控制平台私有的标志。
1796 #[java_field]
1797 pub fn get_private_flags(&self) -> i32 {}
1798
1799 /// 控制平台私有的标志。
1800 #[java_field]
1801 pub fn set_private_flags(&self, value: i32) {}
1802
1803 /**
1804 给定一组特定的窗口管理器标志,确定此类窗口在获得焦点时是否可以成为输入法的目标。具体来说,这会检查 FLAG_NOT_FOCUSABLE 和 FLAG_ALT_FOCUSABLE_IM 标志,如果两者的组合对应于可以使用输入法的窗口,则返回 true。
1805 返回:如果具有给定标志的窗口能够使用输入法,则返回 true,否则返回 false。
1806 `flags` 当前窗口管理器标志。
1807 */
1808 #[java_method]
1809 pub fn may_use_input_method(flags: i32) -> bool {}
1810
1811 /// 任何软输入区域所需的操作模式。可以是以下任意组合:
1812 /// 可见性状态之一 SOFT_INPUT_STATE_UNSPECIFIED、SOFT_INPUT_STATE_UNCHANGED、SOFT_INPUT_STATE_HIDDEN、SOFT_INPUT_STATE_ALWAYS_HIDDEN、SOFT_INPUT_STATE_VISIBLE 或 SOFT_INPUT_STATE_ALWAYS_VISIBLE。
1813 /// 调整选项之一 SOFT_INPUT_ADJUST_UNSPECIFIED、SOFT_INPUT_ADJUST_RESIZE、SOFT_INPUT_ADJUST_PAN 或 SOFT_INPUT_ADJUST_NOTHING。
1814 /// 此标志可以在您的主题中通过 android.R.attr.windowSoftInputMode 属性进行控制。
1815 #[java_field]
1816 pub fn get_soft_input_mode(&self) -> i32 {}
1817
1818 /// 任何软输入区域所需的操作模式。可以是以下任意组合:
1819 /// 可见性状态之一 SOFT_INPUT_STATE_UNSPECIFIED、SOFT_INPUT_STATE_UNCHANGED、SOFT_INPUT_STATE_HIDDEN、SOFT_INPUT_STATE_ALWAYS_HIDDEN、SOFT_INPUT_STATE_VISIBLE 或 SOFT_INPUT_STATE_ALWAYS_VISIBLE。
1820 /// 调整选项之一 SOFT_INPUT_ADJUST_UNSPECIFIED、SOFT_INPUT_ADJUST_RESIZE、SOFT_INPUT_ADJUST_PAN 或 SOFT_INPUT_ADJUST_NOTHING。
1821 /// 此标志可以在您的主题中通过 android.R.attr.windowSoftInputMode 属性进行控制。
1822 #[java_field]
1823 pub fn set_soft_input_mode(&self, value: i32) {}
1824
1825 /// 根据 Gravity 在屏幕内放置窗口。Gravity.apply 和 Gravity.applyDisplay 都在窗口布局期间使用,此值指定为所需重力。例如,您可以在此处指定 Gravity.DISPLAY_CLIP_HORIZONTAL 和 Gravity.DISPLAY_CLIP_VERTICAL 来控制 Gravity.applyDisplay 的行为。
1826 #[java_field]
1827 pub fn get_gravity(&self) -> i32 {}
1828
1829 /// 根据 Gravity 在屏幕内放置窗口。Gravity.apply 和 Gravity.applyDisplay 都在窗口布局期间使用,此值指定为所需重力。例如,您可以在此处指定 Gravity.DISPLAY_CLIP_HORIZONTAL 和 Gravity.DISPLAY_CLIP_VERTICAL 来控制 Gravity.applyDisplay 的行为。
1830 #[java_field]
1831 pub fn set_gravity(&self, value: i32) {}
1832
1833 /// 容器和小部件之间的水平边距,以容器宽度的百分比表示。请参阅 Gravity.apply 以了解如何使用。此字段与 x 一起添加以提供 xAdj 参数。
1834 #[java_field]
1835 pub fn get_horizontal_margin(&self) -> f32 {}
1836
1837 /// 容器和小部件之间的水平边距,以容器宽度的百分比表示。请参阅 Gravity.apply 以了解如何使用。此字段与 x 一起添加以提供 xAdj 参数。
1838 #[java_field]
1839 pub fn set_horizontal_margin(&self, value: f32) {}
1840
1841 /// 容器和小部件之间的垂直边距,以容器高度的百分比表示。请参阅 Gravity.apply 以了解如何使用。此字段与 y 一起添加以提供 yAdj 参数。
1842 #[java_field]
1843 pub fn get_vertical_margin(&self) -> f32 {}
1844
1845 /// 容器和小部件之间的垂直边距,以容器高度的百分比表示。请参阅 Gravity.apply 以了解如何使用。此字段与 y 一起添加以提供 yAdj 参数。
1846 #[java_field]
1847 pub fn set_vertical_margin(&self, value: f32) {}
1848
1849 /// 是否已手动设置表面插入图。设置为 false 时,视图根将自动确定适当的表面插入图。
1850 #[java_field]
1851 pub fn get_has_manual_surface_insets(&self) -> bool {}
1852
1853 /// 是否已手动设置表面插入图。设置为 false 时,视图根将自动确定适当的表面插入图。
1854 #[java_field]
1855 pub fn set_has_manual_surface_insets(&self, value: bool) {}
1856
1857 /// 向窗口报告插入内容时是否应使用全局插入内容状态。设置为 true 时,所有插入内容都将报告给窗口,而不管 z 顺序如何。否则,仅报告给定窗口上方的插入内容。
1858 #[java_field]
1859 pub fn get_receive_insets_ignoring_z_order(&self) -> bool {}
1860
1861 /// 向窗口报告插入内容时是否应使用全局插入内容状态。设置为 true 时,所有插入内容都将报告给窗口,而不管 z 顺序如何。否则,仅报告给定窗口上方的插入内容。
1862 #[java_field]
1863 pub fn set_receive_insets_ignoring_z_order(&self, value: bool) {}
1864
1865 /// 是否应使用先前的表面插入图,而不是当前设置的表面插入图。设置为 true 时,视图根将忽略此对象中的表面插入图并使用其当前拥有的表面插入图。
1866 #[java_field]
1867 pub fn get_preserve_previous_surface_insets(&self) -> bool {}
1868
1869 /// 是否应使用先前的表面插入图,而不是当前设置的表面插入图。设置为 true 时,视图根将忽略此对象中的表面插入图并使用其当前拥有的表面插入图。
1870 #[java_field]
1871 pub fn set_preserve_previous_surface_insets(&self, value: bool) {}
1872
1873 /// 所需的位图格式。可能是 PixelFormat 中的常量之一。格式的选择可能会被 setColorMode(int) 覆盖。默认为 OPAQUE。
1874 #[java_field]
1875 pub fn get_format(&self) -> i32 {}
1876
1877 /// 所需的位图格式。可能是 PixelFormat 中的常量之一。格式的选择可能会被 setColorMode(int) 覆盖。默认为 OPAQUE。
1878 #[java_field]
1879 pub fn set_format(&self, value: i32) {}
1880
1881 /// 定义此窗口要使用的动画的样式资源。这必须是系统资源;它不能是应用程序资源,因为窗口管理器无权访问应用程序。
1882 #[java_field]
1883 pub fn get_window_animations(&self) -> i32 {}
1884
1885 /// 定义此窗口要使用的动画的样式资源。这必须是系统资源;它不能是应用程序资源,因为窗口管理器无权访问应用程序。
1886 #[java_field]
1887 pub fn set_window_animations(&self, value: i32) {}
1888
1889 /// 应用于整个窗口的 alpha 值。alpha 值为 1.0 表示完全不透明,alpha 值为 0.0 表示完全透明
1890 #[java_field]
1891 pub fn get_alpha(&self) -> f32 {}
1892
1893 /// 应用于整个窗口的 alpha 值。alpha 值为 1.0 表示完全不透明,alpha 值为 0.0 表示完全透明
1894 #[java_field]
1895 pub fn set_alpha(&self, value: f32) {}
1896
1897 /// 当设置 FLAG_DIM_BEHIND 时,这是要应用的调光量。范围从 1.0(完全不透明)到 0.0(无调光)。
1898 #[java_field]
1899 pub fn get_dim_amount(&self) -> f32 {}
1900
1901 /// 当设置 FLAG_DIM_BEHIND 时,这是要应用的调光量。范围从 1.0(完全不透明)到 0.0(无调光)。
1902 #[java_field]
1903 pub fn set_dim_amount(&self, value: f32) {}
1904
1905 /// 这可用于覆盖用户偏好的屏幕亮度。小于 0 的值(默认值)表示使用偏好的屏幕亮度。0 到 1 可将亮度从暗调整到全亮。
1906 #[java_field]
1907 pub fn get_screen_brightness(&self) -> f32 {}
1908
1909 /// 这可用于覆盖用户偏好的屏幕亮度。小于 0 的值(默认值)表示使用偏好的屏幕亮度。0 到 1 可将亮度从暗调整到全亮。
1910 #[java_field]
1911 pub fn set_screen_brightness(&self, value: f32) {}
1912
1913 /// 这可用于覆盖按钮和键盘背光的标准行为。小于 0 的值(默认值)表示使用标准背光行为。0 到 1 可将亮度从暗调整到全亮。
1914 #[java_field]
1915 pub fn get_button_brightness(&self) -> f32 {}
1916
1917 /// 这可用于覆盖按钮和键盘背光的标准行为。小于 0 的值(默认值)表示使用标准背光行为。0 到 1 可将亮度从暗调整到全亮。
1918 #[java_field]
1919 pub fn set_button_brightness(&self, value: f32) {}
1920
1921 /// 定义设备旋转时此窗口使用的退出和进入动画。这仅在进入和离开的最顶层不透明窗口设置了 #FLAG_FULLSCREEN 位且未被 其他窗口覆盖 时才会产生影响。所有其他情况都默认为 ROTATION_ANIMATION_ROTATE 行为。
1922 #[java_field]
1923 pub fn get_rotation_animation(&self) -> i32 {}
1924
1925 /// 定义设备旋转时此窗口使用的退出和进入动画。这仅在进入和离开的最顶层不透明窗口设置了 #FLAG_FULLSCREEN 位且未被 其他窗口覆盖 时才会产生影响。所有其他情况都默认为 ROTATION_ANIMATION_ROTATE 行为。
1926 #[java_field]
1927 pub fn set_rotation_animation(&self, value: i32) {}
1928
1929 /// 拥有此窗口的包的名称。
1930 #[java_field]
1931 pub fn get_package_name(&self) -> Option<String> {}
1932
1933 /// 拥有此窗口的包的名称。
1934 #[java_field]
1935 pub fn set_package_name(&self, value: Option<String>) {}
1936
1937 /// 窗口的特定方向值。可以是 ActivityInfo.screenOrientation 允许的任何相同值。如果未设置,将使用默认值 ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED。
1938 #[java_field]
1939 pub fn get_screen_orientation(&self) -> i32 {}
1940
1941 /// 窗口的特定方向值。可以是 ActivityInfo.screenOrientation 允许的任何相同值。如果未设置,将使用默认值 ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED。
1942 #[java_field]
1943 pub fn set_screen_orientation(&self, value: i32) {}
1944
1945 /// 窗口的首选刷新率。在 API 34 之前,这必须是窗口所在显示器支持的刷新率之一。所选的刷新率将应用于显示器的默认模式。从 API 34 开始,此值不限于从窗口的显示器获得的支持的刷新率:它可以是窗口打算运行的任何刷新率。任何刷新率都可以作为首选窗口刷新率提供。
1946 /// 操作系统将选择与 preferredRefreshRate 最匹配的刷新率。设置此值相当于使用 (preferred_frame_rate, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT, Surface.CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS) 调用 Surface.setFrameRate。对于想要指定刷新率但不想为任何其他 displayMode 属性(例如分辨率)指定首选项的应用程序,应使用 preferredDisplayModeId。如果设置了 preferredDisplayModeId,则忽略此值。
1947 #[java_field]
1948 pub fn get_preferred_refresh_rate(&self) -> f32 {}
1949
1950 /// 窗口的首选刷新率。在 API 34 之前,这必须是窗口所在显示器支持的刷新率之一。所选的刷新率将应用于显示器的默认模式。从 API 34 开始,此值不限于从窗口的显示器获得的支持的刷新率:它可以是窗口打算运行的任何刷新率。任何刷新率都可以作为首选窗口刷新率提供。
1951 /// 操作系统将选择与 preferredRefreshRate 最匹配的刷新率。设置此值相当于使用 (preferred_frame_rate, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT, Surface.CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS) 调用 Surface.setFrameRate。对于想要指定刷新率但不想为任何其他 displayMode 属性(例如分辨率)指定首选项的应用程序,应使用 preferredDisplayModeId。如果设置了 preferredDisplayModeId,则忽略此值。
1952 #[java_field]
1953 pub fn set_preferred_refresh_rate(&self, value: f32) {}
1954
1955 /// 窗口首选显示模式的 ID。这必须是窗口所在显示器支持的模式之一。值为 0 表示无偏好。
1956 #[java_field]
1957 pub fn get_preferred_display_mode_id(&self) -> i32 {}
1958
1959 /// 窗口首选显示模式的 ID。这必须是窗口所在显示器支持的模式之一。值为 0 表示无偏好。
1960 #[java_field]
1961 pub fn set_preferred_display_mode_id(&self, value: i32) {}
1962
1963 /// 窗口处于焦点状态时的最小显示刷新率。如果设置了 preferredDisplayModeId,则此值会被忽略。
1964 #[java_field]
1965 pub fn get_preferred_min_display_refresh_rate(&self) -> f32 {}
1966
1967 /// 窗口处于焦点状态时的最小显示刷新率。如果设置了 preferredDisplayModeId,则此值会被忽略。
1968 #[java_field]
1969 pub fn set_preferred_min_display_refresh_rate(&self, value: f32) {}
1970
1971 /// 窗口处于焦点状态时的最大显示刷新率。如果设置了 preferredDisplayModeId,则此值会被忽略。
1972 #[java_field]
1973 pub fn get_preferred_max_display_refresh_rate(&self) -> f32 {}
1974
1975 /// 窗口处于焦点状态时的最大显示刷新率。如果设置了 preferredDisplayModeId,则此值会被忽略。
1976 #[java_field]
1977 pub fn set_preferred_max_display_refresh_rate(&self, value: f32) {}
1978
1979 /// 控制状态栏的可见性。
1980 #[deprecated(note = "SystemUiVisibility 标志已弃用。请改用 WindowInsetsController。")]
1981 #[java_field]
1982 pub fn get_system_ui_visibility(&self) -> i32 {}
1983
1984 /// 控制状态栏的可见性。
1985 #[deprecated(note = "SystemUiVisibility 标志已弃用。请改用 WindowInsetsController。")]
1986 #[java_field]
1987 pub fn set_system_ui_visibility(&self, value: i32) {}
1988
1989 /// 此层次结构中的视图所要求的 UI 可见性。组合值应为 systemUiVisibility | subtreeSystemUiVisibility。
1990 #[java_field]
1991 pub fn get_subtree_system_ui_visibility(&self) -> i32 {}
1992
1993 /// 此层次结构中的视图所要求的 UI 可见性。组合值应为 systemUiVisibility | subtreeSystemUiVisibility。
1994 #[java_field]
1995 pub fn set_subtree_system_ui_visibility(&self, value: i32) {}
1996
1997 /// 获取有关系统 UI 可见性变化的回调。TODO:也许应该有一个我们需要的可选回调的位域。
1998 #[java_field]
1999 pub fn get_has_system_ui_listeners(&self) -> bool {}
2000
2001 /// 获取有关系统 UI 可见性变化的回调。TODO:也许应该有一个我们需要的可选回调的位域。
2002 #[java_field]
2003 pub fn set_has_system_ui_listeners(&self, value: bool) {}
2004
2005 /// 如果有 DisplayCutout,则控制窗口的布局方式。默认为 LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT。
2006 #[java_field]
2007 pub fn get_layout_in_display_cutout_mode(&self) -> i32 {}
2008
2009 /// 如果有 DisplayCutout,则控制窗口的布局方式。默认为 LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT。
2010 #[java_field]
2011 pub fn set_layout_in_display_cutout_mode(&self, value: i32) {}
2012
2013 /// 控制向应用进程公开的输入子系统的一组功能。警告:请勿使用 android.os.InputConfig 标志!必须将其设置为 WindowManager.LayoutParams.InputFeatureFlags 中包含的标志值。
2014 #[java_field]
2015 pub fn get_input_features(&self) -> i32 {}
2016
2017 /// 控制向应用进程公开的输入子系统的一组功能。警告:请勿使用 android.os.InputConfig 标志!必须将其设置为 WindowManager.LayoutParams.InputFeatureFlags 中包含的标志值。
2018 #[java_field]
2019 pub fn set_input_features(&self, value: i32) {}
2020
2021 /// 设置此窗口获得焦点时用户活动超时发生前的毫秒数。值为 -1 时使用标准超时。值为 0 时使用最小支持显示超时。此属性只能用于减少用户指定的显示超时;它永远不会使超时时间比正常时间长。仅应由键盘锁和手机应用使用。
2022 #[java_field]
2023 pub fn get_user_activity_timeout(&self) -> i64 {}
2024
2025 /// 设置此窗口获得焦点时用户活动超时发生前的毫秒数。值为 -1 时使用标准超时。值为 0 时使用最小支持显示超时。此属性只能用于减少用户指定的显示超时;它永远不会使超时时间比正常时间长。仅应由键盘锁和手机应用使用。
2026 #[java_field]
2027 pub fn set_user_activity_timeout(&self, value: i64) {}
2028
2029 /// 对于具有锚点的窗口(例如 PopupWindow),跟踪锚定窗口的视图。
2030 #[java_field]
2031 pub fn get_accessibility_id_of_anchor(&self) -> i64 {}
2032
2033 /// 对于具有锚点的窗口(例如 PopupWindow),跟踪锚定窗口的视图。
2034 #[java_field]
2035 pub fn set_accessibility_id_of_anchor(&self, value: i64) {}
2036
2037 /// 窗口标题与标题栏中显示的内容不同步,因此我们单独跟踪当前显示的标题以提供可访问性。
2038 #[java_field]
2039 pub fn get_accessibility_title<CS: CharSequence>(&self) -> CS {}
2040
2041 /// 窗口标题与标题栏中显示的内容不同步,因此我们单独跟踪当前显示的标题以提供可访问性。
2042 #[java_field]
2043 pub fn set_accessibility_title<CS: CharSequence>(&self, value: &CS) {}
2044
2045 /// 设置窗口管理器隐藏窗口的超时时间(以毫秒为单位)。对于诸如提示消息之类的瞬时通知很有用,这样我们就不必依赖客户端的配合来确保窗口被隐藏。必须在创建窗口时指定。请注意,应用程序无法处理未经其明确请求而被移除的窗口,并且可能会尝试与已移除的窗口进行交互,从而导致未定义的行为和崩溃。因此,我们确实会隐藏此类窗口,以防止它们覆盖其他应用程序。
2046 #[java_field]
2047 pub fn get_hide_timeout_milliseconds(&self) -> i64 {}
2048
2049 /// 设置窗口管理器隐藏窗口的超时时间(以毫秒为单位)。对于诸如提示消息之类的瞬时通知很有用,这样我们就不必依赖客户端的配合来确保窗口被隐藏。必须在创建窗口时指定。请注意,应用程序无法处理未经其明确请求而被移除的窗口,并且可能会尝试与已移除的窗口进行交互,从而导致未定义的行为和崩溃。因此,我们确实会隐藏此类窗口,以防止它们覆盖其他应用程序。
2050 #[java_field]
2051 pub fn set_hide_timeout_milliseconds(&self, value: i64) {}
2052
2053 /// 指示此窗口是否希望连接的显示器对生成的图像或视频帧进行最少的后期处理。仅当窗口在屏幕上可见时才会请求此设置。当低延迟比图像增强处理具有更高的优先级时,应使用此设置(例如,对于游戏或视频会议)。如果显示器接收器通过 HDMI 连接,则设备将开始发送启用了自动低延迟模式和游戏内容类型的信息帧。这会将连接的显示器切换到最小图像处理模式(如果可用),从而减少延迟,改善游戏或视频会议应用程序的用户体验。有关更多信息,请参阅 HDMI 2.1 规范。
2054 /// 如果显示器接收器具有内部连接或使用 HDMI 以外的其他协议,效果可能类似,但由实现定义。切换到具有最少后期处理的模式的功能可以通过系统设置菜单中的用户设置禁用。在这种情况下,此字段将被忽略,显示器将保持其当前模式。
2055 #[java_field]
2056 pub fn get_prefer_minimal_post_processing(&self) -> bool {}
2057
2058 /// 指示此窗口是否希望连接的显示器对生成的图像或视频帧进行最少的后期处理。仅当窗口在屏幕上可见时才会请求此设置。当低延迟比图像增强处理具有更高的优先级时,应使用此设置(例如,对于游戏或视频会议)。如果显示器接收器通过 HDMI 连接,则设备将开始发送启用了自动低延迟模式和游戏内容类型的信息帧。这会将连接的显示器切换到最小图像处理模式(如果可用),从而减少延迟,改善游戏或视频会议应用程序的用户体验。有关更多信息,请参阅 HDMI 2.1 规范。
2059 /// 如果显示器接收器具有内部连接或使用 HDMI 以外的其他协议,效果可能类似,但由实现定义。切换到具有最少后期处理的模式的功能可以通过系统设置菜单中的用户设置禁用。在这种情况下,此字段将被忽略,显示器将保持其当前模式。
2060 #[java_field]
2061 pub fn set_prefer_minimal_post_processing(&self, value: bool) {}
2062
2063 /// 如果指定,则用于计算相对圆角的框架将是此窗口的框架减去此窗口提供的插入部分。任务栏将在其上方绘制假圆角,因此我们需要此插入部分来计算此窗口的正确圆角。
2064 #[java_field]
2065 pub fn get_insets_rounded_corner_frame(&self) -> bool {}
2066
2067 /// 如果指定,则用于计算相对圆角的框架将是此窗口的框架减去此窗口提供的插入部分。任务栏将在其上方绘制假圆角,因此我们需要此插入部分来计算此窗口的正确圆角。
2068 #[java_field]
2069 pub fn set_insets_rounded_corner_frame(&self, value: bool) {}
2070
2071 /**
2072 指定此窗口在布局期间应避免重叠的插入类型。
2073 `types` 哪些 WindowInsets。此窗口应避免的插入类型。此对象的初始值包括所有系统栏。
2074 */
2075 #[java_method]
2076 pub fn set_fit_insets_types(&self, types: i32) {}
2077
2078 /**
2079 指定此窗口在布局期间应避免重叠的边。
2080 `sides` 此窗口应避免与指定类型的边重叠。此对象的初始值包括所有边。
2081 */
2082 #[java_method]
2083 pub fn set_fit_insets_sides(&self, sides: i32) {}
2084
2085 /**
2086 指定此窗口是否应适合窗口插入,无论它们是否可见。
2087 `ignore` 如果为 true,此窗口将适合给定的类型,即使它们不可见。
2088 */
2089 #[java_method]
2090 pub fn set_fit_insets_ignoring_visibility(&self, ignore: bool) {}
2091
2092 /**
2093 指定应将窗口视为受信任的系统覆盖层。考虑窗口在输入调度期间是否被遮挡时,将忽略受信任的系统覆盖层。需要 android.Manifest.permission.INTERNAL_SYSTEM_WINDOW 权限。
2094 @see android.view.MotionEvent#FLAG_WINDOW_IS_OBSCURED
2095 @see android.view.MotionEvent#FLAG_WINDOW_IS_PARTIALLY_OBSCURED
2096 */
2097 #[java_method]
2098 pub fn set_trusted_overlay(&self) {}
2099
2100 /**
2101 当在 TYPE_APPLICATION_OVERLAY 窗口上设置时,它们保持可见,即使为另一个可见窗口设置了 SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS。
2102 `is_system_application_overlay` 系统应用覆盖。
2103 */
2104 #[java_method]
2105 pub fn set_system_application_overlay(&self, is_system_application_overlay: bool) {}
2106
2107 /// 如果此窗口被标记为系统应用程序覆盖,则返回。
2108 #[java_method]
2109 pub fn is_system_application_overlay(&self) -> bool {}
2110
2111 /**
2112 设置是否应向系统壁纸发送触摸事件(可以由第三方应用程序提供),以启用背景中显示壁纸的窗口。默认情况下,这将设置为true。检查flag_show_wallpaper以获取有关显示窗口后面系统壁纸的更多信息。
2113 `enable` 是否可以向系统壁纸发送触摸事件。
2114 */
2115 #[java_method]
2116 pub fn set_wallpaper_touch_events_enabled(&self, enable: bool) {}
2117
2118 /**
2119 返回是否允许在后台显示壁纸的窗口向系统壁纸(可由第三方应用提供)发送触摸事件。检查 FLAG_SHOW_WALLPAPER 以获取有关在窗口后面显示系统壁纸的更多信息。
2120 返回:是否允许向系统壁纸发送触摸事件。
2121 */
2122 #[java_method]
2123 pub fn are_wallpaper_touch_events_enabled(&self) -> bool {}
2124
2125 /**
2126 设置是否可以为该窗口的位置变化播放动画。
2127 `enable` 如果禁用,窗口将立即移动到其新位置而不播放动画。
2128 */
2129 #[java_method]
2130 pub fn set_can_play_move_animation(&self, enable: bool) {}
2131
2132 /// 是否允许在此窗口上的位置改变期间播放动画。这并不能保证在所有此类情况下都会播放动画。例如,拖动调整大小可能会移动窗口但不播放动画。
2133 #[java_method]
2134 pub fn can_play_move_animation(&self) -> bool {}
2135
2136 /// WindowInsets。此窗口避免重叠的类型。
2137 #[java_method]
2138 pub fn get_fit_insets_types(&self) -> i32 {}
2139
2140 /// 此窗口避免重叠的侧面。
2141 #[java_method]
2142 pub fn get_fit_insets_sides(&self) -> i32 {}
2143
2144 /// 如果此窗口适合窗口插图,则无论它们是否可见,都为 true。
2145 #[java_method]
2146 pub fn is_fit_insets_ignoring_visibility(&self) -> bool {}
2147
2148 #[java_method]
2149 pub fn for_rotation(&self, rotation: i32) -> Self {}
2150
2151 #[java_constructor]
2152 pub fn new() -> Self {}
2153
2154 #[java_method]
2155 pub fn set_title<CS: CharSequence>(&self, title: Option<CS>) {}
2156
2157 #[java_method]
2158 pub fn get_title<CS: CharSequence>(&self) -> Option<CS> {}
2159
2160 /**
2161 根据输入视图的高度(视觉 z 位置)设置表面插图。
2162 */
2163 #[java_method]
2164 pub fn set_surface_insets(&self, view: &View, manual: bool, preserve_previous: bool) {}
2165
2166 /// 返回窗口是否启用了 HDR 转换
2167 #[java_method]
2168 pub fn is_hdr_conversion_enabled(&self) -> bool {}
2169
2170 /// 启用/禁用窗口的 HDR 转换。默认情况下,窗口的 HDR 转换已启用。
2171 #[java_method]
2172 pub fn set_hdr_conversion_enabled(&self, enabled: bool) {}
2173
2174 /**
2175 设置窗口的颜色模式。设置颜色模式可能会覆盖窗口的像素格式。
2176 `color_mode` 颜色模式必须是 ActivityInfo.COLOR_MODE_DEFAULT、ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT 或 ActivityInfo.COLOR_MODE_HDR 之一。
2177 */
2178 #[java_method]
2179 pub fn set_color_mode(&self, color_mode: i32) {}
2180
2181 /// 返回窗口的颜色模式,可以是 ActivityInfo.COLOR_MODE_DEFAULT、ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT 或 ActivityInfo.COLOR_MODE_HDR 之一。
2182 #[java_method]
2183 pub fn get_color_mode(&self) -> i32 {}
2184
2185 /**
2186 使窗口后面的屏幕模糊。效果类似于 dimAmount,但不是变暗,而是使窗口后面的内容模糊(或与暗淡量相结合,如果指定了)。模糊的密度由模糊半径设置。半径定义相邻区域的大小,从中对像素进行平均以形成每个像素的最终颜色。该操作近似于高斯模糊。半径为 0 表示无模糊。半径越大,模糊越密集。
2187 请注意与 Window.setBackgroundBlurRadius 的区别,它仅在窗口范围内模糊。后面模糊会使窗口后面的整个屏幕模糊。需要设置 FLAG_BLUR_BEHIND。由于 GPU 限制,某些设备可能不支持跨窗口模糊。它也可以在运行时禁用,例如在省电模式下、使用多媒体隧道时或请求最少的后期处理时。在这种情况下,不会计算或绘制任何模糊,导致窗口与其后面的内容之间没有深度分离。为了避免这种情况,应用程序可能需要在其窗口上使用更多的 dimAmount。
2188 要监听跨窗口模糊启用/禁用事件,请使用 addCrossWindowBlurEnabledListener。
2189 `blur_behind_radius` 用于模糊后方的模糊半径(以像素为单位)
2190 */
2191 #[java_method]
2192 pub fn set_blur_behind_radius(&self, blur_behind_radius: i32) {}
2193
2194 /// 返回窗口半径后面的模糊程度。
2195 #[java_method]
2196 pub fn get_blur_behind_radius(&self) -> i32 {}
2197
2198 #[java_method]
2199 pub fn describe_contents(&self) -> i32 {}
2200
2201 #[java_method]
2202 pub fn copy_from(&self, o: &Self) -> i32 {}
2203
2204 /**
2205 缩放布局参数的坐标和大小。
2206 `scale` 缩放系数。
2207 */
2208 #[java_method]
2209 pub fn scale(&self, scale: f32) {}
2210
2211 /**
2212 如果布局参数将导致窗口覆盖整个屏幕,则为 True;否则为 false。
2213 */
2214 #[java_method]
2215 pub fn is_fullscreen(&self) -> bool {}
2216
2217 /// 如果窗口应自行处理所有指针事件(无论它们是否在窗口内),则为 True。如果窗口是模态窗口,其可触摸区域将扩展至其任务的大小。
2218 #[java_method]
2219 pub fn is_modal(&self) -> bool {}
2220}
2221
2222/**
2223提供有关逻辑显示器的大小和密度的信息。显示区域有两种不同的描述方式。应用程序显示区域指定可能包含应用程序窗口的显示器部分,不包括系统装饰。应用程序显示区域可能小于实际显示区域,因为系统减去了状态栏等装饰元素所需的空间。
2224使用 WindowMetrics.getBounds() 查询应用程序窗口边界。实际显示区域指定应用程序在当前系统状态下可访问的显示器部分。在某些情况下,实际显示区域可能小于显示器的物理尺寸。使用 WindowManager.getCurrentWindowMetrics() 确定活动窗口的当前大小。
2225与 UI 相关的工作(例如选择 UI 布局)应依赖于 WindowMetrics.getBounds()。有关详细信息,请参阅 getRealSize / getRealMetrics。逻辑显示器不一定代表特定的物理显示设备,例如内部显示器或外部显示器。
2226根据当前连接的设备以及是否启用镜像,逻辑显示器的内容可能会显示在一个或多个物理显示器上。
2227*/
2228#[java_class(name = "android/view/Display")]
2229pub struct Display;
2230
2231impl Display {
2232 /// 默认的 Display ID,假设有一个主显示器,则为主显示器的 ID。
2233 pub const DEFAULT_DISPLAY: i32 = 0;
2234
2235 /// 无效的显示 ID。
2236 pub const INVALID_DISPLAY: i32 = -1;
2237
2238 /// 分辨率宽度无效。
2239 pub const INVALID_DISPLAY_WIDTH: i32 = -1;
2240
2241 /// 分辨率高度无效。
2242 pub const INVALID_DISPLAY_HEIGHT: i32 = -1;
2243
2244 /// 刷新率无效。
2245 pub const INVALID_DISPLAY_REFRESH_RATE: f32 = 0.0;
2246
2247 /// 默认显示组 ID,假设有一个主显示器,则为主显示器的显示组 ID。
2248 pub const DEFAULT_DISPLAY_GROUP: i32 = 0;
2249
2250 /// 显示组 ID 无效。
2251 pub const INVALID_DISPLAY_GROUP: i32 = -1;
2252
2253 /// 显示标志:表示显示器支持合成存储在受保护图形缓冲区中的内容。如果设置了此标志,则显示设备支持合成受保护缓冲区。如果未设置此标志,则显示设备可能不支持合成受保护缓冲区;用户可能会在屏幕上看到空白区域而不是受保护的内容。安全 (DRM) 视频解码器可以分配受保护的图形缓冲区,以请求在视频解码器和外部显示接收器之间提供受硬件保护的路径。
2254 /// 如果没有可用的硬件保护路径,则可能无法合成存储在受保护图形缓冲区中的内容。应用程序可以使用此标志的缺失作为提示,表示它不应该为此显示使用受保护的缓冲区,因为内容可能不可见。例如,如果未设置标志,则应用程序可以选择不在此显示器上显示内容、显示信息性错误消息、选择备用内容流或采用不依赖受保护缓冲区的不同内容解码策略。
2255 pub const FLAG_SUPPORTS_PROTECTED_BUFFERS: i32 = 1 << 0;
2256
2257 /// 显示标志:表示显示器具有安全的视频输出并支持合成安全表面。如果设置了此标志,则显示设备具有安全的视频输出并能够显示安全表面。它也可能能够显示 FLAG_SUPPORTS_PROTECTED_BUFFERS 受保护的缓冲区。如果未设置此标志,则显示设备可能没有安全的视频输出;用户可能会在屏幕上看到空白区域,而不是安全表面或受保护缓冲区的内容。
2258 /// 安全表面用于防止应用程序渲染到这些表面的内容出现在屏幕截图中或在非安全显示器上查看。安全视频解码器使用受保护的缓冲区来实现类似目的。应用程序通过指定 WindowManager.LayoutParams#FLAG_SECURE 窗口标志来创建具有安全表面的窗口。同样,应用程序通过在将安全视图附加到其包含窗口之前调用 SurfaceView#setSecure 来创建具有安全表面的 SurfaceView。应用程序可以使用此标志的缺失来提示它不应在此显示器上创建安全表面或受保护的缓冲区,因为内容可能不可见。例如,如果未设置该标志,则应用程序可以选择不在此显示器上显示内容,显示信息性错误消息,选择备用内容流或采用不依赖安全表面或受保护缓冲区的其他策略来解码内容。
2259 pub const FLAG_SECURE: i32 = 1 << 1;
2260
2261 /// 显示标志:表示该显示是私有的。只有拥有该显示的应用和已经在该显示上的应用才能在该显示上创建窗口。
2262 pub const FLAG_PRIVATE: i32 = 1 << 2;
2263
2264 /// 显示标志:表示该显示器是演示显示器。此标志标识适合用作演示显示器的辅助显示器,例如外部或无线显示器。应用程序可以自动将其内容投影到演示显示器,以提供更丰富的第二屏幕体验。
2265 pub const FLAG_PRESENTATION: i32 = 1 << 3;
2266
2267 /// 显示标志:表示显示屏为圆形。此标志标识显示屏为圆形、椭圆形或其他形状,不允许用户看到显示屏的所有逻辑角落。
2268 pub const FLAG_ROUND: i32 = 1 << 4;
2269
2270 /// 显示标志:表示在显示非安全键盘保护时,显示器可以显示其内容。此标志标识如果无需输入凭据即可关闭键盘保护,则辅助显示器将继续显示内容。使用的一个示例是虚拟显示器,其内容显示在系统无法直接看到的外部硬件显示器上。
2271 /// TODO (b/114338689): 删除该标志并使用 IWindowManager#shouldShowWithInsecureKeyguard
2272 pub const FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD: i32 = 1 << 5;
2273
2274 /// 显示标志:表示显示应显示系统装饰。此标志标识应显示系统装饰的辅助显示,例如状态栏、导航栏、主页活动或 IME。请注意,如果没有 FLAG_TRUSTED,此标志不起作用
2275 /// TODO (b/114338689): 删除该标志并使用 IWindowManager#setShouldShowSystemDecors
2276 pub const FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS: i32 = 1 << 6;
2277
2278 /// 标志:信任该显示器可以显示系统装饰并接收输入,无需用户触摸。
2279 pub const FLAG_TRUSTED: i32 = 1 << 7;
2280
2281 /// 标志:表示显示器不应该成为默认 DisplayGroup 的一部分,而应该成为新 DisplayGroup 的一部分。
2282 pub const FLAG_OWN_DISPLAY_GROUP: i32 = 1 << 8;
2283
2284 /// 标志:表示显示屏应始终解锁。仅在未在默认显示组中的虚拟显示上有效。
2285 pub const FLAG_ALWAYS_UNLOCKED: i32 = 1 << 9;
2286
2287 /// 标志:表示当用户触摸屏幕时,显示器不应播放音效或执行触觉反馈。
2288 pub const FLAG_TOUCH_FEEDBACK_DISABLED: i32 = 1 << 10;
2289
2290 /**
2291 标志:表示显示器维持自己的焦点和触摸模式。
2292 此标志在行为上与 com.android.internal.R.bool.config_perDisplayFocusEnabled 类似,但仅适用于特定显示器,而不是系统范围的所有显示器。
2293 注意:必须信任显示器才能拥有自己的焦点。
2294 */
2295 pub const FLAG_OWN_FOCUS: i32 = 1 << 11;
2296
2297 /**
2298 标志:表示显示器不应通过从另一个显示器窃取顶部焦点而成为顶部焦点显示器。
2299 结果是只有目标输入事件(输入事件的 displayId 与显示器的 displayId 匹配)才能到达此显示器。如果系统仅由一个显示器组成,或者所有显示器都设置了此标志,则设置了此标志的显示器仍可成为顶部聚焦显示器。在这两种情况下,默认显示器都会成为顶部聚焦显示器。
2300 注意:如果显示器是顶部聚焦显示器,或者显示器管理自己的焦点(通过 FLAG_OWN_FOCUS)或所有显示器管理自己的焦点(通过 ` ` 标志),则显示器仅具有聚焦窗口。如果显示器没有聚焦窗口,则不会向其发送任何输入事件。因此,此标志仅与 FLAG_OWN_FOCUS 一起使用才有用,如果未设置,将被忽略。
2301 注意:框架仅支持顶部聚焦显示屏上的 IME(b/262520411)。因此,在显示屏上启用此标志会隐式禁用显示任何 IME。这不是预期的行为,但在实施 b/262520411 之前无法修复。如果您需要在显示屏上使用 IME,请不要设置此标志。
2302 */
2303 pub const FLAG_STEAL_TOP_FOCUS_DISABLED: i32 = 1 << 12;
2304
2305 /// 显示器标志:表示显示器为后置显示器。此标志标识背对用户的互补显示器。
2306 pub const FLAG_REAR: i32 = 1 << 13;
2307
2308 /// 显示标志:表示不应缩放显示内容以适应物理屏幕尺寸。仅用于开发以模拟具有较小物理屏幕的设备,同时保持密度。
2309 pub const FLAG_SCALING_DISABLED: i32 = 1 << 30;
2310
2311 /// 显示类型:未知的显示类型。
2312 pub const TYPE_UNKNOWN: i32 = 0;
2313
2314 /// 显示器类型:通过内部端口连接的物理显示器。
2315 pub const TYPE_INTERNAL: i32 = 1;
2316
2317 /// 显示器类型:通过外部端口连接的物理显示器。
2318 pub const TYPE_EXTERNAL: i32 = 2;
2319
2320 /// 显示类型:WiFi显示。
2321 pub const TYPE_WIFI: i32 = 3;
2322
2323 /// 显示类型:覆盖显示。
2324 pub const TYPE_OVERLAY: i32 = 4;
2325
2326 /// 显示类型:虚拟显示。
2327 pub const TYPE_VIRTUAL: i32 = 5;
2328
2329 /// 显示状态:显示状态未知。
2330 pub const STATE_UNKNOWN: i32 = 0;
2331
2332 /// 显示状态:显示屏关闭。
2333 pub const STATE_OFF: i32 = 1;
2334
2335 /// 显示状态:显示屏亮。
2336 pub const STATE_ON: i32 = 2;
2337
2338 /// 显示状态:显示器在低功耗状态下处于打瞌睡状态;它仍然处于开启状态,但针对在设备非交互时显示系统提供的内容进行了优化。
2339 pub const STATE_DOZE: i32 = 3;
2340
2341 /// 显示状态:显示器处于挂起低功耗状态,处于休眠状态;它仍处于开启状态,但 CPU 不会更新它。这可以用于以下两种情况之一:在设备处于非交互状态时显示系统提供的静态内容,或允许“Sidekick”计算资源更新显示。因此,CPU 不得在此模式下控制显示器。
2342 pub const STATE_DOZE_SUSPEND: i32 = 4;
2343
2344 /// 显示状态:显示屏已开启并针对 VR 模式进行了优化。
2345 pub const STATE_VR: i32 = 5;
2346
2347 /// 显示状态:显示器处于挂起的全功率状态;它仍然打开,但 CPU 不会更新它。这可以以两种方式之一使用:在设备处于非交互状态时显示系统提供的静态内容,或允许“Sidekick”计算资源更新显示。因此,CPU 不得在此模式下控制显示器。
2348 pub const STATE_ON_SUSPEND: i32 = 6;
2349
2350 /* 下面定义的颜色模式常量必须与 system/core/include/system/graphics-base.h 中的常量保持同步 */
2351
2352 /// 显示颜色模式:当前颜色模式未知或无效。
2353 pub const COLOR_MODE_INVALID: i32 = -1;
2354
2355 /// 显示色彩模式:显示器的默认或原生色域。
2356 pub const COLOR_MODE_DEFAULT: i32 = 0;
2357
2358 #[doc(hidden)]
2359 pub const COLOR_MODE_BT601_625: i32 = 1;
2360
2361 #[doc(hidden)]
2362 pub const COLOR_MODE_BT601_625_UNADJUSTED: i32 = 2;
2363
2364 #[doc(hidden)]
2365 pub const COLOR_MODE_BT601_525: i32 = 3;
2366
2367 #[doc(hidden)]
2368 pub const COLOR_MODE_BT601_525_UNADJUSTED: i32 = 4;
2369
2370 #[doc(hidden)]
2371 pub const COLOR_MODE_BT709: i32 = 5;
2372
2373 #[doc(hidden)]
2374 pub const COLOR_MODE_DCI_P3: i32 = 6;
2375
2376 #[doc(hidden)]
2377 pub const COLOR_MODE_SRGB: i32 = 7;
2378
2379 #[doc(hidden)]
2380 pub const COLOR_MODE_ADOBE_RGB: i32 = 8;
2381
2382 #[doc(hidden)]
2383 pub const COLOR_MODE_DISPLAY_P3: i32 = 9;
2384
2385 /// 表示当显示屏被移除时,其所有活动将移至主显示屏,并且最顶层的活动将成为焦点。
2386 /// TODO (b/114338689): 删除该标志并使用 WindowManager#REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY
2387 pub const REMOVE_MODE_MOVE_CONTENT_TO_PRIMARY: i32 = 0;
2388
2389 /// 表示当display被移除时,其所有堆栈和任务都将被移除,所有活动将按照通常的生命周期被销毁。
2390 /// TODO (b/114338689): 删除该标志并使用 WindowManager#REMOVE_CONTENT_MODE_DESTROY
2391 pub const REMOVE_MODE_DESTROY_CONTENT: i32 = 1;
2392
2393 #[doc(hidden)]
2394 pub const DISPLAY_MODE_ID_FOR_FRAME_RATE_OVERRIDE: i32 = 0xFF;
2395
2396 /**
2397 获取显示 ID。
2398 每个逻辑显示都有一个唯一 ID。默认显示 ID 为 DEFAULT_DISPLAY。
2399 */
2400 #[java_method]
2401 pub fn get_display_id(&self) -> i32 {}
2402
2403 /**
2404 获取显示器唯一 ID。
2405 唯一 ID 与显示器 ID 不同,因为物理显示器在重新启动后具有稳定的唯一 ID。
2406 */
2407 #[java_method]
2408 pub fn get_unique_id(&self) -> Option<String> {}
2409
2410 /**
2411 如果此显示仍然有效,则返回 true;如果显示已被移除,则返回 false。如果显示无效,则此类的方法将继续报告最近观察到的显示信息。但是,在显示消亡后继续使用 Display 对象是不明智的(而且毫无意义)。如果重新连接具有相同 ID 的显示,则之前无效的显示可能会再次有效。
2412 返回:如果显示仍然有效,则返回 True。
2413 */
2414 #[java_method]
2415 pub fn is_valid(&self) -> bool {}
2416
2417 /**
2418 获取显示器的层堆栈。每个显示器都有自己独立的层堆栈,表面放置在其上,由表面投射器进行管理。
2419 返回:显示器的层堆栈编号。
2420 */
2421 #[java_method]
2422 pub fn get_layer_stack(&self) -> i32 {}
2423
2424 /**
2425 返回描述显示器功能的标志组合。
2426 返回:显示标志。
2427 */
2428 #[java_method]
2429 pub fn get_flags(&self) -> i32 {}
2430
2431 /**
2432 获取显示类型。
2433 返回:显示类型。
2434 */
2435 #[java_method]
2436 pub fn get_type(&self) -> i32 {}
2437
2438 /**
2439 获取拥有此显示屏的应用程序的 UID,如果显示屏归系统所有,则获得零。如果显示屏是私有的,则只有所有者可以使用它。
2440 */
2441 #[java_method]
2442 pub fn get_owner_uid(&self) -> i32 {}
2443
2444 /**
2445 获取拥有此显示屏的应用程序的软件包名称,如果显示屏归系统所有,则返回 null。如果显示屏是私有的,则只有所有者可以使用它。
2446 */
2447 #[java_method]
2448 pub fn get_owner_package_name(&self) -> Option<String> {}
2449
2450 /**
2451 获取显示器的名称。请注意,某些显示器可能会被用户重命名。
2452 返回:显示器的名称。
2453 */
2454 #[java_method]
2455 pub fn get_name(&self) -> String {}
2456
2457 /**
2458 获取显示器配置的默认亮度。
2459 返回:默认亮度介于 0.0-1.0 之间
2460 */
2461 #[java_method]
2462 pub fn get_brightness_default(&self) -> f32 {}
2463
2464 /**
2465 返回将发生的最大屏幕尺寸。这主要用于壁纸。
2466 */
2467 #[java_method]
2468 pub fn get_maximum_size_dimension(&self) -> i32 {}
2469
2470 #[doc(hidden)]
2471 #[deprecated(note = "改用 WindowMetrics.getBounds.width()。")]
2472 #[java_method]
2473 pub fn get_width(&self) -> i32 {}
2474
2475 #[doc(hidden)]
2476 #[deprecated(note = "改用#height()。")]
2477 #[java_method]
2478 pub fn get_height(&self) -> i32 {}
2479
2480 /**
2481 返回屏幕从其“自然”方向的旋转。返回值可能是 Surface.ROTATION_0(无旋转)、Surface.ROTATION_90、Surface.ROTATION_180 或 Surface.ROTATION_270。
2482 例如,如果设备具有自然高大的屏幕,并且用户已将其侧放以进入横向方向,则此处返回的值可能是 Surface.ROTATION_90 或 Surface.ROTATION_270,具体取决于旋转的方向。角度是屏幕上绘制图形的旋转,与设备的物理旋转方向相反。例如,如果设备逆时针旋转 90 度,为了补偿渲染将顺时针旋转 90 度,因此此处返回的值将是 Surface.ROTATION_90。此旋转值将与 getMetrics 的结果相匹配:这意味着如果通过活动访问,旋转值将与活动相对应。
2483 */
2484 #[java_method]
2485 pub fn get_rotation(&self) -> i32 {}
2486
2487 /// 返回显示器的安装方向。
2488 #[java_method]
2489 pub fn get_install_orientation(&self) -> i32 {}
2490
2491 /// 返回:此显示的方向。
2492 #[deprecated(note = "使用 getRotation")]
2493 #[java_method]
2494 pub fn get_orientation(&self) -> i32 {}
2495
2496 /**
2497 获取显示器的像素格式。
2498 返回:PixelFormat 中定义的常量之一。
2499 */
2500 #[deprecated(note = "此方法不再受支持。结果始终为 PixelFormat。RGBA_8888。")]
2501 #[java_method]
2502 pub fn get_pixel_format(&self) -> i32 {}
2503
2504 /**
2505 获取此显示器的刷新率(以每秒帧数为单位)。
2506 */
2507 #[java_method]
2508 pub fn get_refresh_rate(&self) -> f32 {}
2509
2510 /**
2511 如果可以将连接的显示器切换到使用最小的后处理方式的模式,则返回true。如果显示器接收器通过HDMI连接,则如果显示屏支持自动低潜伏期模式或游戏内容类型,则此方法将返回true。如果显示器接收器具有内部连接或使用HDMI以外的其他协议,则如果可以将接收器切换到实现定义的低延迟图像处理模式,则此方法将返回true。
2512 通过系统设置菜单中的用户设置,可以禁用使用最小后处理模式的模式的能力。在这种情况下,此方法返回false。
2513 */
2514 #[java_method]
2515 pub fn is_minimal_post_processing_supported(&self) -> bool {}
2516
2517 /**
2518 请求显示器应用颜色模式。
2519 `color_mode` 颜色模式。
2520 */
2521 #[java_method]
2522 pub fn request_color_mode(&self, color_mode: i32) {}
2523
2524 /**
2525 返回此显示的活跃颜色模式
2526 */
2527 #[java_method]
2528 pub fn get_color_mode(&self) -> i32 {}
2529
2530 /// 获取显示屏的当前移除模式 - 移除显示屏内容时应对其执行哪些操作。在这种情况下,公共显示屏的默认行为是将所有活动移至主显示屏并使其处于焦点状态。对于私人显示屏 - 销毁所有活动。
2531 /// TODO (b/114338689): 删除方法并使用 IWindowManager#getRemoveContentMode
2532 #[java_method]
2533 pub fn get_remove_mode(&self) -> i32 {}
2534
2535 /**
2536 返回此显示器是否支持任何 HDR 类型。
2537 */
2538 #[java_method]
2539 pub fn is_hdr(&self) -> bool {}
2540
2541 /**
2542 显示器是否支持报告 hdr/sdr 比率。如果为 false,则 getHdrSdrRatio() 将始终为 1.0f
2543 */
2544 #[java_method]
2545 pub fn is_hdr_sdr_ratio_available(&self) -> bool {}
2546
2547 /**
2548 删除显示器的用户首选显示模式。
2549 */
2550 #[java_method]
2551 pub fn clear_user_preferred_display_mode(&self) {}
2552
2553 /**
2554 返回此显示器是否可用于显示广色域内容。这并不一定意味着设备本身可以渲染广色域内容。要确保可以生成广色域内容,请参阅 Configuration.isScreenWideColorGamut()。
2555 */
2556 #[java_method]
2557 pub fn is_wide_color_gamut(&self) -> bool {}
2558
2559 /**
2560 获取应用 VSYNC 偏移量(以纳秒为单位)。这是一个正值,表示 Choreographer 提供的 VSYNC 事件相对于显示刷新的相位偏移量。
2561 例如,如果 Choreographer 报告刷新发生在时间 N,则它实际上发生在 (N - appVsyncOffset)。应用通常不需要知道这一点。它仅适用于细粒度的 A/V 同步。
2562 */
2563 #[java_method]
2564 pub fn get_app_vsync_offset_nanos(&self) -> i64 {}
2565
2566 //noinspection SpellCheckingInspection
2567 /**
2568 这是缓冲区必须提前多久排队等待在给定时间进行演示。如果您希望缓冲区在时间 N 出现在屏幕上,则必须在 (N - presentationDeadline) 之前提交缓冲区。
2569 可以使用 android.opengl.EGLExt.eglPresentationTimeANDROID 设置 GLES 渲染所需的演示时间。对于视频解码,请使用 android.media.MediaCodec.releaseOutputBuffer(int, long)。时间以纳秒为单位表示,使用系统单调时钟 (System.nanoTime)。
2570 */
2571 #[java_method]
2572 pub fn get_presentation_deadline_nanos(&self) -> i64 {}
2573
2574 /**
2575 确定是否应将 WindowConfiguration.getMaxBounds() 报告为显示尺寸。当应用需要沙盒化时,最大边界字段可能小于逻辑尺寸。取决于 com.android.server.wm.ConfigurationContainer.providesMaxBounds() 中设置的 WindowConfiguration.getMaxBounds()。
2576 在大多数情况下,此值反映当前 DisplayArea 的大小。当应应用最大边界时,返回 true。
2577 */
2578 #[java_method]
2579 pub fn should_report_max_bounds(&self) -> bool {}
2580
2581 /**
2582 获取显示器的状态,例如是打开还是关闭。
2583 返回:显示器的状态:STATE_OFF、STATE_ON、STATE_DOZE、STATE_DOZE_SUSPEND、STATE_ON_SUSPEND 或 STATE_UNKNOWN 之一。
2584 */
2585 #[java_method]
2586 pub fn get_state(&self) -> i32 {}
2587
2588 /**
2589 如果指定的 UID 有权访问此显示,则返回 true。
2590 `uid` UID。
2591 */
2592 #[java_method]
2593 pub fn has_access(&self, uid: i32) -> bool {}
2594
2595 /// 如果显示是公共演示文稿显示,则返回true。
2596 #[java_method]
2597 pub fn is_public_presentation(&self) -> bool {}
2598
2599 /// 如果显示器是受信任的显示器,则为 true。
2600 #[java_method]
2601 pub fn is_trusted(&self) -> bool {}
2602
2603 /// 如果显示器可以从另一个显示器窃取顶部焦点,则为 true。
2604 #[java_method]
2605 pub fn can_steal_top_focus(&self) -> bool {}
2606
2607 #[doc(hidden)]
2608 #[java_method]
2609 pub fn type_to_string(r#type: i32) -> String {}
2610
2611 #[doc(hidden)]
2612 #[java_method]
2613 pub fn state_to_string(state: i32) -> String {}
2614
2615 /**
2616 如果在指定的显示器电源状态下可以暂停显示更新,则返回 true。在 SUSPEND 状态下,绝对禁止更新。
2617 `state` 状态。
2618 */
2619 #[java_method]
2620 pub fn is_suspended_state(state: i32) -> bool {}
2621
2622 /**
2623 如果在指定的显示器电源状态下显示器可能处于降低的操作模式,则返回 true。
2624 `state` 状态。
2625 */
2626 #[java_method]
2627 pub fn is_doze_state(state: i32) {}
2628
2629 /**
2630 如果显示器处于活动状态(例如 STATE_ON 或 STATE_VR),则返回 true。
2631 `state` 状态。
2632 */
2633 #[java_method]
2634 pub fn is_active_state(state: i32) {}
2635
2636 /**
2637 如果显示器处于关闭状态(例如 STATE_OFF),则返回 true。
2638 `state` 状态。
2639 */
2640 #[java_method]
2641 pub fn is_off_state(state: i32) -> bool {}
2642
2643 /**
2644 如果显示器处于开启状态(例如 STATE_ON 或 STATE_VR 或 STATE_ON_SUSPEND),则返回 true。
2645 `state` 状态。
2646 */
2647 #[java_method]
2648 pub fn is_on_state(state: i32) -> bool {}
2649
2650 /**
2651 如果指定的宽度有效,则返回 true。
2652 `width` 宽度。
2653 */
2654 #[java_method]
2655 pub fn is_width_valid(width: i32) -> bool {}
2656
2657 /**
2658 如果指定的高度有效,则返回 true。
2659 `height` 高度。
2660 */
2661 #[java_method]
2662 pub fn is_height_valid(height: i32) -> bool {}
2663
2664 /**
2665 如果指定的刷新率有效,则返回 true。
2666 `refresh_rate` 刷新率。
2667 */
2668 #[java_method]
2669 pub fn is_refresh_rate_valid(refresh_rate: f32) -> bool {}
2670}
2671
2672/// 输入事件的通用基类。
2673#[java_class(name = "android/view/InputEvent")]
2674pub struct InputEvent;
2675
2676impl InputEvent {
2677 /**
2678 获取此事件所来自设备的 ID。ID 为零表示事件不是来自物理设备并映射到默认键盘映射。其他数字是任意的,您不应该依赖这些值。
2679 返回:设备 ID。
2680 */
2681 #[java_method]
2682 pub fn get_device_id(&self) -> i32 {}
2683
2684 /**
2685 获取事件源。
2686 返回:事件源或输入设备。如果未知,则返回 SOURCE_UNKNOWN。
2687 */
2688 #[java_method]
2689 pub fn get_source(&self) -> i32 {}
2690
2691 /**
2692 修改事件的来源。
2693 `source` 新来源。
2694 */
2695 #[java_method]
2696 pub fn set_source(&self, source: i32) {}
2697
2698 /**
2699 确定事件是否来自给定的源。
2700 返回:事件是否来自给定的源。
2701 `source` 要检查的输入源。这可以是特定的设备类型,例如 InputDevice.SOURCE_TOUCH_NAVIGATION,也可以是更通用的设备类,例如 InputDevice.SOURCE_CLASS_POINTER。
2702 */
2703 #[java_method]
2704 pub fn is_from_source(&self, source: i32) -> bool {}
2705
2706 /**
2707 获取事件的显示 ID。
2708 返回:与事件关联的显示 ID。
2709 */
2710 #[java_method]
2711 pub fn get_display_id(&self) -> i32 {}
2712
2713 /**
2714 修改与事件关联的显示 ID
2715 `display_id`
2716 */
2717 #[java_method]
2718 pub fn set_display_id(&self, display_id: i32) {}
2719
2720 /**
2721 回收事件。此方法仅应由系统使用,因为应用程序不希望回收 KeyEvent 对象,但可以回收 MotionEvent 对象。
2722 有关详细信息,请参阅 KeyEvent.recycle()。
2723 */
2724 #[java_method]
2725 pub fn recycle(&self) {}
2726
2727 /**
2728 在将事件分发给应用程序后,如果合适,则有条件地回收事件。如果事件是 MotionEvent,则回收该事件。如果事件是 KeyEvent,则不回收该事件,因为应用程序希望按键事件是不可变的,因此一旦将事件分发给应用程序,我们就不能再回收它了。
2729 */
2730 #[java_method]
2731 pub fn recycle_if_needed_after_dispatch(&self) {}
2732
2733 /**
2734 获取一个私有标志,该标志指示系统何时检测到此输入事件可能与先前传递的输入事件的序列不一致,例如,当发送了按键释放事件但按键未按下时,或者当发送了指针移动事件但指针未按下时。
2735 返回:如果此事件被污染,则返回 True。
2736 */
2737 #[java_method]
2738 pub fn is_tainted(&self) -> bool {}
2739
2740 /**
2741 设置一个私有标志,指示系统何时检测到此输入事件可能与先前传递的输入事件的序列不一致,例如,当发送了按键释放事件但按键未按下时,或者当发送了指针移动事件但指针未按下时。
2742 `tainted` 如果此事件被污染,则为 True。
2743 */
2744 #[java_method]
2745 pub fn set_tainted(&self, tainted: bool) {}
2746
2747 /**
2748 以 android.os.SystemClock.uptimeMillis 时间基准查询此事件发生的时间。
2749 返回:以 android.os.SystemClock.uptimeMillis 时间基准返回此事件发生的时间。
2750 */
2751 #[java_method]
2752 pub fn get_event_time(&self) -> i64 {}
2753
2754 /**
2755 查询此事件发生的时间,以 android.os.SystemClock.uptimeMillis 时间为基础,但精度为纳秒(而不是毫秒)。该值以纳秒为精度,但可能不具有纳秒的精度。
2756 返回:返回此事件发生的时间,以 android.os.SystemClock.uptimeMillis 时间为基础,但精度为纳秒(而不是毫秒)。
2757 */
2758 #[java_method]
2759 pub fn get_event_time_nanos(&self) -> i64 {}
2760
2761 /**
2762 将输入事件标记为已取消。
2763 */
2764 #[java_method]
2765 pub fn cancel(&self) {}
2766
2767 /**
2768 获取此事件的唯一序列号。进程创建或接收的每个输入事件都有唯一的序列号。此外,每次回收事件对象时都会获得一个新的序列号。序列号仅保证在进程内本地唯一。打包事件时不会保留序列号。
2769 返回:此事件的唯一序列号。
2770 */
2771 #[java_method]
2772 pub fn get_sequence_number(&self) -> i32 {}
2773
2774 //noinspection SpellCheckingInspection
2775 /**
2776 获取此事件的 ID。此 ID 在事件创建时生成,并保存到事件的最后阶段。它不会因为事件跨越进程边界而改变,但在进行修改复制时应该会改变。为了避免将应用程序使用情况暴露给其他进程,此 ID 由 CSPRNG 生成。因此,虽然 ID 冲突的可能性相当低,但不能 100% 保证此 ID 的唯一性。经验法则是不要依赖生产逻辑的唯一性,而要依赖跟踪事件(例如日志记录和分析)的良好来源。
2777 返回:此事件的 ID。
2778 */
2779 #[java_method]
2780 pub fn get_id(&self) -> i32 {}
2781
2782 #[doc(hidden)]
2783 #[java_method]
2784 pub fn describe_contents(&self) -> i32 {}
2785}
2786
2787//noinspection SpellCheckingInspection
2788/**
2789用于报告按键和按钮事件的对象。每次按键都由一系列按键事件描述。按键以 ACTION_DOWN 按键事件开始。如果按键保持的时间足够长,以至于重复,则初始按下之后是其他按键事件,其中 ACTION_DOWN 和非零 getRepeatCount() 值。最后一个按键事件是按键弹起的 ACTION_UP。
2790如果取消按键,则按键弹起事件将设置 FLAG_CANCELED 标志。按键事件通常伴随着按键代码 (getKeyCode())、扫描代码 (getScanCode()) 和元状态 (getMetaState())。按键代码常量在此类中定义。扫描代码常量是从操作系统获得的原始设备特定代码,因此除非使用 KeyCharacterMap 进行解释,否则通常对应用程序没有意义。
2791元状态描述按键修饰符(如 META_SHIFT_ON 或 META_ALT_ON)的按下状态。按键代码通常与输入设备上的各个按键一一对应。许多按键和按键组合在不同的输入设备上具有完全不同的功能,因此在解释它们时必须小心谨慎。将按键映射到字符时,请始终使用与输入设备关联的 KeyCharacterMap。
2792请注意,可能同时有多个按键输入设备处于活动状态,并且每个设备都有自己的按键字符映射。由于软输入法可以使用多种创新的文本输入方式,因此无法保证软键盘上的任何按键都会生成按键事件:这由 IME 自行决定,实际上不鼓励发送此类事件。您永远不应该依赖于接收软输入法上任何按键的 KeyEvent。
2793特别是,默认软件键盘永远不会向任何针对 Jelly Bean 或更高版本的应用程序发送任何按键事件,并且只会向针对 Ice Cream Sandwich 或更早版本的应用程序发送某些删除和返回键按下事件。请注意,其他软件输入法可能永远不会发送按键事件,无论版本如何。考虑使用编辑器操作,如 android.view.inputmethod.EditorInfo。
2794如果您需要与软件键盘进行特定交互,则可以使用 IME_ACTION_DONE,因为它可以让用户更清楚地了解您的应用程序如何对按键做出反应。与 IME 交互时,框架可能会使用特殊操作 ACTION_MULTIPLE 传递按键事件,该操作指定单个重复的按键代码或要插入的字符序列。一般来说,框架无法保证它传递给视图的按键事件始终构成完整的按键序列,因为某些事件可能会在传递之前被包含视图删除或修改。视图实现应该准备好处理 FLAG_CANCELED,并且应该容忍异常情况,例如在没有先收到上一次按键的 ACTION_UP 的情况下收到新的 ACTION_DOWN。
2795有关不同类型的输入设备和源如何表示按键和按钮的更多信息,请参阅 InputDevice。
2796*/
2797#[java_class(name = "android/view/KeyEvent", extends=InputEvent)]
2798pub struct KeyEvent;
2799
2800impl KeyEvent {
2801 /// 键码常量:未知键码。
2802 pub const KEYCODE_UNKNOWN: i32 = 0;
2803
2804 /// 键码常量:软左键。通常位于手机显示屏下方,用作多功能特征键,用于选择显示在显示屏左下角的软件定义功能。
2805 pub const KEYCODE_SOFT_LEFT: i32 = 1;
2806
2807 /// 键码常量:软右键。通常位于手机显示屏下方,用作多功能特征键,用于选择显示在显示屏右下角的软件定义功能。
2808 pub const KEYCODE_SOFT_RIGHT: i32 = 2;
2809
2810 /// 键码常量:主页键。此键由框架处理,永远不会传递给应用程序。
2811 pub const KEYCODE_HOME: i32 = 3;
2812
2813 /// 键码常量:返回键。
2814 pub const KEYCODE_BACK: i32 = 4;
2815
2816 /// 键码常量:呼叫键。
2817 pub const KEYCODE_CALL: i32 = 5;
2818
2819 //noinspection SpellCheckingInspection
2820 /// 键码常量:结束呼叫键。
2821 pub const KEYCODE_ENDCALL: i32 = 6;
2822
2823 /// 键码常量:'0'键。
2824 pub const KEYCODE_0: i32 = 7;
2825
2826 /// 键码常量:'1'键。
2827 pub const KEYCODE_1: i32 = 8;
2828
2829 /// 键码常量:'2'键。
2830 pub const KEYCODE_2: i32 = 9;
2831
2832 /// 键码常量:'3'键。
2833 pub const KEYCODE_3: i32 = 10;
2834
2835 /// 键码常量:'4'键。
2836 pub const KEYCODE_4: i32 = 11;
2837
2838 /// 键码常量:'5'键。
2839 pub const KEYCODE_5: i32 = 12;
2840
2841 /// 键码常量:'6'键。
2842 pub const KEYCODE_6: i32 = 13;
2843
2844 /// 键码常量:'7'键。
2845 pub const KEYCODE_7: i32 = 14;
2846
2847 /// 键码常量:'8'键。
2848 pub const KEYCODE_8: i32 = 15;
2849
2850 /// 键码常量:'9'键。
2851 pub const KEYCODE_9: i32 = 16;
2852
2853 /// 键码常量:'*'键。
2854 pub const KEYCODE_STAR: i32 = 17;
2855
2856 /// 键码常量:'#'键。
2857 pub const KEYCODE_POUND: i32 = 18;
2858
2859 //noinspection SpellCheckingInspection
2860 /// 键码常量:方向键向上键。也可以从轨迹球运动合成。
2861 pub const KEYCODE_DPAD_UP: i32 = 19;
2862
2863 //noinspection SpellCheckingInspection
2864 /// 键码常量:方向键向下键。也可以从轨迹球运动合成。
2865 pub const KEYCODE_DPAD_DOWN: i32 = 20;
2866
2867 //noinspection SpellCheckingInspection
2868 /// 键码常量:方向键左键。也可以从轨迹球运动合成。
2869 pub const KEYCODE_DPAD_LEFT: i32 = 21;
2870
2871 //noinspection SpellCheckingInspection
2872 /// 键码常量:方向键右键。也可以从轨迹球运动合成。
2873 pub const KEYCODE_DPAD_RIGHT: i32 = 22;
2874
2875 //noinspection SpellCheckingInspection
2876 /// 键码常量:方向键中心键。也可以从轨迹球运动合成。
2877 pub const KEYCODE_DPAD_CENTER: i32 = 23;
2878
2879 /// 键码常量:音量向上键。调整扬声器音量。
2880 pub const KEYCODE_VOLUME_UP: i32 = 24;
2881
2882 /// 键码常量:音量减键。调整扬声器音量减小。
2883 pub const KEYCODE_VOLUME_DOWN: i32 = 25;
2884
2885 /// 键码常量:电源键。
2886 pub const KEYCODE_POWER: i32 = 26;
2887
2888 /// 键码常量:相机键。用于启动相机应用程序或拍照。
2889 pub const KEYCODE_CAMERA: i32 = 27;
2890
2891 /// 键码常量:清除键。
2892 pub const KEYCODE_CLEAR: i32 = 28;
2893
2894 /// 键码常量:'A'键。
2895 pub const KEYCODE_A: i32 = 29;
2896
2897 /// 键码常量:'B'键。
2898 pub const KEYCODE_B: i32 = 30;
2899
2900 /// 键码常量:'C'键。
2901 pub const KEYCODE_C: i32 = 31;
2902
2903 /// 键码常量:'D'键。
2904 pub const KEYCODE_D: i32 = 32;
2905
2906 /// 键码常量:'E'键。
2907 pub const KEYCODE_E: i32 = 33;
2908
2909 /// 键码常量:'F'键。
2910 pub const KEYCODE_F: i32 = 34;
2911
2912 /// 键码常量:'G'键。
2913 pub const KEYCODE_G: i32 = 35;
2914
2915 /// 键码常量:'H'键。
2916 pub const KEYCODE_H: i32 = 36;
2917
2918 /// 键码常量:'I'键。
2919 pub const KEYCODE_I: i32 = 37;
2920
2921 /// 键码常量:'J'键。
2922 pub const KEYCODE_J: i32 = 38;
2923
2924 /// 键码常量:'K'键。
2925 pub const KEYCODE_K: i32 = 39;
2926
2927 /// 键码常量:'L'键。
2928 pub const KEYCODE_L: i32 = 40;
2929
2930 /// 键码常量:'M'键。
2931 pub const KEYCODE_M: i32 = 41;
2932
2933 /// 键码常量:'N'键。
2934 pub const KEYCODE_N: i32 = 42;
2935
2936 /// 键码常量:'O'键。
2937 pub const KEYCODE_O: i32 = 43;
2938
2939 /// 键码常量:'P'键。
2940 pub const KEYCODE_P: i32 = 44;
2941
2942 /// 键码常量:'Q'键。
2943 pub const KEYCODE_Q: i32 = 45;
2944
2945 /// 键码常量:'R'键。
2946 pub const KEYCODE_R: i32 = 46;
2947
2948 /// 键码常量:'S'键。
2949 pub const KEYCODE_S: i32 = 47;
2950
2951 /// 键码常量:'T'键。
2952 pub const KEYCODE_T: i32 = 48;
2953
2954 /// 键码常量:'U'键。
2955 pub const KEYCODE_U: i32 = 49;
2956
2957 /// 键码常量:'V'键。
2958 pub const KEYCODE_V: i32 = 50;
2959
2960 /// 键码常量:'W'键。
2961 pub const KEYCODE_W: i32 = 51;
2962
2963 /// 键码常量:'X'键。
2964 pub const KEYCODE_X: i32 = 52;
2965
2966 /// 键码常量:'Y'键。
2967 pub const KEYCODE_Y: i32 = 53;
2968
2969 /// 键码常量:'Z'键。
2970 pub const KEYCODE_Z: i32 = 54;
2971
2972 /// 键码常量:','键。
2973 pub const KEYCODE_COMMA: i32 = 55;
2974
2975 /// 键码常量:'.'键。
2976 pub const KEYCODE_PERIOD: i32 = 56;
2977
2978 /// 键码常量:左Alt修饰键。
2979 pub const KEYCODE_ALT_LEFT: i32 = 57;
2980
2981 /// 键码常量:右Alt修饰键。
2982 pub const KEYCODE_ALT_RIGHT: i32 = 58;
2983
2984 /// 键码常量:左Shift修饰键。
2985 pub const KEYCODE_SHIFT_LEFT: i32 = 59;
2986
2987 /// 键码常量:右Shift修饰键。
2988 pub const KEYCODE_SHIFT_RIGHT: i32 = 60;
2989
2990 /// 键码常量:Tab键。
2991 pub const KEYCODE_TAB: i32 = 61;
2992
2993 /// 键码常量:空格键。
2994 pub const KEYCODE_SPACE: i32 = 62;
2995
2996 /// 键码常量:符号修饰键。用于输入替代符号。
2997 pub const KEYCODE_SYM: i32 = 63;
2998
2999 /// 键码常量:资源管理器特殊功能键。用于启动浏览器应用程序。
3000 pub const KEYCODE_EXPLORER: i32 = 64;
3001
3002 /// 键码常量:信封特殊功能键。用于启动邮件应用程序。
3003 pub const KEYCODE_ENVELOPE: i32 = 65;
3004
3005 /// 键码常量:Enter键。
3006 pub const KEYCODE_ENTER: i32 = 66;
3007
3008 /// 键码常量:退格键。删除插入点前的字符,与KEYCODE_FORWARD_DEL不同。
3009 pub const KEYCODE_DEL: i32 = 67;
3010
3011 /// 键码常量:'`'(反引号)键。
3012 pub const KEYCODE_GRAVE: i32 = 68;
3013
3014 /// 键码常量:'-'。
3015 pub const KEYCODE_MINUS: i32 = 69;
3016
3017 /// 键码常量:'='键。
3018 pub const KEYCODE_EQUALS: i32 = 70;
3019
3020 /// 键码常量:'[' 键。
3021 pub const KEYCODE_LEFT_BRACKET: i32 = 71;
3022
3023 /// 键码常量:']'键。
3024 pub const KEYCODE_RIGHT_BRACKET: i32 = 72;
3025
3026 /// 键码常量:'\'键。
3027 pub const KEYCODE_BACKSLASH: i32 = 73;
3028
3029 /// 键码常量:';'键。
3030 pub const KEYCODE_SEMICOLON: i32 = 74;
3031
3032 /// 键码常量:'''(单引号)键。
3033 pub const KEYCODE_APOSTROPHE: i32 = 75;
3034
3035 /// 键码常量:'/'键。
3036 pub const KEYCODE_SLASH: i32 = 76;
3037
3038 /// 键码常量:'@'键。
3039 pub const KEYCODE_AT: i32 = 77;
3040
3041 /// 键码常量:数字修饰键。用于输入数字符号。这个键不是Num Lock;它更像是KEYCODE_ALT_LEFT,并被android.text.method.MetaKeyKeyListener解释为ALT键。
3042 pub const KEYCODE_NUM: i32 = 78;
3043
3044 //noinspection SpellCheckingInspection
3045 /// 键码常量:耳机钩键。用于挂断电话并停止媒体。
3046 pub const KEYCODE_HEADSETHOOK: i32 = 79;
3047
3048 /// 键码常量:相机对焦键。用于对焦相机。
3049 pub const KEYCODE_FOCUS: i32 = 80;
3050
3051 /// 键码常量:'+'键。
3052 pub const KEYCODE_PLUS: i32 = 81;
3053
3054 /// 键码常量:菜单键。
3055 pub const KEYCODE_MENU: i32 = 82;
3056
3057 /// 键码常量:通知键。
3058 pub const KEYCODE_NOTIFICATION: i32 = 83;
3059
3060 /// 键码常量:搜索键。
3061 pub const KEYCODE_SEARCH: i32 = 84;
3062
3063 /// 键码常量:媒体播放/暂停键。
3064 pub const KEYCODE_MEDIA_PLAY_PAUSE: i32 = 85;
3065
3066 /// 键码常量:媒体停止键。
3067 pub const KEYCODE_MEDIA_STOP: i32 = 86;
3068
3069 /// 键码常量:媒体播放下一曲键。
3070 pub const KEYCODE_MEDIA_NEXT: i32 = 87;
3071
3072 /// 键码常量:媒体播放上一曲键。
3073 pub const KEYCODE_MEDIA_PREVIOUS: i32 = 88;
3074
3075 /// 键码常量:媒体倒带键。
3076 pub const KEYCODE_MEDIA_REWIND: i32 = 89;
3077
3078 /// 键码常量:媒体快进键。
3079 pub const KEYCODE_MEDIA_FAST_FORWARD: i32 = 90;
3080
3081 /// 键码常量:静音键。用于麦克风的静音键(不同于KEYCODE_VOLUME_MUTE,那是扬声器静音键)。
3082 pub const KEYCODE_MUTE: i32 = 91;
3083
3084 /// 键码常量:Page Up键。
3085 pub const KEYCODE_PAGE_UP: i32 = 92;
3086
3087 /// 键码常量:Page Down键。
3088 pub const KEYCODE_PAGE_DOWN: i32 = 93;
3089
3090 //noinspection SpellCheckingInspection
3091 /// 键码常量:图片符号修饰键。用于切换符号集(表情符号、颜文字)。
3092 pub const KEYCODE_PICTSYMBOLS: i32 = 94;
3093
3094 //noinspection SpellCheckingInspection
3095 /// 切换符号集(表情符号、颜文字)
3096 /// 键码常量:切换字符集修饰键。用于切换字符集(汉字、片假名)。
3097 pub const KEYCODE_SWITCH_CHARSET: i32 = 95; // 切换字符集(汉字、片假名)
3098
3099 /// 键码常量:A按钮键。在游戏控制器上,A按钮应为标有A的按钮或控制器按钮底部行的第一个按钮。
3100 pub const KEYCODE_BUTTON_A: i32 = 96;
3101
3102 /// 键码常量:B按钮键。在游戏控制器上,B按钮应为标有B的按钮或控制器按钮底部行的第二个按钮。
3103 pub const KEYCODE_BUTTON_B: i32 = 97;
3104
3105 /// 键码常量:C按钮键。在游戏控制器上,C按钮应为标有C的按钮或控制器按钮底部行的第三个按钮。
3106 pub const KEYCODE_BUTTON_C: i32 = 98;
3107
3108 /// 键码常量:X按钮键。在游戏控制器上,X按钮应为标有X的按钮或控制器按钮顶部行的第一个按钮。
3109 pub const KEYCODE_BUTTON_X: i32 = 99;
3110
3111 /// 键码常量:Y按钮键。在游戏控制器上,Y按钮应为标有Y的按钮或控制器按钮顶部行的第二个按钮。
3112 pub const KEYCODE_BUTTON_Y: i32 = 100;
3113
3114 /// 键码常量:Z按钮键。在游戏控制器上,Z按钮应为标有Z的按钮或控制器按钮顶部行的第三个按钮。
3115 pub const KEYCODE_BUTTON_Z: i32 = 101;
3116
3117 /// 键码常量:L1按钮键。在游戏控制器上,L1按钮应为标有L1(或L)的按钮或左上角的触发器按钮。
3118 pub const KEYCODE_BUTTON_L1: i32 = 102;
3119
3120 /// 键码常量:R1按钮键。在游戏控制器上,R1按钮应为标有R1(或R)的按钮或右上角的触发器按钮。
3121 pub const KEYCODE_BUTTON_R1: i32 = 103;
3122
3123 /// 键码常量:L2按钮键。在游戏控制器上,L2按钮应为标有L2的按钮或左下角的触发器按钮。
3124 pub const KEYCODE_BUTTON_L2: i32 = 104;
3125
3126 //noinspection SpellCheckingInspection
3127 /// 键码常量:左拇指按钮键。在游戏控制器上,左拇指按钮表示按下左(或唯一)操纵杆。
3128 pub const KEYCODE_BUTTON_THUMBL: i32 = 106;
3129
3130 //noinspection SpellCheckingInspection
3131 /// 键码常量:右拇指按钮键。在游戏控制器上,右拇指按钮表示按下了右操纵杆。
3132 pub const KEYCODE_BUTTON_THUMBR: i32 = 107;
3133
3134 /// 键码常量:R2 按钮键。在游戏控制器上,R2 按钮应该是标有 R2 的按钮或右下角触发器按钮。
3135 pub const KEYCODE_BUTTON_R2: i32 = 105;
3136
3137 /// 键码常量:开始按钮键。在游戏控制器上,标有“开始”的按钮。
3138 pub const KEYCODE_BUTTON_START: i32 = 108;
3139
3140 /// 键码常量:选择按钮键。在游戏控制器上,标有“选择”的按钮。
3141 pub const KEYCODE_BUTTON_SELECT: i32 = 109;
3142
3143 /// 键码常量:模式按钮键。在游戏控制器上,标有“模式”的按钮。
3144 pub const KEYCODE_BUTTON_MODE: i32 = 110;
3145
3146 /// 键码常量:Esc 键。
3147 pub const KEYCODE_ESCAPE: i32 = 111;
3148
3149 /// 键码常量:向前删除键。与 KEYCODE_DEL 不同,它删除插入点前面的字符。
3150 pub const KEYCODE_FORWARD_DEL: i32 = 112;
3151
3152 /// 键码常量:左 Control 修饰键。
3153 pub const KEYCODE_CTRL_LEFT: i32 = 113;
3154
3155 /// 键码常量:右 Control 修饰键。
3156 pub const KEYCODE_CTRL_RIGHT: i32 = 114;
3157
3158 /// 键码常量:大写锁定键。
3159 pub const KEYCODE_CAPS_LOCK: i32 = 115;
3160
3161 /// 键码常量:滚动锁定键。
3162 pub const KEYCODE_SCROLL_LOCK: i32 = 116;
3163
3164 /// 键码常量:左 Meta 修饰键。
3165 pub const KEYCODE_META_LEFT: i32 = 117;
3166
3167 /// 键码常量:右 Meta 修饰键。
3168 pub const KEYCODE_META_RIGHT: i32 = 118;
3169
3170 /// 键码常量:功能修饰键。
3171 pub const KEYCODE_FUNCTION: i32 = 119;
3172
3173 //noinspection SpellCheckingInspection
3174 /// 键码常量:系统请求/打印屏幕键。
3175 pub const KEYCODE_SYSRQ: i32 = 120;
3176
3177 /// 键码常量:Break / Pause 键。
3178 pub const KEYCODE_BREAK: i32 = 121;
3179
3180 /// 键码常量:Home 移动键。用于滚动或移动光标到 行 的开始或列表的顶部。
3181 pub const KEYCODE_MOVE_HOME: i32 = 122;
3182
3183 /// 键码常量:End 移动键。用于滚动或移动光标到 行 的末尾或列表的底部。
3184 pub const KEYCODE_MOVE_END: i32 = 123;
3185
3186 /// 键码常量:Insert 键。切换插入/覆盖编辑模式。
3187 pub const KEYCODE_INSERT: i32 = 124;
3188
3189 /// 键码常量:前进键。在历史堆栈中向前导航。与 KEYCODE_BACK 互补。
3190 pub const KEYCODE_FORWARD: i32 = 125;
3191
3192 /// 键码常量:播放媒体键。
3193 pub const KEYCODE_MEDIA_PLAY: i32 = 126;
3194
3195 /// 键码常量:暂停媒体键。
3196 pub const KEYCODE_MEDIA_PAUSE: i32 = 127;
3197
3198 /// 键码常量:关闭媒体键。例如,可用于关闭 CD 托盘。
3199 pub const KEYCODE_MEDIA_CLOSE: i32 = 128;
3200
3201 /// 键码常量:弹出媒体键。例如,可用于弹出 CD 托盘。
3202 pub const KEYCODE_MEDIA_EJECT: i32 = 129;
3203
3204 /// 键码常量:录制媒体键。
3205 pub const KEYCODE_MEDIA_RECORD: i32 = 130;
3206
3207 /// 键码常量:F1 键。
3208 pub const KEYCODE_F1: i32 = 131;
3209
3210 /// 键码常量:F2 键。
3211 pub const KEYCODE_F2: i32 = 132;
3212
3213 /// 键码常量:F3 键。
3214 pub const KEYCODE_F3: i32 = 133;
3215
3216 /// 键码常量:F4 键。
3217 pub const KEYCODE_F4: i32 = 134;
3218
3219 /// 键码常量:F5 键。
3220 pub const KEYCODE_F5: i32 = 135;
3221
3222 /// 键码常量:F6 键。
3223 pub const KEYCODE_F6: i32 = 136;
3224
3225 /// 键码常量:F7 键。
3226 pub const KEYCODE_F7: i32 = 137;
3227
3228 /// 键码常量:F8 键。
3229 pub const KEYCODE_F8: i32 = 138;
3230
3231 /// 键码常量:F9 键。
3232 pub const KEYCODE_F9: i32 = 139;
3233
3234 /// 键码常量:F10 键。
3235 pub const KEYCODE_F10: i32 = 140;
3236
3237 /// 键码常量:F11 键。
3238 pub const KEYCODE_F11: i32 = 141;
3239
3240 /// 键码常量:数字键盘'('键
3241 pub const KEYCODE_NUMPAD_LEFT_PAREN: i32 = 162;
3242
3243 /// 键码常量:数字键盘')'键。
3244 pub const KEYCODE_NUMPAD_RIGHT_PAREN: i32 = 163;
3245
3246 /// 键码常量:F12 键。
3247 pub const KEYCODE_F12: i32 = 142;
3248
3249 /// 键码常量:Num Lock 键。这是 Num Lock 键,与 KEYCODE_NUM 不同。此键会改变数字键盘上其他键的行为。
3250 pub const KEYCODE_NUM_LOCK: i32 = 143;
3251
3252 /// 键码常量:数字键盘 '0' 键。
3253 pub const KEYCODE_NUMPAD_0: i32 = 144;
3254
3255 /// 键码常量:数字键盘 '1' 键。
3256 pub const KEYCODE_NUMPAD_1: i32 = 145;
3257
3258 /// 键码常量:数字键盘 '2' 键。
3259 pub const KEYCODE_NUMPAD_2: i32 = 146;
3260
3261 /// 键码常量:数字键盘 '3' 键。
3262 pub const KEYCODE_NUMPAD_3: i32 = 147;
3263
3264 /// 键码常量:数字键盘 '4' 键。
3265 pub const KEYCODE_NUMPAD_4: i32 = 148;
3266
3267 /// 键码常量:数字键盘 '5' 键。
3268 pub const KEYCODE_NUMPAD_5: i32 = 149;
3269
3270 /// 键码常量:数字键盘 '6' 键。
3271 pub const KEYCODE_NUMPAD_6: i32 = 150;
3272
3273 /// 键码常量:数字键盘 '7' 键。
3274 pub const KEYCODE_NUMPAD_7: i32 = 151;
3275
3276 /// 键码常量:数字键盘 '8' 键。
3277 pub const KEYCODE_NUMPAD_8: i32 = 152;
3278
3279 /// 键码常量:数字键盘 '9' 键。
3280 pub const KEYCODE_NUMPAD_9: i32 = 153;
3281
3282 /// 键码常量:数字键盘 '/' 键(用于除法)。
3283 pub const KEYCODE_NUMPAD_DIVIDE: i32 = 154;
3284
3285 /// 键码常量:数字键盘 '*' 键(用于乘法)。
3286 pub const KEYCODE_NUMPAD_MULTIPLY: i32 = 155;
3287
3288 /// 键码常量:数字键盘 '-' 键(用于减法)。
3289 pub const KEYCODE_NUMPAD_SUBTRACT: i32 = 156;
3290
3291 /// 键码常量:数字键盘 '+' 键(用于加法)。
3292 pub const KEYCODE_NUMPAD_ADD: i32 = 157;
3293
3294 /// 键码常量:数字键盘 '.' 键(用于小数或数字分组)。
3295 pub const KEYCODE_NUMPAD_DOT: i32 = 158;
3296
3297 /// 键码常量:数字键盘 ',' 键(用于小数或数字分组)。
3298 pub const KEYCODE_NUMPAD_COMMA: i32 = 159;
3299
3300 /// 键码常量:数字键盘 Enter 键。
3301 pub const KEYCODE_NUMPAD_ENTER: i32 = 160;
3302
3303 /// 键码常量:绿色“可编程”键。在电视遥控器上,用作上下文/可编程键。
3304 pub const KEYCODE_PROG_GREEN: i32 = 184;
3305
3306 /// 键码常量:数字键盘 '=' 键。
3307 pub const KEYCODE_NUMPAD_EQUALS: i32 = 161;
3308
3309 /// 键码常量:音量静音键。用于扬声器的静音键(与 KEYCODE_MUTE 不同,后者是麦克风的静音键)。此键通常应实现为切换键,即第一次按下时静音扬声器,第二次按下时恢复原始音量。
3310 pub const KEYCODE_VOLUME_MUTE: i32 = 164;
3311
3312 /// 键码常量:信息键。通常在电视遥控器上,用于显示与当前正在查看的内容相关的附加信息。
3313 pub const KEYCODE_INFO: i32 = 165;
3314
3315 /// 键码常量:频道上键。在电视遥控器上,用于增加电视频道。
3316 pub const KEYCODE_CHANNEL_UP: i32 = 166;
3317
3318 /// 键码常量:频道下键。在电视遥控器上,用于减少电视频道。
3319 pub const KEYCODE_CHANNEL_DOWN: i32 = 167;
3320
3321 /// 键码常量:放大键。
3322 pub const KEYCODE_ZOOM_IN: i32 = 168;
3323
3324 /// 键码常量:缩小键。
3325 pub const KEYCODE_ZOOM_OUT: i32 = 169;
3326
3327 /// 键码常量:电视键。在电视遥控器上,切换到观看直播电视。
3328 pub const KEYCODE_TV: i32 = 170;
3329
3330 /// 键码常量:窗口键。在电视遥控器上,切换画中画模式或其他窗口功能。在 Android Wear 设备上,触发显示偏移。
3331 pub const KEYCODE_WINDOW: i32 = 171;
3332
3333 /// 键码常量:指南键。在电视遥控器上,显示节目指南。
3334 pub const KEYCODE_GUIDE: i32 = 172;
3335
3336 /// 键码常量:DVR 键。在某些电视遥控器上,切换到录制的节目的 DVR 模式。
3337 pub const KEYCODE_DVR: i32 = 173;
3338
3339 /// 键码常量:书签键。在某些电视遥控器上,用于标记内容或网页为书签。
3340 pub const KEYCODE_BOOKMARK: i32 = 174;
3341
3342 /// 键码常量:切换字幕键。在电视节目期间,切换闭路字幕文本的模式。
3343 pub const KEYCODE_CAPTIONS: i32 = 175;
3344
3345 /// 键码常量:设置键。启动系统设置活动。
3346 pub const KEYCODE_SETTINGS: i32 = 176;
3347
3348 /// 键码常量:语言切换键。切换当前输入语言,例如在 QWERTY 键盘上切换英语和日语。在某些设备上,按 Shift+空格键可以执行相同的功能。
3349 pub const KEYCODE_LANGUAGE_SWITCH: i32 = 204;
3350
3351 /// 键码常量:电视电源键。在HDMI电视面板设备和不支持HDMI的Android TV设备上,切换设备的电源状态。在HDMI源设备上,通过HDMI-CEC切换HDMI连接电视的电源状态,并使源设备跟随此电源状态。
3352 pub const KEYCODE_TV_POWER: i32 = 177;
3353
3354 /// 键码常量:电视输入键。在电视遥控器上,在电视屏幕上切换输入。
3355 pub const KEYCODE_TV_INPUT: i32 = 178;
3356
3357 /// 键码常量:机顶盒电源键。在电视遥控器上,切换外部机顶盒的电源。
3358 pub const KEYCODE_STB_POWER: i32 = 179;
3359
3360 /// 键码常量:机顶盒输入键。在电视遥控器上,切换外部机顶盒的输入模式。
3361 pub const KEYCODE_STB_INPUT: i32 = 180;
3362
3363 /// 键码常量:A/V接收器电源键。在电视遥控器上,切换外部A/V接收器的电源。
3364 pub const KEYCODE_AVR_POWER: i32 = 181;
3365
3366 /// 键码常量:A/V接收器输入键。在电视遥控器上,切换外部A/V接收器的输入模式。
3367 pub const KEYCODE_AVR_INPUT: i32 = 182;
3368
3369 /// 键码常量:红色“可编程”键。在电视遥控器上,作为上下文/可编程键使用。
3370 pub const KEYCODE_PROG_RED: i32 = 183;
3371
3372 /// 键码常量:黄色“可编程”键。在电视遥控器上,作为上下文/可编程键使用。
3373 pub const KEYCODE_PROG_YELLOW: i32 = 185;
3374
3375 /// 键码常量:蓝色“可编程”键。在电视遥控器上,作为上下文/可编程键使用。
3376 pub const KEYCODE_PROG_BLUE: i32 = 186;
3377
3378 /// 键码常量:应用程序切换键。应该显示应用程序切换器对话框。
3379 pub const KEYCODE_APP_SWITCH: i32 = 187;
3380
3381 /// 键码常量:通用游戏板按钮#1。
3382 pub const KEYCODE_BUTTON_1: i32 = 188;
3383
3384 /// 键码常量:通用游戏板按钮#2。
3385 pub const KEYCODE_BUTTON_2: i32 = 189;
3386
3387 //noinspection SpellCheckingInspection
3388 /// 键码常量:日语全角/半角键。
3389 pub const KEYCODE_ZENKAKU_HANKAKU: i32 = 211;
3390
3391 //noinspection SpellCheckingInspection
3392 /// 键码常量:日语字母数字键。
3393 pub const KEYCODE_EISU: i32 = 212;
3394
3395 //noinspection SpellCheckingInspection
3396 /// 键码常量:日语非转换键。
3397 pub const KEYCODE_MUHENKAN: i32 = 213;
3398
3399 //noinspection SpellCheckingInspection
3400 /// 键码常量:日语转换键。
3401 pub const KEYCODE_HENKAN: i32 = 214;
3402
3403 /// 键码常量:通用游戏板按钮#3。
3404 pub const KEYCODE_BUTTON_3: i32 = 190;
3405
3406 /// 键码常量:通用游戏板按钮#4。
3407 pub const KEYCODE_BUTTON_4: i32 = 191;
3408
3409 /// 键码常量:通用游戏板按钮#5。
3410 pub const KEYCODE_BUTTON_5: i32 = 192;
3411
3412 /// 键码常量:通用游戏板按钮#6。
3413 pub const KEYCODE_BUTTON_6: i32 = 193;
3414
3415 /// 键码常量:通用游戏板按钮#7。
3416 pub const KEYCODE_BUTTON_7: i32 = 194;
3417
3418 /// 键码常量:通用游戏板按钮#8。
3419 pub const KEYCODE_BUTTON_8: i32 = 195;
3420
3421 /// 键码常量:通用游戏板按钮#9。
3422 pub const KEYCODE_BUTTON_9: i32 = 196;
3423
3424 /// 键码常量:通用游戏板按钮#10。
3425 pub const KEYCODE_BUTTON_10: i32 = 197;
3426
3427 /// 键码常量:通用游戏板按钮#11。
3428 pub const KEYCODE_BUTTON_11: i32 = 198;
3429
3430 /// 键码常量:通用游戏板按钮#12。
3431 pub const KEYCODE_BUTTON_12: i32 = 199;
3432
3433 /// 键码常量:通用游戏板按钮#13。
3434 pub const KEYCODE_BUTTON_13: i32 = 200;
3435
3436 /// 键码常量:通用游戏板按钮#14。
3437 pub const KEYCODE_BUTTON_14: i32 = 201;
3438
3439 /// 键码常量:通用游戏板按钮#15。
3440 pub const KEYCODE_BUTTON_15: i32 = 202;
3441
3442 /// 键码常量:通用游戏板按钮#16。
3443 pub const KEYCODE_BUTTON_16: i32 = 203;
3444
3445 /// 键码常量:礼仪模式键。在某些设置(如在拥挤的火车上)中,打开和关闭静音或振动模式,使设备表现得更加礼貌。在某些设备上,此键可能仅在长按时才有效。
3446 pub const KEYCODE_MANNER_MODE: i32 = 205;
3447
3448 /// 键码常量:3D模式键。在2D和3D模式之间切换显示。
3449 pub const KEYCODE_3D_MODE: i32 = 206;
3450
3451 /// 键码常量:联系人特殊功能键。用于启动地址簿应用程序。
3452 pub const KEYCODE_CONTACTS: i32 = 207;
3453
3454 /// 键码常量:日历特殊功能键。用于启动日历应用程序。
3455 pub const KEYCODE_CALENDAR: i32 = 208;
3456
3457 /// 键码常量:音轨键。切换音轨。
3458 pub const KEYCODE_MEDIA_AUDIO_TRACK: i32 = 222;
3459
3460 /// 键码常量:睡眠键。使设备进入睡眠状态。行为类似于 KEYCODE_POWER,但如果设备已处于睡眠状态,则不起作用。
3461 pub const KEYCODE_SLEEP: i32 = 223;
3462
3463 /// 键码常量:唤醒键。唤醒设备。行为有点类似于 KEYCODE_POWER,但如果设备已唤醒,则不起作用。
3464 pub const KEYCODE_WAKEUP: i32 = 224;
3465
3466 /// 键码常量:音乐特殊功能键。用于启动音乐播放器应用程序。
3467 pub const KEYCODE_MUSIC: i32 = 209;
3468
3469 /// 键码常量:计算器特殊功能键。用于启动计算器应用程序。
3470 pub const KEYCODE_CALCULATOR: i32 = 210;
3471
3472 /// 键码常量:日本假名/平假名键。
3473 pub const KEYCODE_KATAKANA_HIRAGANA: i32 = 215;
3474
3475 /// 键码常量:日本日元键。
3476 pub const KEYCODE_YEN: i32 = 216;
3477
3478 /// 键码常量:日本Ro键。
3479 pub const KEYCODE_RO: i32 = 217;
3480
3481 /// 键码常量:日本假名键。
3482 pub const KEYCODE_KANA: i32 = 218;
3483
3484 /// 键码常量:辅助键。启动全局辅助活动。不会传递给应用程序。
3485 pub const KEYCODE_ASSIST: i32 = 219;
3486
3487 /// 键码常量:亮度减小键。降低屏幕亮度。
3488 pub const KEYCODE_BRIGHTNESS_DOWN: i32 = 220;
3489
3490 /// 键码常量:亮度增大键。提高屏幕亮度。
3491 pub const KEYCODE_BRIGHTNESS_UP: i32 = 221;
3492
3493 /// 键码常量:配对键。启动外设配对模式。对于配对遥控器或游戏控制器特别有用,尤其是如果没有其他输入模式可用时。
3494 pub const KEYCODE_PAIRING: i32 = 225;
3495
3496 /// 键码常量:媒体顶层菜单键。跳转到媒体菜单的顶部。
3497 pub const KEYCODE_MEDIA_TOP_MENU: i32 = 226;
3498
3499 /// 键码常量:‘11’键。
3500 pub const KEYCODE_11: i32 = 227;
3501
3502 /// 键码常量:“12”键。
3503 pub const KEYCODE_12: i32 = 228;
3504
3505 /// 键码常量:上一个频道键。跳转到最后一个观看的频道。
3506 pub const KEYCODE_LAST_CHANNEL: i32 = 229;
3507
3508 /// 键码常量:电视数据服务键。显示数据服务,如天气、体育等。
3509 pub const KEYCODE_TV_DATA_SERVICE: i32 = 230;
3510
3511 /// 键码常量:语音助手键。启动全局语音助手活动。不会传递给应用程序。
3512 pub const KEYCODE_VOICE_ASSIST: i32 = 231;
3513
3514 /// 键码常量:收音机键。切换电视服务/收音机服务。
3515 pub const KEYCODE_TV_RADIO_SERVICE: i32 = 232;
3516
3517 /// 键码常量:电视图文键。显示电视图文服务。
3518 pub const KEYCODE_TV_TELETEXT: i32 = 233;
3519
3520 /// 键码常量:数字输入键。当每个数字键被分配用于选择单独的频道时,启动输入多位频道号。对应于 CEC 用户控制代码的数字输入模式 (0x1D)。
3521 pub const KEYCODE_TV_NUMBER_ENTRY: i32 = 234;
3522
3523 /// 键码常量:模拟地面广播键。切换到模拟地面广播服务。
3524 pub const KEYCODE_TV_TERRESTRIAL_ANALOG: i32 = 235;
3525
3526 /// 键码常量:数字地面广播键。切换到数字地面广播服务。
3527 pub const KEYCODE_TV_TERRESTRIAL_DIGITAL: i32 = 236;
3528
3529 /// 键码常量:卫星键。切换到数字卫星广播服务。
3530 pub const KEYCODE_TV_SATELLITE: i32 = 237;
3531
3532 /// 键码常量:BS键。切换到日本可用的BS数字卫星广播服务。
3533 pub const KEYCODE_TV_SATELLITE_BS: i32 = 238;
3534
3535 /// 键码常量:CS键。切换到日本可用的CS数字卫星广播服务。
3536 pub const KEYCODE_TV_SATELLITE_CS: i32 = 239;
3537
3538 /// 键码常量:BS/CS键。在BS和CS数字卫星服务之间切换。
3539 pub const KEYCODE_TV_SATELLITE_SERVICE: i32 = 240;
3540
3541 /// 键码常量:切换网络键。切换选择广播服务。
3542 pub const KEYCODE_TV_NETWORK: i32 = 241;
3543
3544 /// 键码常量:天线/电缆键。在天线和电缆之间切换广播输入源。
3545 pub const KEYCODE_TV_ANTENNA_CABLE: i32 = 242;
3546
3547 /// 键码常量:HDMI #1 键。切换到 HDMI 输入 #1。
3548 pub const KEYCODE_TV_INPUT_HDMI_1: i32 = 243;
3549
3550 /// 键码常量:HDMI #2 键。切换到 HDMI 输入 #2。
3551 pub const KEYCODE_TV_INPUT_HDMI_2: i32 = 244;
3552
3553 /// 键码常量:HDMI #3 键。切换到 HDMI 输入 #3。
3554 pub const KEYCODE_TV_INPUT_HDMI_3: i32 = 245;
3555
3556 /// 键码常量:HDMI #4 键。切换到 HDMI 输入 #4。
3557 pub const KEYCODE_TV_INPUT_HDMI_4: i32 = 246;
3558
3559 /// 键码常量:复合 #1 键。切换到复合视频输入 #1。
3560 pub const KEYCODE_TV_INPUT_COMPOSITE_1: i32 = 247;
3561
3562 /// 键码常量:复合 #2 键。切换到复合视频输入 #2。
3563 pub const KEYCODE_TV_INPUT_COMPOSITE_2: i32 = 248;
3564
3565 /// 键码常量:分量 #1 键。切换到分量视频输入 #1。
3566 pub const KEYCODE_TV_INPUT_COMPONENT_1: i32 = 249;
3567
3568 /// 键码常量:分量 #2 键。切换到分量视频输入 #2。
3569 pub const KEYCODE_TV_INPUT_COMPONENT_2: i32 = 250;
3570
3571 /// 键码常量:VGA #1 键。切换到 VGA(模拟 RGB)输入 #1。
3572 pub const KEYCODE_TV_INPUT_VGA_1: i32 = 251;
3573
3574 /// 键码常量:音频描述键。开启/关闭音频描述。
3575 pub const KEYCODE_TV_AUDIO_DESCRIPTION: i32 = 252;
3576
3577 /// 键码常量:音频描述混合音量调高键。与正常音频音量相比,增大音频描述音量。
3578 pub const KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: i32 = 253;
3579
3580 /// 键码常量:音频描述混音音量减小键。与正常音频音量相比,降低音频描述音量。
3581 pub const KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: i32 = 254;
3582
3583 /// 键码常量:缩放模式键。更改缩放模式(正常、全屏、缩放、宽缩放等)
3584 pub const KEYCODE_TV_ZOOM_MODE: i32 = 255;
3585
3586 /// 键码常量:内容菜单键。进入标题列表。对应于CEC用户控制代码的“内容菜单”(0x0B)
3587 pub const KEYCODE_TV_CONTENTS_MENU: i32 = 256;
3588
3589 /// 键码常量:媒体上下文菜单键。进入媒体内容的上下文菜单。对应于CEC用户控制代码的“媒体上下文相关菜单”(0x11)。
3590 pub const KEYCODE_TV_MEDIA_CONTEXT_MENU: i32 = 257;
3591
3592 /// 键码常量:定时器编程键。进入定时器录制菜单。对应于CEC用户控制代码的“定时器编程”(0x54)。
3593 pub const KEYCODE_TV_TIMER_PROGRAMMING: i32 = 258;
3594
3595 /// 键码常量:帮助键。
3596 pub const KEYCODE_HELP: i32 = 259;
3597
3598 /// 键码常量:导航到上一个键。在有序的项目集合中向后移动一个项目。
3599 pub const KEYCODE_NAVIGATE_PREVIOUS: i32 = 260;
3600
3601 /// 键码常量:导航到下一个键。在有序的项目集合中前进到下一个项目。
3602 pub const KEYCODE_NAVIGATE_NEXT: i32 = 261;
3603
3604 /// 键码常量:导航进入键。激活当前具有焦点的项目或展开到导航层级的下一个级别。
3605 pub const KEYCODE_NAVIGATE_IN: i32 = 262;
3606
3607 /// 键码常量:导航退出键。退出导航层级的一个级别或折叠当前具有焦点的项目。
3608 pub const KEYCODE_NAVIGATE_OUT: i32 = 263;
3609
3610 /// 键码常量:Wear手表上的主要电源/重置按钮的主要茎键。
3611 pub const KEYCODE_STEM_PRIMARY: i32 = 264;
3612
3613 /// 键码常量:Wear的通用茎键1
3614 pub const KEYCODE_STEM_1: i32 = 265;
3615
3616 //noinspection SpellCheckingInspection
3617 /// 键码常量:方向键向上-向左
3618 pub const KEYCODE_DPAD_UP_LEFT: i32 = 268;
3619
3620 //noinspection SpellCheckingInspection
3621 /// 键码常量:方向键向下向左
3622 pub const KEYCODE_DPAD_DOWN_LEFT: i32 = 269;
3623
3624 //noinspection SpellCheckingInspection
3625 /// 键码常量:方向键右上
3626 pub const KEYCODE_DPAD_UP_RIGHT: i32 = 270;
3627
3628 //noinspection SpellCheckingInspection
3629 /// 键码常量:方向键右下
3630 pub const KEYCODE_DPAD_DOWN_RIGHT: i32 = 271;
3631
3632 /// 键码常量:Wear 的通用茎键 2
3633 pub const KEYCODE_STEM_2: i32 = 266;
3634
3635 /// 键码常量:Wear 的通用茎键 3
3636 pub const KEYCODE_STEM_3: i32 = 267;
3637
3638 /// 键码常量:跳过向前的媒体键。
3639 pub const KEYCODE_MEDIA_SKIP_FORWARD: i32 = 272;
3640
3641 /// 键码常量:跳过向后的媒体键。
3642 pub const KEYCODE_MEDIA_SKIP_BACKWARD: i32 = 273;
3643
3644 /// 键码常量:逐帧向前媒体键。每次向前移动一帧媒体。
3645 pub const KEYCODE_MEDIA_STEP_FORWARD: i32 = 274;
3646
3647 /// 键码常量:逐帧向后媒体键。每次向后移动一帧媒体。
3648 pub const KEYCODE_MEDIA_STEP_BACKWARD: i32 = 275;
3649
3650 /// 键码常量:除非持有唤醒锁,否则使设备进入休眠状态。
3651 pub const KEYCODE_SOFT_SLEEP: i32 = 276;
3652
3653 /// 键码常量:剪切键。
3654 pub const KEYCODE_CUT: i32 = 277;
3655
3656 /// 键码常量:复制键。
3657 pub const KEYCODE_COPY: i32 = 278;
3658
3659 /// 键码常量:粘贴键。
3660 pub const KEYCODE_PASTE: i32 = 279;
3661
3662 /// 键码常量:由系统用于向上导航
3663 pub const KEYCODE_SYSTEM_NAVIGATION_UP: i32 = 280;
3664
3665 /// 键码常量:由系统用于向下导航
3666 pub const KEYCODE_SYSTEM_NAVIGATION_DOWN: i32 = 281;
3667
3668 /// 键码常量:由系统用于向左导航
3669 pub const KEYCODE_SYSTEM_NAVIGATION_LEFT: i32 = 282;
3670
3671 /// 键码常量:由系统用于向右导航
3672 pub const KEYCODE_SYSTEM_NAVIGATION_RIGHT: i32 = 283;
3673
3674 /// 键码常量:显示所有应用
3675 pub const KEYCODE_ALL_APPS: i32 = 284;
3676
3677 /// 键码常量:刷新键。
3678 pub const KEYCODE_REFRESH: i32 = 285;
3679
3680 /// 键码常量:点赞键。应用可以使用此键让用户对内容进行点赞。
3681 pub const KEYCODE_THUMBS_UP: i32 = 286;
3682
3683 /// 键码常量:反对键。应用可利用此功能让用户反对内容。
3684 pub const KEYCODE_THUMBS_DOWN: i32 = 287;
3685
3686 /// 键码常量:用于切换当前正在使用内容的 android.accounts.Account。系统可能会使用该代码来全局设置账户。
3687 pub const KEYCODE_PROFILE_SWITCH: i32 = 288;
3688
3689 /// 键码常量:视频应用键 #1。
3690 pub const KEYCODE_VIDEO_APP_1: i32 = 289;
3691
3692 /// 键码常量:视频应用键 #2。
3693 pub const KEYCODE_VIDEO_APP_2: i32 = 290;
3694
3695 /// 键码常量:视频应用键 #3。
3696 pub const KEYCODE_VIDEO_APP_3: i32 = 291;
3697
3698 /// 键码常量:视频应用键 #4。
3699 pub const KEYCODE_VIDEO_APP_4: i32 = 292;
3700
3701 /// 键码常量:视频应用键 #5。
3702 pub const KEYCODE_VIDEO_APP_5: i32 = 293;
3703
3704 /// 键码常量:视频应用键 #6。
3705 pub const KEYCODE_VIDEO_APP_6: i32 = 294;
3706
3707 /// 键码常量:视频应用键 #7。
3708 pub const KEYCODE_VIDEO_APP_7: i32 = 295;
3709
3710 /// 键码常量:视频应用键 #8。
3711 pub const KEYCODE_VIDEO_APP_8: i32 = 296;
3712
3713 /// 键码常量:特色应用键 #1。
3714 pub const KEYCODE_FEATURED_APP_1: i32 = 297;
3715
3716 /// 键码常量:特色应用键 #2。
3717 pub const KEYCODE_FEATURED_APP_2: i32 = 298;
3718
3719 /// 键码常量:特色应用键 #3。
3720 pub const KEYCODE_FEATURED_APP_3: i32 = 299;
3721
3722 /// 键码常量:特色应用键 #4。
3723 pub const KEYCODE_FEATURED_APP_4: i32 = 300;
3724
3725 /// 键码常量:演示应用键 #1。
3726 pub const KEYCODE_DEMO_APP_1: i32 = 301;
3727
3728 /// 键码常量:演示应用键 #2。
3729 pub const KEYCODE_DEMO_APP_2: i32 = 302;
3730
3731 /// 键码常量:演示应用键 #3。
3732 pub const KEYCODE_DEMO_APP_3: i32 = 303;
3733
3734 /// 键码常量:演示应用键 #4。
3735 pub const KEYCODE_DEMO_APP_4: i32 = 304;
3736
3737 /// 键码常量:键盘背光调暗
3738 pub const KEYCODE_KEYBOARD_BACKLIGHT_DOWN: i32 = 305;
3739
3740 /// 键码常量:键盘背光调亮
3741 pub const KEYCODE_KEYBOARD_BACKLIGHT_UP: i32 = 306;
3742
3743 /// 键码常量:键盘背光切换
3744 pub const KEYCODE_KEYBOARD_BACKLIGHT_TOGGLE: i32 = 307;
3745
3746 /// 键码常量:触控笔笔杆上的主要按钮。这通常是最靠近触控笔尖的按钮。
3747 pub const KEYCODE_STYLUS_BUTTON_PRIMARY: i32 = 308;
3748
3749 /// 键码常量:触控笔笔杆上的第二个按钮。这通常是从触控笔尖算起的第二个按钮。
3750 pub const KEYCODE_STYLUS_BUTTON_SECONDARY: i32 = 309;
3751
3752 /// 键码常量:触控笔笔杆上的第三个按钮。这通常是从触控笔尖开始的第三个按钮。
3753 pub const KEYCODE_STYLUS_BUTTON_TERTIARY: i32 = 310;
3754
3755 /// 键码常量:触控笔尾部的按钮。此按钮的使用通常与橡皮擦的功能无关。
3756 pub const KEYCODE_STYLUS_BUTTON_TAIL: i32 = 311;
3757
3758 /// 键码常量:打开最近使用的应用程序视图(又称概览)。此键由框架处理,永远不会传递给应用程序。
3759 pub const KEYCODE_RECENT_APPS: i32 = 312;
3760
3761 /// 键码常量:用户可以通过系统自定义其用途的按钮。用户可自定义键 #1。
3762 pub const KEYCODE_MACRO_1: i32 = 313;
3763
3764 /// 键码常量:用户可以通过系统自定义其用途的按钮。用户可自定义键 #2。
3765 pub const KEYCODE_MACRO_2: i32 = 314;
3766
3767 /// 键码常量:用户可以通过系统自定义其用途的按钮。用户可自定义键 #3。
3768 pub const KEYCODE_MACRO_3: i32 = 315;
3769
3770 /// 键码常量:用户可以通过系统自定义其用途的按钮。用户可自定义键 #4。
3771 pub const KEYCODE_MACRO_4: i32 = 316;
3772
3773 /// 最后一个 KEYCODE 的整数值。随着新的键码添加到 KeyEvent,该值会增加。
3774 pub const LAST_KEYCODE: i32 = Self::KEYCODE_MACRO_4;
3775
3776 #[doc(hidden)]
3777 #[deprecated(note = "现在键码数量已超过 MAX_KEYCODE。请使用 getMaxKeyCode()。")]
3778 pub const MAX_KEYCODE: i32 = 84;
3779
3780 /// getAction值:该键已被按下。
3781 pub const ACTION_DOWN: i32 = 0;
3782
3783 /// getAction 值:按键已被释放。
3784 pub const ACTION_UP: i32 = 1;
3785
3786 #[doc(hidden)]
3787 #[deprecated(
3788 note = "输入系统不再使用。getAction 值:连续发生多个重复按键事件,或者正在传递复杂字符串。如果按键代码不是 KEYCODE_UNKNOWN,则 getRepeatCount() 方法返回应执行给定按键代码的次数。否则,如果按键代码是 KEYCODE_UNKNOWN,则这是 getCharacters 返回的字符序列。"
3789 )]
3790 pub const ACTION_MULTIPLE: i32 = 2;
3791
3792 /// SHIFT 键在 CAPS 模式下锁定。保留供 MetaKeyKeyListener 用于其 API 中已发布的常量。
3793 pub const META_CAP_LOCKED: i32 = 0x100;
3794
3795 /// ALT 键已锁定。保留供 MetaKeyKeyListener 用于其 API 中已发布的常量。
3796 pub const META_ALT_LOCKED: i32 = 0x200;
3797
3798 /// SYM 键已锁定。保留供 MetaKeyKeyListener 用于其 API 中已发布的常量。
3799 pub const META_SYM_LOCKED: i32 = 0x400;
3800
3801 /// 文本处于选择模式。保留供 MetaKeyKeyListener 使用,用于其 API 中未发布的私有常量,目前由于遗留原因而保留。
3802 pub const META_SELECTING: i32 = 0x800;
3803
3804 /// 此掩码用于检查是否按下了 ALT 元键之一。
3805 pub const META_ALT_ON: i32 = 0x02;
3806
3807 /// 此掩码用于检查左边 ALT 元键是否被按下。
3808 pub const META_ALT_LEFT_ON: i32 = 0x10;
3809
3810 /// 此掩码用于检查是否按下了右边 ALT 元键。
3811 pub const META_ALT_RIGHT_ON: i32 = 0x20;
3812
3813 /// 此掩码用于检查是否按下了 SHIFT 元键之一。
3814 pub const META_SHIFT_ON: i32 = 0x1;
3815
3816 /// 此掩码用于检查左 SHIFT 元键是否被按下。
3817 pub const META_SHIFT_LEFT_ON: i32 = 0x40;
3818
3819 /// 此掩码用于检查是否按下了右 SHIFT 元键。
3820 pub const META_SHIFT_RIGHT_ON: i32 = 0x80;
3821
3822 /// 此掩码用于检查 SYM 元键是否被按下。
3823 pub const META_SYM_ON: i32 = 0x4;
3824
3825 /// 此掩码用于检查 FUNCTION 元键是否被按下。
3826 pub const META_FUNCTION_ON: i32 = 0x8;
3827
3828 /// 此掩码用于检查是否按下了 CTRL 元键之一。
3829 pub const META_CTRL_ON: i32 = 0x1000;
3830
3831 /// 此掩码用于检查左边 CTRL 元键是否被按下。
3832 pub const META_CTRL_LEFT_ON: i32 = 0x2000;
3833
3834 /// 此掩码用于检查是否按下了右边 CTRL 元键。
3835 pub const META_CTRL_RIGHT_ON: i32 = 0x4000;
3836
3837 /// 此掩码用于检查是否按下了 META 元键之一。
3838 pub const META_META_ON: i32 = 0x10000;
3839
3840 /// 该掩码用于检查左META键是否按下。
3841 pub const META_META_LEFT_ON: i32 = 0x20000;
3842
3843 /// 此掩码用于检查是否按下了正确的 META 元键。
3844 pub const META_META_RIGHT_ON: i32 = 0x40000;
3845
3846 /// 此掩码用于检查 CAPS LOCK 元键是否打开。
3847 pub const META_CAPS_LOCK_ON: i32 = 0x100000;
3848
3849 /// 此掩码用于检查 NUM LOCK 元键是否打开。
3850 pub const META_NUM_LOCK_ON: i32 = 0x200000;
3851
3852 /// 此掩码用于检查 SCROLL LOCK 元键是否打开。
3853 pub const META_SCROLL_LOCK_ON: i32 = 0x400000;
3854
3855 /// 此掩码是 META_SHIFT_ON、META_SHIFT_LEFT_ON 和 META_SHIFT_RIGHT_ON 的组合。
3856 pub const META_SHIFT_MASK: i32 =
3857 Self::META_SHIFT_ON | Self::META_SHIFT_LEFT_ON | Self::META_SHIFT_RIGHT_ON;
3858
3859 /// 此掩码是 META_ALT_ON、META_ALT_LEFT_ON 和 META_ALT_RIGHT_ON 的组合。
3860 pub const META_ALT_MASK: i32 =
3861 Self::META_ALT_ON | Self::META_ALT_LEFT_ON | Self::META_ALT_RIGHT_ON;
3862
3863 /// 此掩码是 META_CTRL_ON、META_CTRL_LEFT_ON 和 META_CTRL_RIGHT_ON 的组合。
3864 pub const META_CTRL_MASK: i32 =
3865 Self::META_CTRL_ON | Self::META_CTRL_LEFT_ON | Self::META_CTRL_RIGHT_ON;
3866
3867 /// 此掩码是 META_META_ON、META_META_LEFT_ON 和 META_META_RIGHT_ON 的组合。
3868 pub const META_META_MASK: i32 =
3869 Self::META_META_ON | Self::META_META_LEFT_ON | Self::META_META_RIGHT_ON;
3870
3871 /// 如果设备由于该键事件而被唤醒,则设置此掩码。
3872 #[deprecated(note = "由于系统本身会消耗所有唤醒键,因此系统永远不会设置此标志。")]
3873 pub const FLAG_WOKE_HERE: u32 = 0x1;
3874
3875 /// 如果键事件是由软件键盘生成的,则设置此掩码。
3876 pub const FLAG_SOFT_KEYBOARD: u32 = 0x2;
3877
3878 /// 如果我们不希望按键事件导致我们离开触摸模式,则设置此掩码。
3879 pub const FLAG_KEEP_TOUCH_MODE: u32 = 0x4;
3880
3881 /// 如果已知事件来自系统的可信部分,则设置此掩码。也就是说,已知事件来自用户,并且不可能被第三方组件欺骗。
3882 pub const FLAG_FROM_SYSTEM: u32 = 0x8;
3883
3884 /// 此掩码用于兼容性,以识别来自 IME 的输入键,该 IME 的输入键已自动标记为“下一个”或“完成”。这允许 TextView 将这些输入键作为旧应用程序的正常输入键进行分派,但在收到这些输入键时仍会执行适当的操作。
3885 pub const FLAG_EDITOR_ACTION: u32 = 0x10;
3886
3887 /// 当与向上键事件相关联时,这表示按键已被取消。这通常用于虚拟触摸屏按键,用户可以从虚拟按键区域滑动到显示屏上:在这种情况下,应用程序将收到已取消的向上事件,并且不应执行通常与按键相关联的操作。
3888 /// 请注意,要使此功能正常工作,应用程序在收到向上事件或长按超时已过期之前不能对按键执行操作。
3889 pub const FLAG_CANCELED: u32 = 0x20;
3890
3891 /// 此按键事件由虚拟(屏幕上)硬键区域生成。通常,这是触摸屏上常规显示屏之外的区域,专用于“硬件”按钮。
3892 pub const FLAG_VIRTUAL_HARD_KEY: u32 = 0x40;
3893
3894 /// 此标志是为长按超时后发生的第一次按键重复设置的。
3895 pub const FLAG_LONG_PRESS: u32 = 0x80;
3896
3897 /// 当按键事件因按下时执行长按动作而设置了 FLAG_CANCELED 时设置。
3898 pub const FLAG_CANCELED_LONG_PRESS: u32 = 0x100;
3899
3900 /// 当此事件的按键代码从其初始按下时仍在被跟踪时,设置为 ACTION_UP。也就是说,有人请求在按键按下时开始跟踪,并且长按不会导致跟踪被取消。
3901 pub const FLAG_TRACKING: u32 = 0x200;
3902
3903 /// 当合成按键事件以实现应用未处理的事件的默认行为时设置。后备按键事件由未处理的轨迹球运动(用于模拟方向键盘)和按键映射中声明的某些未处理的按键(例如,当 NumLock 关闭时的特殊功能数字键盘键)生成。
3904 pub const FLAG_FALLBACK: u32 = 0x400;
3905
3906 /// 此标志表示此事件由无障碍服务修改或生成。值 = 0x800
3907 pub const FLAG_IS_ACCESSIBILITY_EVENT: u32 = 0x800;
3908
3909 //noinspection SpellCheckingInspection
3910 /// 表示密钥正在被预先分派。
3911 pub const FLAG_PREDISPATCH: u32 = 0x20000000;
3912
3913 /// 私人控制,用于确定应用程序何时跟踪按键序列。
3914 pub const FLAG_START_TRACKING: u32 = 0x40000000;
3915
3916 /// 私有标志,指示系统何时检测到此按键事件可能与先前传送的按键事件的顺序不一致,例如,当发送了按键释放事件但按键并未按下时。
3917 pub const FLAG_TAINTED: u32 = 0x80000000;
3918
3919 /// 返回最大键码。
3920 #[java_method]
3921 pub fn get_max_key_code() -> i32 {}
3922
3923 /// 获取在字符 c 上添加重音后生成的字符。例如,getDeadChar('`', 'e') 返回 è。
3924 #[java_method]
3925 pub fn get_dead_char(accent: i32, c: i32) -> i32 {}
3926
3927 /**
3928 创建一个新的按键事件。
3929 `action` 操作代码:ACTION_DOWN、ACTION_UP 或 ACTION_MULTIPLE。
3930 `code` 按键代码。
3931 */
3932 #[java_constructor]
3933 pub fn new(action: i32, code: i32) -> Self {}
3934
3935 /**
3936 创建一个新的按键事件。
3937 `down_time` 此按键代码最初按下的时间(以 android.os.SystemClock.uptimeMillis 为单位)。
3938 `event_time` 此事件发生的时间(以 android.os.SystemClock.uptimeMillis 为单位)。
3939 `action` 操作代码:ACTION_DOWN、ACTION_UP 或 ACTION_MULTIPLE。
3940 `code` 按键代码。
3941 `repeat` 按下事件的重复计数(如果是在首次按下之后,则 > 0)或多个事件的事件计数。
3942 */
3943 #[java_constructor]
3944 pub fn new_with_time(
3945 down_time: i64,
3946 event_time: i64,
3947 action: i32,
3948 code: i32,
3949 repeat: i32,
3950 ) -> Self {
3951 }
3952
3953 /// 获取(可能回收的)按键事件。
3954 #[java_method]
3955 pub fn obtain(
3956 down_time: i64,
3957 event_time: i64,
3958 action: i32,
3959 code: i32,
3960 repeat: i32,
3961 meta_state: i32,
3962 device_id: i32,
3963 scan_code: i32,
3964 flags: u32,
3965 source: i32,
3966 display_id: i32,
3967 characters: String,
3968 ) -> Self {
3969 }
3970
3971 /// 获取另一个关键事件的副本(可能被回收)。
3972 #[java_method]
3973 pub fn obtain_other(other: &Self) -> Self {}
3974
3975 /**
3976 创建与给定事件相同的新按键事件,但其事件时间和重复次数将替换为给定值。
3977 `event` 要复制的现有事件。这不会被修改。
3978 `event_time` 事件的新事件时间(以 android.os.SystemClock.uptimeMillis 为单位)。
3979 `new_repeat` 事件的新重复次数。
3980 */
3981 #[java_method]
3982 pub fn change_time_repeat(event: &Self, event_time: i64, new_repeat: i32) -> Self {}
3983
3984 /**
3985 创建与给定事件相同的新键事件,但其事件时间和重复次数将替换为给定值。
3986 `event` 要复制的现有事件。这不会被修改。
3987 `event_time` 事件的新事件时间(以 android.os.SystemClock.uptimeMillis 为单位)。
3988 `new_repeat` 事件的新重复次数。
3989 `new_flags` 事件的新标志,替换原始事件中的整个值。
3990 */
3991 #[java_method]
3992 pub fn change_time_repeat_with_flags(
3993 event: &Self,
3994 event_time: i64,
3995 new_repeat: i32,
3996 new_flags: u32,
3997 ) -> Self {
3998 }
3999
4000 /**
4001 创建一个与给定事件相同的新键事件,但其操作将替换为给定值。
4002 `event` 要复制的现有事件。这不会被修改。
4003 `action` 事件的新操作代码。
4004 */
4005 #[java_method]
4006 pub fn change_action(event: &Self, action: i32) -> Self {}
4007
4008 /**
4009 创建一个与给定事件相同的新键事件,但其标志将被替换为给定值。
4010 `event` 要复制的现有事件。这不会被修改。
4011 `flags` 新的标志常量。
4012 */
4013 #[java_method]
4014 pub fn change_flags(event: &Self, flags: u32) -> Self {}
4015
4016 /**
4017 返回:如果操作是 ACTION_DOWN,则返回 true;否则返回 false。
4018 */
4019 #[deprecated(note = "不要在新代码中使用,而是明确检查 getAction()。")]
4020 #[java_method]
4021 pub fn is_down(&self) -> bool {}
4022
4023 /**
4024 这是系统键吗?系统键不能用作菜单快捷键。
4025 */
4026 #[java_method]
4027 pub fn is_system(&self) -> bool {}
4028
4029 #[doc(hidden)]
4030 #[java_method(overload = isWakeKey)]
4031 pub fn is_wake(&self) -> bool {}
4032
4033 /**
4034 如果指定的键码是游戏手柄按钮,则返回 true。
4035 返回:如果键码是游戏手柄按钮(例如 KEYCODE_BUTTON_A),则返回 True。
4036 */
4037 #[java_method]
4038 pub fn is_gamepad_button(key_code: i32) -> bool {}
4039
4040 /**
4041 默认情况下,按键是否会触发对焦点视图的点击。
4042 */
4043 #[java_method]
4044 pub fn is_confirm_key(key_code: i32) -> bool {}
4045
4046 /**
4047 返回此键是否将被发送到android.media.session.MediaSession。若未处理则回调。
4048 */
4049 #[java_method]
4050 pub fn is_media_session_key(key_code: i32) -> bool {}
4051
4052 /// 这是系统键吗?系统键不能用作菜单快捷键。
4053 #[java_method]
4054 pub fn is_system_key(key_code: i32) -> bool {}
4055
4056 #[doc(hidden)]
4057 #[java_method]
4058 pub fn is_wake_key(key_code: i32) -> bool {}
4059
4060 #[doc(hidden)]
4061 #[java_method]
4062 pub fn is_meta_key(key_code: i32) -> bool {}
4063
4064 #[doc(hidden)]
4065 #[java_method]
4066 pub fn is_alt_key(key_code: i32) -> bool {}
4067
4068 #[doc(hidden)]
4069 #[java_method]
4070 pub fn get_device_id(&self) -> i32 {}
4071
4072 #[doc(hidden)]
4073 #[java_method]
4074 pub fn get_source(&self) -> i32 {}
4075
4076 #[doc(hidden)]
4077 #[java_method]
4078 pub fn set_source(&self, source: i32) {}
4079
4080 #[doc(hidden)]
4081 #[java_method]
4082 pub fn get_display_id(&self) -> i32 {}
4083
4084 #[doc(hidden)]
4085 #[java_method]
4086 pub fn set_display_id(&self, display_id: i32) {}
4087
4088 /// 返回元键的状态。
4089 /// 返回:一个整数,其中每个设置为 1 的位代表按下的元键
4090 #[java_method]
4091 pub fn get_meta_state(&self) -> i32 {}
4092
4093 /**
4094 返回修饰键的状态。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数专门屏蔽了 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。返回的值由使用 normalizeMetaState(int) 规范化的元状态(来自 getMetaState)组成,然后使用 getModifierMetaStateMask 进行屏蔽,以便仅保留有效的修饰位。
4095 返回:一个整数,其中设置为 1 的每个位代表按下的修饰键。
4096 */
4097 #[java_method]
4098 pub fn get_modifiers(&self) -> i32 {}
4099
4100 /**
4101 修改事件的标志。
4102 `new_flags` 事件的新标志,替换整个值。
4103 */
4104 #[java_method]
4105 pub fn set_flags(&self, new_flags: u32) {}
4106
4107 /**
4108 返回此键事件的标志。
4109 */
4110 #[java_method]
4111 pub fn get_flags(&self) -> i32 {}
4112
4113 /// 获取包含所有有效修饰键元状态位的掩码。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,掩码明确排除 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。
4114 /// 返回:修饰键元状态掩码,它是 META_SHIFT_ON、META_SHIFT_LEFT_ON、META_SHIFT_RIGHT_ON、META_ALT_ON、META_ALT_LEFT_ON、META_ALT_RIGHT_ON、META_CTRL_ON、META_CTRL_LEFT_ON、META_CTRL_RIGHT_ON、META_META_ON、META_META_LEFT_ON、META_META_RIGHT_ON、META_SYM_ON、META_FUNCTION_ON 的组合。
4115 #[java_method]
4116 pub fn get_modifier_meta_state_mask() -> i32 {}
4117
4118 /**
4119 如果此键码是修饰键,则返回 true。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数对这些键返回 false。
4120 返回:如果键码是 KEYCODE_SHIFT_LEFT、KEYCODE_SHIFT_RIGHT、KEYCODE_ALT_LEFT、KEYCODE_ALT_RIGHT、KEYCODE_CTRL_LEFT、KEYCODE_CTRL_RIGHT、KEYCODE_META_LEFT 或 KEYCODE_META_RIGHT、KEYCODE_SYM、KEYCODE_NUM、KEYCODE_FUNCTION 之一,则返回 True。
4121 */
4122 #[java_method]
4123 pub fn is_modifier_key(key_code: i32) -> bool {}
4124
4125 /**
4126 规范化指定的元状态。元状态被规范化,这样如果设置了左或右修饰符元状态位,则结果还将包括该修饰符的通用位。如果指定的元状态包含 META_ALT_LEFT_ON,则结果除了 META_ALT_LEFT_ON 和输入中指定的其他位之外,还将包含 META_ALT_ON。
4127 对 shift、control 和 meta 执行相同的过程。如果指定的元状态包含 MetaKeyKeyListener 定义的合成元状态,则这些状态将在此处转换,并从结果中删除原始合成元状态。MetaKeyKeyListener.META_CAP_LOCKED 转换为 META_CAPS_LOCK_ON。MetaKeyKeyListener.META_ALT_LOCKED 转换为 META_ALT_ON。MetaKeyKeyListener.META_SYM_LOCKED 转换为 META_SYM_ON。未定义的元状态位被删除。
4128 返回:规范化的元状态。
4129 `meta_state` 元状态。
4130 */
4131 #[java_method]
4132 pub fn normalize_meta_state(meta_state: i32) -> i32 {}
4133
4134 /**
4135 如果根据指定的元状态未按下任何修饰键,则返回 true。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数忽略 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。使用 normalizeMetaState(int) 比较之前,元状态已标准化。
4136 返回:如果没有按下任何修饰键,则返回 True。
4137 `meta_state` 要考虑的元状态。
4138 */
4139 #[java_method]
4140 pub fn meta_state_has_no_modifiers(meta_state: i32) -> bool {}
4141
4142 /**
4143 如果根据指定的元状态仅按下了指定的修饰键,则返回 true。如果按下了不同的修饰键组合,则返回 false。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数忽略 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。
4144 如果指定的修饰符掩码包括方向修饰符(例如 META_SHIFT_LEFT_ON),则此方法可确保在该侧按下修饰符。如果指定的修饰符掩码包括非方向修饰符(例如 META_SHIFT_ON),则此方法可确保在任一侧按下修饰符。如果指定的修饰符掩码包含同一类型键的方向和非方向修饰符,例如 META_SHIFT_ON 和 META_SHIFT_LEFT_ON,则此方法将抛出非法参数异常。
4145 返回:如果仅按下了指定的修饰键,则返回 True。
4146 抛出:IllegalArgumentException – 如果 modifiers 参数包含无效修饰符
4147 `meta_state` 要考虑的元状态。
4148 `modifiers` 要检查的修饰键的元状态。可能是 getModifierMetaStateMask() 定义的修饰符元状态的组合。可以为 0,以确保没有按下修饰键。
4149 */
4150 #[java_method]
4151 pub fn meta_state_has_modifiers(
4152 meta_state: i32,
4153 modifiers: i32,
4154 ) -> Result<bool, <Self as JType>::Error> {
4155 }
4156
4157 /**
4158 如果没有按下修饰键,则返回 true。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数忽略 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。
4159 使用 normalizeMetaState(int) 进行比较之前,元状态已标准化。
4160 返回:如果没有按下修饰键,则返回 True。
4161 */
4162 #[java_method]
4163 pub fn has_no_modifiers(&self) -> bool {}
4164
4165 /**
4166 如果仅按下了指定的修饰键,则返回 true。如果按下了不同的修饰键组合,则返回 false。就此函数而言,KEYCODE_CAPS_LOCK、KEYCODE_SCROLL_LOCK 和 KEYCODE_NUM_LOCK 不被视为修饰键。因此,此函数忽略 META_CAPS_LOCK_ON、META_SCROLL_LOCK_ON 和 META_NUM_LOCK_ON。
4167 如果指定的修饰符掩码包括方向修饰符(例如 META_SHIFT_LEFT_ON),则此方法可确保在该侧按下修饰符。如果指定的修饰符掩码包括非方向修饰符(例如 META_SHIFT_ON),则此方法可确保在任一侧按下修饰符。如果指定的修饰符掩码包括同一类型键的方向修饰符和非方向修饰符(例如 META_SHIFT_ON 和 META_SHIFT_LEFT_ON),则此方法将引发非法参数异常。
4168 返回:如果仅按下了指定的修饰键,则为 True。
4169 抛出:IllegalArgumentException – 如果 modifiers 参数包含无效修饰键
4170 `modifiers` 要检查的修饰键的元状态。可能是 getModifierMetaStateMask() 定义的修饰键元状态的组合。可能为 0,以确保未按下任何修饰键。
4171 */
4172 #[java_method]
4173 pub fn has_modifiers(&self, modifiers: i32) -> Result<bool, <Self as JType>::Error> {}
4174
4175 /**
4176 返回 ALT 元键的按下状态。如果按下了 ALT 键,则返回 true,否则返回 false
4177 */
4178 #[java_method]
4179 pub fn is_alt_pressed(&self) -> bool {}
4180
4181 /**
4182 返回 SHIFT 元键的按下状态。如果按下了 SHIFT 键,则返回 true,否则返回 false
4183 */
4184 #[java_method]
4185 pub fn is_shift_pressed(&self) -> bool {}
4186
4187 /**
4188 返回 SYM 元键的按下状态。
4189 返回:如果 SYM 键被按下,则返回 true,否则返回 false
4190 */
4191 #[java_method]
4192 pub fn is_sym_pressed(&self) -> bool {}
4193
4194 /**
4195 返回 CTRL 元键的按下状态。如果按下了 CTRL 键,则返回 true,否则返回 false
4196 */
4197 #[java_method]
4198 pub fn is_ctrl_pressed(&self) -> bool {}
4199
4200 /**
4201 返回 META 元键的按下状态。如果按下 META 键则返回 true,否则返回 false
4202 */
4203 #[java_method]
4204 pub fn is_meta_pressed(&self) -> bool {}
4205
4206 /**
4207 返回 FUNCTION 元键的按下状态。如果 FUNCTION 键被按下,则返回 true,否则返回 false
4208 */
4209 #[java_method]
4210 pub fn is_function_pressed(&self) -> bool {}
4211
4212 /**
4213 返回 CAPS LOCK 元键的锁定状态。如果 CAPS LOCK 键处于打开状态,则返回 true,否则返回 false
4214 */
4215 #[java_method]
4216 pub fn is_caps_lock_on(&self) -> bool {}
4217
4218 /**
4219 返回 SCROLL LOCK 元键的锁定状态。如果 SCROLL LOCK 键处于打开状态,则返回 true,否则返回 false
4220 */
4221 #[java_method]
4222 pub fn is_num_lock_on(&self) -> bool {}
4223
4224 /**
4225 查询此按键事件的操作。可能是 ACTION_DOWN、ACTION_UP 或 ACTION_MULTIPLE。
4226 返回:事件操作:ACTION_DOWN、ACTION_UP 或 ACTION_MULTIPLE。
4227 */
4228 #[java_method]
4229 pub fn get_action(&self) -> i32 {}
4230
4231 /// 对于 ACTION_UP 事件,表示事件已根据 FLAG_CANCELED 取消。
4232 #[java_method]
4233 pub fn is_canceled(&self) -> bool {}
4234
4235 /**
4236 为按键事件设置 FLAG_CANCELED 标志。
4237 */
4238 #[java_method]
4239 pub fn cancel(&self) {}
4240
4241 /// 在 KeyEvent.Callback.onKeyDown 期间调用此方法,让系统跟踪按键直至其最后按下(可能包括长按)。请注意,一次只能跟踪一个按键 - 如果在跟踪前一个按键时收到另一个按键按下事件,则跟踪前一个事件时会停止。
4242 #[java_method]
4243 pub fn start_tracking(&self) {}
4244
4245 /**
4246 对于 ACTION_UP 事件,表示该事件仍按照 FLAG_TRACKING 从其初始向下事件进行跟踪。
4247 */
4248 #[java_method]
4249 pub fn is_tracking(&self) -> bool {}
4250
4251 /// 对于 ACTION_DOWN 事件,表示该事件已根据 FLAG_LONG_PRESS 取消。
4252 #[java_method]
4253 pub fn is_long_press(&self) -> bool {}
4254
4255 /// 检索按键事件的按键代码。这是按下的物理按键,而不是 Unicode 字符。
4256 /// 返回:事件的按键代码。
4257 #[java_method]
4258 pub fn get_key_code(&self) -> i32 {}
4259
4260 /// 对于 ACTION_MULTIPLE 事件(其键代码为 KEYCODE_UNKNOWN)的特殊情况,这是与该事件关联的原始字符串。在所有其他情况下,它为空。
4261 /// 返回:返回与该事件关联的 1 个或多个字符的字符串。
4262 #[deprecated(note = "不再由输入系统使用。")]
4263 #[java_method]
4264 pub fn get_characters(&self) -> Option<String> {}
4265
4266 /// 查询此按键事件的硬件按键 ID。这些值不可靠,且因设备而异。@more 主要用于调试目的。
4267 #[java_method]
4268 pub fn get_scan_code(&self) -> i32 {}
4269
4270 /// 查询事件的重复计数。对于按键按下事件,这是按键重复的次数,第一次按下从 0 开始,然后从那里开始计数。对于按键弹起事件,此值始终等于零。对于多个按键事件,这是发生的按下/弹起对的数量。
4271 /// 返回:按键重复的次数。
4272 #[java_method]
4273 pub fn get_repeat_count(&self) -> i32 {}
4274
4275 /**
4276 修改事件的按下时间和事件时间。
4277 `down_time` 事件的新按下时间(以 android.os.SystemClock.uptimeMillis 为单位)。
4278 `event_time` 事件的新事件时间(以 android.os.SystemClock.uptimeMillis 为单位)。
4279 */
4280 #[java_method]
4281 pub fn set_time(down_time: i64, event_time: i64) {}
4282
4283 /**
4284 查询最近一次按键按下事件的时间,以 android.os.SystemClock.uptimeMillis 时间为基准。如果这是按下事件,则此方法与 getEventTime() 相同。
4285 请注意,当按下按键时,此值是最近按下的按键的按下时间,该按键可能不是此事件的同一物理按键。
4286 返回:返回最近一次按键按下时间,以 android.os.SystemClock.uptimeMillis 时间为基准
4287 */
4288 #[java_method]
4289 pub fn get_down_time(&self) -> i64 {}
4290
4291 /**
4292 以 android.os.SystemClock.uptimeMillis 时间基准检索此事件发生的时间。
4293 返回:以 android.os.SystemClock.uptimeMillis 时间基准返回此事件发生的时间。
4294 */
4295 #[java_method]
4296 pub fn get_event_time(&self) -> i64 {}
4297
4298 /**
4299 查询此事件发生的时间,以 android.os.SystemClock.uptimeMillis 时间为基础,但精度为纳秒(而不是毫秒)。该值以纳秒为精度,但可能不具有纳秒的精度。
4300 返回:返回此事件发生的时间,以 android.os.SystemClock.uptimeMillis 时间为基础,但精度为纳秒(而不是毫秒)。
4301 */
4302 #[java_method]
4303 pub fn get_event_time_nanos(&self) -> i64 {}
4304
4305 /**
4306 已重命名为 getDeviceId。
4307 */
4308 #[deprecated(note = "请改用 getDeviceId()。")]
4309 #[java_method]
4310 pub fn get_keyboard_device(&self) -> i32 {}
4311
4312 /**
4313 获取此键的主要字符。换句话说,就是实际打印在其上的标签。
4314 返回:显示标签字符,如果没有则返回 0(例如,对于非打印键)。
4315 */
4316 #[java_method]
4317 pub fn get_display_label(&self) -> char {}
4318
4319 /**
4320 获取由指定键和元键状态组合生成的 Unicode 字符。返回当指定元位(参见 MetaKeyKeyListener)处于活动状态时,指定键将生成的 Unicode 字符。
4321 如果该键不是用于键入 Unicode 字符的键,则返回 0。如果返回值已设置位 KeyCharacterMap.COMBINING_ACCENT,则该键是“死键”,在使用 KeyCharacterMap.COMBINING_ACCENT_MASK 进行屏蔽后,应将其与另一个键组合以实际生成字符(参见 KeyCharacterMap.getDeadChar)。
4322 返回:相关字符或组合重音符,如果没有,则返回 0。
4323 */
4324 #[java_method]
4325 pub fn get_unicode_char(&self) -> i32 {}
4326
4327 /**
4328 获取由指定键和元键状态组合生成的 Unicode 字符。返回当指定元位(参见 MetaKeyKeyListener)处于活动状态时,指定键将生成的 Unicode 字符。如果该键不是用于键入 Unicode 字符的键,则返回 0。
4329 如果返回值已设置 KeyCharacterMap.COMBINING_ACCENT 位,则该键是“死键”,在使用 KeyCharacterMap.COMBINING_ACCENT_MASK 屏蔽后,应与另一个键组合以实际生成字符(参见 KeyCharacterMap.getDeadChar)。
4330 返回:相关字符或组合重音符,如果没有,则返回 0。
4331 `meta_state` 元键修饰符状态。
4332 */
4333 #[java_method(overload=getUnicodeChar)]
4334 pub fn get_unicode_char_from(meta_state: i32) -> i32 {}
4335
4336 /**
4337 获取与该键关联的数字或符号。返回的是字符值,而不是数值。如果该键不是数字,而是符号,则返回该符号。
4338 此方法旨在支持键盘上的拨号盘和其他数字或符号输入,其中某些键兼具字母和符号键的功能。此方法返回与该键关联的数字或符号,与用户是否按下了所需的修饰键无关。
4339 例如,在一个特定的键盘上,按下 ALT 时,QWERTY 顶部行上的键会生成数字,因此 ALT-Q 会映射到“1”。因此,对于该键盘,当使用 KEYCODE_Q 调用 getNumber 时,它会返回“1”,以便用户可以在有意义时不按 ALT 来输入数字。
4340 返回:关联的数字或符号字符,如果没有,则返回 0。
4341 */
4342 #[java_method]
4343 pub fn get_number(&self) -> char {}
4344
4345 /**
4346 如果此键产生字形,则返回 true。
4347 如果此键是打印键,则返回 true。
4348 */
4349 #[java_method]
4350 pub fn is_printing_key(&self) -> bool {}
4351
4352 /**
4353 返回表示指定操作的符号名称的字符串,例如“ACTION_DOWN”,如果未知,则返回等效的数字常量,例如“35”。
4354 返回:指定操作的符号名称。
4355 `action` 操作。
4356 */
4357 #[java_method]
4358 pub fn action_to_string(action: i32) -> String {}
4359
4360 //noinspection SpellCheckingInspection
4361 /**
4362 返回表示指定键码的符号名称的字符串,例如“KEYCODE_A”、“KEYCODE_DPAD_UP”或等效数字常量(如“1001”(如果未知)。
4363 此函数主要用于调试、日志记录和测试。它不特定于语言环境,也不旨在以面向用户的方式使用。
4364 返回:指定键码的符号名称。
4365 `key_code` 键码。
4366 */
4367 #[java_method]
4368 pub fn key_code_to_string(key_code: i32) -> String {}
4369
4370 /**
4371 通过其符号名称(例如“KEYCODE_A”)或等效数字常量(例如“29”)获取键码。对于符号名称,从 Build.VERSION_CODES.Q 开始,前缀“KEYCODE_”是可选的。
4372 返回:键码,如果未找到,则返回 KEYCODE_UNKNOWN。
4373 `symbolic_name` 键码的符号名称。
4374 */
4375 #[java_method]
4376 pub fn key_code_from_string(symbolic_name: String) -> i32 {}
4377
4378 /**
4379 返回一个字符串,该字符串表示指定的组合元键修饰符状态标志的符号名称,例如“0”、“META_SHIFT_ON”、“META_ALT_ON|META_SHIFT_ON”或等效数字常量,例如“0x10000000”(如果未知)。
4380 返回:指定的组合元状态标志的符号名称。
4381 `meta_state` 元状态。
4382 */
4383 #[java_method]
4384 pub fn meta_state_to_string(meta_state: i32) -> String {}
4385}
4386
4387/// 当视图被点击并保持时调用的回调的接口定义。
4388#[allow(non_camel_case_types)]
4389#[java_interface(name = "android/view/View$OnLongClickListener")]
4390pub trait View_OnLongClickListener {
4391 /**
4392 当单击并按住某个视图时调用。
4393 返回:如果回调消耗了长按,则返回 true,否则返回 false。
4394 `v` 被单击并按住的视图。
4395 */
4396 fn on_long_click(&self, v: View) -> bool;
4397}
4398
4399#[doc(hidden)]
4400#[allow(non_camel_case_types)]
4401#[java_class(name = "android/view/View$OnLongClickListenerImpl")]
4402pub struct View_OnLongClickListenerImpl(Box<dyn Fn(View) -> bool + Send + Sync>);
4403
4404impl Default for View_OnLongClickListenerImplDefault {
4405 fn default() -> Self {
4406 Self(Box::new(|v| unimplemented!("{:?}", v)))
4407 }
4408}
4409
4410#[java_implement]
4411impl View_OnLongClickListener for View_OnLongClickListenerImpl {
4412 fn on_long_click(&self, v: View) -> bool {
4413 self.0(v)
4414 }
4415}
4416
4417/**
4418当硬件按键事件被分派到此视图时,要调用的回调的接口定义。回调将在按键事件被提供给视图之前被调用。
4419这仅适用于硬件键盘;软件输入法没有义务触发此侦听器。
4420*/
4421#[allow(non_camel_case_types)]
4422#[java_interface(name = "android/view/View$OnKeyListener")]
4423pub trait View_OnKeyListener {
4424 /**
4425 当硬件按键被分派到视图时调用。这允许侦听器有机会在目标视图之前做出响应。软件键盘中的按键通常不会触发此方法,尽管有些情况下可能会选择这样做。
4426 不要假设软件输入法必须基于按键;即使如此,它也可能以不同于您预期的方式使用按键,因此无法可靠地捕获软输入按键。
4427 返回:如果侦听器已使用事件,则返回 True,否则返回 false。
4428 `v` 按键被分派到的视图。
4429 `key_code` 按下的物理按键的代码
4430 `event` 包含有关事件的完整信息的 KeyEvent 对象。
4431 */
4432 fn on_key(&self, v: View, key_code: i32, event: KeyEvent) -> bool;
4433}
4434
4435#[doc(hidden)]
4436#[allow(non_camel_case_types)]
4437#[java_class(name = "android/widget/TextView$OnEditorActionListenerImpl")]
4438pub struct View_OnKeyListenerImpl(Box<dyn Fn(View, i32, KeyEvent) -> bool + Send + Sync>);
4439
4440impl Default for View_OnKeyListenerImplDefault {
4441 fn default() -> Self {
4442 Self(Box::new(|v, key_code, event| {
4443 unimplemented!("{:?}, {}, {:?}", v, key_code, event)
4444 }))
4445 }
4446}
4447
4448impl View_OnKeyListenerImpl {
4449 pub fn from_fn(
4450 func: impl Fn(/* v */ View, /* key_code */ i32, /* event */ KeyEvent) -> bool
4451 + Send
4452 + Sync
4453 + 'static,
4454 ) -> Arc<Self> {
4455 Self::new(View_OnKeyListenerImplDefault(Box::new(func)))
4456 }
4457}
4458
4459#[java_implement]
4460impl View_OnKeyListener for View_OnKeyListenerImpl {
4461 fn on_key(&self, v: View, key_code: i32, event: KeyEvent) -> bool {
4462 self.0(v, key_code, event)
4463 }
4464}
4465
4466/**
4467顶级窗口外观和行为策略的抽象基类。该类的实例应用于添加到窗口管理器的顶级视图。
4468它提供标准 UI 策略,例如背景、标题区域、默认按键处理等。框架将代表应用程序实例化该类的实现。
4469*/
4470#[java_class(name = "android/view/Window")]
4471pub struct Window;
4472
4473impl Window {
4474 /// 标记“选项面板”功能。默认情况下启用此功能。
4475 pub const FEATURE_OPTIONS_PANEL: i32 = 0;
4476
4477 /// 标记为“无标题”功能,关闭屏幕顶部的标题。
4478 pub const FEATURE_NO_TITLE: i32 = 1;
4479
4480 /// 进度指示器功能的标志。
4481 #[deprecated(note = "从 API 21 开始不再支持。")]
4482 pub const FEATURE_PROGRESS: i32 = 2;
4483
4484 /// 标记在标题栏左侧有一个图标
4485 pub const FEATURE_LEFT_ICON: i32 = 3;
4486
4487 /// 标记在标题栏右侧有图标
4488 pub const FEATURE_RIGHT_ICON: i32 = 4;
4489
4490 /// 标记不确定的进度。
4491 #[deprecated(note = "从 API 21 开始不再支持。")]
4492 pub const FEATURE_INDETERMINATE_PROGRESS: i32 = 5;
4493
4494 /// 上下文菜单的标志。默认情况下启用该标志。
4495 pub const FEATURE_CONTEXT_MENU: i32 = 6;
4496
4497 /// 标记自定义标题。您不能将此功能与其他标题功能结合使用。
4498 pub const FEATURE_CUSTOM_TITLE: i32 = 7;
4499
4500 /// 用于启用操作栏的标志。某些设备默认启用该功能。操作栏取代了标题栏,并为某些设备上的屏幕菜单按钮提供了备用位置。
4501 pub const FEATURE_ACTION_BAR: i32 = 8;
4502
4503 /**
4504 用于请求覆盖窗口内容的操作栏的标志。通常,操作栏将位于窗口内容上方的空间中,但如果此功能与 FEATURE_ACTION_BAR 一起请求,它将覆盖在窗口内容本身上。如果您希望应用能够更好地控制操作栏的显示方式,例如让应用内容在具有透明背景的操作栏下方滚动,或者在应用内容上方显示透明/半透明的操作栏,这将非常有用。
4505 此模式与 View#SYSTEM_UI_FLAG_FULLSCREEN View.SYSTEM_UI_FLAG_FULLSCREEN 特别有用,它允许您结合其他屏幕装饰无缝隐藏操作栏。
4506 从 android.os.Build.VERSION_CODES#JELLY_BEAN 开始,当 ActionBar 处于此模式时,它将调整提供给 View#fitSystemWindows(android.graphics.Rect) View.fitSystemWindows(Rect) 的插入图以包含操作栏覆盖的内容,因此您可以在该空间内进行布局。
4507 */
4508 pub const FEATURE_ACTION_BAR_OVERLAY: i32 = 9;
4509
4510 /// 用于指定操作栏不存在时操作模式行为的标志。如果启用了覆盖,则允许操作模式 UI 覆盖现有窗口内容。
4511 pub const FEATURE_ACTION_MODE_OVERLAY: i32 = 10;
4512
4513 /// 标记用于请求无装饰窗口,该窗口可通过从左侧滑动来关闭。
4514 #[deprecated(note = "滑动关闭功能不再起作用。")]
4515 pub const FEATURE_SWIPE_TO_DISMISS: i32 = 11;
4516
4517 /**
4518 请求窗口内容更改的标志应使用 TransitionManager 进行动画处理。
4519 TransitionManager 使用 setTransitionManager(android.transition.TransitionManager) 设置。如果没有设置,则使用默认的 TransitionManager。
4520 */
4521 pub const FEATURE_CONTENT_TRANSITIONS: i32 = 12;
4522
4523 /// 通过发送或接收使用 android.app.ActivityOptions#makeSceneTransitionAnimation(android.app.Activity, android.util.Pair[]) 或 android.app.ActivityOptions#makeSceneTransitionAnimation(android.app.Activity, View, String) 创建的 ActivityOptions 包,使活动能够运行活动转换。
4524 pub const FEATURE_ACTIVITY_TRANSITIONS: i32 = 13;
4525
4526 /// 最大值用作功能ID
4527 pub const FEATURE_MAX: i32 = Self::FEATURE_ACTIVITY_TRANSITIONS;
4528
4529 /// 将进度条的可见性设置为 VISIBLE 的标志。
4530 #[deprecated(note = "从API 21开始,不再支持feature_progress和相关方法。")]
4531 pub const PROGRESS_VISIBILITY_ON: i32 = -1;
4532
4533 /// 将进度条的可见性设置为 GONE 的标志。
4534 #[deprecated(note = "从API 21开始,不再支持feature_progress和相关方法。")]
4535 pub const PROGRESS_VISIBILITY_OFF: i32 = -2;
4536
4537 /// 用于设置进度条不确定模式的标志。
4538 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_INDETERMINATE_PROGRESS 和相关方法。")]
4539 pub const PROGRESS_INDETERMINATE_ON: i32 = -3;
4540
4541 /// 用于关闭进度条不确定模式的标志。
4542 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_INDETERMINATE_PROGRESS 和相关方法。")]
4543 pub const PROGRESS_INDETERMINATE_OFF: i32 = -4;
4544
4545 /// (主要) 进度的起始值。
4546 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_PROGRESS 和相关方法。")]
4547 pub const PROGRESS_START: i32 = 0;
4548
4549 /// (主要) 进度的结束值。
4550 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_PROGRESS 和相关方法。")]
4551 pub const PROGRESS_END: i32 = 10000;
4552
4553 /// 次要进度的最低可能值。
4554 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_PROGRESS 和相关方法。")]
4555 pub const PROGRESS_SECONDARY_START: i32 = 20000;
4556
4557 /// 次要进度的最高可能值。
4558 #[deprecated(note = "从 API 21 开始不再支持 FEATURE_PROGRESS 和相关方法。")]
4559 pub const PROGRESS_SECONDARY_END: i32 = 30000;
4560
4561 /// 使用自定义背景时状态栏背景视图的 transitionName。
4562 pub const STATUS_BAR_BACKGROUND_TRANSITION_NAME: &'static str = "android:status:background";
4563
4564 /// 使用自定义背景时导航栏背景视图的 transitionName。
4565 pub const NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME: &'static str =
4566 "android:navigation:background";
4567
4568 /// 标志以允许主题驱动窗口字幕控件的颜色。与setDecorCaptionShade(int)一起使用。这是默认值。
4569 pub const DECOR_CAPTION_SHADE_AUTO: i32 = 0;
4570
4571 /// 用于在窗口标题上设置浅色控件的标志。与 setDecorCaptionShade(int) 一起使用。
4572 pub const DECOR_CAPTION_SHADE_LIGHT: i32 = 1;
4573
4574 /// 用于在窗口标题上设置深色控件的标志。与 setDecorCaptionShade(int) 一起使用。
4575 pub const DECOR_CAPTION_SHADE_DARK: i32 = 2;
4576
4577 #[doc(hidden)]
4578 #[java_constructor]
4579 pub fn new(context: &Context) -> Self {}
4580
4581 /**
4582 返回此窗口策略正在运行的上下文,用于检索资源和其他信息。
4583 返回:上下文提供给构造函数的上下文。
4584 */
4585 #[java_method]
4586 pub fn get_context(&self) -> Context {}
4587
4588 /**
4589 设置此窗口的容器。如果未设置,DecorWindow 将作为顶级窗口运行;否则,它将与容器协商以适当地显示自身。
4590 `container` 所需的容器窗口。
4591 */
4592 #[java_method]
4593 pub fn set_container(&self, container: Self) {}
4594
4595 /**
4596 返回此窗口的容器。
4597 返回:窗口包含的窗口,如果这是顶级窗口,则返回 null。
4598 */
4599 #[java_method]
4600 pub fn get_container(&self) -> Self {}
4601
4602 #[doc(hidden)]
4603 #[java_method]
4604 pub fn has_children(&self) -> bool {}
4605
4606 #[doc(hidden)]
4607 #[java_method]
4608 pub fn destroy(&self) {}
4609
4610 #[doc(hidden)]
4611 #[java_method]
4612 pub fn is_destroyed(&self) -> bool {}
4613
4614 /**
4615 返回允许此窗口显示其自己的窗口的窗口管理器。
4616 返回:WindowManager ViewManager。
4617 */
4618 #[java_method]
4619 pub fn get_window_manager<WM: WindowManager>(&self) -> WM {}
4620
4621 #[doc(hidden)]
4622 #[java_method]
4623 pub fn dispatch_on_window_dismissed(
4624 &self,
4625 finish_task: bool,
4626 suppress_window_transition: bool,
4627 ) {
4628 }
4629
4630 #[doc(hidden)]
4631 #[java_method]
4632 pub fn dispatch_on_window_swipe_dismissed(&self) {}
4633
4634 #[doc(hidden)]
4635 #[java_method]
4636 pub fn get_system_bar_appearance(&self) -> i32 {}
4637
4638 #[doc(hidden)]
4639 #[java_method]
4640 pub fn dispatch_on_system_bar_appearance_changed(&self, appearance: i32) {}
4641
4642 #[doc(hidden)]
4643 #[java_method]
4644 pub fn on_draw_legacy_navigation_bar_background_changed(
4645 &self,
4646 draw_legacy_navigation_bar_background: bool,
4647 ) -> bool {
4648 }
4649
4650 /**
4651 防止非系统覆盖窗口绘制在此窗口之上。
4652 `hide` 是否应隐藏非系统覆盖窗口。
4653 */
4654 #[java_method]
4655 pub fn set_hide_overlay_windows(&self, hide: bool) {}
4656
4657 /**
4658 返回此窗口是否以浮动样式显示(基于样式/主题中的 android.R.attr.windowIsFloating 属性)。
4659 返回:如果窗口配置为浮动显示在它后面的任何内容之上,则返回 true。
4660 */
4661 #[java_method]
4662 pub fn is_floating(&self) -> bool {}
4663
4664 /**
4665 设置窗口的宽度和高度布局参数。这两个参数的默认值均为 MATCH_PARENT;您可以将其更改为 WRAP_CONTENT 或绝对值,以使窗口不全屏显示。
4666 `width` 所需的窗口布局宽度。
4667 `height` 所需的窗口布局高度。
4668 */
4669 #[java_method]
4670 pub fn set_layout(&self, width: i32, height: i32) {}
4671
4672 /**
4673 根据重力常数设置窗口的重力。这控制窗口管理器在整个窗口中的定位方式;它仅在使用 WRAP_CONTENT 作为布局宽度或高度时有用。
4674 `gravity` 所需的重力常数。
4675 */
4676 #[java_method]
4677 pub fn set_gravity(&self, gravity: i32) {}
4678
4679 /**
4680 根据 WindowManager.LayoutParams 类型设置窗口的类型。
4681 `type` 新的窗口类型(参见 WindowManager.LayoutParams)。
4682 */
4683 #[java_method]
4684 pub fn set_type(&self, r#type: i32) {}
4685
4686 /**
4687 根据 PixelFormat 类型设置窗口的格式。这将覆盖窗口根据其窗口装饰选择的默认格式。
4688 `format` 新的窗口格式(参见 PixelFormat)。使用 PixelFormat。UNKNOWN 允许窗口选择格式。
4689 */
4690 #[java_method]
4691 pub fn set_format(&self, format: i32) {}
4692
4693 /**
4694 根据 WindowManager.LayoutParams.windowAnimations 指定要用于窗口的自定义动画。此处提供除 0 之外的任何值都将覆盖窗口通常从其主题中检索的动画。
4695 */
4696 #[java_method]
4697 pub fn set_window_animations(&self, res_id: i32) {}
4698
4699 /**
4700 根据 WindowManager.LayoutParams.softInputMode 为窗口指定一个显式软输入模式。在此处提供除“未指定”之外的任何内容都将覆盖窗口通常从其主题中检索的输入模式。
4701 */
4702 #[java_method]
4703 pub fn set_soft_input_mode(&self, mode: i32) {}
4704
4705 /**
4706 按照 setFlags 的说明,使用便捷函数设置 flags 中指定的标志位。
4707 `flags` 要设置的标志位。
4708 */
4709 #[java_method]
4710 pub fn add_flags(&self, flags: i32) {}
4711
4712 /**
4713 添加私有标志位。请参阅各个标志以了解所需的权限。
4714 `flags` 要添加的标志位。
4715 */
4716 #[java_method]
4717 pub fn add_private_flags(&self, flags: i32) {}
4718
4719 /**
4720 添加系统标志位。请参阅各个标志以了解所需的权限。
4721 注意:仅适用于可更新的系统组件(又称主线模块)
4722 `flags` 要添加的标志位。
4723 */
4724 #[java_method]
4725 pub fn add_system_flags(&self, flags: i32) {}
4726
4727 /**
4728 根据 WindowManager.LayoutParams 标志设置窗口的标志。
4729 请注意,在创建窗口装饰之前必须设置一些标志(通过第一次调用 setContentView(View, ViewGroup.LayoutParams) 或 getDecorView():WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 和 WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR。
4730 这些将根据 android.R.attr.windowIsFloating 属性为您设置。
4731 `flags` 新的窗口标志(请参阅 WindowManager.LayoutParams)。
4732 `mask` 要修改的窗口标志位。
4733 */
4734 #[java_method]
4735 pub fn set_flags(&self, flags: i32, mask: i32) {}
4736
4737 /**
4738 设置窗口的请求颜色模式。请求的颜色模式可能会覆盖窗口的像素格式。
4739 请求的颜色模式必须是 ActivityInfo.COLOR_MODE_DEFAULT、ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT 或 ActivityInfo.COLOR_MODE_HDR 之一。
4740 请求的颜色模式不保证一定会被遵守。有关更多信息,请参阅 getColorMode()。
4741 */
4742 #[java_method]
4743 pub fn set_color_mode(&self, color_mode: i32) {}
4744
4745 /**
4746 如果 is_preferred 为 true,则此方法要求当此窗口在屏幕上可见时,连接的显示器进行最少的后期处理。否则,它要求显示器切换回标准图像处理。
4747 默认情况下,显示器不进行最少的后期处理,如果需要,则不应使用此方法。
4748 当低延迟比图像增强处理具有更高的优先级时(例如,对于游戏或视频会议),应将其与 is_preferred=true 一起使用。
4749 当屏幕上不再显示请求最少后期处理的窗口时,显示器将自动返回到标准图像处理模式。如果之前已为此窗口调用 setPreferMinimalPostProcessing(true) 并且不再需要最少的后期处理,则可以使用 setPreferMinimalPostProcessing(false)。
4750 如果显示器接收器通过 HDMI 连接,设备将开始发送启用了自动低延迟模式和游戏内容类型的信息帧。这会将连接的显示器切换到最小图像处理模式(如果可用),从而减少延迟,改善游戏或视频会议应用程序的用户体验。
4751 有关更多信息,请参阅 HDMI 2.1 规范。如果显示接收器具有内部连接或使用 HDMI 以外的其他协议,效果可能类似但由实现定义。
4752 可以通过系统设置菜单中的用户设置禁用切换到具有最少后期处理模式的功能。在这种情况下,此方法不执行任何操作。
4753 `is_preferred` 指示此窗口是否优先使用最少后期处理(is_preferred=true)或不优先使用(is_preferred=false)。
4754 */
4755 #[java_method]
4756 pub fn set_prefer_minimal_post_processing(&self, is_preferred: bool) {}
4757
4758 /**
4759 返回窗口所请求的颜色模式,可以是 ActivityInfo.COLOR_MODE_DEFAULT、ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT 或 ActivityInfo.COLOR_MODE_HDR 之一。
4760 如果请求的是 ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT,则窗口可能不会处于广色域模式,具体取决于设备和显示器对该模式的支持。使用 isWideColorGamut 确定窗口当前是否处于广色域模式。
4761 */
4762 #[java_method]
4763 pub fn get_color_mode(&self) -> i32 {}
4764
4765 /**
4766 如果此窗口的颜色模式为 ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT、显示器具有宽色域且此设备支持宽色域渲染,则返回 true。
4767 */
4768 #[java_method]
4769 pub fn is_wide_color_gamut(&self) -> bool {}
4770
4771 /**
4772 使用 WindowManager.LayoutParams.FLAG_DIM_BEHIND 时设置窗口后面的暗淡量。这将覆盖窗口根据其主题选择的默认暗淡量。
4773 `amount` 新的暗淡量,从 0(无暗淡)到 1(完全暗淡)。
4774 */
4775 #[java_method]
4776 pub fn set_dim_amount(&self, amount: f32) {}
4777
4778 /**
4779 设置装饰视图是否应适合 WindowInsets 的根级内容视图。如果设置为 true,框架将检查现已弃用的 View.SYSTEM_UI_LAYOUT_FLAGS 以及 WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE 标志,并根据这些标志调整内容。
4780 如果设置为 false,框架将不会将内容视图调整到插图中,而只会将 WindowInsets 传递到内容视图。
4781 `decor_fits_system_windows` 装饰视图是否应适合插图的根级内容视图。
4782 */
4783 #[java_method]
4784 pub fn set_decor_fits_system_windows(&self, decor_fits_system_windows: bool) {}
4785
4786 #[doc(hidden)]
4787 #[java_method]
4788 pub fn decor_fits_system_windows(&self) -> bool {}
4789
4790 /**
4791 指定自定义窗口属性。请注意:您在此处提供的布局参数通常应来自之前使用 getAttributes() 检索的值;您可能不想盲目地创建和应用自己的值,因为这会抹去框架设置的任何您不感兴趣的值。
4792 `a` 新的窗口属性,它将完全覆盖任何当前值。
4793 */
4794 #[java_method]
4795 pub fn set_attributes(&self, a: &WindowManager_LayoutParams) {}
4796
4797 /**
4798 查询与此面板关联的当前窗口属性。
4799 返回:WindowManager.LayoutParams 要么是现有的窗口属性对象,要么是新创建的对象(如果没有)。
4800 */
4801 #[java_method]
4802 pub fn get_attributes(&self) -> WindowManager_LayoutParams {}
4803
4804 #[doc(hidden)]
4805 #[java_method]
4806 pub fn set_close_on_touch_outside(&self, close: bool) {}
4807
4808 #[doc(hidden)]
4809 #[java_method]
4810 pub fn set_close_on_touch_outside_if_not_set(&self, close: bool) {}
4811
4812 #[doc(hidden)]
4813 #[java_method]
4814 pub fn always_read_close_on_touch_attr(&self) {}
4815
4816 /**
4817 设置调用窗口的持续性能要求。
4818 `enable` 禁用或启用该模式。
4819 */
4820 #[java_method]
4821 pub fn set_sustained_performance_mode(&self, enable: bool) {}
4822
4823 /**
4824 启用扩展屏幕功能。必须在setContentView()之前调用。只要在setContentView()之前,就可以根据需要多次调用。
4825 如果未调用,则不会提供扩展功能。一旦要求,您就无法关闭功能。您可以使用feature_custom_title使用其他标题功能。
4826 返回:现在设置的功能。
4827 `feature_id` 所需的功能,定义为Window的常数。
4828 */
4829 #[java_method]
4830 pub fn request_feature(&self, feature_id: i32) -> bool {}
4831
4832 #[doc(hidden)]
4833 #[java_method]
4834 pub fn make_active(&self) {}
4835
4836 #[doc(hidden)]
4837 #[java_method]
4838 pub fn is_active(&self) -> bool {}
4839
4840 /**
4841 查找由 android.app.Activity.onCreate 中处理的 android:id XML 属性标识的视图。这将隐式调用 getDecorView 并产生所有相关副作用。
4842 注意:在大多数情况下(取决于编译器支持情况),结果视图会自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式转换。
4843 返回:如果找到,则返回具有给定 ID 的视图,否则返回 null
4844 `id` 要搜索的 ID
4845 */
4846 #[java_method]
4847 pub fn find_view_by_id(&self, id: i32) -> Option<View> {}
4848
4849 /**
4850 查找由 android.app.Activity.onCreate 中处理的 android:id XML 属性标识的视图,如果 ID 无效或层次结构中没有匹配的视图,则抛出 IllegalArgumentException。
4851 注意:在大多数情况下 - 取决于编译器支持 - 生成的视图会自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式转换。
4852 `id` 要搜索的 ID 返回:具有给定 ID 的视图。
4853 */
4854 #[java_method]
4855 pub fn require_view_by_id(&self, id: i32) -> Result<View, <Self as JType>::Error> {}
4856
4857 /**
4858 方便使用 setContentView(View, ViewGroup.LayoutParams) 将屏幕内容设置为显式视图。此视图直接放置在屏幕的视图层次结构中。它本身可以是一个复杂的视图层次结构。
4859 `layout_res_id` 要显示的内容视图资源ID。
4860 */
4861 #[java_method(overload = setContentView)]
4862 pub fn set_content_view_by_id(&self, layout_res_id: i32) {}
4863
4864 /**
4865 方便使用 setContentView(View, ViewGroup.LayoutParams) 将屏幕内容设置为显式视图。此视图直接放入屏幕的视图层次结构中。它本身可以是一个复杂的视图层次结构。
4866 `view` 要显示的所需内容。
4867 */
4868 #[java_method(overload = setContentView)]
4869 pub fn set_content_view_convenience(&self, view: &View) {}
4870
4871 /**
4872 将屏幕内容设置为显式视图。此视图直接放入屏幕的视图层次结构中。它本身可以是一个复杂的视图层次结构。
4873 请注意,调用此函数会“锁定”窗口的各种特性,从此时起,这些特性将无法更改:使用 requestFeature(int) 请求的功能,以及 setFlags(int, int) 中描述的某些窗口标志。如果设置了 FEATURE_CONTENT_TRANSITIONS,则将使用窗口的 TransitionManager 将内容从当前内容视图动画化为视图。
4874 `view` 需要显示的内容。
4875 `params` 视图的布局参数。
4876 */
4877 #[java_method]
4878 pub fn set_content_view(&self, view: &View, params: &ViewGroup_LayoutParams) {}
4879
4880 /**
4881 setContentView(View, ViewGroup.LayoutParams) 的变体,用于向屏幕添加额外的内容视图。在屏幕中任何现有视图之后添加 - 现有视图不会被删除。
4882 `view` 要显示的内容。
4883 `params` 视图的布局参数。
4884 */
4885 #[java_method]
4886 pub fn add_content_view(&self, view: &View, params: &ViewGroup_LayoutParams) {}
4887
4888 /// 删除用作屏幕内容的视图。
4889 #[java_method]
4890 pub fn clear_content_view(&self) {}
4891
4892 /**
4893 返回此窗口中当前具有焦点的视图,如果没有,则返回 null。
4894 请注意,这不会在任何包含窗口中查找。
4895 返回:View 具有焦点的当前视图或 null。
4896 */
4897 #[java_method]
4898 pub fn get_current_focus(&self) -> Option<View> {}
4899
4900 #[doc(hidden)]
4901 #[java_method]
4902 pub fn set_title<CS: CharSequence>(&self, title: Option<CS>) {}
4903
4904 #[doc(hidden)]
4905 #[java_method]
4906 pub fn set_title_color(&self, text_color: i32) {}
4907
4908 #[doc(hidden)]
4909 #[java_method]
4910 pub fn open_panel(&self, feature_id: i32, event: &KeyEvent) {}
4911
4912 #[doc(hidden)]
4913 #[java_method]
4914 pub fn close_panel(&self, feature_id: i32) {}
4915
4916 #[doc(hidden)]
4917 #[java_method]
4918 pub fn toggle_panel(&self, feature_id: i32, event: &KeyEvent) {}
4919
4920 #[doc(hidden)]
4921 #[java_method]
4922 pub fn invalidate_panel_menu(&self, feature_id: i32) {}
4923
4924 #[doc(hidden)]
4925 #[java_method]
4926 pub fn perform_panel_shortcut(
4927 &self,
4928 feature_id: i32,
4929 key_code: i32,
4930 event: &KeyEvent,
4931 flags: i32,
4932 ) -> bool {
4933 }
4934
4935 #[doc(hidden)]
4936 #[java_method]
4937 pub fn perform_panel_identifier_action(&self, feature_id: i32, id: i32, flags: i32) -> bool {}
4938
4939 #[doc(hidden)]
4940 #[java_method]
4941 pub fn close_all_panels(&self) {}
4942
4943 #[doc(hidden)]
4944 #[java_method]
4945 pub fn perform_context_menu_identifier_action(&self, id: i32, flags: i32) -> bool {}
4946
4947 /**
4948 设置窗口高度。对此属性的更改会立即生效,并将导致重新创建窗口表面。
4949 这是一项昂贵的操作,因此不应对此属性进行动画处理。
4950 `elevation` 窗口高度。
4951 */
4952 #[java_method]
4953 pub fn set_elevation(&self, elevation: f32) {}
4954
4955 /**
4956 获取窗口高度。
4957 */
4958 #[java_method]
4959 pub fn get_elevation(&self) -> f32 {}
4960
4961 /**
4962 设置是否应将窗口内容剪裁到窗口背景的轮廓。
4963 `clip_to_outline` 是否应将窗口内容剪裁到窗口背景的轮廓。
4964 */
4965 #[java_method]
4966 pub fn set_clip_to_outline(&self, clip_to_outline: bool) {}
4967
4968 /**
4969 将此窗口的背景更改为可绘制资源。将背景设置为 null 将使窗口不透明。要使窗口透明,您可以使用空的 可绘制资源(例如颜色为 0 的 ColorDrawable 或系统可绘制资源 android:drawable/empty。)
4970 `res_id` 将作为新背景安装的可绘制资源的资源标识符。
4971 */
4972 #[java_method]
4973 pub fn set_background_drawable_resource(&self, res_id: i32) {}
4974
4975 /**
4976 在窗口边界内模糊窗口后面的屏幕。模糊的密度由模糊半径设置。半径定义邻近区域的大小,从中对像素进行平均以形成每个像素的最终颜色。
4977 该操作近似于高斯模糊。半径为 0 表示无模糊。半径越大,模糊越密集。
4978 窗口背景可绘制对象绘制在模糊区域的顶部。模糊区域边界和圆角将模仿背景可绘制对象的边界和圆角。
4979 要使模糊区域可见,窗口必须是半透明的(请参阅 android.R.attr.windowIsTranslucent)和浮动的(请参阅 android.R.attr.windowIsFloating)。
4980 请注意与 WindowManager.LayoutParams.setBlurBehindRadius 的区别,它模糊了窗口后面的整个屏幕。背景模糊仅在窗口边界内模糊后面的屏幕。
4981 由于 GPU 限制,某些设备可能不支持跨窗口模糊。它也可以在运行时禁用,例如在省电模式下、使用多媒体隧道时或请求最少的后期处理时。
4982 在这种情况下,不会计算或绘制模糊,从而导致窗口背景透明。为了避免这种情况,应用程序可能需要将其主题更改为不使用模糊的主题。
4983 要监听跨窗口模糊启用/禁用事件,请使用 WindowManager.addCrossWindowBlurEnabledListener。
4984 `blur_radius` 用于窗口背景模糊的模糊半径(以像素为单位)
4985 */
4986 #[java_method]
4987 pub fn set_background_blur_radius(&self, blur_radius: i32) {}
4988
4989 /**
4990 根据资源标识符设置此窗口的可绘制功能的值。在调用此函数之前,您必须已调用 requestFeature(featureId)。
4991 `feature_id` 要更改的所需可绘制功能,由 Window 定义为常量。
4992 `res_id` 所需图像的资源标识符。
4993 */
4994 #[java_method]
4995 pub fn set_feature_drawable_resource(&self, feature_id: i32, res_id: i32) {}
4996
4997 /**
4998 为给定的可绘制功能设置自定义 alpha 值,控制背景透过该功能可见的程度。
4999 `feature_id` 需要更改的可绘制功能。功能是Window定义的常量。
5000 `alpha` – alpha 量,0 表示完全透明,255 表示完全不透明。
5001 */
5002 #[java_method]
5003 pub fn set_feature_drawable_alpha(&self, feature_id: i32, alpha: i32) {}
5004
5005 /**
5006 设置特征的整数值。值的范围取决于所设置的特征。对于 FEATURE_PROGRESS,它应该从 0 到 10000。当值为 10000 时,进度完成,指示器隐藏。
5007 `feature_id` 需要更改的特征。特征是由 Window 定义的常量。
5008 `value` 特征的值。此值的解释特定于特征。
5009 */
5010 #[java_method]
5011 pub fn set_feature_int(&self, feature_id: i32, value: i32) {}
5012
5013 /**
5014 请求关键事件到达此活动。如果您的活动没有焦点视图,但活动仍需要处理关键事件,请使用此选项。
5015 */
5016 #[java_method]
5017 pub fn take_key_events(&self, get: bool) {}
5018
5019 /**
5020 由自定义窗口(如对话框)使用,将按键事件传递到视图层次结构中。应用程序开发人员不需要实现或调用此功能。
5021 */
5022 #[java_method]
5023 pub fn super_dispatch_key_event(&self, event: &KeyEvent) -> bool {}
5024
5025 /**
5026 查询顶层窗口装饰视图(包含标准窗口框架/装饰以及其中的客户端内容),可将其作为窗口添加到窗口管理器。
5027 请注意,首次调用此函数会“锁定”各种窗口特性,如 setContentView(View, ViewGroup.LayoutParams) 中所述。
5028 返回:返回顶层窗口装饰视图。
5029 */
5030 #[java_method]
5031 pub fn get_decor_view(&self) -> View {}
5032
5033 /**
5034 返回状态栏背景视图或null。
5035 */
5036 #[java_method]
5037 pub fn get_status_bar_background_view(&self) -> Option<View> {}
5038
5039 /// 导航栏背景视图或空。
5040 #[java_method]
5041 pub fn get_navigation_bar_background_view(&self) -> Option<View> {}
5042
5043 /**
5044 查询当前装饰视图,但前提是它已经创建;否则返回 null。
5045 返回:返回顶级窗口装饰或 null。
5046 */
5047 #[java_method]
5048 pub fn peek_decor_view(&self) -> Option<View> {}
5049
5050 #[doc(hidden)]
5051 #[java_method]
5052 pub fn save_hierarchy_state(&self) -> Bundle {}
5053
5054 #[doc(hidden)]
5055 #[java_method]
5056 pub fn restore_hierarchy_state(&self, saved_instance_state: &Bundle) {}
5057
5058 /**
5059 返回窗口上默认设置的功能位。
5060 `context` 用于访问资源的上下文
5061 */
5062 #[java_method]
5063 pub fn get_default_features(context: &Context) -> i32 {}
5064
5065 /**
5066 查询特定功能的可用性。
5067 如果该功能已启用,则返回 true,否则返回 false。
5068 `feature` 要检查的功能 ID
5069 */
5070 #[java_method]
5071 pub fn has_feature(&self, feature: i32) -> bool {}
5072
5073 #[doc(hidden)]
5074 #[java_method]
5075 pub fn set_child_int(&self, feature_id: i32, value: i32) {}
5076
5077 /**
5078 是此窗口的定义快捷键之一。
5079 `key_code` 从KeyEvent到检查的密钥代码。
5080 `event` 用于帮助检查的键。
5081 */
5082 #[java_method]
5083 pub fn is_shortcut_key(&self, key_code: i32, event: &KeyEvent) -> bool {}
5084
5085 #[doc(hidden)]
5086 #[java_method]
5087 pub fn set_volume_control_stream(&self, stream_type: i32) {}
5088
5089 #[doc(hidden)]
5090 #[java_method]
5091 pub fn get_volume_control_stream(&self) -> i32 {}
5092
5093 /**
5094 设置将影响此窗口 UI 的额外选项。
5095 `ui_options` 指定此窗口额外选项的标志。
5096 */
5097 #[java_method(overload = setUiOptions)]
5098 pub fn set_ui_options_convenience(&self, ui_options: i32) {}
5099
5100 /**
5101 设置将影响此窗口 UI 的额外选项。只有经过 mask 过滤的位才会被修改。
5102 `ui_options` 指定此窗口额外选项的标志。
5103 `mask` 指定应修改哪些选项的标志。其他选项将保持不变。
5104 */
5105 #[java_method]
5106 pub fn set_ui_options(&self, ui_options: i32, mask: i32) {}
5107
5108 /**
5109 设置此窗口的主图标。
5110 `res_id` 要设置的可绘制对象的资源 ID
5111 */
5112 #[java_method]
5113 pub fn set_icon(&self, res_id: i32) {}
5114
5115 /**
5116 设置此窗口的默认图标。这将被来自主题或其他显式设置的任何其他图标设置操作覆盖。
5117 */
5118 #[java_method]
5119 pub fn set_default_icon(&self, res_id: i32) {}
5120
5121 /**
5122 设置此窗口的徽标。徽标通常代替图标显示,但通常更宽,并且还传达窗口标题信息。
5123 `res_id` 要设置的可绘制对象的资源 ID
5124 */
5125 #[java_method]
5126 pub fn set_logo(&self, res_id: i32) {}
5127
5128 /**
5129 设置此窗口的默认徽标。这将被来自主题或其他明确设置的任何其他徽标设置操作覆盖。
5130 */
5131 #[java_method]
5132 pub fn set_default_logo(&self, res_id: i32) {}
5133
5134 /**
5135 在本地设置焦点。窗口应该已经设置了 WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE 标志。
5136 `has_focus` 此窗口是否具有焦点。
5137 `in_touch_mode` 此窗口是否处于触摸模式。
5138 */
5139 #[java_method]
5140 pub fn set_local_focus(&self, has_focus: bool, in_touch_mode: bool) {}
5141
5142 /**
5143 控制 setEnterTransition(Transition) 中设置的过渡如何与调用 Activity 的退出过渡重叠。如果为 true,过渡将尽快开始。如果为 false,过渡将等到远程退出过渡完成后再开始。默认值为 true。
5144 `allow` 如果为 true,则在可能时启动进入过渡;如果为 false,则等到退出过渡完成。
5145 */
5146 #[java_method]
5147 pub fn set_allow_enter_transition_overlap(&self, allow: bool) {}
5148
5149 /**
5150 返回 setEnterTransition(Transition) 中设置的过渡与调用 Activity 的退出过渡如何重叠。如果为 true,过渡将尽快开始。如果为 false,过渡将等到远程退出过渡完成后再开始。默认值为 true。
5151 返回:如果进入过渡应尽快开始,则返回 true;如果应等到退出过渡完成,则返回 false。
5152 */
5153 #[java_method]
5154 pub fn get_allow_enter_transition_overlap(&self) -> bool {}
5155
5156 /**
5157 控制在完成之后重新进入时,setExitTransition(Transition) 中设置的过渡如何与被调用 Activity 的退出过渡重叠。
5158 如果为 true,过渡将尽快开始。如果为 false,过渡将等到被调用 Activity 的退出过渡完成后再开始。默认值为 true。
5159 `allow` 如果为 true,则在可能时启动过渡;如果为 false,则等到被调用 Activity 的退出过渡完成。
5160 */
5161 #[java_method]
5162 pub fn set_allow_return_transition_overlap(&self, allow: bool) {}
5163
5164 /**
5165 返回setExitTransition(Transition)中的过渡设置如何与在完成后重新输入时的退出活动的退出过渡。如果是true,过渡将尽快开始。当false时,过渡将等到呼叫活动的退出过渡完成之前。默认值是true。
5166 返回:true当过渡应在可能的情况下启动或何时等待时,直到被调用活动的退出过渡完成为止。
5167 */
5168 #[java_method]
5169 pub fn get_allow_return_transition_overlap(&self) -> bool {}
5170
5171 /**
5172 返回使用 Activity Transition 调用时进入或离开 Activity 时窗口背景淡入淡出的持续时间(以毫秒为单位)。
5173 执行进入 过渡时,背景开始透明并淡入。这需要 FEATURE_ACTIVITY_TRANSITIONS。默认值为 300 毫秒。
5174 返回:进入 过渡期间窗口背景淡入不透明的持续时间。
5175 */
5176 #[java_method]
5177 pub fn get_transition_background_fade_duration(&self) -> i64 {}
5178
5179 /**
5180 设置在使用 Activity Transition 调用时进入或离开 Activity 时窗口背景淡入淡出的持续时间(以毫秒为单位)。
5181 执行进入过渡时,背景开始透明并淡入。这需要 FEATURE_ACTIVITY_TRANSITIONS。默认值为 300 毫秒。
5182 `fade_duration_millis` 进入过渡期间窗口背景淡入或淡出不透明的持续时间。
5183 */
5184 #[java_method]
5185 pub fn set_transition_background_fade_duration(&self, fade_duration_millis: i64) {}
5186
5187 /**
5188 如果共享元素在共享元素转换期间应使用 Overlay,则返回 true;如果共享元素应作为正常 View 层次结构的一部分进行动画处理,则返回 false。默认值为 true。
5189 返回:如果共享元素在共享元素转换期间应使用 Overlay,则返回 true;如果共享元素应作为正常 View 层次结构的一部分进行动画处理,则返回 false。
5190 */
5191 #[java_method]
5192 pub fn get_shared_elements_use_overlay(&self) -> bool {}
5193
5194 /**
5195 设置共享元素在共享元素转换期间是否应使用 Overlay。默认值为 true。
5196 `shared_elements_use_overlay` true 表示共享元素应使用 Overlay 进行转换,false 表示在正常视图层次结构内进行转换。
5197 */
5198 #[java_method]
5199 pub fn set_shared_elements_use_overlay(&self, shared_elements_use_overlay: bool) {}
5200
5201 /// 状态栏的颜色。
5202 #[java_method]
5203 pub fn get_status_bar_color(&self) -> i32 {}
5204
5205 /**
5206 将状态栏的颜色设置为彩色。要使此功能生效,窗口必须使用 WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 绘制系统栏背景,并且不得设置 WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS。
5207 如果颜色不是不透明的,请考虑设置 View.SYSTEM_UI_FLAG_LAYOUT_STABLE 和 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。视图背景的 transitionName 将是“android:status:background”。
5208 */
5209 #[java_method]
5210 pub fn set_status_bar_color(&self, color: i32) {}
5211
5212 /// 导航栏的颜色。
5213 #[java_method]
5214 pub fn get_navigation_bar_color(&self) -> i32 {}
5215
5216 /**
5217 将导航栏的颜色设置为`color`。要使此功能生效,窗口必须使用 WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 绘制系统栏背景,并且不得设置 WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION。
5218 如果`color` 不透明,请考虑设置 View.SYSTEM_UI_FLAG_LAYOUT_STABLE 和 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION。视图背景的 transitionName 将是“android:navigation:background”。
5219 */
5220 #[java_method]
5221 pub fn set_navigation_bar_color(&self, color: i32) {}
5222
5223 /**
5224 在导航栏和应用内容之间显示指定颜色的分隔线。要使此功能生效,窗口必须使用 WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 绘制系统栏背景,并且不得设置 WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION。
5225 `divider_color` 细线的颜色。
5226 */
5227 #[java_method]
5228 pub fn set_navigation_bar_divider_color(&self, divider_color: i32) {}
5229
5230 /**
5231 查询导航栏分隔线的颜色。
5232 返回:导航栏分隔线的颜色。
5233 */
5234 #[java_method]
5235 pub fn get_navigation_bar_divider_color(&self) -> i32 {}
5236
5237 /**
5238 设置系统是否应在请求完全透明背景时确保状态栏具有足够的对比度。如果设置为此值,系统将确定是否需要使用纱布来确保状态栏与此应用的内容具有足够的对比度,并相应地设置适当的有效栏背景颜色。
5239 当状态栏颜色具有非零 alpha 值时,此属性的值无效。
5240 */
5241 #[java_method]
5242 pub fn set_status_bar_contrast_enforced(&self, ensure_contrast: bool) {}
5243
5244 /**
5245 返回系统是否在请求完全透明背景时确保状态栏具有足够的对比度。当状态栏颜色具有非零 alpha 值时,此属性的值无效。
5246 如果系统确保对比度,则返回 true,否则返回 false。
5247 */
5248 #[java_method]
5249 pub fn is_status_bar_contrast_enforced(&self) -> bool {}
5250
5251 /**
5252 设置系统是否应在请求完全透明背景时确保导航栏具有足够的对比度。如果设置为此值,系统将确定是否需要使用纱布来确保导航栏与此应用的内容具有足够的对比度,并相应地设置适当的有效栏背景颜色。
5253 当导航栏颜色具有非零 alpha 值时,此属性的值无效。
5254 */
5255 #[java_method]
5256 pub fn set_navigation_bar_contrast_enforced(&self, enforce_contrast: bool) {}
5257
5258 /**
5259 返回系统是否在请求完全透明背景时确保导航栏具有足够的对比度。当导航栏颜色具有非零 alpha 值时,此属性的值无效。
5260 如果系统确保对比度,则返回 true,否则返回 false。
5261 */
5262 #[java_method]
5263 pub fn is_navigation_bar_contrast_enforced(&self) -> bool {}
5264
5265 #[doc(hidden)]
5266 #[java_method]
5267 pub fn set_theme(&self, res_id: i32) {}
5268
5269 /**
5270 是否应将标题直接显示在内容上,而不是将内容向下推。这只会影响自由格式窗口,因为它们会显示标题。
5271 */
5272 #[java_method]
5273 pub fn set_overlay_with_decor_caption_enabled(&self, enabled: bool) {}
5274
5275 #[doc(hidden)]
5276 #[java_method]
5277 pub fn is_overlay_with_decor_caption_enabled(&self) -> bool {}
5278
5279 #[doc(hidden)]
5280 #[java_method]
5281 pub fn notify_restricted_caption_area_callback(
5282 &self,
5283 left: i32,
5284 top: i32,
5285 right: i32,
5286 bottom: i32,
5287 ) {
5288 }
5289
5290 /**
5291 设置标题控件的颜色。默认情况下,系统将尝试从主题中确定颜色。
5292 您可以使用 DECOR_CAPTION_SHADE_DARK、DECOR_CAPTION_SHADE_LIGHT 或 DECOR_CAPTION_SHADE_AUTO 覆盖此颜色。
5293 */
5294 #[java_method]
5295 pub fn set_decor_caption_shade(&self, decor_caption_shade: i32) {}
5296
5297 /**
5298 当活动从全屏模式变为多窗口模式或反之时调用。
5299 */
5300 #[java_method]
5301 pub fn on_multi_window_mode_changed(&self) {}
5302
5303 /**
5304 当活动转换为画中画模式或从画中画模式转换时调用。
5305 */
5306 #[java_method]
5307 pub fn on_picture_in_picture_mode_changed(&self, is_in_picture_in_picture_mode: bool) {}
5308}
5309
5310/// 上下文包装器允许您修改或替换包装上下文的主题。
5311#[java_class(name = "android/view/ContextThemeWrapper", extends = ContextWrapper)]
5312pub struct ContextThemeWrapper;
5313
5314/**
5315持有显示表面的人员的抽象接口。允许您控制表面大小和格式、编辑表面中的像素以及监视表面的变化。
5316此接口通常可通过 SurfaceView 类获得。当从运行其 SurfaceView 的线程以外的线程使用此接口时,您需要仔细阅读 lockCanvas 和 Callback.surfaceCreated() 方法。
5317*/
5318#[java_interface(name = "android/view/SurfaceHolder")]
5319pub trait SurfaceHolder {
5320 #[doc(hidden)]
5321 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
5322 const SURFACE_TYPE_NORMAL: i32 = 0;
5323
5324 #[doc(hidden)]
5325 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
5326 const SURFACE_TYPE_HARDWARE: i32 = 1;
5327
5328 #[doc(hidden)]
5329 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
5330 const SURFACE_TYPE_GPU: i32 = 2;
5331
5332 #[doc(hidden)]
5333 #[deprecated(note = "这将被忽略,该值在需要时自动设置。")]
5334 const SURFACE_TYPE_PUSH_BUFFERS: i32 = 3;
5335
5336 /**
5337 为该持有者添加一个回调接口。一个持有者可以关联多个回调接口。
5338 `callback` 新的 回调接口。
5339 */
5340 fn add_callback<C: SurfaceHolder_Callback>(&self, callback: &C);
5341
5342 /**
5343 从此持有者中移除先前添加的回调接口。
5344 `callback` 要移除的回调接口。
5345 */
5346 fn remove_callback<C: SurfaceHolder_Callback>(&self, callback: &C);
5347
5348 /**
5349 使用此方法可查明表面是否正在通过回调方法创建。此方法旨在与 SurfaceHolder.Callback.surfaceChanged 一起使用。
5350 如果表面正在创建,则返回 true。
5351 */
5352 fn is_creating(&self) -> bool;
5353
5354 /**
5355 设置表面的类型。
5356 */
5357 #[deprecated(note = "此项将被忽略,需要时会自动设置此值。")]
5358 fn set_type(&self, r#type: i32);
5359
5360 /**
5361 使表面具有固定大小。它永远不会改变此大小。使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。
5362 `width` 表面的宽度。
5363 `height` – 表面的高度。
5364 */
5365 fn set_fixed_size(&self, width: i32, height: i32);
5366
5367 /**
5368 允许表面根据其容器的布局调整大小(这是默认设置)。启用此功能后,您应该监视 SurfaceHolder.Callback.surfaceChanged 以了解表面大小的变化。
5369 使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此功能。
5370 */
5371 fn set_size_from_layout(&self);
5372
5373 /**
5374 设置表面所需的 PixelFormat。默认值为 OPAQUE。
5375 使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。 `format` 来自 PixelFormat 的常量。
5376 */
5377 fn set_format(&self, format: i32);
5378
5379 /**
5380 启用或禁用选项以在显示此表面时保持屏幕打开。默认值为 false,允许其关闭。可从任何线程安全地调用此功能。
5381 `screen_on` 设置为 true 以强制屏幕保持打开状态,设置为 false 以允许其关闭。
5382 */
5383 fn set_keep_screen_on(&self, screen_on: bool);
5384
5385 /**
5386 开始编辑表面中的像素。返回的 Canvas 可用于绘制到表面的位图中。如果表面尚未创建或无法编辑,则返回 null。
5387 您通常需要实现 Callback.surfaceCreated 以查明 Surface 何时可用。 Surface 的内容永远不会在 unlockCanvas() 和 lockCanvas() 之间保留,因此,必须写入 Surface 区域内的每个像素。
5388 此规则的唯一例外是指定脏矩形时,在这种情况下,将保留非脏像素。如果在 Surface 未准备好时(在 Callback.surfaceCreated 之前或 Callback.surfaceDestroyed 之后)反复调用此函数,您的调用将被限制到较慢的速率,以避免消耗 CPU。
5389 如果没有返回 null,此函数会在内部保持锁定,直到相应的 unlockCanvasAndPost 调用,从而防止 SurfaceView 在绘制表面时创建、销毁或修改表面。
5390 这比直接访问 Surface 更方便,因为您不需要在 Callback.surfaceDestroyed 中与绘图线程进行特殊同步。
5391 返回:Canvas 用于绘制到表面。
5392 */
5393 fn lock_canvas(&self) -> Option<Canvas>;
5394
5395 /**
5396 与 lockCanvas() 类似,但允许指定脏矩形。必须写入该矩形内的每个像素;但是脏矩形之外的像素将在下次调用 lockCanvas() 时保留。
5397 返回:Canvas 用于绘制到 Surface 中。
5398 `dirty` 将被修改的表面区域。
5399 */
5400 fn lock_canvas_dirty(&self, dirty: &Rect);
5401
5402 /**
5403 完成编辑表面中的像素。调用此方法后,表面的当前像素将显示在屏幕上,但其内容将丢失,特别是无法保证再次调用 lockCanvas() 时 Surface 的内容保持不变。
5404 `canvas` 先前由 lockCanvas() 返回的 Canvas。
5405 */
5406 fn unlock_canvas_and_post(&self, canvas: &Canvas);
5407
5408 /**
5409 查询表面的当前大小。注意:不要修改返回的 Rect。
5410 这只能从 SurfaceView 窗口的线程或在 lockCanvas() 内部调用才安全。
5411 返回:Rect 表面的尺寸。左侧和顶部始终为 0。
5412 */
5413 fn get_surface_frame(&self) -> Rect;
5414
5415 /**
5416 直接访问表面对象。Surface 可能并非始终可用 - 例如,当使用 SurfaceView 时,持有者的 Surface 直到视图连接到窗口管理器并执行布局以确定 Surface 的尺寸和屏幕位置时才会创建。
5417 因此,您通常需要实现 Callback.surfaceCreated 以查明 Surface 何时可用。
5418 请注意,如果您直接从另一个线程访问 Surface,则必须正确实现 Callback.surfaceCreated 和 Callback.surfaceDestroyed 以确保线程仅在 Surface 有效时访问它,并且 Surface 不会在线程使用时被破坏。此方法旨在供经常需要直接访问 Surface 对象(通常将其传递给本机代码)的框架使用。
5419 返回:Surface 表面。
5420 */
5421 fn get_surface(&self) -> Surface;
5422}
5423
5424/**
5425客户端可以实现此接口来接收有关表面更改的信息。与 SurfaceView 一起使用时,被保留的 Surface 仅在调用 surfaceCreated(SurfaceHolder) 和 surfaceDestroyed(SurfaceHolder) 之间可用。
5426回调使用 SurfaceHolder.addCallback 方法设置。
5427*/
5428#[allow(non_camel_case_types)]
5429#[java_interface(name = "android/view/SurfaceHolder$Callback")]
5430pub trait SurfaceHolder_Callback {
5431 type SH: SurfaceHolder;
5432
5433 /**
5434 首次创建表面后会立即调用此方法。此方法的实现应启动所需的任何渲染代码。
5435 请注意,只有一个线程可以绘制到 Surface 中,因此如果您的正常渲染将在另一个线程中进行,则不应在此处绘制到 Surface 中。
5436 `holder` – 正在创建其表面的 SurfaceHolder。
5437 */
5438 fn surface_created(&self, holder: Self::SH);
5439
5440 /**
5441 在对表面进行任何结构更改(格式或大小)后,会立即调用此方法。此时,您应该更新表面中的图像。在 SurfaceCreated 之后,此方法始终至少调用一次。
5442 `holder` 表面已更改的 SurfaceHolder。
5443 `format` 表面的新 PixelFormat。
5444 `width` 表面的新宽度。
5445 `height` 表面的新高度。
5446 */
5447 fn surface_changed(&self, holder: Self::SH, format: i32, width: i32, height: i32);
5448
5449 /**
5450 在表面被销毁之前立即调用此函数。从此调用返回后,您不应再尝试访问此表面。
5451 如果您有一个直接访问表面的渲染线程,则必须确保在从此函数返回之前该线程不再接触表面。
5452 `holder` – 正在销毁其表面的 SurfaceHolder。
5453 */
5454 fn surface_destroyed(&self, holder: Self::SH);
5455}
5456
5457/**
5458客户端可以实现此接口来接收有关表面更改的信息。与 SurfaceView 一起使用时,被保留的 Surface 仅在调用 surfaceCreated(SurfaceHolder) 和 surfaceDestroyed(SurfaceHolder) 之间可用。
5459回调使用 SurfaceHolder.addCallback 方法设置。
5460*/
5461#[allow(non_camel_case_types)]
5462#[java_interface(name = "android/view/SurfaceHolder$Callback2")]
5463pub trait SurfaceHolder_Callback2: SurfaceHolder_Callback {
5464 /**
5465 当应用程序需要重绘其表面的内容时调用,在调整其大小后或出于其他原因。通过在重绘完成之前不从此处返回,您可以确保用户不会看到处于不良状态的表面(在以新大小正确绘制之前)。
5466 这通常会先调用surfaceChanged。从O开始,可以实现surfaceRedrawNeededAsync以提供非阻塞实现。如果未实现surfaceRedrawNeededAsync,则将改为调用此方法。
5467 `holder` 其表面已更改的SurfaceHolder。
5468 */
5469 fn surface_redraw_needed(&self, holder: &Self::SH);
5470}
5471
5472//noinspection SpellCheckingInspection
5473/**
5474处理由屏幕合成器管理的原始缓冲区。 Surface 通常由图像缓冲区的使用者(例如 SurfaceTexture、android.media.MediaRecorder 或 android.renderscript.Allocation)创建或从其创建,并交给某种生产者(例如 OpenGL、MediaPlayer 或 CameraDevice)进行绘制。
5475注意:Surface 就像与其关联的使用者的弱引用。它本身不会阻止其父级使用者被回收。
5476*/
5477#[java_class(name = "android/view/Surface")]
5478pub struct Surface;
5479
5480/// 测试android.view
5481#[cfg(feature = "test_android_view")]
5482pub fn test() {
5483 use crate::{
5484 android::app::Activity,
5485 java::lang::{CharSequenceExt, CharSequenceImpl},
5486 };
5487 let act = Activity::fetch();
5488 let view = View::new(&act);
5489 assert!(view.to_string().starts_with("android.view.View"));
5490 view.announce_for_accessibility(&"通知".to_char_sequence::<CharSequenceImpl>());
5491 view.request_focus();
5492 view.clear_focus();
5493 assert_eq!(None, view.find_focus());
5494 view.set_activated(true);
5495 assert_eq!(true, view.is_activated());
5496 view.set_x(20f32);
5497 assert_eq!(20f32, view.get_x());
5498 view.set_y(30f32);
5499 assert_eq!(30f32, view.get_y());
5500 assert_eq!(None, view.find_view_by_id(0));
5501 view.set_content_description(Some("测试".to_char_sequence::<CharSequenceImpl>()));
5502 assert_eq!(
5503 Some("测试".to_char_sequence()),
5504 view.get_content_description::<CharSequenceImpl>()
5505 );
5506 view.set_id(3);
5507 assert_eq!(3, view.get_id());
5508 let l = View_OnClickListenerImpl::from_fn(|_| {
5509 println!("View is clicked.");
5510 });
5511 view.set_on_click_listener(l.as_ref());
5512 view.set_visibility(View::GONE);
5513 assert_eq!(View::GONE, view.get_visibility());
5514 view.set_context_clickable(true);
5515 assert_eq!(true, view.is_context_clickable());
5516 view.set_clickable(true);
5517 assert_eq!(true, view.is_clickable());
5518 view.set_long_clickable(true);
5519 assert_eq!(true, view.is_long_clickable());
5520 view.set_allow_click_when_disabled(true);
5521 view.perform_click();
5522 assert_eq!(None, view.get_parent::<ViewGroup>());
5523
5524 let params = ViewGroup_LayoutParams::new(
5525 ViewGroup_LayoutParams::MATCH_PARENT,
5526 ViewGroup_LayoutParams::MATCH_PARENT,
5527 );
5528 params.set_width(40);
5529 assert_eq!(40, params.get_width());
5530 params.set_height(50);
5531 assert_eq!(50, params.get_height());
5532 let params = ViewGroup_MarginLayoutParams::from_layout_params(¶ms);
5533 params.set_left_margin(20);
5534 assert_eq!(20, params.get_left_margin());
5535 params.set_top_margin(10);
5536 assert_eq!(10, params.get_top_margin());
5537 params.set_right_margin(30);
5538 assert_eq!(30, params.get_right_margin());
5539 params.set_bottom_margin(40);
5540 assert_eq!(40, params.get_bottom_margin());
5541 view.set_layout_params(¶ms);
5542 assert!(view.get_layout_params().is_some());
5543 let params = WindowManager_LayoutParams::new();
5544 params.set_flags(WindowManager_LayoutParams::FLAG_ALT_FOCUSABLE_IM);
5545 assert_eq!(
5546 WindowManager_LayoutParams::FLAG_ALT_FOCUSABLE_IM,
5547 params.get_flags()
5548 );
5549 let key_event = KeyEvent::new(KeyEvent::ACTION_DOWN, KeyEvent::KEYCODE_0);
5550 assert_eq!(KeyEvent::ACTION_DOWN, key_event.get_action());
5551 assert_eq!(KeyEvent::KEYCODE_0, key_event.get_key_code());
5552}