ChromeOS obsługuje aplikacje na Androida w wielu oknach. System renderuje aplikacje do kontenerów okiennych, których rozmiar jest określany przez format tak jak na ilustracji 1.
Ważne jest, aby projektować układy dostosowane do różnych rozmiarów ekranów. Jeśli postępuj zgodnie z wytycznymi dotyczącymi Androida, aby obsługiwać różne ekrany , aplikacja też działa dobrze w systemie ChromeOS.
Na tej stronie dowiesz się, jak sprawdzić, czy okno aplikacji otwiera się prawidłowo, i jak zmieniać jego rozmiar płynnie i wyświetla całą zawartość, gdy zmieni się jej rozmiar.
Rozmiar początkowy do uruchomienia
Aplikacje mogą prosić o rozmiar początkowy do uruchomienia na kilka sposobów:
- Używaj rozmiaru uruchamiania tylko w środowiskach komputerowych.
Dzięki temu menedżer okien podaje odpowiednie granice
orientacji ekranu. Aby określić preferencje w trybie pulpitu, dodaj
następujące metatagi wewnątrz sekcji
<activity>
:
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="[phone|tablet|maximize]" /> <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="[portrait|landscape]" />
- Użyj statycznych granic uruchomienia. Użyj właściwości
<layout>
we wpisie pliku manifestu Twojej by określić wartość „stały”. początkowym, jak w przykładzie poniżej:
<layout android:defaultHeight="500dp" android:defaultWidth="600dp" android:gravity="top|end" android:minHeight="450dp" android:minWidth="300dp" />
- Używaj dynamicznych granic uruchamiania. Działanie może tworzyć i wykorzystywać
ActivityOptions.setLaunchBounds(Rect)
podczas tworzenia nowej aktywności. Według pustego prostokąta, aplikację można zmaksymalizować.
Zmień rozmiar okien
W ChromeOS użytkownicy mogą zmienić rozmiar okna aplikacji w zwykły sposób: w prawym dolnym rogu, jak widać na ilustracji 2.
Zmiana rozmiaru okna jest dostępna na 2 sposoby
Zajęcia View
:
- Dynamiczne reagowanie na zmiany konfiguracji za pomocą wywołania
onConfigurationChanged(..)
Możesz na przykład dodaćandroid:configChanges="screenSize|smallestScreenSize|orientation|screenLayout"
w pliku manifestu aktywności. Więcej informacji o obsłudze zmian konfiguracji znajdziesz w artykule Obsługa zmian konfiguracji. - Pozwól systemowi ponownie rozpocząć aktywność. W takim przypadku zaimplementuj
onSaveInstanceState
i używaj architektury ViewModel komponent, aby przywrócić poprzedni zapisany stan.
W przypadku korzystania z Jetpack Compose zmiany rozmiaru zależą od: konfiguracji Twojej aktywności. Jeśli obsługuje on zmiany dynamiczne, jest wyzwalana po zmianie rozmiaru okna. Jeśli aktywność to po ponownym uruchomieniu przez system, po ponownym uruchomieniu powstaje początkowa kompozycja. Oba modele ważne jest, aby tworzyć układy tworzenia wiadomości, które dostosowują się do zmieniającego się okna rozmiarów reklam Google Ads. Nie zakładaj o stałych rozmiarach.
Wymiary okna
Ćwiczenia odczytują wymiary okien przy każdym uruchomieniu uporządkują ich zawartość zgodnie z bieżącą konfiguracją.
Aby określić bieżącą konfigurację, wywołaj getResources().getConfiguration()
przy bieżącej aktywności. Nie używaj parametru
konfiguracji aktywności w tle lub zasobu systemowego.
Aktywność w tle nie ma rozmiaru, a konfiguracja systemu może
zawierają wiele okien o kolidujących rozmiarach i orientacjach,
dane można wyodrębnić.
Pamiętaj, że rozmiar okna i ekranu to nie to samo. Aby uzyskać
rozmiar okna w DP, użyj Activity.getResources().getConfiguration().screenWidth
i Activity.getResources().getConfiguration().screenHeight
. Prawdopodobnie
nigdy nie muszą używać rozmiaru ekranu.
Ograniczenia treści
Granice zawartości okna mogą się zmienić po zmianie rozmiaru. Na przykład obszar w obrębie okno używane przez aplikację może się zmienić, jeśli stanie się zbyt duże, do ekranu. Postępuj zgodnie z tymi wskazówkami:
- Aplikacje korzystające z procesu układu Androida są układane automatycznie. w dostępnym miejscu.
Aplikacje natywne muszą odczytywać dostępny obszar i monitorować zmiany rozmiaru, aby uniknąć mające niedostępne elementy interfejsu. Wywołaj te metody, aby określić początkowy dostępny rozmiar tej powierzchni:
NativeActivity.mLastContent[X/Y/Width/Height]()
findViewById(android.R.id.content).get[Width/Height]()
Ciągłe monitorowanie można prowadzić za pomocą obserwatora:
NativeActivity.onContentRectChangedNative()
NativeActivity.onGlobalLayout()
- Dodaj detektor utworu
view.addOnLayoutChangeListener(findViewById(android.R.id.content))
Jeśli aplikacja wstępnie skaluje grafikę, zrób to przy każdej zmianie rozdzielczości.
Swobodna zmiana rozmiaru
ChromeOS umożliwia swobodną zmianę rozmiaru dowolnego okna: użytkownik może szerokości, wysokości i pozycji na ekranie. W wielu aplikacjach na Androida napisano bez i dowolne zmiany rozmiaru. Weź pod uwagę te kwestie:
- Położenie ekranu może się zmienić. Zawsze używaj parametru do przeprowadzania przekształceń współrzędnych między ekranami i między ekranami.
- Jeśli używasz systemu widoku Androida, układ okna automatycznie zmienia się wraz ze zmianą jego rozmiaru.
- Jeśli nie używasz systemu widoku, aplikacja musi samodzielnie zmienia się rozmiar reklamy.
- W przypadku aplikacji natywnych użyj elementów
mLastContent
lub widoku treści, aby: określić rozmiar początkowy. - Gdy aplikacja jest uruchomiona, słuchaj tych utworów:
onContentRectChangedNative
lubonGlobalLayout
zdarzeń, które mają być reagowane na zmianę rozmiaru. - Gdy rozmiar aplikacji się zmieni, przeskaluj lub ponownie załaduj układy i grafikę i aktualizowanie obszarów wprowadzania danych.
Tryb pełnoekranowy
Tryb pełnoekranowy działa tak samo jak na Androidzie w wersji standardowej. Jeśli okno nie zasłania pełnego ekranu, pojawia się prośba o jego włączenie. (ukrywanie wszystkich elementów interfejsu systemu) są ignorowane. Kiedy aplikacja jest zmaksymalizowana normalne metody, układy i funkcje związane z trybem pełnoekranowym. Ukrywa elementy interfejsu systemu (pasek sterowania oknem i półka).
Orientacja ekranu
Aplikacje na Androida najczęściej mają orientację pionową, dla większości telefonów. Choć orientacja pionowa jest odpowiednia dla telefonu, laptopach i tabletach, w orientacji poziomej. Aby uzyskać z aplikacji, zastanów się nad stosowaniem obu orientacji.
Niektóre aplikacje na Androida zakładają, że po utrzymaniu urządzenia w trybie pionowym
wartość rotacji to
Surface.ROTATION_0
Może to dotyczyć większości urządzeń z Androidem. Jeśli jednak aplikacja znajduje się w
pewne
tryb ARC,
wartość obrotu w orientacji pionowej może nie być
Surface.ROTATION_0
Aby uzyskać dokładną wartość obrotu podczas odczytu akcelerometru lub podobnej
czujnika, użyj trybu Display.getRotation()
i odpowiednio zmień osie.
aktywność i orientacja strony głównej,
Okno Chromebooka składa się z kilku okien aktywności. W każdym oknie ma tę samą wielkość i orientację.
Nagłe zmiany orientacji i rozmiaru są mylące na komputerze dla środowiska. Menedżer okien Chromebooka unika tego w podobny sposób. w trybie obok siebie na Androidzie: aktywność znajdującą się u dołu elementów sterujących stosu atrybutów wszystkich nadrzędnych działań. Może to prowadzić do nieoczekiwanych sytuacji w którym nowo rozpoczęta aktywność w orientacji pionowej, której nie można zmienić, zmienia się w poziomą. i ich rozmiar.
Tryb urządzenia ma tutaj zastosowanie: w trybie tabletu orientacja nie jest zablokowana, każde okno zachowuje własną orientację, tak jak zwykle w Androidzie.
Wytyczne dotyczące orientacji
Postępuj zgodnie z tymi wskazówkami dotyczącymi orientacji:
- Jeśli obsługujesz tylko jedną orientację, dodaj te informacje do pliku manifestu, aby będzie wiedzieć o nim przed uruchomieniem aplikacji. Gdy określać orientację, a jeśli to możliwe, także orientować się w orientacjach czujnika. Chromebooki są często konwertowalne, więc aplikacja odwrócona do góry nogami może zniechęcić użytkowników.
- Staraj się utrzymać jedną wybraną orientację. Unikaj żądania jednej orientacji w manifeście, a inny automatycznie ustaw.
- Zachowaj ostrożność, zmieniając orientację w zależności od rozmiaru okna. Użytkownik może otrzymywać w małym oknie o orientacji pionowej i nie mogą wrócić do większego. i okno w orientacji poziomej.
- W Chrome znajdują się elementy sterujące oknami, za pomocą których można przełączać się między wszystkimi dostępnymi układy. Wybierając odpowiednią opcję orientacji, masz pewność, że użytkownik ma prawidłowy układ po uruchomieniu aplikacji. Jeśli aplikacja jest dostępna w orientacji pionowej i poziomej, jeśli to możliwe, ustaw ją domyślnie w orientacji poziomej. Po ustawieniu tej opcji jest zapamiętywany w odniesieniu do poszczególnych aplikacji.
- Staraj się unikać niepotrzebnych zmian orientacji. Jeśli na przykład aktywność
orientacja pionowa jest pionowa, ale aplikacja wywołuje
setRequestedOrientation(LANDSCAPE)
w czasie działania powoduje niepotrzebną zmianę rozmiaru okna, co jest irytujące i może ponownie uruchomić aplikację, która nie jest w stanie jej obsłużyć. Lepiej jest ustawić zmienić orientację tylko raz, np. w pliku manifestu, w razie potrzeby.
Inne rzeczy, które warto wziąć pod uwagę
Oto kilka innych kwestii, które warto wziąć pod uwagę podczas pracy z aplikacjami na Androida ChromeOS:
- Nie używaj metody
finish()
w metodzieonDestroy
aktywności. Powoduje to, że zamykać ją po zmianie rozmiaru i nie uruchamiać ponownie. - Nie używaj niezgodnych typów okien, takich jak
TYPE_KEYGUARD
czyTYPE_APPLICATION_MEDIA
- Spraw, aby aktywność uruchamiała się ponownie, buforując obiekty, które zostały wcześniej przydzielone.
- Jeśli nie chcesz, aby użytkownik zmienił rozmiar aplikacji, wpisz
android:resizeableActivity=false
w pliku manifestu. - Przetestuj aplikację, aby upewnić się, że obsługuje zmiany w rozmiar okna.