Funkcje i interfejsy API – przegląd

Android 14 wprowadza świetne funkcje i interfejsy API dla deweloperów. Poniższe informacje pomogą Ci poznać funkcje aplikacji i zacząć korzystać z powiązanych interfejsów API.

Szczegółową listę dodanych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie różnic między interfejsami API. Szczegółowe informacje o dodanych interfejsach API znajdziesz w dokumentacji interfejsu Android API – w przypadku Androida 14 poszukaj interfejsów API dodanych na poziomie API 34. Aby dowiedzieć się, w jakich obszarach zmiany w platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami w zachowaniu Androida 14 w przypadku aplikacji kierowanych na tę wersję systemuwszystkich aplikacji.

Internacjonalizacja

Wybór języka według aplikacji

Android 14 rozszerza funkcje odpowiadające językowi aplikacji, które zostały wprowadzone w Androidzie 13 (poziom interfejsu API 33) o te dodatkowe możliwości:

  • Automatycznie generuj localeConfig aplikacji: na urządzeniach z Androidem Studio Giraffe Canary 7 i AGP w wersji 8.1.0-alfa07 możesz automatycznie skonfigurować aplikację pod kątem ustawień języka. Na podstawie Twoich zasobów projektu wtyczka Androida do obsługi Gradle generuje plik LocaleConfig i dodaje do niego odwołanie w ostatecznym pliku manifestu. Dzięki temu nie musisz ręcznie tworzyć ani aktualizować pliku. Aby określić języki do uwzględnienia w pliku LocaleConfig, AGP używa zasobów z folderów res modułów aplikacji i ich zależności.

  • Dynamiczne aktualizacje localeConfig aplikacji: użyj metod setOverrideLocaleConfig() i getOverrideLocaleConfig() w LocaleManager, aby dynamicznie aktualizować listę obsługiwanych języków aplikacji w ustawieniach systemu urządzenia. Dzięki tej elastyczności możesz dostosować listę obsługiwanych języków w poszczególnych regionach, przeprowadzać eksperymenty A/B lub udostępniać zaktualizowaną listę ustawień regionalnych, jeśli aplikacja wykorzystuje do lokalizacji komunikaty push po stronie serwera.

  • Widoczność języka aplikacji dla edytorów metod wprowadzania: edytory IME mogą korzystać z metody getApplicationLocales(), aby sprawdzać język bieżącej aplikacji i dopasowywać go do tego języka.

Grammatical Inflection API

3 miliardy ludzi mówią w językach płciowych, czyli w językach, w których kategorie gramatyczne, takie jak rzeczowniki, czasowniki, przymiotniki i przyimki, wpływają na płeć osób i obiektów, o których rozmawiasz lub o których mówisz. Tradycyjnie wiele języków, w których płeć różni się od płci męskiej, jako domyślnej lub ogólnej używa formy gramatycznej.

Zwrócenie się do użytkowników w niewłaściwy sposób gramatyczny, np. zwrócenie się do kobiet w rodzaju męskim, może negatywnie wpłynąć na ich wyniki i nastawienie. Z kolei interfejs z językiem, który poprawnie odzwierciedla płeć użytkownika, może zwiększyć jego zaangażowanie oraz zapewnić bardziej spersonalizowane i naturalne brzmienie.

Aby ułatwić Ci przygotowanie UI w przypadku języków uwzględniających płeć, Android 14 udostępnia interfejs Grammatical Inflection API, który umożliwia obsługę płci gramatycznej bez refaktoryzacji aplikacji.

Regionalne preferencje

Preferencje regionalne pozwalają użytkownikom personalizować jednostki temperatury. dnia tygodnia i systemy numeracji. Europejczyk mieszkający w Stanach Zjednoczonych może preferować jednostki temperatury w stopniach Celsjusza zamiast w stopniach Fahrenheita, a aplikacje powinny traktować poniedziałek jako początek tygodnia zamiast niedzieli, która jest domyślną jednostką w Stanach Zjednoczonych.

Nowe menu ustawień Androida dla tych ustawień da użytkownikom wykrywalną i scentralizowaną lokalizację na potrzeby zmiany ustawień aplikacji. Te ustawienia są również zachowywane podczas tworzenia kopii zapasowej i przywracania. Kilka interfejsów API i intencji, takich jak getTemperatureUnitgetFirstDayOfWeek, przyznaje aplikacji uprawnienia do odczytu ustawień użytkownika, dzięki czemu aplikacja może dostosowywać sposób wyświetlania informacji. Możesz też zarejestrować BroadcastReceiver włączona ACTION_LOCALE_CHANGED. obsługi zmian konfiguracji języka w przypadku zmiany preferencji regionalnych.

Aby znaleźć te ustawienia, otwórz aplikację Ustawienia i kliknij System > Języki wejście > Ustawienia regionalne.

Ekran Ustawienia regionalne w ustawieniach systemu Android.
opcje temperatury dla preferencji regionalnych w ustawieniach systemu Androida;

Ułatwienia dostępu

Nieliniowe skalowanie czcionki do 200%

Od Androida 14 system obsługuje skalowanie czcionek do 200%, zapewniając użytkownikom niedowidzącym dodatkowe opcje ułatwień dostępu zgodne z wytycznymi Web Content Accessibility Guidelines (WCAG).

Aby zapobiec nadmiernemu skalowaniu dużych elementów tekstowych na ekranie, system stosuje nieliniową krzywą skalowania. Ta strategia skalowania oznacza, że duży tekst nie jest skalowany w taki sam sposób jak mniejszy tekst. Pomocne jest nieliniowe skalowanie czcionek zachowaj proporcjonalną hierarchię elementów o różnych rozmiarach, łagodzenie problemów z liniowym skalowaniem tekstu pod wysokim stopniem (np. lub tekst, który staje się trudniejszy do odczytania ze względu na bardzo duży wyświetlacz. rozmiarów).

Testowanie aplikacji za pomocą nieliniowego skalowania czcionek

Aby przetestować aplikację, włącz maksymalny rozmiar czcionki w ustawieniach ułatwień dostępu na urządzeniu.

Jeśli do definiowania rozmiaru tekstu używasz już skalowanych pikseli (sp), te dodatkowe opcje i ulepszone skalowanie zostaną automatycznie zastosowane do tekstu w aplikacji. Mimo to nadal zalecamy przeprowadzenie testów interfejsu z włączonym maksymalnym rozmiarem czcionki (200%), aby mieć pewność, że aplikacja poprawnie stosuje rozmiary czcionek i że może wyświetlać czcionki o większych rozmiarach bez wpływu na użyteczność.

Aby włączyć rozmiar czcionki 200%, wykonaj te czynności:

  1. Otwórz aplikację Ustawienia i kliknij Ułatwienia dostępu > Rozmiar interfejsu i tekst.
  2. W przypadku opcji Rozmiar czcionki klikaj ikonę plusa (+), aby ustawić maksymalną rozmiar jest włączony, tak jak na ilustracji obok .

Używanie skalowanych pikseli (sp) do określania rozmiaru tekstu

Pamiętaj, aby zawsze określać rozmiary tekstu w jednostkach SP. Gdy aplikacja używa jednostek sp, Android może zastosować preferowany rozmiar tekstu użytkownika i odpowiednio go skalować.

Nie używaj jednostek sp jako dopełnienia ani zdefiniuj wysokości widoku, zakładając niejawne dopełnienie: z nieliniowym skalowaniem czcionki wymiary sp mogą być nieproporcjonalne, więc 4sp + 20 sp może nie równać się 24 sp.

Przelicz skalowane jednostki pikseli (sp)

Użyj TypedValue.applyDimension(), aby przeliczyć jednostki SP na piksele i użyj funkcji TypedValue.deriveDimension(), aby konwertowanie pikseli na sp. Te metody stosują odpowiednie skalowanie nieliniowe automatycznie.

Unikaj umieszczania w kodzie stałych wartości równań za pomocą funkcji Configuration.fontScale lub DisplayMetrics.scaledDensity. Skalowanie czcionek jest nieliniowe, więc pole scaledDensity nie jest już dokładne. fontScale powinno być używane wyłącznie w celach informacyjnych, ponieważ czcionki nie są już przeskalowane do jednej wartości skalarnej.

Używanie jednostek sp do atrybutów lineHeight

Zawsze definiuj kolumnę android:lineHeight za pomocą jednostek SP dp, więc wysokość wiersza jest skalowana wraz z tekstem. Jeśli natomiast tekst jest w układzie sp, ale lineHeight jest w układzie dp lub px, nie będzie się skalować i będzie wyglądać ciasno. TextView automatycznie poprawia lineHeight zgodnie z proporcje są zachowywane, ale tylko wtedy, gdy zostaną uwzględnione zarówno textSize, jak i lineHeight zdefiniowane w jednostkach sp.

Aparat i multimedia

Ultra HDR w przypadku zdjęć

Ilustracja przedstawiająca porównanie jakości obrazu standardowego zakresu dynamicznego (SDR) z jakością HDR (High Dynamic Range).

Android 14 dodaje obsługę obrazów High Dynamic Range (HDR), które podczas robienia zdjęć zachowują więcej informacji z czujnika, co daje żywe kolory i większy kontrast. Android używa formatu Ultra HDR, który jest w pełni zgodny wstecznie z obrazami JPEG, dzięki czemu aplikacje mogą płynnie współpracować z obrazami HDR i w razie potrzeby wyświetlać je w standardowym zakresie dynamicznym (SDR).

Renderowanie tych obrazów w interfejsie w trybie HDR odbywa się automatycznie przez platformę, gdy aplikacja wyraża zgodę na używanie interfejsu HDR w oknie aktywności. Można to zrobić za pomocą wpisu w pliku manifestu lub w czasie działania, wywołując wywołanie Window.setColorMode(). Na obsługiwanych urządzeniach możesz też robić skompresowane zdjęcia sferyczne Ultra HDR. Dzięki temu, że czujnik odzyskuje więcej kolorów, edycja postów może być bardziej elastyczna. Obiekt Gainmap powiązany z obrazami ultra HDR można wykorzystać do renderowania ich za pomocą OpenGL lub Vulkan.

Powiększenie, Ostrość, Postview i inne funkcje w rozszerzeniach aparatu

Android 14 aktualizuje i ulepsza rozszerzenia aparatu, co umożliwia aplikacjom dłuższy czas przetwarzania. Dzięki temu można poprawić jakość obrazów za pomocą algorytmów wymagających dużej mocy obliczeniowej, takich jak fotografia w słabym świetle na obsługiwanych urządzeniach. Te funkcje zapewniają użytkownikom jeszcze lepsze wrażenia podczas korzystania z rozszerzenia kamery. Przykłady ulepszeń:

Zoom na czujniku

Gdy REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE w CameraCharacteristics zawiera wartość SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, aplikacja może wykorzystać zaawansowane możliwości czujnika, aby udostępnić przycięty strumień RAW taki sam rozmiar jak w pełnym polu widzenia. W tym celu użyj CaptureRequest z celem RAW z przypadkiem użycia strumienia CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. Dzięki wdrożeniu ustawień zastępowania żądań nowa kamera daje użytkownikom możliwość sterowania powiększeniem jeszcze przed przygotowaniem innych elementów sterujących.

Bezstratny dźwięk przez USB

Android 14 zyskuje obsługę bezstratnych formatów audio, dzięki czemu osoby audiofilskie mogą korzystać z przewodowych zestawów słuchawkowych USB. Możesz przesłać zapytanie do urządzenia USB w celu uzyskania preferowanych atrybutów miksera, zarejestrować detektor w przypadku zmian w atrybutach miksera i skonfigurować atrybuty miksera za pomocą klasy AudioMixerAttributes. Ta klasa reprezentuje format, np. maskę kanału, częstotliwość próbkowania i działanie miksera dźwięku. Ta klasa umożliwia bezpośrednie wysyłanie dźwięku bez mieszania, regulacji głośności i efektów przetwarzania.

Narzędzia i produktywność programistów

Menedżer danych logowania

Android 14 dodaje Credential Manager jako interfejs API platformy, który dodatkowo obsługuje urządzenia z Androidem 4.4 (poziom interfejsu API 19) za pomocą biblioteki Jetpack wykorzystującej Usługi Google Play. Menedżer danych logowania ma na celu ułatwienie logowania użytkownikom za pomocą interfejsów API, które pobierają i przechowują dane logowania u dostawców danych logowania skonfigurowanych przez użytkownika. Menedżer danych logowania obsługuje wiele metod logowania, w tym nazwę użytkownika i hasło, klucze dostępu i rozwiązania do logowania sfederowanego (np. Zaloguj się przez Google) w ramach jednego interfejsu API.

Klucze dostępu mają wiele zalet. Na przykład klucze dostępu są skonstruowane zgodnie ze standardami branżowymi i mogą działać w różnych systemach operacyjnych i ekosystemach przeglądarek oraz w witrynach i aplikacjach.

Więcej informacji znajdziesz w dokumentacji Menedżera danych logowania i kluczy dostępu oraz w poście na blogu na temat menedżera danych logowania i kluczy dostępu.

Health Connect

Health Connect to repozytorium na urządzeniu zawierające dane o zdrowiu i aktywności fizycznej użytkowników. Pozwala użytkownikom udostępniać dane między ulubionymi aplikacjami w jednym miejscu i określać, jakie dane chcą udostępniać tym aplikacjom.

Na urządzenia z Androidem w wersji starszej niż 14 aplikację Health Connect można pobrać ze Sklepu Google Play. Od Androida 14 Health Connect jest częścią platformy i pobiera aktualizacje w ramach aktualizacji systemu Google Play bez konieczności pobierania dodatkowych plików. Dzięki temu można często aktualizować Health Connect, a aplikacje mogą korzystać z jej dostępności na urządzeniach z Androidem 14 lub nowszym. Użytkownicy mogą uzyskać dostęp do Health Connect z poziomu ustawień na urządzeniu. Ustawienia prywatności są zintegrowane z ustawieniami systemu.

Użytkownicy mogą zacząć korzystać z Health Connect na urządzeniach z Androidem 14 lub nowszym bez pobierania oddzielnej aplikacji.
W ustawieniach systemu użytkownicy mogą określać, które aplikacje mają dostęp do swoich danych o zdrowiu i aktywności fizycznej.

Health Connect zawiera kilka nowych funkcji Androida 14, takich jak trasy ćwiczeń, co pozwala użytkownikom udostępniać trasę treningu, którą można wizualizować na mapie. Trasa to lista lokalizacji zapisanych w określonym przedziale czasu, a aplikacja może wstawiać trasy do sesji ćwiczeń, łącząc je ze sobą. Aby zapewnić użytkownikom pełną kontrolę nad tymi danymi wrażliwymi, muszą oni zezwolić na udostępnianie poszczególnych tras innym aplikacjom.

Więcej informacji znajdziesz w dokumentacji Health Connection oraz w poście na blogu Co nowego w Android Health.

Aktualizacje OpenJDK 17

Android 14 kontynuuje prace nad odświeżaniem podstawowych bibliotek Androida w celu dostosowania do funkcji z najnowszych wersji OpenJDK LTS, w tym aktualizacji bibliotek oraz obsługi języka Java 17 dla deweloperów aplikacji i platform.

Wprowadzono te funkcje i ulepszenia:

  • Zaktualizowano około 300 klas java.base do obsługi środowiska Java 17.
  • bloki tekstu, które wprowadzają do języka programowania Java literały wielowierszowe w postaci ciągów tekstowych;
  • Dopasowywanie do wzorca na potrzeby instancji, które umożliwia traktowanie obiektu w obrębie instanceof jako określonego typu bez dodatkowych zmiennych.
  • Zapieczone klasy, które pozwalają określić, które klasy i interfejsy mogą je rozszerzać lub wdrażać.

Dzięki aktualizacjom systemu Google Play (Project Mainline) ponad 600 milionów urządzeń otrzymuje najnowsze aktualizacje Android Runtime (ART) obejmujące te zmiany. Dokładamy wszelkich starań, aby zapewnić aplikacjom bardziej spójne i bezpieczne środowisko na różnych urządzeniach oraz dostarczać użytkownikom nowe funkcje niezależnie od wersji platformy.

Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.

Ulepszenia w sklepach z aplikacjami

Android 14 introduces several PackageInstaller APIs that allow app stores to improve their user experience.

Request install approval before downloading

Installing or updating an app might require user approval. For example, when an installer making use of the REQUEST_INSTALL_PACKAGES permission attempts to install a new app. In prior Android versions, app stores can only request user approval after APKs are written to the install session and the session is committed.

Starting with Android 14, the requestUserPreapproval() method lets installers request user approval before committing the install session. This improvement lets an app store defer downloading any APKs until after the installation has been approved by the user. Furthermore, once a user has approved installation, the app store can download and install the app in the background without interrupting the user.

Claim responsibility for future updates

The setRequestUpdateOwnership() method allows an installer to indicate to the system that it intends to be responsible for future updates to an app it is installing. This capability enables update ownership enforcement, meaning that only the update owner is permitted to install automatic updates to the app. Update ownership enforcement helps to ensure that users receive updates only from the expected app store.

Any other installer, including those making use of the INSTALL_PACKAGES permission, must receive explicit user approval in order to install an update. If a user decides to proceed with an update from another source, update ownership is lost.

Update apps at less-disruptive times

App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.

Starting with Android 14, the InstallConstraints API gives installers a way to ensure that their app updates happen at an opportune moment. For example, an app store can call the commitSessionAfterInstallConstraintsAreMet() method to make sure that an update is only committed when the user is no longer interacting with the app in question.

Seamlessly install optional splits

With split APKs, features of an app can be delivered in separate APK files, rather than as a monolithic APK. Split APKs allow app stores to optimize the delivery of different app components. For example, app stores might optimize based on the properties of the target device. The PackageInstaller API has supported splits since its introduction in API level 22.

In Android 14, the setDontKillApp() method allows an installer to indicate that the app's running processes shouldn't be killed when new splits are installed. App stores can use this feature to seamlessly install new features of an app while the user is using the app.

Pakiety metadanych aplikacji

Począwszy od Androida 14 instalator pakietów na Androida umożliwia określanie metadanych aplikacji, takich jak praktyki związane z bezpieczeństwem danych, które mają być dołączane na stronach sklepów z aplikacjami, np. w Google Play.

Wykrywanie, kiedy użytkownicy robią zrzuty ekranu z urządzenia

Aby zapewnić bardziej ujednolicone wykrywanie zrzutów ekranu, Android 14 wprowadza interfejs API wykrywania zrzutów ekranu, który chroni prywatność. Ten interfejs API umożliwia aplikacjom rejestrowanie wywołań zwrotnych na podstawie poszczególnych działań. Te funkcje są wywoływane i użytkownik jest powiadamiany, gdy robi zrzut ekranu, gdy ta aktywność jest widoczna.

Interfejs użytkownika

Działania niestandardowe w panelu udostępniania i ulepszona kolejność

Android 14 aktualizuje systemowy arkusz udostępniania, aby obsługiwał niestandardowe działania w aplikacji i nie tylko z podglądem wyników.

Dodaj działania niestandardowe

W Androidzie 14 aplikacja może dodaj niestandardowe działania do systemowego arkusza udostępniania wywoływanego przez niego.

Zrzut ekranu z działaniem niestandardowym na karcie udostępniania

Popraw ranking celów w przypadku bezpośredniego udostępniania

Android 14 wykorzystuje więcej sygnałów z aplikacji do określania rankingu bezpośrednich udostępniać cele, aby dostarczać użytkownikowi bardziej przydatne wyniki. Aby uzyskać najbardziej przydatny sygnał dotyczący rankingu, postępuj zgodnie ze wskazówkami dotyczącymi poprawianie pozycji w rankingach celów bezpośredniego udostępniania. Aplikacje komunikacyjne mogą też raportować użycie skrótów do: wiadomości wychodzących i przychodzących.

Wiersz bezpośredniego udostępniania w arkuszu udostępniania, co pokazuje 1

Obsługa wbudowanych i niestandardowych animacji dla funkcji przewidywania tekstu z placówek

Film: Animacje przewidywanego przejścia wstecz

W Androidzie 13 dostępna jest opcja dla programistów, która umożliwia przewidywanie powrotu do ekranu głównego. W przypadku użycia obsługiwanej aplikacji z włączoną opcją programisty przesunięcie do tyłu powoduje wyświetlenie animacji wskazującej, że gest cofania powoduje wyjście z aplikacji z powrotem na ekran główny.

Android 14 zawiera wiele ulepszeń i nowe wskazówki dotyczące funkcji przewidywania wstecznego:

W tej wersji przedpremierowej Androida 14 wszystkie funkcje funkcji przewidywania wstecznego są dostępne tylko dla programistów. Zapoznaj się z przewodnikiem dla programistów, by dowiedzieć się, jak przenieść aplikację do funkcji przewidywania wstecznej, oraz przewodnikiem dla programistów po tworzeniu niestandardowych przejść w aplikacji.

Zastąpienia na urządzeniach z dużym ekranem

Zastąpienia dotyczące aplikacji umożliwiają producentom urządzeń zmianę działania aplikacji na urządzeniach z dużym ekranem. Na przykład zastąpienie FORCE_RESIZE_APP instruuje system, aby zmienił rozmiar aplikacji, aby pasowała do wyświetlanych wymiarów (unikając trybu zgodności rozmiaru), nawet jeśli w manifeście aplikacji ustawiono resizeableActivity="false".

Zastąpienia mają na celu poprawę wrażeń użytkowników na dużych ekranach.

Nowe właściwości pliku manifestu umożliwiają wyłączenie w przypadku aplikacji niektórych zastąpień producenta urządzenia.

Zastąpienia dla użytkowników na dużym ekranie na poziomie aplikacji

Ustawienia poszczególnych aplikacji zmieniają sposób działania aplikacji na urządzeniach z dużym ekranem. Na przykład zastępowanie producenta urządzenia OVERRIDE_MIN_ASPECT_RATIO_LARGE ustawia współczynnik proporcji aplikacji na 16:9 niezależnie od jej konfiguracji.

Android 14 QPR1 umożliwia użytkownikom stosowanie zastąpień dla poszczególnych aplikacji za pomocą nowego menu ustawień na urządzeniach z dużym ekranem.

Udostępnianie ekranu aplikacji

Udostępnianie ekranu aplikacji umożliwia użytkownikom udostępnianie okna aplikacji zamiast całego ekranu urządzenia podczas nagrywania zawartości ekranu.

W przypadku udostępniania ekranu aplikacji pasek stanu, pasek nawigacyjny, powiadomienia i inne elementy interfejsu systemu są wykluczone z udostępnianego wyświetlacza. Udostępniana jest tylko treść wybranej aplikacji.

Udostępnianie ekranu aplikacji zwiększa produktywność i prywatność, ponieważ użytkownicy mogą korzystać z wielu aplikacji przy jednoczesnym ograniczeniu udostępniania treści do jednej aplikacji.

Inteligentna odpowiedź na klawiaturze Gboard na Pixelu 8 Pro z wykorzystaniem LLM

Na urządzeniach Pixel 8 Pro z pakietem nowych funkcji w grudniu deweloperzy mogą wypróbować w Gboard wyższej jakości inteligentne odpowiedzi z dużymi modelami językowymi (LLM) działającymi na urządzeniu Google Tensor.

Ta funkcja jest dostępna w ograniczonej wersji testowej w języku angielskim (USA) w WhatsAppie, Line i KakaoTalk. Wymaga urządzenia Pixel 8 Pro z klawiaturą Gboard.

Aby ją wypróbować, najpierw włącz tę funkcję w sekcji Ustawienia > Opcje programisty > Ustawienia AICore > Włącz Aicore Persistent.

Następnie otwórz wątek w obsługiwanej aplikacji, aby zobaczyć inteligentną odpowiedź obsługiwaną przez LLM na pasku sugestii Gboard w odpowiedzi na wiadomości przychodzące.

Gboard wykorzystuje LLM na urządzeniu, aby zapewniać wyższą jakość inteligentnych odpowiedzi.

Grafika

Ścieżki można wyszukiwać i interpolować

Interfejs API Path na Androida to zaawansowany i elastyczny mechanizm tworzenia i renderowania grafiki wektorowej, który umożliwia kreślenie lub wypełnianie ścieżki, tworzenie ścieżki z segmentów linii albo krzywych kwadratowych i krzywych sześciennych, wykonywanie operacji logicznych w celu uzyskania jeszcze bardziej złożonych kształtów lub wszystkich tych elementów jednocześnie. Ograniczeniem jest możliwość sprawdzenia, co tak naprawdę znajduje się w obiekcie ścieżki. Elementy wewnętrzne obiektu są nieprzezroczyste po jego utworzeniu.

Aby utworzyć Path, użyj metod wywoływania takich jak moveTo(), lineTo() i cubicTo(), aby dodać segmenty ścieżki. Nie ma jednak możliwości określenia, jakie segmenty mają się znaleźć na tej ścieżce, więc musisz zachować te informacje w momencie tworzenia.

Począwszy od Androida 14 możesz wysyłać zapytania dotyczące ścieżek, aby dowiedzieć się, co się na nich znajduje. Najpierw musisz uzyskać obiekt PathIterator, korzystając z interfejsu API Path.getPathIterator:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

Następnie możesz wywołać metodę PathIterator, by iterować po kolei segmenty i pobrać wszystkie niezbędne dane dla każdego z nich. W tym przykładzie użyto obiektów PathIterator.Segment, które gromadzą dane w formie pakietów:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

Funkcja PathIterator ma też wersję next(), która nie przydziela pamięci, i możesz jej użyć do przekazania bufora, aby przechowywać dane punktowe.

Jednym z ważnych zastosowań zapytań o dane Path jest interpolacja. Możesz na przykład chcieć animować (czyli przekształcać) 2 różne ścieżki. Aby jeszcze bardziej uprościć ten przypadek użycia, Android 14 zawiera też metodę interpolate()Path. Zakładając, że 2 ścieżki mają taką samą strukturę wewnętrzną, metoda interpolate() tworzy nowy Path z tym interpolowanym wynikiem. Ten przykład zwraca ścieżkę, która jest połową (interpolacja liniowa 0,5) ścieżki pathotherPath:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

Biblioteka Jetpack graphics-path umożliwia korzystanie z podobnych interfejsów API również w starszych wersjach Androida.

niestandardowe siatki z shaderami wierzchołkowymi i fragmentowymi,

Android od dawna obsługuje siatki trójkątów rysowania z niestandardowym cieniowaniem, ale format siatki wejściowej jest ograniczony do kilku wstępnie zdefiniowanych kombinacji atrybutów. Android 14 dodaje obsługę niestandardowych siatek, które można definiować jako trójkąty lub trójkąty i opcjonalnie być indeksowane. Te sieci są określone za pomocą atrybutów niestandardowych, kroków na wierzchołkach, zmienności oraz cieniowania wierzchołków i fragmentów zapisanych w narzędziu AGSL.

Moduł do cieniowania wierzchołków definiuje różnice, takie jak pozycja i kolor, a technik do cieniowania fragmentów może opcjonalnie definiować kolor piksela, zwykle korzystając z różnic utworzonych przez cieniowanie wierzchołków. Jeśli kolor jest dostarczany przez cieniowanie fragmentów, zostanie on zmieszany z bieżącym kolorem Paint za pomocą trybu mieszania wybranego podczas rysowania siatki. Do modułów cieniowania fragmentów i wierzchołków można przekazywać jednolity, aby zapewnić dodatkową elastyczność.

sprzętowy renderowanie bufora dla Canvasa,

Aby ułatwić korzystanie z interfejsu API Canvas w Androidzie do rysowania z przyspieszeniem sprzętowym w HardwareBuffer, Android 14 wprowadza HardwareBufferRenderer. Ten interfejs API jest szczególnie przydatne, gdy Twój przypadek użycia obejmuje komunikację z systemem kompozytor do SurfaceControl, by zapewnić małe opóźnienie rysunek.