Wycięcie w ekranie to obszar na niektórych urządzeniach, który wkracza w powierzchnię ekranu. Zapewnia to ekran od krawędzi do krawędzi, a jednocześnie pozostawia miejsce na ważne czujniki z przodu urządzenia.


Android obsługuje wycięcia w ekranie na urządzeniach z Androidem 9 (poziom interfejsu API 28) lub nowszym. Producenci urządzeń mogą jednak obsługiwać wycięcia na wyświetlaczu na urządzeniach z Androidem 8.1 lub starszym.
Na tej stronie opisano, jak w Compose zaimplementować obsługę urządzeń z wycięciem, w tym jak pracować z obszarem wycięcia, czyli prostokątem od krawędzi do krawędzi na powierzchni ekranu, który zawiera wycięcie.
Domyślny przypadek
Aplikacje kierowane na poziom interfejsu API 34 lub niższego albo aktywności, które nie wywołują funkcji enableEdgeToEdge
, nie będą domyślnie rysować w regionie wycięcia, chyba że aplikacja rysuje w pasku systemowym zawierającym wycięcie wyświetlacza.
Aplikacje kierowane na poziom API 35 lub wyższy na urządzeniach z Androidem 15 lub nowszym oraz aktywności wywołujące funkcję enableEdgeToEdge
rysują w regionie wycięcia.
Innymi słowy, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
,
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
i
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
są interpretowane jako
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
w przypadku okien nieprzesuwanych w aplikacjach kierowanych na poziom API 35 lub nowszy na urządzeniach z Androidem 15 lub nowszym.
Ręczne zarządzanie informacjami o wycięciu
Musisz odpowiednio zarządzać informacjami o wycięciu, aby nie zasłaniało ono ważnych tekstów, elementów sterujących ani elementów interaktywnych wymagających precyzyjnego rozpoznawania dotyku (w wycięciu czułość na dotyk może być niższa). Podczas obsługi wycinków nie koduj sztywno wysokości paska stanu, ponieważ może to spowodować nakładanie się lub przycinanie treści. Zamiast tego możesz wykonać te czynności:
Używam
WindowInsets.displayCutout
,WindowInsets.safeContent
lubWindowInsets.safeDrawing
.Dostęp do obiektu wycinanki
Path
za pomocąLocalView.current.rootWindowInsets.displayCutout
W przypadku usługi Compose zalecamy użycie displayCutout
, safeContent
lub safeDrawing
do obsługi wstawionych wycinków w składanych komponentach. Dzięki temu możesz zachować odstęp od krawędzi ekranu w miejscach, w których jest to wymagane, lub zignorować go w miejscach, w których nie jest to wymagane.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Okna w edytorze
- Modyfikatory graficzne
- Akapit ze stylem