Wycinki w oknie tworzenia

Wycięcie w ekranie to na niektórych urządzeniach wycięcie w ekranie. na różnych powierzchniach. Umożliwia korzystanie z usług najnowszych i zapewnia przestrzeń dla ważne czujniki z przodu urządzenia.

Przykład wycięcia w trybie pionowym
Rysunek 1. Przykład wycięcia w trybie portretowym
.
Przykład wycięcia w trybie poziomym
Rysunek 2. Przykład wycięcia w trybie poziomym
.

Android obsługuje wycięcia w ekranie na urządzeniach z Androidem 9 (poziom interfejsu API 28) oraz wyższe. Producenci urządzeń mogą jednak stosować wycięcia w ekranie 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ślna wielkość liter

Domyślnie wycięcia w ekranie są zawarte w informacjach o wkładkach okien. Z tego powodu aplikacja nie rysuje w obszarach wycięcia w ekranie, gdy jak tworzyć aplikacje brzegowe do brzegu sieci.

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. WindowInsets.safeContent i WindowInsets.safeDrawing oba zawierają informacje o wycięcia w ekranie i nie będą rysowane tam, gdzie wycięcie w 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.

Obsługa informacji o wycięciu ręcznie

Możesz radzić sobie z wycięciami na następujące sposoby:

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 stosuje się przy wycięciu widoków dokumentacja opisana przez ustawienie wybierz motyw aktywności android:windowLayoutInDisplayCutoutMode na inny lub ustawiając atrybut window za pomocą parametru window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT Następnie zostanie zastosowany tryb wycięcia. w 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 żadnych elementów interaktywnych, które wymagają precyzyjnego dotyku. do obszaru wycięcia. Czułość ekranu może być niższa i miejsca wycięcia.
  • Przy przestrzeganiu wskazówek od krawędzi do krawędzi informacje o wycięciu są uwzględniane w wektory safeDrawing / safeContent.
  • Gdy tylko jest to możliwe, używaj zasady Modifier.windowInsetsPadding(WindowInsets.safeDrawing) aby określić odpowiednie dopełnienie. Unikaj kodowanie na stałe wysokości paska stanu, ponieważ może to prowadzić do nakładania się lub cięcia. treści.

Sprawdzanie sposobu renderowania treści za pomocą wycięć

Przetestuj wszystkie ekrany i sposób działania aplikacji. Przetestuj na urządzeniach z różne typy wycięć. Jeśli nie masz urządzenia z możesz symulować typowe konfiguracje wycięcia na dowolnym urządzeniu i emulatorze z Androidem 9 lub nowszym, wykonując te czynności:

  1. Włącz Opcje programisty.
  2. Na ekranie Opcje programisty przewiń w dół do sekcji Rysunek. i wybierz Symuluj wyświetlacz z wycięciem.
  3. Wybierz typ wycięcia.
    symulowanie w emulatorze wycięcia w ekranie
    Rysunek 3. Użyj Opcji programisty, aby przetestować renderowanie treści.
. .