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

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

用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。

新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnitgetFirstDayOfWeek)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。

如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置

Android 系统设置中的地区偏好设置界面。
Android 系统中地区偏好设置的温度选项 设置。

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 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。

添加自定义操作

借助 Android 14,您的应用可以 向其调用的系统 Sharesheet 添加自定义操作

分享表格中自定义操作的屏幕截图。

提高直接共享目标的排名

Android 14 根据来自应用的更多信号来确定直接 分享目标,以便为用户提供更实用的结果。 若要提供最有用的排名信号,请遵循 提高直接共享目标的排名。 通信应用还可以报告以下内容的快捷方式使用情况: 外发和传入的邮件

Sharesheet 中的“Direct Share”行,如 1

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

视频:预测性返回动画

Android 13 在开发者选项背后引入了预测性“返回主屏幕”动画。在已启用开发者选项的受支持应用中使用时,滑回手势会显示动画,表明返回手势会使应用退回到主屏幕。

Android 14 包含针对“预测性返回”的多项改进和新指南:

在此 Android 14 预览版中,所有预测性返回功能都是位于开发者选项背后。请参阅与将您的应用迁移到预测性返回有关的开发者指南,以及与创建自定义应用内转换有关的开发者指南

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

在附带 12 月功能更新版的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中体验更优质的智能回复,该功能由在 Google Tensor 上运行的设备端大型语言模型 (LLM) 提供支持。

此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中推出美式英语的有限预览版。该功能需要使用一部支持 Gboard 的 Pixel 8 Pro 设备作为键盘。

如需试用,请先依次选择设置 > 开发者选项 > AiCore 设置 > 启用 Aicore Persistent 以启用该功能。

接下来,在受支持的应用中打开对话,以在 Gboard 的建议栏中看到由 LLM 提供支持的智能回复,以便响应收到的消息。

Gboard 利用设备端 LLM 提供更优质的智能回复。

Grafika

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

Android 的 Path API 是一种强大且灵活的机制, 创建和渲染矢量图形,能够描边或填充 使用线段、二次曲线或立方曲线构造路径,执行 进行布尔运算,以获取更复杂的形状, 。其中一项限制是,我们不能确定 Path 对象;在创建后,对象的内部信息对调用方是不透明的。

如需创建 Path,您可以调用如下方法: moveTo()lineTo()cubicTo() 添加路径段。但当前无法 询问该路径有哪些路段,因此,您必须在以下位置保留该信息: 创建时间。

从 Android 14 开始,您可以查询路径以了解其内部内容。首先,您需要使用PathIterator 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();

接下来,您可以调用 PathIterator 来遍历这些细分。 逐个检索每个细分的所有必要数据。本示例 使用 PathIterator.Segment 对象,用于打包数据 :

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 还有 next() 的非分配版本,您可以在该版本中传递 来保存点数据。

查询 Path 数据的一个重要用例是插值。对于 例如,您可能想在两个不同的路径之间添加动画(或变形)。接收者 Android 14 还包含 Path 上的 interpolate() 方法。假设两条路径的 interpolate() 方法会创建一个新的 Path 输出值。此示例返回形状为 介于 pathotherPath 之间的一半(线性插值为 0 .5):

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

Jetpack graphics-path 库为 Android 早期版本

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

Android 长期支持绘制具有自定义着色的三角形网格,但输入网格格式被限制为几种预定义的属性组合。Android 14 增加了对自定义网格的支持,自定义网格可定义为三角形三角形带,并且可以视需要编入索引。这些网格通过自定义属性、顶点步长、转换以及用 AGSL 编写的顶点和片段着色器指定

顶点着色器定义变化,例如位置和颜色,而 fragment 着色器可以选择定义像素的颜色,通常通过使用顶点着色器创建的变化。如果 fragment 着色器提供了颜色,则它会使用绘制网格时选择的混合模式与当前的 Paint 颜色混合。您可以将 uniform 传递到 fragment 和顶点着色器中,以提高灵活性。

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.