@@ -595,6 +595,54 @@ public X setColorMode(int colorMode) {
595595 return (X ) this ;
596596 }
597597
598+ /**
599+ * 设置悬浮窗屏幕方向
600+ *
601+ * 自适应:{@link ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}
602+ * 横屏:{@link ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}
603+ * 竖屏:{@link ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}
604+ */
605+ public X setScreenOrientation (int screenOrientation ) {
606+ mWindowParams .screenOrientation = screenOrientation ;
607+ delayUpdate ();
608+ return (X ) this ;
609+ }
610+
611+ /**
612+ * 设置悬浮窗画面低延迟开关(Android 11 及以上才支持)
613+ *
614+ * 这个 API 就是让你的 App(比如游戏、视频会议)告诉手机 / 电视:
615+ * “我要最低延迟,别搞那些花里胡哨的画质处理!”,
616+ * 让设备把多余的画面后期处理关掉,优先保证操作和画面的响应速度。
617+ *
618+ * 1. 设备本身的 “坏习惯”:
619+ * 现在的手机、电视 / 显示器,为了让你看视频、图片的画质更好,会偷偷给画面做 “后期处理”,比如锐化、降噪、色彩增强、运动补偿……
620+ * 这些处理会让画面更好看,但都要花时间,结果就是你点一下屏幕、按一下手柄,画面要等几十毫秒才反应过来,这就是 “延迟”。
621+ *
622+ * 2. 游戏 / 视频会议的痛点:
623+ * 玩游戏时:你按了攻击键,结果半秒后角色才挥刀,就很容易输。
624+ * 视频会议时:你说话,对方的嘴型过了一会儿才对上,体验很差。
625+ * 这些场景里,“快” 比 “画质好” 重要得多。
626+ *
627+ * 3. 这个 API 的作用
628+ * 当你调用 setPreferMinimalPostProcessing(true) 时,就是在给设备发信号:
629+ * “我这个 App 现在很需要低延迟,麻烦把那些画质增强的后期处理都关了!
630+ * 如果你的显示器 / 电视支持 HDMI 2.1 的 ALLM(自动低延迟模式,也就是常说的游戏模式),也帮我把它打开!”
631+ *
632+ * 4. 为什么还有限制?
633+ * 它不是 100% 生效的,有两个 “无效场景”:
634+ * 你的设备 / 外接显示器根本不支持这个功能(比如老电视、非 HDMI 2.1 的设备)。
635+ * 用户自己在系统设置里手动关掉了 “低延迟 / 游戏模式” 的开关。
636+ * 这时候你调用这个 API,设备会直接无视你的请求,还是按原来的方式处理画面。
637+ */
638+ public X setPreferMinimalPostProcessing (boolean enabled ) {
639+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
640+ mWindowParams .preferMinimalPostProcessing = enabled ;
641+ delayUpdate ();
642+ }
643+ return (X ) this ;
644+ }
645+
598646 /**
599647 * 设置悬浮窗背后的高斯模糊半径大小(Android 12 及以上才支持)
600648 *
@@ -612,19 +660,6 @@ public X setBlurBehindRadius(@IntRange(from = 0) int blurBehindRadius) {
612660 return (X ) this ;
613661 }
614662
615- /**
616- * 设置悬浮窗屏幕方向
617- *
618- * 自适应:{@link ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}
619- * 横屏:{@link ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}
620- * 竖屏:{@link ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}
621- */
622- public X setScreenOrientation (int screenOrientation ) {
623- mWindowParams .screenOrientation = screenOrientation ;
624- delayUpdate ();
625- return (X ) this ;
626- }
627-
628663 /**
629664 * 重新设置 WindowManager 参数集
630665 */
0 commit comments