本文主要是介绍Android 11 裁剪系统显示区域(适配异形屏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概述
在显示技术中,"OverScan"(超扫描)是一种调整显示图像边界的技术。通常情况下,OverScan 会在显示屏的边缘周围裁剪一小部分图像。这种裁剪是为了确保显示内容在屏幕上的完整可见性,尤其是在老式电视或投影仪等设备上,可能存在图像边缘出现失真或过多噪点的问题。
OverScan 通过裁剪图像边缘,可以隐藏显示器边缘的任何不完美之处,例如边缘上的噪点、失真或黑边。这有助于确保图像在屏幕上的边缘部分看起来整洁且不受干扰,提供更好的观看体验。
在一些情况下,OverScan 可能会在数字信号传输或视频播放过程中引入一些不必要的图像变形或丢失,因此在现代高清电视和显示器上,OverScan 往往是可以调整或关闭的选项。
如何裁剪
-
Android 系统的 wm overscan
wm overscan
命令是在 Android 4.2 Jelly Bean 版本中引入的,并且一直存在于后续的 Android 版本中。因此,从 Android 4.2 Jelly Bean 开始,就支持使用这个命令来调整屏幕的 OverScan 设置。
在 Android 中,“wm overscan” 是一个命令行工具,用于在设备上调整屏幕的 OverScan 设置。OverScan 调整可以在某些情况下用于调整显示的边缘,以确保图像完全填充整个屏幕,或者调整图像边缘以隐藏可能存在的不完美之处。使用:
adb shell wm overscan left,top,right,bottom
这里的 left、top、right 和 bottom 是指要应用的 OverScan 调整的像素数,分别对应屏幕的左边、顶部、右边和底部。
需要注意的是,使用这个命令可能会对屏幕显示产生意想不到的影响,因此在使用之前请确保了解你的设备支持的功能以及如何正确地使用它。实际效果:
wm overscan 300,0,300,0
-
可惜的是:在 Android 11 中,“wm overscan” 命令已经被弃用,不再建议使用。 一种简单粗暴的改法:
diff --git a/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java b/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java
index 5cd9b4d7a5..751c42d98d 100644
--- a/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java
+++ b/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java
@@ -371,7 +371,7 @@ final class LogicalDisplay {// getSafeInsets is fixed at creation time and cannot changereturn deviceInfo.displayCutout.getSafeInsets();} else {
- return new Rect();
+ return new Rect(0, 0, 1920, 544);//1080 - 536 = 544}}
参考
Android wm命令
通过 Tasker 实现「wm overscan」命令 [No Root]
这篇关于Android 11 裁剪系统显示区域(适配异形屏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!