Wiadomości o usługach
Urządzenia z Androidem płynnie przechodzą na podłączone wyświetlacze
Czas czytania: 7 minut
Z przyjemnością ogłaszamy ważny krok w zbliżaniu do siebie urządzeń mobilnych i komputerów stacjonarnych z Androidem: obsługa podłączonych wyświetlaczy jest już ogólnie dostępna w ramach Androida 16 QPR3.
Jak pokazaliśmy na Google I/O 2025, podłączone wyświetlacze umożliwiają użytkownikom podłączenie urządzeń z Androidem do monitora zewnętrznego i natychmiastowe uzyskanie dostępu do trybu okien na pulpicie. Aplikacje można używać w oknach o dowolnym rozmiarze lub w oknach zmaksymalizowanych, a użytkownicy mogą wykonywać wiele zadań jednocześnie, tak jak w przypadku systemu operacyjnego na komputerze.
Google i Samsung współpracują, aby zapewnić płynne i wydajne działanie trybu okien na pulpicie na urządzeniach z Androidem 16 w ekosystemie Androida, które są podłączone do zewnętrznego wyświetlacza.
Jest ona teraz ogólnie dostępna na obsługiwanych urządzeniach* dla użytkowników, którzy mogą podłączyć obsługiwane telefony Pixel i Samsung do monitorów zewnętrznych. Umożliwia to tworzenie bardziej angażujących i wydajnych aplikacji, które dostosowują się do różnych formatów.
Jak to działa?
Gdy obsługiwany telefon z Androidem lub urządzenie składane zostanie podłączone do zewnętrznego wyświetlacza, na podłączonym wyświetlaczu rozpocznie się nowa sesja pulpitu.
Korzystanie z podłączonego wyświetlacza jest podobne do korzystania z komputera, w tym z paska zadań, który pokazuje aktywne aplikacje i umożliwia przypinanie aplikacji w celu szybkiego dostępu. Użytkownicy mogą uruchamiać wiele aplikacji obok siebie jednocześnie w oknach o dowolnym rozmiarze na podłączonym wyświetlaczu.
Telefon podłączony do wyświetlacza zewnętrznego, na którym jest otwarta sesja na komputerze, a telefon zachowuje swój własny stan.
Gdy urządzenie obsługujące tryb okien na pulpicie (np. tablet Samsung Galaxy Tab S11) jest podłączone do wyświetlacza zewnętrznego, sesja na pulpicie jest rozszerzana na oba wyświetlacze, co zapewnia jeszcze większą przestrzeń roboczą. Oba wyświetlacze działają wtedy jako jeden ciągły system, co umożliwia swobodne przenoszenie okien aplikacji, treści i kursora między wyświetlaczami.
Tablet podłączony do wyświetlacza zewnętrznego, który rozszerza sesję na komputerze na oba wyświetlacze.
Dlaczego to takie ważne?
W Androidzie 16 QPR3 sfinalizowaliśmy zachowania okien, interakcje z paskiem zadań i zgodność z urządzeniami wejściowymi (mysz i klawiatura), które określają sposób korzystania z podłączonego wyświetlacza. Dodaliśmy też funkcje zgodności, aby skalować okna i uniknąć ponownego uruchamiania aplikacji podczas przełączania wyświetlaczy.
Jeśli Twoja aplikacja została stworzona zgodnie z zasadami projektowania adaptacyjnego, będzie automatycznie wyglądać i działać jak aplikacja na komputery, a użytkownicy będą się w niej czuć jak u siebie. Jeśli aplikacja jest zablokowana w trybie pionowym lub zakłada interfejs oparty wyłącznie na dotyku, nadszedł czas na jej modernizację.
Zwróć szczególną uwagę na te sprawdzone metody, aby zapewnić optymalne wrażenia z korzystania z aplikacji na wyświetlaczach połączonych:
-
Nie zakładaj stałego obiektu
Display: obiektDisplaypowiązany z kontekstem aplikacji może się zmienić, gdy okno aplikacji zostanie przeniesione na wyświetlacz zewnętrzny lub gdy zmieni się konfiguracja wyświetlacza. Aplikacja powinna prawidłowo obsługiwać zdarzenia zmiany konfiguracji i dynamicznie wysyłać zapytania o dane wyświetlania, zamiast je buforować. - Uwzględniaj zmiany konfiguracji gęstości: zewnętrzne wyświetlacze mogą mieć znacznie inną gęstość pikseli niż ekran urządzenia głównego. Zadbaj o to, aby układy i zasoby prawidłowo dostosowywały się do tych zmian, aby zachować przejrzystość i użyteczność interfejsu. W przypadku układów używaj pikseli niezależnych od gęstości (dp), udostępniaj zasoby dostosowane do gęstości i dbaj o odpowiednie skalowanie interfejsu.
- Prawidłowoobsługuj urządzenia zewnętrzne: gdy użytkownicy podłączają monitor zewnętrzny, często tworzą środowisko podobne do komputera stacjonarnego. Często wiąże się to z używaniem zewnętrznych klawiatur, myszy, trackpadów, kamer internetowych, mikrofonów i głośników. Ulepszono obsługę interakcji z klawiaturą i myszą.
Tworzenie przyszłości komputerów stacjonarnych za pomocą nowoczesnych narzędzi
Udostępniamy kilka narzędzi, które pomogą Ci tworzyć treści na komputery. Podsumujmy najnowsze aktualizacje naszych podstawowych bibliotek adaptacyjnych.
Nowe klasy rozmiaru okna: duże i bardzo duże
Największą nowością w Jetpack WindowManager 1.5.0 jest dodanie 2 nowych klas rozmiarów okien: dużej i bardzo dużej.
Klasy rozmiarów okien to nasz oficjalny, subiektywny zestaw punktów przerwania widocznego obszaru, który pomaga projektować i tworzyć elastyczne układy. W wersji 1.5.0 rozszerzamy te wytyczne na ekrany większe niż typowe tablety.
Oto nowe punkty podziału szerokości:
- Duży: dla szerokości od 1200 dp do 1600 dp
- Bardzo duży: dla szerokości ≥1600 dp
Różne klasy rozmiarów okien na podstawie szerokości wyświetlacza.
Na bardzo dużych powierzchniach zwykłe powiększenie układu rozszerzonego tabletu nie zawsze zapewnia najlepsze wrażenia użytkownika. Na przykład klient poczty e-mail może wygodnie wyświetlać 2 panele (skrzynkę pocztową i wiadomość) w klasie rozmiaru okna Rozszerzone. Na bardzo dużym monitorze stacjonarnym klient poczty e-mail może elegancko wyświetlać jednocześnie 3 lub nawet 4 panele, np. skrzynkę pocztową, listę wiadomości, pełną treść wiadomości oraz panel kalendarza lub zadań.
Aby uwzględnić w projekcie nowe klasy rozmiarów okien, wywołaj funkcję z zestawu WindowSizeClass.BREAKPOINTS_V2 zamiast z zestawu WindowSizeClass.BREAKPOINTS_V1:
val currentWindowMetrics =
WindowMetricsCalculator.getOrCreate()
.computeCurrentWindowMetrics(LocalContext.current)
val sizeClass = WindowSizeClass.BREAKPOINTS_V2
.computeWindowSizeClass(currentWindowMetrics)
Następnie zastosuj odpowiedni układ, gdy będziesz mieć pewność, że aplikacja ma co najmniej tyle miejsca:
if(sizeClass.isWidthAtLeastBreakpoint(
WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){
...
// Window is at least 1200 dp wide.
}
Tworzenie układów adaptacyjnych za pomocą Jetpack Navigation 3
Navigation 3 to najnowszy dodatek do kolekcji Jetpack. Nawigacja 3, która właśnie osiągnęła pierwszą stabilną wersję, to zaawansowana biblioteka nawigacji zaprojektowana do współpracy z Compose.
Nawigacja 3 to również świetne narzędzie do tworzenia adaptacyjnych układów, które umożliwia wyświetlanie wielu miejsc docelowych jednocześnie i płynne przełączanie się między tymi układami.
Ten system zarządzania przepływem interfejsu aplikacji jest oparty na scenach. Scena to układ, który wyświetla jednocześnie co najmniej 1 miejsce docelowe. SceneStrategy określa, czy można utworzyć scenę. Łączenie ze sobą instancji SceneStrategy umożliwia tworzenie i wyświetlanie różnych scen na ekranach o różnych rozmiarach i na urządzeniach o różnych konfiguracjach.
W przypadku gotowych układów kanonicznych, takich jak szczegółowa lista i panel pomocniczy, możesz używać scen z biblioteki adaptacyjnej Sceny z Compose Material 3 (dostępnej w wersji 1.3 i nowszych).
Możesz też łatwo tworzyć własne sceny niestandardowe, modyfikując przepisy na sceny lub zaczynając od zera. Rozważmy na przykład scenę, która wyświetla 3 panele obok siebie:
class ThreePaneScene<T : Any>(
override val key: Any,
override val previousEntries: List<NavEntry<T>>,
val firstEntry: NavEntry<T>,
val secondEntry: NavEntry<T>,
val thirdEntry: NavEntry<T>
) : Scene<T> {
override val entries: List<NavEntry<T>> = listOf(firstEntry, secondEntry, thirdEntry)
override val content: @Composable (() -> Unit) = {
Row(modifier = Modifier.fillMaxSize()) {
Column(modifier = Modifier.weight(1f)) {
firstEntry.Content()
}
Column(modifier = Modifier.weight(1f)) {
secondEntry.Content()
}
Column(modifier = Modifier.weight(1f)) {
thirdEntry.Content()
}
}
}
W takim przypadku możesz zdefiniować SceneStrategy, aby wyświetlać 3 okienka, jeśli szerokość okna jest wystarczająca, a wpisy z listy wstecznej deklarują, że obsługują wyświetlanie w scenie z 3 okienkami.
class ThreePaneSceneStrategy<T : Any>(val windowSizeClass: WindowSizeClass) : SceneStrategy<T> {
override fun SceneStrategyScope<T>.calculateScene(entries: List<NavEntry<T>>): Scene<T>? {
if (windowSizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_LARGE_LOWER_BOUND)) {
val lastThree = entries.takeLast(3)
if (lastThree.size == 3 && lastThree.all { it.metadata.containsKey(MULTI_PANE_KEY) }) {
val firstEntry = lastThree[0]
val secondEntry = lastThree[1]
val thirdEntry = lastThree[2]
return ThreePaneScene(
key = Triple(firstEntry.contentKey, secondEntry.contentKey, thirdEntry.contentKey),
previousEntries = entries.dropLast(3),
firstEntry = firstEntry,
secondEntry = secondEntry,
thirdEntry = thirdEntry
)
}
}
return null
}
}
Podczas tworzenia elementu NavDisplay możesz używać strategii ThreePaneSceneStrategy z innymi strategiami. Możemy na przykład dodać strategię TwoPaneStrategy, aby wyświetlać 2 panele obok siebie, gdy nie ma wystarczająco dużo miejsca na wyświetlenie 3 paneli.
val strategy = ThreePaneSceneStrategy() then TwoPaneSceneStrategy()
NavDisplay(...,
sceneStrategy = strategy,
entryProvider = entryProvider {
entry<MyScreen>(metadata = mapOf(MULTI_PANE_KEY to true))) { ... }
... other entries...
}
)
Jeśli nie ma wystarczająco dużo miejsca, aby wyświetlić 3 lub 2 panele, obie nasze strategie sceny niestandardowej zwracają null.W tym przypadku funkcja NavDisplay wraca do wyświetlania ostatniego wpisu na stosie wstecznym w jednym panelu za pomocą funkcji SinglePaneScene.
Korzystając ze scen i strategii, możesz dodać do aplikacji układy z 1, 2 lub 3 panelami.
Aplikacja adaptacyjna z nawigacją w 3 panelach na szerokich ekranach.
Więcej informacji o tworzeniu niestandardowych układów za pomocą scen w nawigacji 3 znajdziesz w dokumentacji.
Samodzielne układy adaptacyjne
Jeśli potrzebujesz samodzielnego układu, biblioteka adaptacyjna Compose Material 3 pomoże Ci utworzyć adaptacyjne interfejsy, takie jak układy listy i szczegółów oraz panelu pomocniczego, które automatycznie dostosowują się do konfiguracji okna na podstawie klas rozmiaru okna lub pozycji urządzenia.
Dobra wiadomość jest taka, że biblioteka jest już aktualna i zawiera nowe punkty przerwania. Od wersji 1.2 domyślne dyrektywy szkieletu panelu obsługują klasy rozmiarów okien o dużej i bardzo dużej szerokości.
Wystarczy, że zadeklarujesz w pliku kompilacji Gradle, że chcesz używać nowych punktów przerwania:
currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)
Pierwsze kroki
Poznaj funkcję połączonego wyświetlacza w najnowszej wersji Androida. Zainstaluj Androida 16 QPR3 na obsługiwanym urządzeniu, a potem podłącz je do monitora zewnętrznego, aby już dziś zacząć testować aplikację.
Aby dowiedzieć się więcej o wdrażaniu tych sprawdzonych metod, zapoznaj się z aktualną dokumentacją dotyczącą obsługi wielu wyświetlaczy i zarządzania oknami.
Przesyłanie opinii
Twoja opinia jest dla nas bardzo ważna, ponieważ stale ulepszamy funkcje wyświetlacza połączonego. Podziel się wrażeniami i zgłoś wszelkie problemy za pomocą naszych oficjalnych kanałów przesyłania opinii.
Staramy się, aby Android był wszechstronną platformą, która dostosowuje się do różnych sposobów, w jakie użytkownicy chcą korzystać z aplikacji i urządzeń. Ulepszenia obsługi połączonych wyświetlaczy to kolejny krok w tym kierunku. Uważamy, że użytkownicy docenią środowisko komputerowe, które stworzysz.
*Uwaga: w momencie pisania tego artykułu połączone wyświetlacze są obsługiwane na telefonach z serii Pixel 8, 9 i 10 oraz na wielu urządzeniach Samsung, w tym S26, Fold7, Flip7 i Tab S11.
Czytaj dalej
-
Wiadomości o usługach
Z przyjemnością informujemy, że Jetpack WindowManager w wersji 1.5.0 jest już stabilny. Ta wersja opiera się na solidnych podstawach adaptacyjności w bibliotece WindowManager, dzięki czemu jeszcze łatwiej jest tworzyć dopracowane, adaptacyjne interfejsy, które świetnie wyglądają na ekranach o różnych rozmiarach.
Francesco Romano • Czas czytania: 3 minuty
-
Wiadomości o usługach
Android Studio Panda 4 jest już stabilny i możesz go używać w środowisku produkcyjnym. Wprowadziliśmy m.in. tryb planowania i przewidywanie kolejnych zmian, dzięki czemu tworzenie wysokiej jakości aplikacji na Androida jest jeszcze łatwiejsze.
Matt Dyor • Czas czytania: 5 minut
-
Wiadomości o usługach
Jeśli jesteś deweloperem aplikacji na Androida i chcesz wdrożyć w niej innowacyjne funkcje oparte na AI, niedawno udostępniliśmy nowe, zaawansowane aktualizacje.
Thomas Ezan • Czas czytania: 3 minuty
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.