Omówienie funkcji i interfejsów API

Android 14 wprowadza deweloperów świetnych funkcji i interfejsów API. Te materiały pomogą Ci poznać funkcje Twoich 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 platformy mogą wpłynąć na Twoje aplikacje, zapoznaj się ze zmianami w działaniu Androida 14 dotyczącymi aplikacji kierowanych na Androida 14 i wszystkich aplikacji.

Internacjonalizacja

Wybór języka według aplikacji

Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:

  • Automatically generate an app's localeConfig: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates the LocaleConfig file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in the res folders of your app modules and any library module dependencies to determine the locales to include in the LocaleConfig file.

  • Dynamic updates for an app's localeConfig: Use the setOverrideLocaleConfig() and getOverrideLocaleConfig() methods in LocaleManager to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.

  • App language visibility for input method editors (IMEs): IMEs can utilize the getApplicationLocales() method to check the language of the current app and match the IME language to that language.

Interfejs 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.

Preferencje regionalne

Regional preferences enable users to personalize temperature units, the first day of the week, and numbering systems. A European living in the United States might prefer temperature units to be in Celsius rather than Fahrenheit and for apps to treat Monday as the beginning of the week instead of the US default of Sunday.

New Android Settings menus for these preferences provide users with a discoverable and centralized location to change app preferences. These preferences also persist through backup and restore. Several APIs and intents—such as getTemperatureUnit and getFirstDayOfWeek— grant your app read access to user preferences, so your app can adjust how it displays information. You can also register a BroadcastReceiver on ACTION_LOCALE_CHANGED to handle locale configuration changes when regional preferences change.

To find these settings, open the Settings app and navigate to System > Languages & input > Regional preferences.

Regional preferences screen in Android system settings.
Temperature options for regional preferences in Android system settings.

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 obrazach

标准动态范围 (SDR) 与高动态范围 (HDR) 图片质量的示意图。

Android 14 增加了对高动态范围 (HDR) 图片的支持,此类图片可在拍照时保留来自传感器的更多信息,从而实现鲜艳的色彩和更高的对比度。Android 采用 Ultra HDR 格式,这种格式可完全向后兼容 JPEG 图片,允许应用与 HDR 图片无缝互操作,从而根据需要以标准动态范围 (SDR) 显示图片。

当您的应用为其 Activity 窗口选择使用 HDR 界面(通过清单条目或在运行时通过调用 Window.setColorMode())时,框架会自动在 HDR 界面中呈现这些图片。您还可以在支持的设备上拍摄压缩的 Ultra HDR 静态图片。从传感器中恢复的颜色越多,博文中的编辑效果就越灵活。与 Ultra HDR 图片关联的 Gainmap 可用于使用 OpenGL 或 Vulkan 渲染这些图片。

Powiększenie, Ostrość, Po wyświetleniu 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.

Produktywność i narzędzia 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 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。

其中包含以下功能和改进:

  • 将大约 300 个 java.base 类更新为支持 Java 17。
  • 文本块 - 为 Java 编程语言引入了多行字符串字面量。
  • instanceof 模式匹配:可让对象在 instanceof 中被视为具有特定类型,而无需任何额外的变量。
  • 密封类:允许您限制哪些类和接口可以扩展或实现它们。

得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。

Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

Ulepszenia sklepów z aplikacjami

W Androidzie 14 wprowadziliśmy kilka interfejsów API PackageInstaller, które pozwalają sklepom z aplikacjami zwiększyć wygodę użytkowników.

Przed pobraniem poproś o zatwierdzenie instalacji

Instalacja lub aktualizacja aplikacji może wymagać zatwierdzenia użytkownika. Na przykład gdy instalator korzystający z uprawnienia REQUEST_INSTALL_PACKAGES próbuje zainstalować nową aplikację. We wcześniejszych wersjach Androida sklepy z aplikacjami mogą prosić użytkownika o zatwierdzenie dopiero po zapisaniu plików APK w sesji instalacji, a sesja została zgłoszona.

Od Androida 14 metoda requestUserPreapproval() umożliwia instalatorom prośbę o zatwierdzenie użytkownika przed wykonaniem sesji instalacji. To ulepszenie umożliwia sklep z aplikacjami odroczenie pobierania plików APK do momentu zatwierdzenia instalacji przez użytkownika. Ponadto gdy użytkownik zatwierdzi instalację, sklep z aplikacjami może pobrać i zainstalować aplikację w tle, nie przerywając mu działania.

Zgłaszanie odpowiedzialności za przyszłe aktualizacje

Metoda setRequestUpdateOwnership() pozwala instalatorowi wskazać systemowi, że ma być odpowiedzialny za przyszłe aktualizacje instalowanej aplikacji. Ta funkcja umożliwia egzekwowanie prawa własności do aplikacji. Oznacza to, że tylko właściciel aktualizacji może instalować automatyczne aktualizacje aplikacji. Wymuszanie własności aktualizacji pomaga zadbać o to, aby użytkownicy otrzymywali aktualizacje tylko ze sklepu z aplikacjami.

Wszyscy inni użytkownicy, którzy zainstalowali aktualizację, w tym korzystający z uprawnienia INSTALL_PACKAGES, muszą uzyskać wyraźną zgodę użytkownika. Jeśli użytkownik zdecyduje się przeprowadzić aktualizację z innego źródła, utraci własność aktualizacji.

Aktualizuj aplikacje o mniej uciążliwych porach

Sklepy z aplikacjami zwykle nie chcą aktualizować aktywnie używanej aplikacji, ponieważ powoduje to kończenie jej uruchomionych procesów, co może zakłócać działania użytkownika.

Począwszy od Androida 14 interfejs API InstallConstraints daje instalatorom możliwość aktualizowania aplikacji w odpowiednim momencie. Na przykład sklep z aplikacjami może wywołać metodę commitSessionAfterInstallConstraintsAreMet(), by upewnić się, że aktualizacja jest zatwierdzana tylko wtedy, gdy użytkownik nie wchodzi już w interakcję z daną aplikacją.

Bezproblemowe instalowanie opcjonalnych podziałów

W przypadku dzielonych pakietów APK funkcje aplikacji mogą być dostarczane w osobnych plikach APK, a nie jako monolityczny plik APK. Dzielone pliki APK pozwalają sklepom z aplikacjami zoptymalizować wyświetlanie różnych komponentów aplikacji. Na przykład sklepy z aplikacjami mogą prowadzić optymalizację na podstawie właściwości urządzenia docelowego. Interfejs PackageInstaller API obsługuje podziały od momentu wprowadzenia na poziomie 22 interfejsu API.

W Androidzie 14 metoda setDontKillApp() umożliwia instalatorowi zasygnalizowanie, że uruchomione procesy aplikacji nie powinny zostać zatrzymane po zainstalowaniu nowych podziałów. Sklepy z aplikacjami mogą korzystać z tej funkcji, aby bezproblemowo instalować nowe funkcje aplikacji, gdy użytkownik jej używa.

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 ujednolicić proces wykrywania zrzutów ekranu: Android 14 wprowadza chroniące prywatność wykrywanie zrzutów ekranu API. Ten interfejs API umożliwia aplikacjom rejestrowanie wywołań zwrotnych dla poszczególnych działań. Te wywołania zwrotne są wywoływane i użytkownik otrzymuje powiadomienie, gdy wykona zrzutu ekranu, gdy aktywność jest widoczna.

Z perspektywy użytkownika

Niestandardowe działania w arkuszu udostępniania i ulepszony ranking

Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.

Add custom actions

With Android 14, your app can add custom actions to the system sharesheet it invokes.

Screenshot of custom actions on the sharesheet.

Improve ranking of Direct Share targets

Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.

Direct Share row in the sharesheet, as shown by 1

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

Video: Predictive back animations

Android 13 introduced the predictive back-to-home animation behind a developer option. When used in a supported app with the developer option enabled, swiping back shows an animation indicating that the back gesture exits the app back to the home screen.

Android 14 includes multiple improvements and new guidance for Predictive Back:

With this Android 14 preview release, all features of Predictive Back remain behind a developer option. See the developer guide to migrate your app to predictive back, as well as the developer guide to creating custom in-app transitions.

Zastąpienia producentów urządzeń z dużym ekranem dla poszczególnych aplikacji

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 użytkownika na dużym ekranie na aplikację

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ź z obsługą LLM w Gboard na Pixelu 8 Pro

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ć

Android's Path API is a powerful and flexible mechanism for creating and rendering vector graphics, with the ability to stroke or fill a path, construct a path from line segments or quadratic or cubic curves, perform boolean operations to get even more complex shapes, or all of these simultaneously. One limitation is the ability to find out what is actually in a Path object; the internals of the object are opaque to callers after creation.

To create a Path, you call methods such as moveTo(), lineTo(), and cubicTo() to add path segments. But there has been no way to ask that path what the segments are, so you must retain that information at creation time.

Starting in Android 14, you can query paths to find out what's inside of them. First, you need to get a PathIterator object using the Path.getPathIterator API:

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();

Next, you can call PathIterator to iterate through the segments one by one, retrieving all of the necessary data for each segment. This example uses PathIterator.Segment objects, which packages up the data for you:

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());
}

PathIterator also has a non-allocating version of next() where you can pass in a buffer to hold the point data.

One of the important use cases of querying Path data is interpolation. For example, you might want to animate (or morph) between two different paths. To further simplify that use case, Android 14 also includes the interpolate() method on Path. Assuming the two paths have the same internal structure, the interpolate() method creates a new Path with that interpolated result. This example returns a path whose shape is halfway (a linear interpolation of .5) between path and otherPath:

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);
}

The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.

Niestandardowe sieci typu mesh z cieniowaniem wierzchołków i fragmentów

Android has long supported drawing triangle meshes with custom shading, but the input mesh format has been limited to a few predefined attribute combinations. Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. These meshes are specified with custom attributes, vertex strides, varying, and vertex and fragment shaders written in AGSL.

The vertex shader defines the varyings, such as position and color, while the fragment shader can optionally define the color for the pixel, typically by using the varyings created by the vertex shader. If color is provided by the fragment shader, it is then blended with the current Paint color using the blend mode selected when drawing the mesh. Uniforms can be passed into the fragment and vertex shaders for additional flexibility.

Sprzętowy mechanizm renderowania bufora w Canvas

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.