Zarządzanie oknami

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.

Rysunek 1. Okno aplikacji na różnych urządzeniach.

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.

Rysunek 2. Okno aplikacji z możliwością zmiany rozmiaru

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 lub onGlobalLayout 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 metodzie onDestroy 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 czy TYPE_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.