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ęciami w ekranie, w tym jak pracować z obszarem wycięcia, czyli prostokątem na powierzchni ekranu od krawędzi do krawędzi, 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 obszar wycięcia nie zasłaniał 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 odcinanie 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ępy w przypadku wyświetlacza w miejscach, w których są one wymagane, lub zignorować je w miejscach, w których nie są 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 grafiki
- Akapit ze stylem