Obsługa okna pulpitu

Tryb pulpitu umożliwia użytkownikom uruchamianie wielu aplikacji jednocześnie w oknach o zmiennym rozmiarze, co zapewnia wszechstronność i wygodę pracy na komputerze.

Na ilustracji 1 widać organizację ekranu z włączonym okienkiem na komputerze. Warto wiedzieć:

  • Użytkownicy mogą uruchamiać jednocześnie wiele aplikacji obok siebie.
  • Pasek aplikacji znajduje się w stałym miejscu u dołu wyświetlacza i wyświetla uruchomione aplikacje. Użytkownicy mogą przypinać aplikacje, aby mieć do nich szybki dostęp.
  • Nowy, dostosowywalny pasek nagłówka zdobi górną część każdego okna i zawiera elementy sterujące, takie jak minimalizowanie i maksymalizowanie.
Rysunek 1. Okno na komputerze na tablecie.

Domyślnie aplikacje otwierają się na pełnym ekranie na tabletach z Androidem. Aby uruchomić aplikację w oknie na komputerze, naciśnij i przytrzymaj uchwyt okna u góry ekranu, a następnie przeciągnij uchwyt w interfejsie, jak pokazano na rysunku 2.

Gdy aplikacja jest otwarta w oknie na pulpicie, inne aplikacje również otwierają się w oknach na pulpicie.

Rysunek 2. Naciśnij i przytrzymaj uchwyt okna aplikacji, aby przejść do okna na komputerze.

Użytkownicy mogą też wywołać okno pulpitu z menu, które pojawia się pod uchwytem okna, gdy klikniesz lub dotkniesz uchwyt lub użyjesz skrótu klawiszowego klawisz Meta (Windows, Command lub Szukaj) + Ctrl + Strzałka w dół.

Użytkownicy mogą zamknąć wszystkie aktywne okna lub chwycić uchwyt okna u góry okna pulpitu i przeciągnąć aplikację do góry ekranu. Skrót klawiszowy Meta + H również zamyka okno pulpitu i uruchamia aplikacje na pełnym ekranie.

Aby wrócić do okna na komputerze, na ekranie Ostatnie kliknij lub dotknij kafelka przestrzeni na komputerze.

Zmiana rozmiaru i tryb zgodności

W trybie okna na komputerze aplikacje z zablokowaną orientacją można dowolnie zmieniać. Oznacza to, że nawet jeśli aktywność jest zablokowana w orientacji pionowej, użytkownicy mogą zmienić rozmiar aplikacji na orientację poziomą.

Rysunek 3. Zmiana rozmiaru okna aplikacji ograniczonej do orientacji pionowej na poziomą.

W przypadku aplikacji zadeklarowanych jako bez możliwości zmiany rozmiaru (czyli resizeableActivity = false) ich interfejs jest skalowany przy zachowaniu tego samego współczynnika proporcji.

Rysunek 4. Interfejs aplikacji bez możliwości zmiany rozmiaru skaluje się wraz ze zmianą rozmiaru okna.

Aplikacje do obsługi aparatu, które blokują orientację lub są zadeklarowane jako nierozszerzalne, mają specjalne traktowanie w przypadku wizjerów aparatu: okno można w pełni zmieniać, ale wizjer zachowuje ten sam format obrazu. Zakładając, że aplikacje zawsze działają w orientacji pionowej lub poziomej, wprowadzają one założenia, które prowadzą do błędnego obliczenia orientacji podglądu lub obrazu lub formatu obrazu, co powoduje rozciągnięcie, przechylenie lub odwrócenie obrazu.

Dopóki aplikacje nie będą gotowe do wdrożenia w pełni elastycznych wizjerów aparatu, specjalne rozwiązanie zapewnia użytkownikom bardziej podstawowe wrażenia, które łagodzą skutki błędnego założenia.

Więcej informacji o trybie zgodności aplikacji aparatu znajdziesz w artykule Tryb zgodności urządzenia.

Rysunek 5. Wizjer aparatu zachowuje format obrazu podczas zmiany rozmiaru okna.

Niestandardowe wstawki nagłówka

Wszystkie aplikacje działające w oknie na komputery mają pasek nagłówka, nawet w trybie pojemnym.
Upewnij się, że pasek nagłówka nie zasłania treści aplikacji. Pasek nagłówka to wbudowany pasek podpisu: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); w widokach WindowInsets.Type.captionBar(), który jest częścią pasków systemowych.

Więcej informacji o obsługiwaniu wstawionych elementów znajdziesz w artykule Wyświetlanie treści od krawędzi do krawędzi w aplikacji i obsługa wstawionych okien w edytorze wiadomości.

Pasek nagłówka można też dostosować. W Androidzie 15 wprowadziliśmy typ wyglądu APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND, aby pasek nagłówka był przezroczysty, dzięki czemu aplikacje mogą rysować w nim niestandardowe treści.

Aplikacje są odpowiedzialne za stylizację górnej części treści, aby wyglądała jak pasek napisów (tło, treści niestandardowe itp.), z wyjątkiem elementów systemu napisów (przycisków Zamknij i Maksymalizuj), które są rysowane przez system na przezroczystym pasku napisów u góry aplikacji.

Aplikacje mogą przełączać wygląd elementów systemu w tytule w jasnym i ciemnym motywie za pomocą APPEARANCE_LIGHT_CAPTION_BARS, podobnie jak w przypadku paska stanu i paska nawigacyjnego.

W Androidzie 15 wprowadziliśmy również metodę WindowInsets#getBoundingRects(), która pozwala aplikacjom bardziej szczegółowo analizować wcięcia pasków z napisami. Aplikacje mogą rozróżniać obszary, na których system wyświetla elementy systemowe, oraz obszary niewykorzystane, na których aplikacje mogą umieszczać treści niestandardowe bez nakładania się na elementy systemowe.

Lista obiektów Rect zwracanych przez interfejs API wskazuje regiony systemu, których należy unikać. Pozostała przestrzeń (obliczana przez odjęcie prostokątów od wcięć pasków napisów) pozwala aplikacji rysować bez nakładania się na siebie elementów systemowych i umożliwia odbieranie danych wejściowych.

Chrome przed i po implementacji nagłówków niestandardowych
Rysunek 6. Chrome przed i po implementacji nagłówków niestandardowych

Obsługa wielozadaniowości i wielu instancji

Wielozadaniowość jest podstawą korzystania z okienek na komputerze, a zezwolenie na uruchamianie wielu instancji aplikacji może znacznie zwiększyć produktywność użytkowników.

Android 15 wprowadza parametr PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, który pozwala aplikacjom określić, że interfejs użytkownika systemu powinien być wyświetlany, aby umożliwić uruchamianie aplikacji w wielu instancjach.

Zarządzanie instancjami aplikacji za pomocą gestów przeciągania

W trybie wielu okien użytkownicy mogą uruchomić nową instancję aplikacji, przeciągając element widoku z okna aplikacji. Użytkownicy mogą też przenosić elementy między instancjami tej samej aplikacji.

Rysunek 7. Uruchom nową instancję Chrome, przeciągając kartę z okna przeglądarki.

Android 15 wprowadza 2 flagi umożliwiające dostosowywanie zachowania przeciągania i upuszczania:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Wskazuje, że przeciąganie, które nie zostało obsłużone, powinno zostać przekazane do systemu, jeśli żadne widoczne okno nie obsługuje przenoszenia. Gdy używasz tej flagi, wywołujący musi podać ClipData z Item, który zawiera niezmienną IntentSender wobec działania do uruchomienia (patrz ClipData.Item.Builder#setIntentSender()). System może uruchomić intencję lub nie na podstawie takich czynników jak aktualny rozmiar ekranu czy tryb okna. Jeśli system nie uruchomi intencji, zostanie ona anulowana za pomocą zwykłego przeciągania i upuszczania.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Wskazuje, że operacja przeciągania może przekraczać granice okna (w przypadku wielu instancji tej samej aplikacji).

    Gdy wywołana zostanie funkcja startDragAndDrop() z ustawionym tym flagiem, tylko widoczne okna należące do tej samej aplikacji mogą uczestniczyć w operacji przeciągania i odbierać przeciągane treści.

Rysunek 8. Przenoszenie karty między 2 kopiami aplikacji Chrome.

Dodatkowe optymalizacje

Dostosowywanie uruchamiania aplikacji i przechodzenia z okna na komputerze do trybu pełnoekranowego.

Określ domyślny rozmiar i położenie

Nie wszystkie aplikacje, nawet te, które można skalować, muszą mieć duże okno, aby przynosić użytkownikom korzyści. Aby określić domyślny rozmiar i pozycję podczas uruchamiania aktywności, możesz użyć metody ActivityOptions#setLaunchBounds().

Włączanie trybu pełnoekranowego z poziomu pulpitu

Aby przejść do trybu pełnoekranowego, aplikacja musi zadzwonić pod numer Activity#requestFullScreenMode(). Ta metoda wyświetla aplikację na pełnym ekranie bezpośrednio z okna na pulpicie.