Funkcje i interfejsy API – przegląd

Android 14 wprowadza wiele przydatnych funkcji i interfejsów API dla deweloperów. Poniższe materiały 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 o różnicach w interfejsach 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 34. Aby dowiedzieć się więcej o obszarach, w których zmiany na platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami w działaniu Androida 14 w przypadku aplikacji kierowanych na Androida 14w przypadku wszystkich aplikacji.

Internacjonalizacja

Wybór języka według aplikacji

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

  • Automatyczne generowanie localeConfig w aplikacji: od wersji Android Studio Giraffe Canary 7 i AGP 8.1.0-alpha07 możesz skonfigurować aplikację tak, aby automatycznie obsługiwała ustawienia języka na poziomie aplikacji. Na podstawie zasobów projektu wtyczka Androida do obsługi Gradle generuje plik LocaleConfig i dodaje do niego odwołanie w pliku manifestu końcowego. Dzięki temu nie musisz już tworzyć ani aktualizować tego pliku ręcznie. AGP korzysta z zasobów w folderach res w modułach aplikacji oraz z zależnych modułów bibliotek, aby określić lokalizacje, które mają być uwzględnione w pliku LocaleConfig.

  • 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 danym regionie, przeprowadzać eksperymenty A/B lub przesyłać zaktualizowaną listę lokalizacji, jeśli Twoja aplikacja korzysta z push na serwerze do celów lokalizacji.

  • Widoczność języka aplikacji w edytorach metody wprowadzania: edytorzy metody wprowadzania mogą korzystać z metody getApplicationLocales(), aby sprawdzić język bieżącej aplikacji i dostosować do niego język edytora metody wprowadzania.

Grammatical Inflection API

3 miliardy ludzi mówi językami z płcią: językami, w których kategorie gramatyczne (np. rzeczowniki, czasowniki, przymiotniki i przyimki) odmieniają się w zależności od płci osób i rzeczy, do których się zwracamy lub o których mówimy. Tradycyjnie wiele języków z płcią gramatyczną używa męskiej formy gramatycznej jako domyślnej lub uniwersalnej.

Zwracanie się do użytkowników w niewłaściwym rodzaju gramatycznym, np. do kobiet w męskim rodzaju gramatycznym, może negatywne wpłynąć na ich wyniki i postawę. Z kolei interfejs z językiem, który poprawnie odzwierciedla płeć gramatyczną użytkownika, może zwiększyć zaangażowanie użytkowników i zapewnić bardziej spersonalizowane i naturalne wrażenia.

为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。

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%, co zapewnia użytkownikom dodatkowe opcje ułatwień dostępu.

Aby zapobiec nadmiernemu powiększaniu dużych elementów tekstowych na ekranie, system stosuje nieliniową krzywą skalowania. Ta strategia skalowania oznacza, że duży tekst nie jest skalowany w tym samym tempie co mniejszy. Nieliniowe skalowanie czcionki pomaga zachować proporcjonalną hierarchię między elementami o różnych rozmiarach, a jednocześnie zmniejsza problemy związane z liniowym skalowaniem tekstu przy dużych wartościach (np. ucinanie tekstu lub utrudnianie czytania tekstu z powodu bardzo dużych rozmiarów wyświetlacza).

Testowanie aplikacji z nieliniowym skalowaniem czcionki

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

Jeśli do określania rozmiaru tekstu używasz już skalowalnych pikseli (sp), te dodatkowe opcje i ulepszenia skalowania są automatycznie stosowane do tekstu w aplikacji. Mimo to warto przeprowadzić testy interfejsu z włączonym maksymalnym rozmiarem czcionki (200%), aby upewnić się, że aplikacja prawidłowo stosuje rozmiary czcionek i może obsługiwać większe rozmiary 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 wyświetlacza i tekst.
  2. W przypadku opcji Rozmiar czcionki klikaj ikonę plusa (+), aż włączone zostanie ustawienie maksymalnego rozmiaru czcionki, jak pokazano na ilustracji w tej sekcji.

Używaj skalowanych pikseli (sp) jako jednostek rozmiaru tekstu

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

Nie używaj jednostek sp w przypadku dopełnienia ani nie określaj wysokości widoku przy założeniu domyślnego dopełnienia: w przypadku nieliniowego skalowania czcionek wymiary sp mogą nie być proporcjonalne, więc 4 sp + 20 sp może nie być równe 24 sp.

Przeliczanie jednostek skalowalnych pikseli (sp)

Użyj funkcji TypedValue.applyDimension(), aby przekonwertować jednostki sp na piksele, a funkcji TypedValue.deriveDimension(), aby przekonwertować piksele na jednostki sp. Te metody automatycznie stosują odpowiednią nieliniową krzywą skalowania.

Unikaj kodowania na stałe równań za pomocą Configuration.fontScale lub DisplayMetrics.scaledDensity. Skalowanie czcionki jest nieliniowe, więc pole scaledDensity nie jest już dokładne. Pola fontScale należy używać wyłącznie do celów informacyjnych, ponieważ czcionki nie są już skalowane za pomocą pojedynczej wartości skalarnej.

Używaj jednostek sp w przypadku lineHeight

Zawsze definiuj android:lineHeight za pomocą jednostek sp zamiast dp, aby wysokość wiersza skalowała się wraz z tekstem. W przeciwnym razie, jeśli tekst jest w jednostkach sp, a lineHeight jest w jednostkach dp lub px, nie będzie skalowany i będzie wyglądać na ściśnięty. TextView automatycznie koryguje lineHeight, aby zachować zamierzone proporcje, ale tylko wtedy, gdy zarówno textSize, jak i lineHeight są zdefiniowane w jednostkach sp.

Aparat i multimedia

Ultra HDR w przypadku zdjęć

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

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

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

Powiększanie, ustawianie ostrości, podgląd po zrobieniu zdjęcia i inne funkcje w rozszerzeniach aparatu

Android 14 ulepsza rozszerzenia aparatu, co pozwala aplikacjom na dłuższe przetwarzanie, co z kolei umożliwia uzyskiwanie lepszych zdjęć przy użyciu algorytmów wymagających dużej mocy obliczeniowej, takich jak fotografowanie przy słabym oświetleniu na obsługiwanych urządzeniach. Te funkcje zapewniają użytkownikom jeszcze większą wygodę podczas korzystania z możliwości rozszerzenia aparatu. Przykłady takich ulepszeń:

Zoom na matrycy

CameraCharacteristics 中的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE 包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW 时,您的应用可以使用高级传感器功能,将剪裁后的 RAW 数据流的像素与全视野范围相同,方法是将 CaptureRequest 与将数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW 的 RAW 目标搭配使用。通过实现请求替换控件,更新后的相机可让用户在其他相机控件准备就绪之前使用缩放控件。

Bezstratny dźwięk przez USB

Android 14 obsługuje bezstratne formaty dźwięku, dzięki czemu można uzyskać dźwięk w jakości studyjnej w przypadku przewodowych słuchawek USB. Możesz wysyłać zapytania do urządzenia USB w celu uzyskania preferowanych atrybutów miksera, rejestrować słuchacza zmian w preferowanych atrybutach miksera i konfigurować atrybuty miksera za pomocą klasy AudioMixerAttributes. Ta klasa reprezentuje format, np. maskę kanału, częstotliwość próbkowania i zachowanie miksera audio. Ta klasa umożliwia przesyłanie dźwięku bezpośrednio bez miksowania, regulowania głośności ani przetwarzania efektów.

Wydajność i narzędzia dla programistów

Credential Manager

Android 14 将 Credential Manager 添加为平台 API,并通过使用 Google Play 服务的 Jetpack 库,向后额外支持 Android 4.4(API 级别 19)设备。Credential Manager 旨在通过 API 使用用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。Credential Manager 在单个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。

通行密钥具有许多优势。例如,通行密钥是基于业界标准构建的,可在各种不同的操作系统和浏览器生态系统中使用,并且可用于网站和应用。

如需了解详情,请参阅 Credential Manager 和通行密钥文档以及介绍 Credential Manager 和通行密钥的博文

Health Connect

Health Connect to repozytorium danych o zdrowiu i kondycji fizycznej użytkownika na urządzeniu. Umożliwia ona użytkownikom udostępnianie danych między ulubionymi aplikacjami i zarządzanie w jednym miejscu danymi, które chcą udostępniać tym aplikacjom.

Na urządzeniach z Androidem w wersjach starszych niż 14 aplikację Health Connect można pobrać ze Sklepu Google Play. Od Androida 14 Zarządzanie danymi o zdrowiu jest częścią platformy i otrzymuje aktualizacje w ramach aktualizacji systemowych Google Play bez konieczności osobnego pobierania. Dzięki temu Health Connect może być często aktualizowany, a Twoje aplikacje mogą korzystać z Health Connect na urządzeniach z Androidem w wersji 14 lub nowszej. Użytkownicy mogą korzystać z Health Connect w ustawieniach urządzenia, a ustawienia prywatności są zintegrowane z ustawieniami systemu.

Użytkownicy mogą zacząć korzystać z Health Connect bez konieczności pobierania osobnej aplikacji na urządzeniach z Androidem 14 lub nowszym.
Użytkownicy mogą kontrolować, które aplikacje mają dostęp do ich danych o zdrowiu i kondycji fizycznej, za pomocą ustawień systemu.

Health Connect zawiera kilka nowych funkcji w Androidzie 14, takich jak trasy treningów, które umożliwiają użytkownikom udostępnianie trasy treningu, którą można wyświetlić na mapie. Trasa to lista lokalizacji zapisanych w określonym przedziale czasu. Aplikacja może wstawiać trasy do sesji ćwiczeń, łącząc je ze sobą. Aby mieć pełną kontrolę nad tymi poufnymi danymi, użytkownicy muszą zezwolić na udostępnianie poszczególnych tras innym aplikacjom.

Więcej informacji znajdziesz w dokumentacji dotyczącej funkcji Health Connection oraz w poście na blogu Co nowego w Androidzie Health.

Aktualizacje OpenJDK 17

Android 14 kontynuuje proces odświeżania podstawowych bibliotek Androida, aby dostosować je do funkcji najnowszych wersji OpenJDK LTS, w tym do aktualizacji bibliotek i obsługi języka Java 17 dla deweloperów aplikacji i platform.

Dostępne są następujące funkcje i ulepszenia:

  • Zaktualizowano około 300 klas java.base, aby obsługiwały Java 17.
  • Blokami tekstowymi, które wprowadzają do języka programowania Java wielowierszowe ciągi znaków.
  • dopasowywanie wzoru do instanceof, które umożliwia traktowanie obiektu jako mającego określony typ w instanceof bez żadnych dodatkowych zmiennych;
  • Zamknięte klasy, które umożliwiają ograniczenie zakresu klas i interfejsów, które mogą je rozszerzać lub implementować.

Dzięki aktualizacjom systemowym Google Play (projekt Mainline) ponad 600 milionów urządzeń może otrzymywać najnowsze aktualizacje środowiska wykonawczego Androida (ART), które zawierają te zmiany. Jest to część naszego zobowiązania do zapewnienia aplikacjom bardziej spójnego i bezpiecznego środowiska na różnych urządzeniach oraz udostępniania użytkownikom nowych funkcji i możliwości 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 wprowadza kilka interfejsów API PackageInstaller, które umożliwiają sklepom z aplikacjami poprawę wrażeń użytkowników.

Prośba o zatwierdzenie instalacji przed pobraniem

Instalacja lub aktualizacja aplikacji może wymagać zaakceptowania przez użytkownika. Na przykład gdy instalator korzystający z uprawnienia REQUEST_INSTALL_PACKAGES próbuje zainstalować nową aplikację. W poprzednich wersjach Androida sklepy z aplikacjami mogą prosić o pozwolenie użytkownika dopiero po zapisaniu plików APK w sesji instalacjizaakceptowaniu sesji.

Od Androida 14 metoda requestUserPreapproval() pozwala instalatorom poprosić o pozwolenie użytkownika przed rozpoczęciem sesji instalacji. Ta funkcja umożliwia opóźnienie pobierania plików APK do momentu zatwierdzenia instalacji przez użytkownika. Ponadto po zatwierdzeniu instalacji przez użytkownika aplikacja może pobrać i zainstalować aplikację w tle bez przerywania pracy użytkownika.

Przejmowanie odpowiedzialności za przyszłe aktualizacje

Metoda setRequestUpdateOwnership() pozwala instalatorowi wskazać systemowi, że będzie odpowiedzialny za przyszłe aktualizacje instalowanej aplikacji. Ta funkcja umożliwia egzekwowanie własności aktualizacji, co oznacza, że tylko właściciel aktualizacji może instalować automatyczne aktualizacje aplikacji. Egzekwowanie własności aktualizacji pomaga zapewnić, aby użytkownicy otrzymywali aktualizacje tylko z oczekiwanego sklepu z aplikacjami.

Aby zainstalować aktualizację, każdy inny instalator, w tym korzystający z uprawnienia INSTALL_PACKAGES, musi uzyskać wyraźną zgodę użytkownika. Jeśli użytkownik zdecyduje się na przeprowadzenie aktualizacji z innego źródła, utraci prawo własności do aktualizacji.

Aktualizuj aplikacje w godzinach, w których nie zakłócasz pracy.

Sklepy z aplikacjami zwykle nie chcą aktualizować aplikacji, która jest aktywnie używana, ponieważ powoduje to przerwanie jej procesów, co może zakłócić działanie użytkownika.

Od Androida 14 interfejs API InstallConstraints daje instalatorom możliwość zapewnienia, że aktualizacje aplikacji będą się odbywać w odpowiednim momencie. Sklep z aplikacjami może na przykład wywołać metodę commitSessionAfterInstallConstraintsAreMet(), aby upewnić się, że aktualizacja zostanie zaakceptowana tylko wtedy, gdy użytkownik nie będzie już korzystać z aplikacji.

Bezproblemowe instalowanie opcjonalnych podziałów

W przypadku podzielonych plików APK funkcje aplikacji mogą być dostarczane w osobnych plikach APK, a nie jako monolityczny plik APK. Dzielone pliki APK umożliwiają sklepom z aplikacjami optymalizację dostarczania różnych komponentów aplikacji. Sklepy z aplikacjami mogą na przykład optymalizować na podstawie właściwości urządzenia docelowego. Interfejs API PackageInstaller obsługuje dzielenie na części od czasu wprowadzenia na poziomie 22 interfejsu API.

W Androidzie 14 metoda setDontKillApp() umożliwia instalatorowi wskazanie, że działające procesy aplikacji nie powinny zostać zakończone podczas instalowania nowych części. Sklepy z aplikacjami mogą używać tej funkcji do płynnego instalowania nowych funkcji aplikacji, gdy użytkownik z niej korzysta.

Pakiety metadanych aplikacji

从 Android 14 开始,Android 软件包安装程序可让您指定应用元数据(例如数据安全做法),以在 Google Play 等应用商店页面上架。

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

To create a more standardized experience for detecting screenshots, Android 14 introduces a privacy-preserving screenshot detection API. This API lets apps register callbacks on a per-activity basis. These callbacks are invoked, and the user is notified, when the user takes a screenshot while that activity is visible.

Interfejs użytkownika

Działania niestandardowe na arkuszu udostępniania i ulepszone rankingowanie

Android 14 aktualizuje systemowy panel udostępniania, aby obsługiwać niestandardowe działania aplikacji i bardziej szczegółowe podglądowe wyniki dla użytkowników.

Dodawanie działań niestandardowych

W Androidzie 14 aplikacja może dodawać niestandardowe działania do wywoływanego przez nią panelu udostępniania.

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

Ulepszanie rankingu celów udostępniania bezpośredniego

Android 14 używa większej liczby sygnałów z aplikacji, aby określać ranking celów udostępniania bezpośredniego i w ten sposób wyświetlać bardziej przydatne wyniki użytkownikom. Aby zapewnić najbardziej przydatny sygnał dotyczący rankingu, postępuj zgodnie ze wskazówkami dotyczącymi ulepszania pozycji docelowych w ramach funkcji Direct Share. Aplikacje do komunikacji mogą też zgłaszać użycie skrótu w przypadku wychodzących i przyjmowanych wiadomości.

Wiersz bezpośredniego udostępniania na karcie udostępniania, jak pokazano na rysunku 1

Obsługa wbudowanych i niestandardowych animacji przewidywanego przejścia wstecz

Wideo: animacje przewidywanego przejścia wstecz

Android 13 wprowadził przewidywaną animację powrotu do ekranu głównego, która jest dostępna dla deweloperów. Gdy ta opcja jest włączona w obsługiwanej aplikacji, przesunięcie w dół powoduje wyświetlenie animacji wskazującej, że gest cofania powoduje wyjście z aplikacji i powrót do ekranu głównego.

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

W tej wersji wstępnej Androida 14 wszystkie funkcje przewidywania powrotów pozostają dostępne tylko dla deweloperów. Zapoznaj się z przewodnikiem dla deweloperów dotyczącym migracji aplikacji na przewidywane cofnięcie oraz z przewodnikiem dla deweloperów dotyczącym tworzenia niestandardowych przejść w aplikacji.

Zastąpienia ustawień producenta urządzenia 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 ustawień aplikacji dla użytkowników dużych ekranów

Zastąpienia dla poszczególnych aplikacji zmieniają zachowanie aplikacji na urządzeniach z dużym ekranem. Na przykład OVERRIDE_MIN_ASPECT_RATIO_LARGE zastąpienie producenta urządzenia ustawia format obrazu aplikacji na 16:9 niezależnie od konfiguracji aplikacji.

Android 14 QPR1 umożliwia użytkownikom stosowanie zastąpienia 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 treści na ekranie.

Podczas udostępniania ekranu aplikacji pasek stanu, pasek nawigacji, powiadomienia i inne elementy interfejsu systemu nie są uwzględniane na wyświetlaczu. Udostępniona jest tylko zawartość wybranej aplikacji.

Udostępnianie ekranu aplikacji zwiększa produktywność i prywatność, ponieważ pozwala użytkownikom uruchamiać wiele aplikacji, ale ogranicza udostępnianie treści do jednej aplikacji.

Inteligentna odpowiedź na klawiaturze Gboard na Pixelu 8 Pro oparta na LLM

在搭载 12 月功能分块的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中试用质量更高的智能回复,这些回复由在 Google Tensor 上运行的设备端大语言模型 (LLM) 提供支持。

此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中以美式英语的形式提供给用户进行小范围测试。此功能需要使用 Pixel 8 Pro 设备,并将 Gboard 用作键盘。

如需试用此功能,请先依次前往设置 > 开发者选项 > AiCore 设置 > 启用 Aicore 持久性,启用该功能。

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

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

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łków i fragmentów

Android od dawna obsługuje rysowanie trójkątnych siatek z niestandardowym cieniowaniem, ale format siatki wejściowej był ograniczony do kilku wstępnie zdefiniowanych kombinacji atrybutów. Android 14 obsługuje niestandardowe siatki, które można zdefiniować jako trójkąty lub trójkątne paski, a także opcjonalnie posortować. Te siatki są określane za pomocą niestandardowych atrybutów, kroków wierzchołków, zmiennych oraz shaderów wierzchołków i fragmentów napisanych w AGSL.

Shader wierzchołka definiuje zmienne, takie jak pozycja i kolor, a shader fragmentu może opcjonalnie zdefiniować kolor piksela, zwykle za pomocą zmiennych utworzonych przez shader wierzchołka. Jeśli kolor jest dostarczany przez fragment shadera, jest on mieszany z bieżącym kolorem Paint za pomocą trybu mieszania wybranego podczas rysowania siatki. Tablice jednolite można przekazywać do shaderów wierzchołkowych i fragmentów, aby zwiększyć elastyczność.

Renderowanie bufora sprzętowego w Canvas

协助使用 Android 的 Canvas API 通过 硬件加速至 HardwareBuffer、Android 14 引入了 HardwareBufferRenderer。如果您的用例涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制,此 API 特别有用。