Wdrażanie paneli powiadomień typu „heads up”

W Androidzie 17 i nowszych wersjach skalowalny interfejs użytkownika w przypadku powiadomień heads-up (HUN) umożliwia dostosowywanie zarządzania oknami (pozycjonowanie, tło, animacje) paneli HUN za pomocą platformy skalowalnego interfejsu użytkownika z nakładkami zasobów w czasie działania (RRO). Ta funkcja umożliwia kontrolowanie kontenera powiadomienia bez wpływu na renderowanie treści wewnętrznych.

Implementacja

Wdrożenie skalowalnego interfejsu w przypadku jednostek HUN obejmuje te działania:

  • Publiczne i systemowe interfejsy API: wprowadza klasę HunWindow i logikę parsowania tagów XML <HunPanel> w parserach skalowalnego interfejsu.
  • Wdrożenie przez partnera:
    • Zdefiniuj niestandardową nakładkę RRO.
    • Aby utworzyć plik XML (np. res/xml/hun_panel.xml), użyj tagu głównego <HunPanel>.
    • Zdefiniuj elementy <Variant>, aby kontrolować granice, grawitację (TOP lub BOTTOM), widoczność i tło (rysunek zasłony).
    • Mapuj warianty na zdarzenia systemowe (np. _System_Show_Panel) za pomocą funkcji <Transitions>.
  • Nowe urządzenia a urządzenia z aktualizacją: jest to zmiana konfiguracji wprowadzona przez organizacje RRO. Aby zaktualizować urządzenia i otrzymać nowy obraz systemu, utwórz odpowiedni RRO, aby zdefiniować zachowanie HUN. Dzięki temu użytkownicy mogą odbiegać od ustawień domyślnych.
  • Włączanie i wyłączanie: aby włączyć lub wyłączyć tę funkcję, dodaj lub usuń @xml/hun_panel z konfiguracji window_states.
  • Ustawienia domyślne: zmień ustawienia domyślne, stosując własny pakiet RRO, który zastępuje domyślną konfigurację systemu.

Wymagania i weryfikacja

Aby przetestować włączanie i wyłączanie nakładek, wykonaj te czynności:

adb shell cmd overlay disable --user current com.example.overlay.scalableUI.hun.bottom

Jeśli włączysz lub wyłączysz RRO, numer HUN będzie wyświetlany odpowiednio u dołu lub u góry.

Ręczne sprawdzanie poprawności

  • Pozycjonowanie: sprawdź, czy HUN-y pojawiają się w określonym miejscu (TOP lub BOTTOM) i w określonych granicach.
  • Interakcje: sprawdź, czy działa przesuwanie w celu zamknięcia (jeśli nie można zamknąć, sprawdź, czy działa przycisk).
  • Animacje: sprawdź animacje przejścia między stanem otwartym a zamkniętym.