ב-Android 14 יש תכונות וממשקי API מצוינים למפתחים. בהמשך תוכלו ללמוד על התכונות של האפליקציות שלכם ולהתחיל להשתמש בממשקי ה-API הקשורים.
בדוח ההבדלים של ממשקי ה-API תוכלו למצוא רשימה מפורטת של ממשקי ה-API שנוספו, שונו והוסרו. פרטים על ממשקי ה-API שנוספו זמינים בחומר העזר בנושא Android API. לגבי Android 14, מחפשים ממשקי API שנוספו ברמת API 34. כדי לקבל מידע על תחומים שבהם שינויים בפלטפורמה עשויים להשפיע על האפליקציות שלכם, כדאי לעיין בשינויים בהתנהגות של Android 14 באפליקציות שמטרגטות ל-Android 14 ובכל האפליקציות.
אינטרנציונליזציה
העדפות שפה לכל אפליקציה
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 theLocaleConfig
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 theres
folders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfig
file.Dynamic updates for an app's
localeConfig
: Use thesetOverrideLocaleConfig()
andgetOverrideLocaleConfig()
methods inLocaleManager
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.
Grammatical Inflection API
3 billion people speak gendered languages: languages where grammatical categories—such as nouns, verbs, adjectives, and prepositions—inflect according to the gender of people and objects you talk to or about. Traditionally, many gendered languages use masculine grammatical gender as the default or generic gender.
Addressing users in the wrong grammatical gender, such as addressing women in masculine grammatical gender, can negatively impact their performance and attitude. In contrast, a UI with language that correctly reflects the user's grammatical gender can improve user engagement and provide a more personalized and natural-sounding user experience.
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.
העדפות אזוריות
העדפות אזוריות מאפשרות למשתמשים להתאים אישית את יחידות הטמפרטורה, את היום הראשון בשבוע ואת מערכות המספור. אירופאי שגר בארצות הברית עשוי להעדיף יחידות טמפרטורה בצלזיוס ולא בפרנהייט אפליקציות להתייחס ליום שני כתחילת השבוע במקום כברירת המחדל בארה"ב יום ראשון.
תפריטי ההגדרות החדשים של Android עבור ההעדפות האלה מספקים למשתמשים מיקום מרכזי ונגיש לשינוי העדפות האפליקציות. האלה
גם בגיבוי ובשחזור. כמה ממשקי API וכוונות (intents) – כמו getTemperatureUnit
ו-getFirstDayOfWeek
– מעניקים לאפליקציה הרשאת קריאה להעדפות המשתמש, כדי שהיא תוכל לשנות את אופן הצגת המידע. אפשר גם לרשום
BroadcastReceiver
במצב פעיל
ACTION_LOCALE_CHANGED
כדי לטפל בשינויים בתצורת הלוקאל כשיש שינוי בהעדפות הפורמט והמידות.
כדי למצוא את ההגדרות האלה, צריך לפתוח את אפליקציית ההגדרות ולעבור אל מערכת > שפות קלט > העדפות אזוריות.
נגישות
הגדלה לא לינארית של הגופן ל-200%
החל מגרסה 14 של Android, המערכת תומכת בהגדלת גופן עד 200%, ומספקת למשתמשים עם לקות ראייה אפשרויות נוספות של נגישות בהתאם להנחיות הנגישות לתוכן אינטרנט (WCAG).
כדי למנוע הגדלה גדולה מדי של אלמנטים גדולים של טקסט במסך, המערכת מחילה עקומת שינוי לא לינארית. באמצעות אסטרטגיה זו של הגדלה באחוזים לא משתנה באותו קצב של טקסט קטן. שינוי גודל גופנים לא לינארי עוזר לשמר את ההיררכיה הפרופורציונלית בין רכיבים בגדלים שונים, צמצום בעיות עם שינוי גודל טקסט ליניארי במעלות גבוהות (למשל נחתך או טקסט שקשה יותר לקרוא עקב תצוגה גדולה מאוד גדלים).
בדיקת האפליקציה עם שינוי גודל גופן לא לינארי
אם אתם כבר משתמשים ביחידות פיקסלים (sp) מותאמות כדי להגדיר את גודל הטקסט, אפשרויות נוספות ושיפורים בהתאמה לעומס (scaling) מיושמים באופן אוטומטי טקסט באפליקציה. עם זאת, עדיין צריך לבצע בדיקת ממשק משתמש עם גודל הגופן הופעל (200%) כדי לוודא שהאפליקציה מחילה את גודלי הגופנים בצורה נכונה ויכולה להתאים לגופנים גדולים יותר בלי להשפיע על נוחות השימוש.
כדי להגדיל את גודל הגופן ל-200%:
- פותחים את אפליקציית ההגדרות ועוברים אל נגישות > גודל התצוגה ו text.
- באפשרות גודל הגופן, מקישים על סמל הפלוס (+) עד לגופן המקסימלי. הגדרת הגודל מופעלת, כפי שמוצג בתמונה הנלווית .
שימוש ביחידות של פיקסלים משוקללים (sp) לגודל הטקסט
חשוב לזכור תמיד לציין את גדלי הטקסט ביחידות sp. מתי באפליקציה שלך נעשה שימוש ביחידות sp, מערכת Android יכולה להחיל את גודל הטקסט המועדף על המשתמש וגם להתאים אותו לעומס.
לא להשתמש ביחידות sp למרווחים פנימיים או להגדיר גובה תצוגה בהנחה שיש מרווח פנימי משתמע: כשמשתמשים בהתאמת גודל גופן לא לינארית, יכול להיות שהמידות ב-sp לא יהיו פרופורציונליות, כך ש-4sp + 20sp לא יהיה שווה ל-24sp.
המרת יחידות פיקסלים (sp) מותאמות
כדי להמיר מיחידות sp, צריך להשתמש ב-TypedValue.applyDimension()
לפיקסלים, ומשתמשים ב-TypedValue.deriveDimension()
כדי
להמיר פיקסלים ל-sp. בשיטות האלה המערכת מיישמת את ההתאמה לעומס (scaling) המתאים
עקומה באופן אוטומטי.
מומלץ להימנע מכתיבת משוואות בתוך הקוד באמצעות
Configuration.fontScale
או
DisplayMetrics.scaledDensity
. מפני ששינוי גודל הגופן
שאינו לינארי, השדה scaledDensity
כבר לא מדויק. fontScale
יש להשתמש בשדה למטרות מידע בלבד, מאחר שהגופנים כבר לא קיימים
עם ערך סקלר יחיד.
שימוש ביחידות sp עבור lineHeight
תמיד צריך להגדיר android:lineHeight
באמצעות יחידות sp
של dp, כך שגובה השורה ישתנה בהתאם לטקסט. אחרת, אם הטקסט
הוא sp אבל הערך של lineHeight
הוא ב-dp או ב-px, הוא לא גדל ונראה דחוס.
TextView מתקן באופן אוטומטי את lineHeight
כדי לשמור על הפרופורציות הרצויות, אבל רק אם גם textSize
וגם lineHeight
מוגדרים ביחידות sp.
מצלמה ומדיה
Ultra HDR לתמונות
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.
זום, מיקוד, תצוגה מפורטת ועוד בתוספים למצלמה
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:
- Dynamic still capture processing latency estimation provides much more
accurate still capture latency estimates based on the current scene and
environment conditions. Call
CameraExtensionSession.getRealtimeStillCaptureLatency()
to get aStillCaptureLatency
object that has two latency estimation methods. ThegetCaptureLatency()
method returns the estimated latency betweenonCaptureStarted
andonCaptureProcessStarted()
, and thegetProcessingLatency()
method returns the estimated latency betweenonCaptureProcessStarted()
and the final processed frame being available. - Support for capture progress callbacks so that apps can display the current
progress of long-running, still-capture processing operations. You can check
if this feature is available with
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
, and if it is, you implement theonCaptureProcessProgressed()
callback, which has the progress (from 0 to 100) passed in as a parameter. Extension specific metadata, such as
CaptureRequest.EXTENSION_STRENGTH
for dialing in the amount of an extension effect, such as the amount of background blur withEXTENSION_BOKEH
.Postview Feature for Still Capture in camera extensions, which provides a less-processed image more quickly than the final image. If an extension has increased processing latency, a postview image could be provided as a placeholder to improve UX and switched out later for the final image. You can check if this feature is available with
CameraExtensionCharacteristics.isPostviewAvailable
. Then you can pass anOutputConfiguration
toExtensionSessionConfiguration.setPostviewOutputConfiguration
.Support for
SurfaceView
allowing for a more optimized and power-efficient preview render path.Support for tap to focus and zoom during extension usage.
זום בחיישן
When REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
in
CameraCharacteristics
contains
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, your app
can use advanced sensor capabilities to give a cropped RAW stream the same
pixels as the full field of view by using a CaptureRequest
with a RAW target that has stream use case set to
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
By implementing the request override controls, the updated camera gives users
zoom control even before other camera controls are ready.
אודיו USB ללא אובדן נתונים
Android 14 gains support for lossless audio formats for audiophile-level
experiences over USB wired headsets. You can query a USB device for its
preferred mixer attributes, register a listener for changes in preferred mixer
attributes, and configure mixer attributes using the
AudioMixerAttributes
class. This class represents the
format, such as channel mask, sample rate, and behavior of the audio mixer. The
class allows for audio to be sent directly, without mixing,
volume adjustment, or processing effects.
כלים וכלים למפתחים
מנהל פרטי הכניסה
Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.
Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.
For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.
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.
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.
עדכונים של OpenJDK 17
Android 14 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases, including both library updates and Java 17 language support for app and platform developers.
The following features and improvements are included:
- Updated approximately 300
java.base
classes to Java 17 support. - Text Blocks, which introduce multi-line string literals to the Java programming language.
- Pattern Matching for instanceof, which allows an object to
be treated as having a specific type in an
instanceof
without any additional variables. - Sealed classes, which allow you restrict which classes and interfaces can extend or implement them.
Thanks to Google Play system updates (Project Mainline), over 600 million devices are enabled to receive the latest Android Runtime (ART) updates that include these changes. This is part of our commitment to give apps a more consistent, secure environment across devices, and to deliver new features and capabilities to users independent of platform releases.
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
שיפורים בחנויות האפליקציות
ב-Android 14 נוספו כמה ממשקי API של PackageInstaller
שמאפשרים לחנויות האפליקציות לשפר את חוויית המשתמש שלהן.
בקשה לאישור התקנה לפני ההורדה
התקנה או עדכון של אפליקציה עשויה לחייב את אישור המשתמש.
לדוגמה, כשתוכנית התקנה שמשתמשת בהרשאה REQUEST_INSTALL_PACKAGES
מנסה להתקין אפליקציה חדשה. בגרסאות קודמות של Android, חנויות אפליקציות יכולות לבקש אישור מהמשתמש רק אחרי שקבצים מסוג APK נכתבים בסשן ההתקנה והסשן מוגדר.
החל מ-Android 14, requestUserPreapproval()
השיטה מאפשרת למתקינים לבקש אישור מהמשתמש לפני ההתקנה
סשן. השיפור הזה מאפשר לחנות אפליקציות לדחות הורדה של חבילות APK עד
לאחר שההתקנה אושרה על ידי המשתמש. בנוסף, ברגע שמשתמש
יש התקנה מאושרת, חנות האפליקציות יכולה להוריד ולהתקין את האפליקציה
בלי להפריע למשתמש.
לטעון לבעלות על עדכונים עתידיים
השיטה setRequestUpdateOwnership()
מאפשרת למנהל התקנה
כדי להודיע למערכת שהוא מתכוון להיות אחראי לעדכונים עתידיים
לאפליקציה שהם מתקינים. היכולת הזו מאפשרת לעדכן את הבעלות
אכיפה, כלומר רק הבעלים של העדכון מורשה
כדי להתקין עדכונים אוטומטיים לאפליקציה. עדכון אכיפת הבעלות עוזר ל
צריך לוודא שהמשתמשים יקבלו עדכונים רק מחנות האפליקציות הצפויה.
כל מתקין אחר, כולל אלה שמשתמשים בהרשאה INSTALL_PACKAGES
, צריך לקבל אישור מפורש מהמשתמש כדי להתקין עדכון. אם משתמש מחליט להמשיך עם
עדכון ממקור אחר, עדכון הבעלות אבד.
עדכון אפליקציות בזמנים שבהם פחות הפרעות
בדרך כלל, חנויות אפליקציות רוצות להימנע מעדכון אפליקציה שנמצאת בשימוש פעיל כי זה מוביל להפסקת התהליכים הפעילים של האפליקציה, עלול להפריע לפעולות של המשתמש.
החל מ-Android 14, InstallConstraints
API
מאפשר למתקינים לוודא שעדכוני האפליקציה יתרחשו
ברגע. לדוגמה, חנות אפליקציות יכולה לקרוא אל
השיטה commitSessionAfterInstallConstraintsAreMet()
עליך לוודא שמתבצע עדכון רק כשהמשתמש כבר לא נמצא
קיום אינטראקציה עם האפליקציה הנדונה.
התקנה חלקה של חלוקות אופציונליות
כשמשתמשים ב-APKs מפוצלים, אפשר לספק את התכונות של האפליקציה בקובצי APK נפרדים, במקום כ-APK מונוליתי. קובצי APK מפוצלים מאפשרים לחנויות אפליקציות לבצע אופטימיזציה של העברת הרכיבים השונים של האפליקציה. לדוגמה, חנויות אפליקציות עשויות לבצע אופטימיזציה על סמך המאפיינים של מכשיר היעד. ה-API של PackageInstaller
תומך בחלוקות מאז ההשקה שלו ברמת API 22.
ב-Android 14, השיטה setDontKillApp()
מאפשרת למתקין לציין שלא צריך להפסיק את התהליכים הפועלים של האפליקציה כשמתקינים פלחים חדשים. חנויות אפליקציות יכולות להשתמש בתכונה הזו כדי להתקין בצורה חלקה
בתכונות חדשות של אפליקציה בזמן שהמשתמש משתמש בה.
חבילות של מטא-נתונים של אפליקציות
Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play.
זיהוי מקרים שבהם משתמשים מצלמים צילומי מסך של המכשיר
כדי ליצור חוויה סטנדרטית יותר לזיהוי צילומי מסך, ב-Android 14 נוסף ממשק API לזיהוי צילומי מסך שמגן על הפרטיות. ה-API הזה מאפשר לאפליקציות לרשום קריאות חוזרות (callback) לפי פעילות. פונקציות ה-callbacks האלה מופעלות, והמשתמש מקבל הודעה, כשהמשתמש מצלם צילום מסך בזמן שהפעילות הזו גלויה.
חוויית משתמש
פעולות מותאמות אישית בחלונית השיתוף ודירוג משופר
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.
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.
תמיכה באנימציות מובנות ובאנימציות בהתאמה אישית עבור 'חיזוי של תנועת החזרה'
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:
- You can set
android:enableOnBackInvokedCallback=true
to opt in to predictive back system animations per-Activity instead of for the entire app. - We've added new system animations to accompany the back-to-home animation from Android 13. The new system animations are cross-activity and cross-task, which you get automatically after migrating to Predictive Back.
- We've added new Material Component animations for Bottom sheets, Side sheets, and Search.
- We've created design guidance for creating custom in-app animations and transitions.
- We've added new APIs to support custom in-app transition animations:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Use
overrideActivityTransition
instead ofoverridePendingTransition
for transitions that respond as the user swipes 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.
שינוי מברירת המחדל של יצרן המכשיר עם מסך גדול לכל אפליקציה
שינוי הגדרות ברמת האפליקציה מאפשר ליצרני המכשירים לשנות את ההתנהגות של האפליקציות במכשירים עם מסך גדול. לדוגמה, ההחרגה FORCE_RESIZE_APP
מורה למערכת לשנות את גודל האפליקציה כך שיתאים למימדי המסך (מבלי להשתמש במצב תאימות לגודל) גם אם הערך resizeableActivity="false"
מוגדר בקובץ המניפסט של האפליקציה.
השינויים מברירת המחדל נועדו לשפר את חוויית המשתמש במסכים גדולים.
מאפייני מניפסט חדשים מאפשרים להשבית חלק מהשינויים של יצרן המכשירים באפליקציה שלכם.
שינויים למשתמשים בכל אפליקציה במסך גדול
Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE
device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.
Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.
שיתוף מסך של אפליקציה
App screen sharing enables users to share an app window instead of the entire device screen during screen content recording.
With app screen sharing, the status bar, navigation bar, notifications, and other system UI elements are excluded from the shared display. Only the content of the selected app is shared.
App screen sharing improves productivity and privacy by enabling users to run multiple apps but limit content sharing to a single app.
'תשובה מהירה' מבוססת-LLM ב-Gboard ב-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.
גרפיקה
אפשר לשלוח שאילתות לגבי נתיבים ולבצע בהם אינטרפולציה
ה-API Path
של Android הוא מנגנון עוצמתי וגמיש ליצירה ולרינדור של גרפיקה וקטורית, עם אפשרות לצייר או למלא נתיב, לבנות נתיב מקטעי קו או מעקומות ריבועיות או ממעלה שלישית, לבצע פעולות בוליאניות כדי לקבל צורות מורכבות יותר או את כל האפשרויות האלה בו-זמנית. אחת מהמגבלות היא היכולת לברר מה נמצא בפועל באובייקט Path. הרכיבים הפנימיים של האובייקט לא גלויים למבצעי הקריאה אחרי היצירה.
כדי ליצור Path
, צריך לבצע קריאה ל-methods כמו moveTo()
, lineTo()
ו-cubicTo()
כדי להוסיף קטעי נתיב. אבל לא הייתה אפשרות לשאול את הנתיב הזה מהם הפלחים, ולכן צריך לשמור את המידע הזה בזמן היצירה.
החל מ-Android 14, אפשר לשלוח שאילתות לגבי נתיבים כדי לבדוק מה נמצא בהם.
קודם כול, צריך לקבל אובייקט PathIterator
באמצעות 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();
לאחר מכן אפשר לקרוא ל-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 כולל גם את השיטה interpolate()
ב-Path
. בהנחה שלשני הנתיבים יש מבנה פנימי זהה, ה-method interpolate()
יוצרת Path
חדש עם התוצאה בעלת האינטרפולציה. הדוגמה הזו מחזירה נתיב שהצורה שלו היא חצי (אינטרפולציה לינארית של 0 .5) בין path
ל-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); }
ספריית graphics-path של Jetpack מאפשרת להשתמש בממשקי API דומים גם בגרסאות קודמות של Android.
רשתות מותאמות אישית עם תוכנות הצללה (shader) של קודקודים ומקטעים
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.
עיבוד באמצעות מאגר (buffer) בחומרה ל-Canvas
כדי לעזור לכם להשתמש ב-API של Canvas
ב-Android כדי לצייר עם האצת חומרה ב-HardwareBuffer
, ב-Android 14 הוספנו את HardwareBufferRenderer
. ה-API הזה
שימושי במיוחד כאשר התרחיש לדוגמה כולל תקשורת עם המערכת
קומפוזיציה עד SurfaceControl
עם זמן אחזור קצר
שרטוט.