Tổng quan về các tính năng và API

Android 14 mang đến cho nhà phát triển các tính năng và API tuyệt vời. Các phần sau đây giúp bạn tìm hiểu các tính năng cho ứng dụng cũng như làm quen với các API liên quan.

Để biết danh sách chi tiết về các API đã thêm, sửa đổi và xoá, hãy đọc báo cáo điểm khác biệt về API. Để biết thông tin chi tiết về các API đã thêm, hãy truy cập Tài liệu tham khảo về API cho Android — để biết Android 14, tìm các API đã được thêm vào API cấp 34. Để tìm hiểu những thay đổi của nền tảng có thể tác động đến ứng dụng của bạn, hãy nhớ tham khảo các thay đổi về hành vi của Android 14 đối với ứng dụng nhắm đến Android 14tất cả ứng dụng.

Quốc tế hoá

Lựa chọn ưu tiên về ngôn ngữ cho mỗi ứng dụng

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.

API Biến tố ngữ pháp

Có đến 3 tỷ người sử dụng ngôn ngữ có phân biệt giống ngữ pháp: ngôn ngữ mà các danh mục ngữ pháp (chẳng hạn như danh từ, động từ, tính từ và giới từ) sẽ phản ánh theo giống của người và đối tượng mà bạn nói đến hoặc nói về. Theo truyền thống, nhiều ngôn ngữ có phân biệt giống ngữ pháp sử dụng giống đực làm giống mặc định hoặc chung.

Việc xưng hô sai ngữ pháp với người dùng, chẳng hạn như xưng hô với phụ nữ theo ngữ pháp giống đực, có thể ảnh hưởng tiêu cực đến hiệu suất và thái độ của họ. Ngược lại, giao diện người dùng có ngôn ngữ phản ánh chính xác giống ngữ pháp của người dùng có thể cải thiện mức độ tương tác, cũng như mang lại trải nghiệm tự nhiên và phù hợp hơn cho người dùng.

To help you build a user-centric UI for gendered languages, Android 14 introduces the Grammatical Inflection API, which lets you add support for grammatical gender without refactoring your app.

Lựa chọn ưu tiên theo khu vực

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.

Hỗ trợ tiếp cận

Điều chỉnh tỷ lệ phông chữ phi tuyến tính lên đến 200%

Starting in Android 14, the system supports font scaling up to 200%, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG).

To prevent large text elements on screen from scaling too large, the system applies a nonlinear scaling curve. This scaling strategy means that large text doesn't scale at the same rate as smaller text. Nonlinear font scaling helps preserve the proportional hierarchy between elements of different sizes while mitigating issues with linear text scaling at high degrees (such as text being cut off or text that becomes harder to read due to an extremely large display sizes).

Test your app with nonlinear font scaling

Enable the maximum font size in a device's accessibility settings to test your app.

If you already use scaled pixels (sp) units to define text sizing, then these additional options and scaling improvements are applied automatically to the text in your app. However, you should still perform UI testing with the maximum font size enabled (200%) to ensure that your app applies the font sizes correctly and can accommodate larger font sizes without impacting usability.

To enable 200% font size, follow these steps:

  1. Open the Settings app and navigate to Accessibility > Display size and text.
  2. For the Font size option, tap the plus (+) icon until the maximum font size setting is enabled, as shown in the image that accompanies this section.

Use scaled pixel (sp) units for text-sizes

Remember to always specify text sizes in sp units. When your app uses sp units, Android can apply the user's preferred text size and scale it appropriately.

Don't use sp units for padding or define view heights assuming implicit padding: with nonlinear font scaling sp dimensions might not be proportional, so 4sp + 20sp might not equal 24sp.

Convert scaled pixel (sp) units

Use TypedValue.applyDimension() to convert from sp units to pixels, and use TypedValue.deriveDimension() to convert pixels to sp. These methods apply the appropriate nonlinear scaling curve automatically.

Avoid hardcoding equations using Configuration.fontScale or DisplayMetrics.scaledDensity. Because font scaling is nonlinear, the scaledDensity field is no longer accurate. The fontScale field should be used for informational purposes only because fonts are no longer scaled with a single scalar value.

Use sp units for lineHeight

Always define android:lineHeight using sp units instead of dp, so the line height scales along with your text. Otherwise, if your text is sp but your lineHeight is in dp or px, it doesn't scale and looks cramped. TextView automatically corrects the lineHeight so that your intended proportions are preserved, but only if both textSize and lineHeight are defined in sp units.

Máy ảnh và nội dung nghe nhìn

Ultra HDR cho hình ảnh

An illustration of Standard Dynamic Range (SDR) versus High Dynamic Range (HDR) image quality.

Android 14 adds support for High Dynamic Range (HDR) images that retain more of the information from the sensor when taking a photo, which enables vibrant colors and greater contrast. Android uses the Ultra HDR format, which is fully backward compatible with JPEG images, allowing apps to seamlessly interoperate with HDR images, displaying them in Standard Dynamic Range (SDR) as needed.

Rendering these images in the UI in HDR is done automatically by the framework when your app opts in to using HDR UI for its Activity Window, either through a manifest entry or at runtime by calling Window.setColorMode(). You can also capture compressed Ultra HDR still images on supported devices. With more colors recovered from the sensor, editing in post can be more flexible. The Gainmap associated with Ultra HDR images can be used to render them using OpenGL or Vulkan.

Thu phóng, Lấy nét, Xem sau và các tính năng khác trong các tiện ích của máy ảnh

Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. These features give users an even more robust experience when using camera extension capabilities. Examples of these improvements include:

Thu phóng trong cảm biến

Khi REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE trong CameraCharacteristics chứa SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, ứng dụng của bạn có thể sử dụng các tính năng cảm biến nâng cao để cung cấp luồng RAW đã cắt có cùng số pixel với trường nhìn đầy đủ bằng cách sử dụng CaptureRequest với mục tiêu RAW có trường hợp sử dụng luồng được đặt thành CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. Bằng cách triển khai các chế độ điều khiển ghi đè yêu cầu, máy ảnh đã cập nhật sẽ cho phép người dùng điều khiển tính năng thu phóng ngay cả trước khi các chế độ điều khiển khác của máy ảnh sẵn sàng.

Âm thanh USB không tổn hao

Android 14 hỗ trợ các định dạng âm thanh không suy hao để mang lại trải nghiệm âm thanh chất lượng cao qua tai nghe có dây USB. Bạn có thể truy vấn một thiết bị USB để biết các thuộc tính bộ trộn ưu tiên, đăng ký trình nghe cho các thay đổi trong các thuộc tính bộ trộn ưu tiên và định cấu hình các thuộc tính bộ trộn bằng cách sử dụng lớp AudioMixerAttributes. Lớp này đại diện cho định dạng, chẳng hạn như mặt nạ kênh, tốc độ lấy mẫu và hành vi của bộ trộn âm thanh. Lớp này cho phép gửi trực tiếp âm thanh mà không cần trộn, điều chỉnh âm lượng hoặc xử lý hiệu ứng.

Năng suất và công cụ dành cho nhà phát triển

Trình quản lý thông tin xác thực

Android 14 thêm Trình quản lý thông tin xác thực làm API nền tảng, với khả năng hỗ trợ bổ sung cho các thiết bị Android 4.4 (API cấp 19) thông qua Thư viện Jetpack bằng Dịch vụ Google Play. Mục đích của Trình quản lý thông tin xác thực là giúp người dùng đăng nhập dễ dàng hơn bằng các API truy xuất và lưu trữ thông tin xác thực thông qua các trình cung cấp thông tin xác thực do người dùng định cấu hình. Trình quản lý thông tin xác thực hỗ trợ nhiều phương thức đăng nhập, bao gồm tên người dùng và mật khẩu, khoá truy cập và các giải pháp đăng nhập liên kết (chẳng hạn như Đăng nhập bằng Google) trong một API duy nhất.

Khẩu khoá truy cập mang lại nhiều lợi thế. Ví dụ: khoá truy cập được xây dựng dựa trên các tiêu chuẩn của ngành, có thể hoạt động trên nhiều hệ điều hành và hệ sinh thái trình duyệt, cũng như có thể được sử dụng với cả trang web và ứng dụng.

Để biết thêm thông tin, hãy xem tài liệu về Trình quản lý thông tin xác thực và khoá truy cập cũng như bài đăng trên blog về Trình quản lý thông tin xác thực và khoá truy cập.

Health Connect

Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.

On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.

Users can get started using Health Connect without a separate app download on devices running Android 14 or higher.
Users can control which apps have access to their health and fitness data through system settings.

Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.

For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.

Nội dung cập nhật OpenJDK 17

Android 14 tiếp tục công cuộc làm mới các thư viện cốt lõi của Android để phù hợp với các tính năng trong bản phát hành OpenJDK LTS mới nhất, bao gồm cả bản cập nhật thư viện và tính năng hỗ trợ ngôn ngữ Java 17 cho các nhà phát triển ứng dụng và nền tảng.

Bao gồm các tính năng và điểm cải tiến sau đây:

  • Cập nhật tính năng hỗ trợ Java 17 cho khoảng 300 lớp java.base.
  • Khối văn bản (Text Blocks) ra mắt các giá trị cố định dạng chuỗi nhiều dòng bằng ngôn ngữ lập trình Java.
  • So khớp mẫu cho instanceof, cho phép một đối tượng được xem là có một kiểu cụ thể trong instanceof mà không cần thêm bất cứ biến nào.
  • Lớp kín (sealed classes) cho phép bạn hạn chế các lớp và giao diện có thể mở rộng hoặc triển khai các lớp đó.

Nhờ các bản cập nhật hệ thống Google Play (Project Mainline), hơn 600 triệu thiết bị được phép nhận các bản cập nhật Android Runtime (ART) mới nhất có các thay đổi này. Đây là một phần trong cam kết của chúng tôi nhằm cung cấp cho các ứng dụng một môi trường nhất quán, bảo mật hơn trên các thiết bị, đồng thời cung cấp các tính năng và chức năng mới cho người dùng độc lập với các bản phát hành nền tảng.

Java và OpenJDK là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.

Những điểm cải tiến cho cửa hàng ứng dụng

Android 14 giới thiệu một số API PackageInstaller cho phép cửa hàng ứng dụng cải thiện trải nghiệm người dùng.

Yêu cầu phê duyệt lượt cài đặt trước khi tải xuống

Có thể bạn phải yêu cầu người dùng phê duyệt việc cài đặt hoặc cập nhật ứng dụng. Ví dụ: khi trình cài đặt sử dụng quyền REQUEST_INSTALL_PACKAGES cố gắng cài đặt một ứng dụng mới. Trong các phiên bản Android trước, cửa hàng ứng dụng chỉ có thể yêu cầu người dùng phê duyệt sau khi các tệp APK được ghi vào phiên cài đặt còn phiên hoạt động thì được cam kết.

Kể từ Android 14, phương thức requestUserPreapproval() sẽ cho phép trình cài đặt yêu cầu người dùng phê duyệt trước khi xác nhận phiên cài đặt. Điểm cải tiến này cho phép cửa hàng ứng dụng trì hoãn việc tải mọi tệp APK xuống cho đến khi người dùng phê duyệt quá trình cài đặt. Hơn nữa, sau khi người dùng phê duyệt việc cài đặt, cửa hàng ứng dụng có thể tải và cài đặt ứng dụng ở chế độ nền mà không làm gián đoạn người dùng.

Tuyên bố trách nhiệm đối với các bản cập nhật trong tương lai

Phương thức setRequestUpdateOwnership() cho phép trình cài đặt cho hệ thống biết rằng sau này trình cài đặt dự định sẽ chịu trách nhiệm về các bản cập nhật của ứng dụng đang cài đặt. Tính năng này cho phép thực thi theo quyền sở hữu bản cập nhật, nghĩa là chỉ chủ sở hữu bản cập nhật mới được phép tự động cài đặt bản cập nhật cho ứng dụng. Việc thực thi theo quyền sở hữu bản cập nhật giúp đảm bảo rằng người dùng chỉ nhận được bản cập nhật từ cửa hàng ứng dụng theo đúng mong đợi.

Mọi trình cài đặt khác (bao gồm cả những trình cài đặt sử dụng quyền INSTALL_PACKAGES) phải nhận được sự chấp thuận rõ ràng của người dùng để có thể cài đặt bản cập nhật. Nếu người dùng quyết định tiếp tục cập nhật từ một nguồn khác, thì quyền sở hữu bản cập nhật sẽ bị mất.

Cập nhật ứng dụng vào những thời điểm ít gây gián đoạn hơn

Các cửa hàng ứng dụng thường muốn tránh cập nhật một ứng dụng đang được sử dụng, vì việc này dẫn đến việc các quy trình đang chạy của ứng dụng bị dừng, có khả năng làm gián đoạn công việc mà người dùng đang thực hiện.

Kể từ Android 14, InstallConstraints API sẽ giúp trình cài đặt có thể đảm bảo quá trình cập nhật ứng dụng diễn ra đúng lúc. Ví dụ: một cửa hàng ứng dụng có thể gọi phương thức commitSessionAfterInstallConstraintsAreMet() để đảm bảo rằng bản cập nhật chỉ được cam kết khi người dùng không còn tương tác với ứng dụng có liên quan.

Cài đặt các phần phân tách không bắt buộc sao cho liền mạch

Nhờ tệp APK phân tách, nhiều tính năng của một ứng dụng có thể được phân phối trong các tệp APK riêng biệt, thay vì dưới dạng tệp APK nguyên khối. Tệp APK phân tách cho phép cửa hàng ứng dụng tối ưu hoá việc phân phối nhiều thành phần của ứng dụng. Ví dụ: có thể các cửa hàng ứng dụng sẽ tối ưu hoá dựa trên thuộc tính của thiết bị mục tiêu. PackageInstaller API đã hỗ trợ các phần phân tách kể từ khi ra mắt trong API cấp 22.

Trong Android 14, phương thức setDontKillApp() sẽ cho phép trình cài đặt cho biết rằng các quy trình đang chạy của ứng dụng sẽ không bị tắt khi các phần phân tách mới được cài đặt. Các cửa hàng ứng dụng có thể sử dụng tính năng này để cài đặt liền mạch những tính năng mới của một ứng dụng trong khi người dùng đang sử dụng ứng dụng đó.

Gói siêu dữ liệu ứng dụng

Kể từ Android 14, trình cài đặt gói Android cho phép bạn chỉ định siêu dữ liệu ứng dụng (ví dụ: các biện pháp đảm bảo an toàn dữ liệu) để đưa vào các trang trên cửa hàng ứng dụng như Google Play.

Phát hiện thời điểm người dùng chụp ảnh màn hình thiết bị

Để tạo ra trải nghiệm chuẩn hơn đối với việc phát hiện ảnh chụp màn hình, Android 14 ra mắt API phát hiện ảnh chụp màn hình nhằm bảo vệ quyền riêng tư. API này cho phép ứng dụng đăng ký lệnh gọi lại dựa trên từng hoạt động. Khi người dùng chụp ảnh màn hình trong khi hoạt động đó đang hiển thị, những lệnh gọi lại này sẽ được gọi và người dùng sẽ nhận được thông báo.

Trải nghiệm người dùng

Các thao tác tuỳ chỉnh trên Trang chia sẻ nội dung và cách cải thiện thứ hạng

Android 14 cập nhật trang chia sẻ nội dung của hệ thống để hỗ trợ các thao tác tuỳ chỉnh trong ứng dụng và các kết quả xem trước giàu thông tin hơn cho người dùng.

Thêm thao tác tuỳ chỉnh

Với Android 14, ứng dụng của bạn có thể thêm thao tác tuỳ chỉnh vào trang chia sẻ nội dung hệ thống mà ứng dụng đó gọi.

Ảnh chụp màn hình các thao tác tuỳ chỉnh trên trang chia sẻ.

Cải thiện thứ hạng của mục tiêu Chia sẻ trực tiếp

Android 14 sử dụng thêm nhiều tín hiệu từ các ứng dụng để xác định thứ hạng của mục tiêu chia sẻ trực tiếp nhằm đưa ra kết quả hữu ích hơn cho người dùng. Để cung cấp tín hiệu hữu ích nhất cho việc xếp hạng, hãy làm theo hướng dẫn để cải thiện thứ hạng của mục tiêu Chia sẻ trực tiếp. Ứng dụng liên lạc cũng có thể báo cáo mức sử dụng phím tắt cho tin nhắn đến và đi.

Hàng Chia sẻ trực tiếp trong trang chia sẻ nội dung, như minh hoạ bằng 1

Hỗ trợ ảnh động tích hợp sẵn và ảnh động tuỳ chỉnh cho tính năng Xem trước thao tác quay lại

Video: Ảnh động xem trước thao tác quay lại

Android 13 đã giới thiệu ảnh động xem trước thao tác quay lại màn hình chính dưới hình thức tuỳ chọn dành cho nhà phát triển. Khi vuốt ngược lại, trong một ứng dụng được hỗ trợ và tuỳ chọn dành cho nhà phát triển được bật, sẽ xuất hiện ảnh động chỉ ra rằng cử chỉ vuốt ngược là để thoát khỏi ứng dụng và quay lại màn hình chính.

Android 14 có nhiều điểm cải tiến và hướng dẫn mới về tính năng Xem trước thao tác quay lại:

Đối với bản thử nghiệm Android 14 này, tất cả tính năng Xem trước thao tác quay lại vẫn là tuỳ chọn dành cho nhà phát triển. Xem hướng dẫn dành cho nhà phát triển để di chuyển ứng dụng sang tính năng Xem trước thao tác quay lại, cũng như hướng dẫn dành cho nhà phát triển để tạo các hiệu ứng chuyển đổi tuỳ chỉnh trong ứng dụng.

Ghi đè cho mỗi ứng dụng của nhà sản xuất thiết bị có màn hình lớn

Chế độ ghi đè cho mỗi ứng dụng cho phép nhà sản xuất thiết bị thay đổi hành vi của các ứng dụng trên thiết bị có màn hình lớn. Ví dụ: chế độ ghi đè FORCE_RESIZE_APP sẽ hướng dẫn hệ thống đổi kích thước ứng dụng cho vừa với kích thước màn hình (tránh chế độ tương thích với kích thước) ngay cả khi resizeableActivity="false" được thiết lập trong tệp kê khai ứng dụng.

Tính năng ghi đè nhằm cải thiện trải nghiệm người dùng trên màn hình lớn.

Các thuộc tính tệp kê khai mới cho phép bạn tắt một số chế độ ghi đè của nhà sản xuất thiết bị cho ứng dụng của mình.

Ghi đè cho mỗi ứng dụng dành cho người dùng màn hình lớn

Tính năng ghi đè cho mỗi ứng dụng thay đổi hành vi của ứng dụng trên thiết bị có màn hình lớn. Ví dụ: chế độ ghi đè của nhà sản xuất thiết bị OVERRIDE_MIN_ASPECT_RATIO_LARGE đặt tỷ lệ khung hình của ứng dụng thành 16:9 bất kể cấu hình của ứng dụng.

Android 14 QPR1 cho phép người dùng áp dụng chế độ ghi đè cho mỗi ứng dụng thông qua trình đơn cài đặt mới trên các thiết bị có màn hình lớn.

Chia sẻ màn hình ứng dụng

Tính năng chia sẻ màn hình ứng dụng cho phép người dùng chia sẻ một cửa sổ ứng dụng thay vì toàn bộ màn hình thiết bị trong khi ghi nội dung trên màn hình.

Khi chia sẻ màn hình ứng dụng, thanh trạng thái, thanh điều hướng, thông báo và các thành phần khác trên giao diện người dùng của hệ thống sẽ bị loại trừ khỏi màn hình được chia sẻ. Chỉ nội dung của ứng dụng đã chọn mới được chia sẻ.

Tính năng chia sẻ màn hình ứng dụng giúp cải thiện năng suất và quyền riêng tư bằng cách cho phép người dùng chạy nhiều ứng dụng nhưng chỉ giới hạn việc chia sẻ nội dung ở một ứng dụng.

Trả lời thông minh dựa trên LLM trong Gboard trên Pixel 8 Pro

On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.

This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.

To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.

Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.

Gboard utilizes on-device LLMs to provide higher-quality smart replies.

Đồ hoạ

Đường dẫn có thể truy vấn và nội suy

API Path của Android là một cơ chế mạnh mẽ và linh hoạt để tạo và kết xuất đồ hoạ vectơ, với khả năng vẽ hoặc tô màu đường dẫn, tạo đường dẫn từ các đoạn thẳng hoặc đường cong bậc hai hoặc lập phương, thực hiện các thao tác boolean để có được hình dạng phức tạp hơn nữa hoặc đồng thời tất cả những hình dạng này. Một hạn chế là khả năng tìm hiểu nội dung thực sự trong đối tượng Đường dẫn; nội dung bên trong của đối tượng này được che đi trước các phương thức gọi sau khi tạo.

Để tạo Path, hãy gọi các phương thức như moveTo(), lineTo()cubicTo() để thêm các phân đoạn đường dẫn. Nhưng không có cách nào để truy vấn đường dẫn về các phân đoạn, vì vậy bạn phải giữ lại thông tin đó tại thời điểm tạo.

Kể từ Android 14, bạn có thể truy vấn các đường dẫn để tìm hiểu nội dung bên trong đó. Trước tiên, bạn cần sử dụng Path.getPathIterator API để lấy đối tượng PathIterator:

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

Tiếp theo, bạn có thể gọi PathIterator để lặp lại từng phân đoạn, truy xuất tất cả dữ liệu cần thiết cho từng phân đoạn. Ví dụ này sử dụng các đối tượng PathIterator.Segment để đóng gói dữ liệu cho bạn:

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 cũng có phiên bản next() không phân bổ, trong đó bạn có thể truyền một bộ đệm để lưu giữ dữ liệu điểm.

Một trong những trường hợp sử dụng quan trọng của việc truy vấn dữ liệu Path là nội suy. Ví dụ: bạn có thể tạo hiệu ứng động (animate) hoặc biến đổi (morph) giữa hai đường dẫn riêng biệt. Để đơn giản hoá trường hợp sử dụng đó hơn nữa, Android 14 cũng bao gồm phương thức interpolate() trên Path. Giả sử hai đường dẫn này có cùng cấu trúc nội bộ, thì phương thức interpolate() sẽ tạo một Path mới với kết quả nội suy đó. Ví dụ này trả về một đường dẫn có hình dạng bằng một nửa (nội suy tuyến tính .5) giữa 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);
}

Thư viện Jetpack graphics-path cũng kích hoạt các API tương tự cho các phiên bản Android trước đó.

Lưới tuỳ chỉnh với chương trình đổ bóng đỉnh và mảnh

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.

Trình kết xuất vùng đệm phần cứng cho Canvas

Để hỗ trợ việc sử dụng API Canvas của Android nhằm vẽ bằng tính năng tăng tốc phần cứng vào HardwareBuffer, Android 14 sẽ ra mắt HardwareBufferRenderer. API này là đặc biệt hữu ích khi trường hợp sử dụng của bạn liên quan đến hoạt động giao tiếp với hệ thống trình tổng hợp thông qua SurfaceControl để có độ trễ thấp bản vẽ.