Wycięcie w ekranie to obszar na niektórych urządzeniach, który wkracza w powierzchnię ekranu. Umożliwia korzystanie z usług najnowszych i zapewnia przestrzeń dla 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 dowiesz się, jak wdrożyć obsługę urządzeń z wycięciami w tworzenie wiadomości, w tym informacje o korzystaniu z obszaru wycięcia, czyli od krawędzi do krawędzi prostokąt z wycięciem.
Domyślny przypadek
Domyślnie wycięcia w ekranie są zawarte w informacjach o wkładkach okien. Dlatego jeśli zastosujesz się do wskazówek dotyczących wyświetlania aplikacji od krawędzi do krawędzi, aplikacja nie będzie rysować w obszarach wycięcia.
Jeśli na przykład używasz
Modifier.windowInsetsPadding(WindowInsets.safeContent)
lub Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
, Twoja aplikacja
nie rysuje automatycznie w obszarach, w których znajduje się wycięcie.
Obie te wartości (WindowInsets.safeContent
i WindowInsets.safeDrawing
) zawierają informacje o wycięciu w ekranie i nie będą wyświetlane w miejscu wycięcia na urządzeniu.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) setContent { Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) { // Any composable inside here will avoid drawing behind cutouts } } }
Aby jeszcze bardziej dostosować to działanie, musisz obsługiwać informacje o wycięciu siebie.
Ręczne zarządzanie informacjami o wycięciu
Możesz radzić sobie z wycięciami na następujące sposoby:
Korzystanie z
WindowInsets.displayCutout
Ustawienie w pliku manifestu motywu za pomocą opcji
android:windowLayoutInDisplayCutoutMode
Automatyczne ustawianie opcji na
Window
za pomocą funkcjiwindow.attributes.layoutInDisplayCutoutMode
Uzyskiwanie dostępu do obiektu wycięcia
Path
za pomocą narzędziaLocalView.current.rootWindowInsets.displayCutout
W przypadku tworzenia wiadomości zalecamy ustawienie pola windowLayoutInDisplayCutoutMode
na
default
w ogólnym motywie, a następnie wykorzystaj WindowInsets.displayCutout
obsługuje wstawki w plikach kompozycyjnych:
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
To podejście umożliwia uwzględnienie dopełnienia displayCutout
tam, gdzie jest to wymagane,
lub zignorować je, gdy nie jest wymagane.
Możesz też zastosować te same ustawienia, które opisane są w dokumentacji dotyczącej wycinka liczby wyświetleń. Aby to zrobić, ustaw temat aktywności android:windowLayoutInDisplayCutoutMode
na inną opcję lub zmień atrybut okna za pomocą tagu window.attributes.layoutInDisplayCutoutMode =
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
. Następnie zostanie zastosowany tryb wycięcia.
w odniesieniu do całej aktywności i nie można nią kontrolować poszczególnych elementów kompozycyjnych.
Aby uwzględnić wycięcie w ekranie tylko w niektórych funkcjach kompozycyjnych, użyj funkcji
WindowInset.displayCutout
Ten interfejs API umożliwia dostęp do wycięcia
informacji, gdy są wymagane.
Sprawdzone metody
Podczas pracy z wycięciami w ekranie weź pod uwagę te kwestie:
- Zwróć uwagę na rozmieszczenie kluczowych elementów interfejsu. Nie pozwól, aby zasłaniają ważny tekst, elementy sterujące i inne informacje.
- Nie umieszczaj ani nie rozszerzaj elementów interaktywnych, które wymagają precyzyjnego wykrywania dotyku, w obszarze wycięcia. Czułość ekranu może być niższa w obszarze wycięcia.
- Jeśli postępujesz zgodnie ze wskazówkami dotyczącymi wyświetlania od krawędzi do krawędzi, informacje o wycięciu są zawarte w ramkach
safeDrawing
/safeContent
. - W miarę możliwości użyj elementu
Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
, aby określić odpowiedni margines dla treści. Unikaj osadzania wysokości paska stanu, ponieważ może to spowodować nakładanie się lub przycinanie treści.
Testowanie renderowania treści z wycięciami
Przetestuj wszystkie ekrany i funkcje aplikacji. Przetestuj na urządzeniach z różne typy wycięć. Jeśli nie masz urządzenia z wycięciem, możesz symulować typowe konfiguracje wycięć na dowolnym urządzeniu lub emulatorze z Androidem 9 lub nowszym. Aby to zrobić:
- Włącz Opcje programisty.
- Na ekranie Opcje programisty przewiń w dół do sekcji Rysunek. i wybierz Symuluj wyświetlacz z wycięciem.
- Wybierz typ wycięcia.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Wstawki w oknach w funkcji tworzenia wiadomości
- Modyfikatory graficzne
- Styl akapitu