ממשק המשתמש של כתיבת הודעות
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(See the API reference docs for all compose packages)
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
2 ביולי 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
מבנה
Compose הוא שילוב של 7 מזהי קבוצות Maven בתוך androidx
. כל קבוצה מכילה קבוצת משנה ממוקדת של פונקציונליות, ולכל אחת מהן יש קבוצה משלה של הערות על הגרסה.
בטבלה הזו מוסבר על הקבוצות ויש קישורים לכל קבוצה של הערות מוצר.
קיבוץ | תיאור |
---|---|
compose.animation | ליצור אנימציות באפליקציות Jetpack Compose כדי לשפר את חוויית המשתמש. |
compose.compiler | שינוי פונקציות @Composable והפעלת אופטימיזציות באמצעות פלאגין של מהדר Kotlin. |
compose.foundation | כתיבת אפליקציות ב-Jetpack Compose באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם למערכת העיצוב. |
compose.material | אפשר ליצור ממשקי משתמש של Jetpack פיתוח נייטיב באמצעות רכיבי Material Design מוכנים לשימוש. זוהי נקודת הכניסה ברמה הגבוהה ביותר של Compose, שנועדה לספק רכיבים שתואמים לאלה שמתוארים בכתובת www.material.io. |
compose.material3 | אפשר ליצור ממשקי משתמש ב-Jetpack Compose באמצעות רכיבי Material Design 3, הדור הבא של Material Design. Material 3 כולל רכיבים וערכות נושא מעודכנים ותכונות התאמה אישית של Material You, כמו צבעים דינמיים. הוא מעוצב כך שיהיה עקבי עם הסגנון החזותי החדש של Android 12 וממשק המשתמש של המערכת. |
compose.runtime | אבני הבניין הבסיסיות של מודל התכנות וניהול המצב של Compose, וזמן הריצה המרכזי של הפלאגין של מהדר Compose לטירגוט. |
compose.ui | רכיבים בסיסיים בממשק המשתמש של Compose שנדרשים כדי ליצור אינטראקציה עם המכשיר, כולל פריסה, ציור וקלט. |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Compose, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-Build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לשמוע מכם אם תגלו בעיות חדשות או אם יש לכם רעיונות לשיפור הספרייה הזו. לפני שיוצרים ספרייה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להוסיף את ההצבעה שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא כלי המעקב אחר בעיות.
גרסה 1.9
גרסה 1.9.0-beta02
2 ביולי 2025
androidx.compose.ui:ui-*:1.9.0-beta02
משוחרר. גרסה 1.9.0-beta02 מכילה את הקומטים האלה.
שינויים ב-API
- שינוי אובייקט נלווה לניסיוני כדי להתאים לסיווג. (I8452a)
- הוסרה
isTrackFocusEnabled
תכונה ניסיונית (I003fd)
תיקוני באגים
- אם אין
WindowInsets
שחודרים לתוכן שלComposeView
, לא מסופקים ערכים שלWindowInsetsRulers
. (I71221)
גרסה 1.9.0-beta01
18 ביוני 2025
androidx.compose.ui:ui-*:1.9.0-beta01
משוחרר. גרסה 1.9.0-beta01 מכילה את הקומטים האלה.
שינויים ב-API
- הפכנו את
ShadowContext
לממשק אטום (I3ce40) - נוספה דרך ליצור אירוע מגע עקיף (לצורך בדיקה) בין מודולים (I22e4c)
- הופך את
IndirectTouchEvent.nativeEvent
לניסיוני. (I6fda5) - שינוי של ממשק ה-API על סמך משוב ממועצת ה-API. (Ibf378)
- מסירים את הקבוע
FrameRateCategory.NoPreference
. שינוי השם שלModifier.requestedFrameRate
לModifier.preferredFrameRate
. (I2f976) WindowInsetsRulers
: שונה מrulersIgnoringVisibility
למקסימום. הפונקציהgetDisplayCutoutBounds()
הפכה לפונקציית הרחבה שלPlacementScope
. הערך שלWindowInsetsAnimationProperties
השתנה ל-WindowInsetsAnimation
והערך שלgetAnimationProperties()
השתנה ל-getAnimation()
. (I3816f)- הכיתה
ShadowParams
שונתה לShadow
(I11cca) - שינוי החבילה של frame rate API מ-
androidx.compose.ui.ui
ל-androidx.compose.ui
(I8994e) - הקוד
InsetsRulers
הועבר לקוד משותף עם השםWindowInsetsRulers
. פישטנו את ה-API כך שכל התוספים הםWindowInsetsRulers
. מאפייני אנימציה שלא קשורים לסרגלים חולצו למחלקהAnimationProperties
. אפשר להשתמש ב-WindowInsetsRulers.innermostOf()
כדי למזג כמהWindowInsetsRulers
. (I2f0c6, b/415012444) - הוספנו API של כלי לניתוח מידע על המקור שנוסף על ידי מהדר Compose. (Iceaf9, b/408492167)
תיקוני באגים
- הדגל של
isGetFocusedRectReturnEmptyEnabled
הוסר עכשיו, אחרי שהתכונה אומתה במלואה. (Ife722) - תוקן באג ב-
performScrollToNode
, שבמקרים מסוימים לא הגיע לצומת היעד. אחרי התיקון הזה, המודעה תמיד תגיע לצומת היעד במקרים האלה. תופעת לוואי של השינוי הזה היא שעכשיו יכול להיות שמיקום הגלילה המדויק בסוף הפעולה יהיה שונה, וזה משפיע על בדיקות צילומי מסך ועל בדיקות שמניחות הנחות לגבי מיקום הגלילה המדויק. (I2c8a1)
גרסה 1.9.0-alpha04
4 ביוני 2025
androidx.compose.ui:ui-*:1.9.0-alpha04
משוחרר. גרסה 1.9.0-alpha04 מכילה את ההעברות האלה.
שינויים ב-API
- הוספנו ממשקי API של משנים לצללים שניתנים להתאמה אישית. (I2058d, b/160665122)
- מוסיפים מאפיין
SemanticsModifierNode.isImportantForBounds
שקובע אם צריך לקחת בחשבון את הצומת כשמחשבים את הגבולות. ערך ברירת המחדל של המאפיין הוא true, ואפשר להגדיר אותו כ-false כדי לציין שלא צריך להתחשב בצומת לצורך הגדרת הגבולות. (I7ebec) - מוסיפים
SemanticsPropertyKey
פונקציית factory להצהרה על מאפייני סמנטיקה ספציפיים ל-Android שזמינים כתוספים לנגישות שנחשפים דרךAccessibilityNodeInfo.getExtras
. (I2ed51) - הסרנו את השימוש ב-
ComposeUiFlags.isRemoveFocusedViewFixEnabled
והוצאנו את הדגל משימוש. (I50328) - הוספנו מסגרת חדשה של צללים שאפשר להתאים אישית. הם כוללים את
DropShadowPainter
ואתInnerShadowPainter
, וגם את התלויות שלDropShadow/InnerShadow
. התשתית הווירטואלית משותפת, כך שאפשר לשתף את אותם צללים שנוצרו בכמה מוקדים טלפוניים בלי ליצור מחדש את הצללים n פעמים. (I24f7a, b/160665122) - הצגת
CompositeShader
ו-CompositeShaderBrush
שיוצרים תוצאה מורכבת בין שני shaders. מוסיפים גםShaderBrush#transform
כדי להגדיר מטריצת טרנספורמציה לשיידר. (I2621a, b/160665122)
תיקוני באגים
- תוקן באג ב-
NestedScrollInteropConnection
שגרם לכך ששיטות ההטלה היו בסדר הלא נכון ביחס לתצוגות. (I56ad4) - בעבר, דיאלוגים שהוצגו במסך מלא לא הוצגו באזור החיתוך של המסך. הבאג הזה תוקן, כך שתיבות דו-שיח עם
decorFitsSystemWindows = false
ו-usePlatformDefaultWidth = false
יכולות להשתמש באזור המגרעת במסך. (I9e975) - תוקן באג שגרם לכך שאינדיקטור הפוקוס הירוק של
TalkBack
לא נמשך אחרי שהוא הופעל בזמן שאפליקציית ההלחנה הייתה ברקע. (Ifd12a)
גרסה 1.9.0-alpha03
20 במאי 2025
androidx.compose.ui:ui-*:1.9.0-alpha03
משוחרר. גרסה 1.9.0-alpha03 מכילה את הקומטים האלה.
שינויים ב-API
- הדגל
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
גורם לכך שאם אין שום דבר שאפשר להתמקד בו ב-ComposeView
, המלבן מוגדר לערך Empty. כך לא ניתן לבחור את התצוגה למיקוד באמצעות חיפוש מיקוד. זה חשוב במיוחד כשממשק IME כולל אפשרות NEXT, והניסיון להתמקד ב-ComposeView
נכשל.requestFocus()
(Ibd0e2, b/369256395) - הוספת הדגל
isNestedScrollDispatcherNodeFixEnabled
. (I0d24a) - שינוי השם של
DialogProperties
'dialogContentTitle
ל-windowTitle
(Ibd27b) - הוספנו את המגבילים
Modifier.onFirstVisible
ו-Modifier.onVisibilityChanged
, שהם מגבילים ברמה גבוהה שמבוססים עלModifier.onLayoutRectChanged
. המשנים האלה נוצרו במיוחד כדי לטפל בהרבה דרישות נפוצות של אפליקציות, כמו רישום חשיפות, הפעלה אוטומטית של סרטונים וכו'. הם נוצרו תוך התחשבות בביצועים, כך שאפשר להשתמש בהם בתרחישים קריטיים שמבוססים על רשימות בלי לסכן את ביצועי הגלילה. בנוסף לממשקי ה-API האלה של שינוי, נוספו ממשקי API נוספים ל-RelativeLayoutBounds
כדי לתמוך בתרחישי השימוש האלה, וכדי להקל על מפתחים ליצור בקלות שינויים מותאמים אישית דומים שמתאימים בדיוק לתרחיש השימוש שלהם. (I759b8) - כדי להתחשב בפיתוח עתידי של התכונה הזו, צריך לשנות את הערך
setDiagnosticStackTraceEnabled
ל-experimental. (I11db3) - השקנו את
Modifier.scrollable2D
,Scrollable2DState
וממשקי API נלווים ליצירת מצב. הוספנו גם פונקציות נפוצות של תוספי גלילה. (Ic61c8, b/214410040) - אי אפשר להשוות ישירות בין ערכי צבע של 64 ביט ב-Compose לבין ערכי צבע ב-Android
ColorLongs
כי מזהי מרחבי הצבעים לא מסודרים בחלק ממרחבי הצבעים. כדי להמיר בין מרחבי צבעים של Android, נוספו שני ממשקי API חדשים:toColorLong()
ו-fromColorLong()
. (I36899) - הוספנו את
ViewConfiguration.minimumFlingVelocity
כדי לאפשר שליטה במהירות ההטלה של הגבול התחתון. (I11aab)
גרסה 1.9.0-alpha02
7 במאי 2025
androidx.compose.ui:ui-*:1.9.0-alpha02
משוחרר. גרסה 1.9.0-alpha02 מכילה את הקומטים האלה.
שינויים ב-API
- מוסיפים את
dialogContentTitle
אלDialogProperties
, וכך מגדירים את הכותרת של חלון התוכן. bf9d670
תיקוני באגים
- הסרגלים של חלונות ה-Insets הושבתו זמנית בזמן תיקון הבדיקות הפנימיות. 8d1402
- תוקן האופן שבו שינויים בקלט של מצביע נוספים ל-
VelocityTracker
ב-DragGestureNode
. אפשר לשלוט בזה באמצעות הדגל החדשisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
.254ddb
גרסה 1.9.0-alpha01
23 באפריל 2025
androidx.compose.ui:ui-*:1.9.0-alpha01
משוחרר. גרסה 1.9.0-alpha01 מכילה את הקומטים האלה.
שינויים בהתנהגות
- בדיקות Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אתם לא מצליחים לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות
android.experimental.lint.version=8.8.2
(או גרסה חדשה יותר) ב-gradle.properties
. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת, נדרשת גרסה Ladybug של Android Studio או גרסה חדשה יותר.
שינויים ב-API
- מסיר את הסימון להפעלת הצהרות מעקב עבור כלי למעקב אחר נתיב ההמרה (ניפוי באגים). (I1b2a1)
- הפונקציות
InnerRectRulers
ו-OuterRectRules
הוחלפו בשיטות. הוסר פרמטר השם מ-RectRulers
public API. האפשרותDerivedRulers
היא עכשיו אפשרות לבנייה של סרגלים אנכיים ואופקיים. השיטותMergedHorizontalRulers
ו-MergedVerticalRulers
הוחלפו בשיטותminOf
ו-maxOf
ליצירת מכונות. (Iee89f, b/408192133) - הוצאה משימוש של
androidx.compose.ui.LocalSavedStateRegistryOwner
לטובתandroidx.savedstate.compose.LocalSavedStateRegistryOwner
. (I5439f, b/377946781) - מוסיפים
Modifier.keepScreenOn
כדי להגדיר שהמסך לא יעבור למצב שינה כשהוא מוצג (Ib5af4, b/408284174) - מוסיפים מאפיין סמנטי חדש
Shape
, שאפשר להגדיר אותו כשהצורה של רכיב ממשק המשתמש שונה מהמלבן התוחם שלו, למשל מלבן עם פינות מעוגלות. (I1376f) - תוקנה בעיה בשליחת אירועי הצבעה ב-
AndroidViews
, והוסף דגלisPointerInteropFilterDispatchingFixEnabled
כדי להגן על השינויים. (I0e272, b/372055500, b/408002332) FocusRestorer
כבר לא מצמיד את הפריט הקודם שהיה במיקוד. המשתמשים צריכים להשתמש במקש כדי לוודא שלפריט שהיה מודגש קודם יש את אותו גיבוב של קומפוזיציה, כדי שההדגשה תשוחזר בהצלחה. (I4203b, b/330696779)- מתן הרשאה לכתיבה להפעיל את
ViewTreeObserver.OnScrollChanged
. ההתנהגות הזו מוצגת באמצעות הדגלisOnScrollChangedCallbackEnabled
. הוספנו גם פונקציית הרחבה שלDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) - המאפיין
currentCompositeKeyHash
הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-currentCompositeKeyHashCode
. ה-API החלופי מקודד את אותו הגיבוב עם יותר ביטים, מה שמקטין באופן משמעותי את הסיכוי שלשתי קבוצות אקראיות לא קשורות בהיררכיית הקומפוזיציה יהיה אותו מפתח גיבוב. (I4cb6a, b/177562901) - כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
- הוספנו תמיכה בבדיקת lint עבור
FocusRequester
כדי לוודא שהוא נשמר בתוך ההודעה (I6bf91) - נוספה האפשרות להגדיר קצב פריימים מועדף או קטגוריה של קצב פריימים שבהם צריך לבצע את הרינדור של רכיב ה-Composable (Ie5201)
- חשיפת
MotionEvent
מובנה ב-Android. (I17286) - הוספה של
getChecked() + setChecked(int)
, הוצאה משימוש שלisChecked + setChecked(boolean)
(Iaac9d) - המתאם
graphicsLayer
מקבל עכשיוblendMode
ו-colorFilter
(Iab0e6) - נוספה
LocalResources
קומפוזיציה מקומית למשאבי שאילתה. קריאה ל-LocalResources.current
תגרום להרכבה מחדש כשההגדרה תשתנה, כך שקריאות ל-API כמוstringResource()
יחזירו ערכים מעודכנים. (I50c13, b/274786917) - חשיפת API ניסיוני לרכיבים הניתנים להרכבה כדי לטפל באירועי מגע עקיפים (Icff57)
- בגרסה הזו שיפרנו את הדיווח על חריגים שלא טופלו, שנוצרו במהלך שלבי הפריסה והציור של התוכן שניתן להרכבה. בעבר, חריגה שלא נתפסה כאן הייתה גורמת לקריסת הכלי להרצת בדיקות ולסיום מוקדם של חבילת הבדיקות. עכשיו אפשר לדווח על החריגים האלה בצורה חלקה יותר בלי להפסיק את חבילת הבדיקה. (I9928b, b/314128080)
- הוצאנו משימוש את API הניסיוני
GlobalAssertions
. השימוש המיועד שלו היה להפעלת בדיקות נגישות. במקום זאת, אפשר לעיין במאמרenableAccessibilityChecks()
. (I50aa5) - התכונה
SemanticsNodeInteraction.performTextInputSelection
כבר לא ניסיונית, ועכשיו היא תומכת בפרמטר נוסףrelativeToOriginal
שמאפשר להחיל את הבחירה על הטקסט המקורי שלא עבר שינוי או על הטקסט שעבר שינוי. (I3a905, b/261561038, b/277018945) - השקת API ליצירת רשימות תבליטים בהתאמה אישית דרך
AnnotatedString
(I1d066, b/383269496, b/139326648) - הוצאנו משימוש את
runWithTimingDisabled
לטובתrunWithMeasurementDisabled
, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את מחלקת העלMicrobenchmarkScope
כי אי אפשר להצהיר מחדש על הפונקציהrunWithMeasurementDisabled
כדי לפתוח גישה, כי היא מוטמעת. (I9e23b, b/389149423, b/149979716) - בוצע עדכון של ui-tooling Devices API כדי לכלול מכשירים חדשים יותר. (Ia2ac1)
- כדי לעזור למפתח לקחת בחשבון חלונות גדולים יותר, כדאי להוסיף את האפשרות 'פורטרט לטאבלט' לאוסף של גדלי המסך בתצוגה המקדימה (Ia1976)
- הוספנו API של ערכי מעקב לסימון מעקב או לרישום שלו ביומן עם ערכים בנקודת זמן מסוימת. ערכי המעקב מוצגים ב-Prefetto כנתיב חדש שאפשר לראות בציר הזמן של המעקב. ב-Android, ההטמעה מתבצעת באמצעות
Trace.setCounter
. (Idcf48)
תיקוני באגים
- תיקון השליחה של observers שזוכרים בהרכב שניתן להשהיה כדי למנוע שליחה של remembered/forgotten באותו apply (I570b2, b/404645679, b/407931790)
- אפשר להגדיר עכשיו את
android:dialogTheme
כדי לשלוט במאפייני תיבת הדו-שיח כש-decorFitsSystemWindows
הוא false (I7922f, b/246909281) - תוקן באג שבו כל אירוע תנועה שמתרחש מחוץ לתיבת דו-שיח יכול לסגור את תיבת הדו-שיח. (Ia78fd)
- כדי להריץ בדיקות Lint ב-Compose, צריך עכשיו גרסת AGP מינימלית של 8.8.2 משורת הפקודה, ולפחות Android Studio Ladybug לתמיכה ב-IDE. אם אתם משתמשים בגרסה ישנה יותר של AGP, אתם יכולים להגדיר את
android.experimental.lint.version=8.8.2
ב-gradle.properties כדי לשדרג את גרסת Lint, בלי להשפיע על AGP. (I6f2a8) - נוסף מאפיין סמנטי חדש
InputText
שמתעד את הערך שלtextfield
לפני החלת טרנספורמציה על הפלט. (Iae46a, b/395911609, b/176949051) - העברנו את
enableAccessibilityChecks()
API שמפעיל את בדיקות הנגישות ל-Android לחבילות נפרדות שהןcompose:ui:ui-test-accessibility
אם לא משתמשים ב-TestRule
וב-compose:ui:ui-test-junit4-accessibility
כשמתקשרים אלTestRule
(I3c318, b/391560768) - הוספנו תמיכה בכתיבת עקבות מחסנית ב-
LaunchedEffect
וב-rememberCoroutineScope
(I705c0, b/354163858)
External Contribution
- שינוי הפונקציה הניסיונית
runComposeUiTest
כך שתקבל חסימה של השעיה. נוספה גם פונקציה שהוצאה משימושrunComposeUiTest
לצורך תאימות בינארית (I3b88c, b/361577328)
גרסה 1.8
גרסה 1.8.3
18 ביוני 2025
androidx.compose.ui:ui-*:1.8.3
משוחרר. גרסה 1.8.3 מכילה את ההתחייבויות האלה.
תיקוני באגים
- הדגל של
isGetFocusedRectReturnEmptyEnabled
הוסר עכשיו, אחרי שהתכונה אומתה במלואה. (Ife722) - הדגל
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
גורם לכך שאם אין שום דבר שאפשר להתמקד בו ב-ComposeView
, המלבן מוגדר לערך Empty. כך לא ניתן לבחור את התצוגה למיקוד באמצעות חיפוש מיקוד. זה חשוב במיוחד כששיטת קלט (IME) כוללת אפשרות 'הבא', והיא מנסה להתמקד ב-ComposeView
ונכשלת.requestFocus()
(Ibd0e2, b/369256395)
גרסה 1.8.2
20 במאי 2025
androidx.compose.ui:ui-*:1.8.2
משוחרר. גרסה 1.8.2 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקן NPE כשתיבת הדו-שיח מוסרת במהלך זרם אירועים פעיל בתיבת הדו-שיח (6a7e7f)
- תיקון של
onLayoutRectChange
שלא מתעדכן לפי ציר הזמן המוגבל כשמתרחשים עדכונים של ציור בלבד. (03b82d)
גרסה 1.8.1
7 במאי 2025
androidx.compose.ui:ui-*:1.8.1
משוחרר. גרסה 1.8.1 מכילה את הקומטים האלה.
תיקוני באגים
- תיקון בעיות מסוימות ב-
onLayoutRectChanged
וב-LazyLayout
d791b11 - לדלג על בקשות למדידה מחדש של פריטים שהורכבו מראש. הבאג הזה השפיע על ביצועי הגלילה של פריסות עצלות, כי השליפה מראש לא פעלה ביעילות במקרים מסוימים, והמדידה התבצעה בתוך המסגרת. 742087a
גרסה 1.8.0
23 באפריל 2025
androidx.compose.ui:ui-*:1.8.0
משוחרר. גרסה 1.8.0 מכילה את הקומטים האלה.
שינויים חשובים מאז גרסה 1.7.0
- גרסה 1.8 של Compose כוללת תמיכה חדשה במילוי אוטומטי סמנטי. מוודאים שהגרסאות של UI ו-Foundation שבהן אתם משתמשים הן גרסה 1.8 ואילך, כי כדי להשתמש במילוי אוטומטי של רכיבי טקסט צריך את הגרסאות האחרונות של שני המודולים. לדוגמאות לשימוש ב-API, אפשר לעיין במסמכי התיעוד בנושא מילוי אוטומטי כאן.
- Compose 1.8 תומך בסוגים נוספים של משוב הפטי:
Confirm
, ContextClick
, GestureEnd
, GestureThresholdActivate
, Reject
, SegmentFrequentTick
, SegmentTick
, ToggleOn
, ToggleOff
, VirtualKey
. אפשר לגשת לזה דרךLocalHapticFeedback
, וב-Android, האפשרות הזו זמינה כברירת מחדל כש-Vibrator API מציין שיש תמיכה בתחושות מישוש. - מספר ממשקי Focus API יציבים עכשיו, כולל
Modifier.focusRestorer()
,onEnter
ו-onExit
FocusProperties
(I6e667). עכשיו אפשר לצייןFocusDirection
כשמתקשרים אלrequestFocus
. הוספנו APIrequestFocus(FocusDirection)
ל-focusRequester
ול-FocusTargetModifierNode
כדי לאפשר מיקוד בכיוון ספציפי. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
גרסה 1.8.0-rc03
9 באפריל 2025
androidx.compose.ui:ui-*:1.8.0-rc03
משוחרר. גרסה 1.8.0-rc03 מכילה את הקומטים האלה.
תיקוני באגים
- ההגדרה הזו משביתה כמה תיקונים של פעולות הדדיות בין חלונות, שגרמו לרגרסיה. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
גרסה 1.8.0-rc02
26 במרץ 2025
androidx.compose.ui:ui-*:1.8.0-rc02
משוחרר. גרסה 1.8.0-rc02 מכילה את הקומטים האלה.
תיקוני באגים
- תוקנה בעיה שבה תצוגות ממוקדות שמוטמעות בהיררכיית ה-Compose גרמו להרכבה חוזרת כשמסירים את התצוגה הממוקדת מ-LazyList. (765562)
גרסה 1.8.0-rc01
12 במרץ 2025
androidx.compose.ui:ui-*:1.8.0-rc01
משוחרר. גרסה 1.8.0-rc01 מכילה את הקומטים האלה.
תיקוני באגים
- תוקן קריסה שמתרחשת כשמסירים
AndroidView
עם מיקוד כשהמקלדת הרכה פעילה. (Ic725a) - תוקנו כמה בעיות בהטמעה של הטיפול החדש במצב המיקוד. (b/395895685)
- תוקנה בעיה שחוסמת את המילוי האוטומטי כשמשתמשים ב-
LaunchedEffect
כדי לבקש התמקדות בשדה טקסט. (b/392539099)
גרסה 1.8.0-beta03
26 בפברואר 2025
androidx.compose.ui:ui-*:1.8.0-beta03
משוחרר. גרסה 1.8.0-beta03 מכילה את ההתחייבויות האלה.
שינויים ב-API
- העברנו את
enableAccessibilityChecks()
API שמפעיל את בדיקות הנגישות ל-Android לחבילות נפרדות שהןcompose:ui:ui-test-accessibility
אם לא משתמשים ב-TestRule ו-compose:ui:ui-test-junit4-accessibility
כשמתקשרים אלTestRule
(I547ef, b/391560768) - נוסף מאפיין סמנטי חדש,
InputText
, שמתעד את הערך של שדה טקסט לפני שמחילים עליו טרנספורמציה של פלט. (Iae46a)
תיקוני באגים
- תוקנה בעיה שגרמה לשירותי מילוי אוטומטי לשמור את הטקסט שהתקבל אחרי השינוי במקום את הטקסט המקורי. (Iae46a, b/395911609, b/176949051)
גרסה 1.8.0-beta02
12 בפברואר 2025
androidx.compose.ui:ui-*:1.8.0-beta02
משוחרר. גרסה 1.8.0-beta02 מכילה את ההתחייבויות האלה.
תכונות חדשות
- נוספה בדיקת Lint כדי להזהיר מפני קריאות ל-
Configuration#screenWidth
/heightDp
– אפשר להשתמש ב-LocalWindowInfo.current.containerSize
במקום זאת כדי לאחזר את גודל החלון הנוכחי.
גרסה 1.8.0-beta01
29 בינואר 2025
androidx.compose.ui:ui-*:1.8.0-beta01
משוחרר. גרסה 1.8.0-beta01 מכילה את הקומטים האלה.
שינויים ב-API
- הוצאנו משימוש את
ContextualFlowRow
וContextualFlowColumn
. הרכיב הניסיוני הזה הוצג בגרסה 1.7, והוא עדיין לא עבר ייצוב. ההטמעה שלו נחשבת ללא רצויה. בעתיד, יכול להיות שנספק רכיב שיפתור את תרחישי השימוש שהרכיב הזה נועד לפתור.- ל-
FlowRow
ול-FlowColumn
יש עומסי יתר ניסיוניים שהוצגו בגרסה 1.7 וכוללים פרמטרoverflow
. השימוש בפרמטר הזה הוצא משימוש, ואפשר להשתמש במקומו בעומסים העודפים בלי הפרמטר הזה. התנהגות ברירת המחדל של העומסים העודפים האלה היא Clip, כמו שהייתה מאז ההשקה. - אפשר להשתמש ב-FlowRow כדי לפתור הרבה תרחישי שימוש ב-
ContextualFlowRow
, אבל אנחנו מודעים לכך שזה לא נכון באופן כללי. אפשר להטמיע אתContextualFlowRow
באופן מלא במרחב המשתמש, ואפשר לנסות להעתיק את ההטמעה שלו ולהתאים אותה לפי הצורך. בעתיד, ננסה לפתור את תרחישי השימוש האלה בדרך אחרת. (Ibafec)
- ל-
SemanticsNodeInteraction.semanticsId()
הוסר. במקום זאת, אתם צריכים להשתמש ב-SemanticsNodeInteraction.fetchSemanticsNode().id
. (Ie397a)- ממשקי ה-API הישנים של המילוי האוטומטי הוצאו משימוש. במקום זאת, צריך להשתמש ב-API החדש שמבוסס על סמנטיקה. (I943ff)
- לשכתב את
requestAutofill
API כך שיהיה מחוץ למנהל המילוי האוטומטי. (Id1929)
תיקוני באגים
- תוקנה בעיית המיקוד שבה
requestFocus()
עם פרמטר חסר משמעותpreviouslyFocusedRect
(שקשור לכיוון המיקוד) דילג עלComposeView
. (Ifdc2f, b/388590015) - תוקנה שגיאת NPE שהתרחשה מדי פעם כשמשתמשים ב-
GraphicsLayer.record { this@ContentDrawScope.drawContent() }
. אם אתם מקליטיםdrawContent()
בדרך הזו, הקפידו להשתמש בפונקציית ההרחבהGraphicsLayer#record
בתוךDrawScope
, ולא בפונקציית החברים ב-GraphicsLayer
. (I75fc0, b/389046242) - תיקון פריסת טקסט עם שלוש נקודות, שלפעמים מתורגמות בצורה שגויה במהלך אנימציות. מידע נוסף זמין בכתובת b/389707025 (Ie55b1, b/389707025)
גרסה 1.8.0-alpha08
15 בינואר 2025
androidx.compose.ui:ui-*:1.8.0-alpha08
משוחרר. גרסה 1.8.0-alpha08 מכילה את הקומטים האלה.
שינויים ב-API
- הופכים את
AutofillManager
למחלקה אבסטרקטית. (I0a3b0) - תוקנו כמה בעיות שקשורות למיקוד, כולל קריסות כש-IME מנסה להתמקד ב-
ComposeView
ללא פריטים שאפשר להתמקד בהם, שינוי מיקוד בתוךAndroidViews
צאצא ובקשת מיקוד שמשאירהAndroidView
. (Ia03c3, b/369256395, b/378570682, b/376142752) - שינוי של
FocusEnterExitScope.cancelFocus()
ל-cancelFocusChange()
(I89959) - עכשיו אפשר לחשב חסימות שניתנות להרכבה באמצעות
RectInfo.calculateOcclusions()
. - נוספה פונקציית הרחבה ב-
DelegatableNode
כדי לרשום מאזין לשינויים בפריסה הגלובלית. (I68b59)
תיקוני באגים
- הפעילות שמשמשת כמארח לרכיב הניתן להרכבה שנבדק כשמשתמשים ב-
ComposeContentTestRule.setContent
, משתמשת עכשיו בערכת הנושאTheme.Material.Light.NoActionBar
, כדי למנוע חפיפה ביןActionBar
לבין תוכן הבדיקה כשמטרגטים SDK בגרסה 35. כדי לבטל את ההתנהגות הזו, אפשר להסיר את התלות ב-ui-test-manifest
ולהוסיף רשומה של פעילות ב-AndroidManifest.xml של אפליקציית הבדיקה עבורComponentActivity
עם ערכת הנושא הרצויה. (I7ae1b, b/383368165) - כדי למנוע שמירה במטמון של גופני משאבים עם אותן הגדרות של וריאציות, המערכת תחיל עכשיו את הגדרות הווריאציות הנכונות. (If3dff, b/372044241)
-
AnnotatedString.fromHtml
תומך עכשיו בתגי<ul>/<li>
. (I7c2fe, b/299662276, b/139326648)
External Contribution
- נוסף ממשק חדש ללוח ההעתקה וקומפוזיציה מקומית בשבילו. (I80809)
גרסה 1.8.0-alpha07
11 בדצמבר 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
משוחרר. גרסה 1.8.0-alpha07 מכילה את הקומטים האלה.
שינויים ב-API
- הבעלים נחשף מ-
LayoutNode
עבור כלים. (I26f7f) - המאפיין
LocalAutofillHighlightColor
composition local use הוא מסוג Color. (I0e05b) - שומרים את
UrlAnnotation
שהוצא משימוש ואת השיטות שלו ומסמנים אותם כניסיוניים. (Ic0021)
תיקוני באגים
- תוקנה קריסת
IndexOutOfBoundsException
במהלך שימוש ב-LinkAnnotation
בתוךBasicText
או Text composable (be7605, b/374115892) - תוקנה הבעיה שבה שדות טקסט מלאים עם צורה מותאמת אישית לא חתכו את קו האינדיקטור. (I4f87f, b/380704151)
- תוקנה בעיה שגרמה לכך שרקעים נעלמו בצילומי מסך ארוכים. (I4d57a)
- הספרייה הזו משתמשת עכשיו בהערות לגבי ערכי null של JSpecify, שהן הערות לשימוש בסוג. מפתחים ב-Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict
(זו ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). (Idfef8, b/326456246) - עדכון התמיכה ב-Compose לצבעים רחבים ולצבעי HDR כשמריצים ב-Android Q ומעלה. (Icd8be, b/379135036)
- אם גופני המשאבים לא נטענים, המערכת תחזור לגופן ברירת המחדל בלי להציג הודעת שגיאה, במקום להציג חריגה כמו שהיה קודם. (Ib6a49)
- תיקון של בעיה שבה המיקוד אובד כשמנתקים את
AndroidView
ומחברים אותו מחדש. (I53446) - אישור
requestFocus()
מפעולת פריסה שחורגת מהגבולות. (Ia8461)
External Contribution
- הוספנו את
BringIntoViewResponderModifierNode
לממשק המשתמש, כדי לספק דרך חדשה להטמיע את הפונקציונליות של Bring Into View, וגם כדי לאפשר הטמעה ברמת הפלטפורמה. (Ia6dd8)
גרסה 1.8.0-alpha06
13 בנובמבר 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
משוחרר. גרסה 1.8.0-alpha06 מכילה את הקומטים האלה.
שינויים ב-API
- הוספת ערך מקדם
stylusHoverIcon
. (Iff20a, b/331289114) - השינוי הזה הופך את מנהל המילוי האוטומטי לממשק. (I84914, b/376080755)
- הוספת
requestFocus(FocusDirection)
ל-focusRequester
ול-FocusTargetModifierNode
כדי לאפשר מיקוד בכיוון מסוים. (I5d9ec, b/245755256) - הפרמטרים
FocusProperties.enter
ו-FocusProperties.exit
הוחלפו בפרמטריםonEnter
ו-onExit
, והשימוש בהם הוא בהיקף של הנמען ולא כפרמטרFocusDirection
. (I6e667) - הוספנו תמיכה בהשלמה אוטומטית בסרגל הכלים של הטקסט. (Ie6a4c)
- שינויים ב-API
Modifier.focusRestorer()
(I99c03):- שם הפרמטר השתנה ל-fallback
- הפרמטר הוא עכשיו
FocusRequester
ולא lambda - הפרמטר לא יכול להיות NULL יותר, וערך ברירת המחדל שלו הוא Default
- הסרת ההערה
@Experimental
מממשק ניהול המילוי האוטומטי. התכונה עדיין בשלבי פיתוח ומיועדת לגרסה הזו, אבל אנחנו לא רוצים להציג את @Expemiental API (Id8398) -
LocalHapticFeedback
מספק עכשיו הטמעה שלHapticFeedback
כברירת מחדל כש-Vibrator API מציין שיש תמיכה בתחושות מישוש. הפריטים הבאים נוספו אלHapticFeedbackType
–Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. רכיבים ב-Wear Compose שאפשר ללחוץ עליהם לחיצה ארוכה, כמוButton
,IconButton
,TextButton
ו-Card
, מפעילים עכשיו את הרטטLONG_PRESS
כשמסופק handler של לחיצה ארוכה. (I5083d) - מסיר את
OverscrollConfiguration
ואתLocalOverscrollConfiguration
, ומוסיף אתrememberPlatformOverscrollFactory
כדי ליצור מופע של הטמעה של גלילה מעבר לקצה או להתאים אישית פרמטרים של הטמעה כזו שמוגדרת כברירת מחדל. כדי להשבית את הגלילה העודפת, במקוםLocalOverscrollConfiguration provides null
, משתמשים ב-LocalOverscrollFactory provides null
. כדי לשנות את צבע הזוהר או את הריווח הפנימי, במקוםLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
משתמשים ב-LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - הוסר ה-API הניסיוני
GlobalAssertions
. השימוש המיועד שלו היה הפעלת בדיקות נגישות. במקום זאת, אפשר לעיין במאמרenableAccessibilityChecks()
. (I59322)
גרסה 1.8.0-alpha05
30 באוקטובר 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
משוחרר. גרסה 1.8.0-alpha05 מכילה את הקומטים האלה.
תכונות חדשות
בגרסה הזו, המילוי האוטומטי מוסתר מאחורי דגל תכונה. אנחנו עובדים על שיפור הביצועים, ונשמח לקבל משוב מוקדם על ממשקי ה-API. צפוי שהממשקי ה-API ישתנו לפני שהם יהפכו ליציבים, על סמך משוב.
- כדי להפעיל את המילוי האוטומטי, מגדירים את
ComposeUiFlags.isSemanticAutofillEnabled
כ-true ב-onCreate
ומשתמשים בתמונת המצב האחרונה של Compose. - הגרסה הזו של התכונה 'מילוי אוטומטי' תומכת בשמירה ידנית של פרטי כניסה, באמצעות התכונה 'הצעת סיסמה חזקה' ובאמצעות ניווט. היא תומכת גם במילוי כששדה שאפשר למלא אוטומטית מקבל מיקוד או כשמפעילים את המילוי האוטומטי דרך סרגל הכלים של הטקסט ברכיבי טקסט. הרכיב יודגש כדי לציין שההשלמה האוטומטית הסתיימה.
שינויים ב-API
- שינוי הממשק של המילוי האוטומטי כך שיתאים למבנה
expect
/actual
. (I22dce) - הוספנו את
CompositionLocal
שאפשר להשתמש בו כדי לשנות את הגוון של ההדגשה במילוי אוטומטי מוצלח. (I32092) - הוספנו את
Modifier.onRectChanged
API, שהוא API שמאפשר להירשם למיקום ולגודל שלLayoutNode
ביחס לשורש, לחלון או למסך. ממשק ה-API פותר הרבה תרחישי שימוש שבהם נעשה שימוש בשינויonGloballyPositioned
הקיים, אבל הוא עושה זאת עם הרבה פחות תקורה. ממשק ה-API כולל גם כלים לביטול הקפצה (debounce) ולויסות נתונים (throttle) של הקריאה החוזרת בהתאם לדרישות של תרחיש השימוש. (Id28c7, b/372765423, b/372757007, b/372994338) - ההרחבה של מנהל המילוי האוטומטי כוללת ממשקי API של
commit()
ושלcancel()
שעוזרים למשתמשים לשמור פרטי כניסה חדשים שהם הזינו. (I2da00) - הגרסה הזו כוללת ממשק חדש
AutofillManager
שאפשר להשתמש בו כדי לשפר את תהליך המילוי האוטומטי של המשתמשים, וגם דגלisSemanticAutofillEnabled
להפעלה של הגרסה החדשה הזו של המילוי האוטומטי. (I9d484) - הוספנו את
Modifier.onRectChanged
API, שהוא API שמאפשר להירשם למיקום ולגודל שלLayoutNode
ביחס לשורש, לחלון או למסך. ממשק ה-API פותר הרבה תרחישי שימוש שבהם נעשה שימוש בשינויonGloballyPositioned
הקיים, אבל הוא עושה זאת עם הרבה פחות תקורה. ממשק ה-API כולל גם כלים לביטול הקפצה (debounce) ולויסות נתונים (throttle) של הקריאה החוזרת בהתאם לדרישות של תרחיש השימוש. (I3c8fa) - הוספת מאפיינים סמנטיים וסוגי נתונים לתמיכה מורחבת במילוי אוטומטי. (I52c7d)
- כל השיטות ב-builder
AnnotatedString
כבר לא ניסיוניות (Ia89c8, b/261561823)
תיקוני באגים
- תצוגות שמוטמעות בכתיבה יכולות עכשיו לקבל אירועים של סיבוב אם הן במצב ממוקד (I4d53a, b/320510084)
- תוקנה בעיה שבה סוגים שונים של משאבים לא עודכנו בשינויים בתצורה (Ia9b99, b/352336694)
- תוקנה בעיה שמנעה את הפעולה התקינה של
TextField
כשמשתמשים במקלדת היפנית POBox במכשירי Sony ישנים מסוימים. (Ia9b99, b/373743376) - תוקנה בעיה שגרמה לתיבות דו-שיח להופיע בתחתית המסך במקום במרכז (Ia2ec, b/373093006)
- ב-Targeting API בגרסה 35 ואילך, כבר לא מוצגות תיבות דו-שיח עם הערך
decorFitsSystemWindows
שמוגדר כ-false. (Ibc94, b/364492593) - תוקנה קריסה שמתרחשת כשמעבירים שכבות בין חלונות (למשל, תיבת דו-שיח ותוכן ראשי) (I675ba, b/330955281)
גרסה 1.8.0-alpha04
16 באוקטובר 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
משוחרר. גרסה 1.8.0-alpha04 מכילה את הקומטים האלה.
שינויים ב-API
- נוספו קריאות חוזרות (callback) של
DelegatableNode#onDensityChange
ו-DelegatableNode#onLayoutDirectionChange
כדי לאפשר עדכון של מצב הצומת כשהוא משתנה (I04f3e, b/340662451) - מוסיף
WindowInfo#containerSize
כדי לספק את הגודל של מאגר התוכן של החלון הנוכחי. אפשר לאחזר אותו באמצעותLocalWindowInfo
. (Idc38c, b/369334429, b/360343819) - הוספנו תיקון לרכיבים עם אפשרות גלילה שמוסרים מעץ הצמתים במהלך גלילה מהירה. עכשיו הצמתים האלה יבטלו את ההטלה וישלחו בצורה נכונה את האירוע
onPostFling
עם המהירות שנותרה. אנחנו משיקים גם את האפשרות להשתמש בדגלNewNestedScrollFlingDispatchingEnabled
כדי לשלוט בהתנהגות במקרה של רגרסיות. הדגל יוסר לפני השקת הבטא. (I05c37, b/371168883) - נוסף
PointerInputModifierNode#touchBoundsExpansion
, שאפשר להשתמש בו כדי להגדיל את גבולות המגע של משנה קלט של מצביע יחיד. (Iccf02, b/335339283) - מוסיף
WindowInfo#containerSize
כדי לספק את הגודל של מאגר התוכן של החלון הנוכחי. אפשר לאחזר אותו באמצעותLocalWindowInfo
. (I27767, b/369334429, b/360343819) - מסירים את
readOnly
מ-TextFields
' כדי להצמיד לגרסה יציבה של Foundation. (I3aaba) -
Paragraph
ו-ParagraphIntrinsics
מקבלים עכשיו רשימה של כל ההערות שחלות עלAnnotatedString
. בעבר הם קיבלו רק רשימה שלSpanStyles
(I12f80)
תיקוני באגים
- עודכן האופן שבו פסקאות מטופלות ב-
AnnotatedString
. בעבר, יכולתם ליצור רק פסקאות שלא חופפות. מעכשיו,AnnotatedString
מאפשר פסקאות עם חפיפה מלאה שיתמזגו יחד, ופסקאות מוטמעות. במקרה כזה, הפסקה החיצונית תפוצל לפי הגבולות של הפסקה הפנימית, והסגנון של הפסקה הפנימית ימוזג עם הסגנון של הפסקה החיצונית (Ic9554) - תיקון קריסה ב-
AnnotatedString
עםLinkAnnotation
באורך אפס. (89aac6)
גרסה 1.8.0-alpha03
2 באוקטובר 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
משוחרר. גרסה 1.8.0-alpha03 מכילה את הקומטים האלה.
שינויים ב-API
- עדכון גרסת Kotlin ל-1.9 (I1a14c)
- הוספנו תפקיד סמנטי חדש בשם Carousel (קרוסלה) כדי לחקות את התנהגות הרשימה ברכיבי Pager בשירותי נגישות. (Id354b, b/354109776, b/239672673)
- שינוי השם של
invisibleToUser()
לhideFromAccessibility
. הפונקציה שלו נשארת זהה. פרטים נוספים זמינים במסמכי התיעוד. (Ib43a3)
תיקוני באגים
- עדכון מסמכים עבור משנה
SensitiveContent
(Ib0442) - תוקנה בעיה שבה המערכת התעלמה מקליפים מסוימים של מתאר כללי בשילוב עם צללי גובה בגרסאות מסוימות של Android
- תוקנה הבעיה שבה קליפים ריקים הוחלו כשצוינו קליפים כלליים של קווי מתאר בגרסאות מסוימות של Android.
- תוקנה חריגה שמופעלת כש-IME פעיל בתצוגה חיצונית ומשתמשים בפעולה 'הבא' כדי להזין מיקוד ב-
ComposeView
. ההתנהגות שלclearFocus()
תואמת להתנהגות של View ב-API בגרסה < 28, שבהclearFocus()
יכול לגרום למיקוד ב-View שמוגדר כברירת מחדל. - תוקנה בעיה שגרמה להצבה של רכיבים בצמתים מנותקים ב-
LazyList
על ידי הפרדה של ניהול רכיבי המשנה למעברים שונים של פריסת התוכן. - תוקנה בעיה שבה המקלדת הווירטואלית מהבהבת כשעוברים מ-
TextField
ל-EditText
או לכל עורך אחר מבוסס-תצוגה. - צמתי גלילה מוטמעים ישלחו עכשיו אירועי
onPostFling
בצורה תקינה אחרי שהם ינותקו. - שיפורים כלליים בביצועים
גרסה 1.8.0-alpha02
18 בספטמבר 2024
androidx.compose.ui:ui-*:1.8.0-alpha02
משוחרר. גרסה 1.8.0-alpha02 מכילה את הקומטים האלה.
שינויים ב-API
- אפשר להשתמש עכשיו ב-
TextOverflow.StartEllipsis
וב-TextOverflow.MiddleEllipsis
כדי להציב את סימן האליפסה בתחילת השורה או באמצע השורה של הטקסט בשורה אחת. (I38913, b/185418980)
תיקוני באגים
- תיקון תיבת הדו-שיח
dismissOnClickoutside
(39a3d, b/364508685) - לא לחתוך צללים של תוכן דיאלוג (e8e2f, b/363027803)
- תיקון התנהגות שגויה כשמעבירים את המיקוד בחיפוש בין חלון הכתיבה לתצוגה (58377, b/350534714)
External Contribution
- הפרמטר
AlignmentLines
Map
מקבל עכשיו סוגים קונקרטיים שלVerticalAlignmentLine
אוHorizontalAlignmentLine
. (I02912) - שיטה חדשה ונפוצה
ByteArray.decodeToImageBitmap(): ImageBitmap
. (I83c21)
גרסה 1.8.0-alpha01
4 בספטמבר 2024
androidx.compose.ui:ui-*:1.8.0-alpha01
משוחרר. גרסה 1.8.0-alpha01 מכילה את הקומטים האלה.
גרסה 1.7
גרסה 1.7.8
12 בפברואר 2025
androidx.compose.ui:ui-*:1.7.8
משוחרר. גרסה 1.7.8 מכילה את הקומטים האלה.
גרסה 1.7.7
29 בינואר 2025
androidx.compose.ui:ui-*:1.7.7
משוחרר. גרסה 1.7.7 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה הבעיה
IndexOutOfBoundsException
כשמעביריםAnnotatedString
עםLinkAnnotation
ל-Text composable. (Ic96d2) - תוקנה בעיית פסק זמן בבדיקות במקרים נדירים שבהם נעשה שימוש ב-
LinkAnnotation
ב-AnnotatedString
. (I04a03)
גרסה 1.7.6
11 בדצמבר 2024
androidx.compose.ui:ui-*:1.7.6
משוחרר. גרסה 1.7.6 מכילה את הקומטים האלה.
תיקוני באגים
- בעבר, המערכת הייתה מחזירה שגיאה בכל פעם שהיא נתקלה באירוע מרכזי כשהיו ביטולים בהמתנה במערכת המיקוד. במקום זאת, אנחנו מתעדים עכשיו שגיאה (I7ea0, b/346370327).
- ההערה הניסיונית הוסרה מהפריט
SemanticsPropertyReceiver.invisibleToUser()
. המאפיין הזה יוצא משימוש בגרסה 1.8 ויוחלף במאפייןSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0, b/376479686) - תוקנה בעיה שמנעה את הפעולה התקינה של
TextField
כשמשתמשים במקלדת היפנית POBox במכשירי Sony ישנים מסוימים. (I94e0e, b/373743376) - תוקנה בעיית נגישות שבה
BasicText
’s inlineContent לא הוכרז על ידיTalkBack
. (I67bcb, b/376479686)
גרסה 1.7.5
30 באוקטובר 2024
androidx.compose.ui:ui-*:1.7.5
משוחרר. גרסה 1.7.5 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנו בעיות שבהן גובה וחיתוך עם קווי מתאר מותאמים אישית לא עובדו כראוי.
- תוקנה קריסה של טקסט שמתרחשת עם רווח ברוחב אפס
LinkAnnotation
. (Ic1e2e) - תוקנה הודעה ב-
Talkback
של הלחצן כשהוא בנוי כרכיב Text שאפשר ללחוץ עליו. (I1f588)
גרסה 1.7.4
16 באוקטובר 2024
androidx.compose.ui:ui-*:1.7.4
משוחרר. גרסה 1.7.4 מכילה את הקומטים האלה.
גרסה 1.7.3
2 באוקטובר 2024
androidx.compose.ui:ui-*:1.7.3
משוחרר. גרסה 1.7.3 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה ציון קליפ כללי של מתאר הוביל לגבול קליפ ריק בגרסאות מסוימות של Android.
- תוקנה חריגה שמופעלת כש-IME פעיל בתצוגה חיצונית ומשתמשים בפעולה 'הבא' כדי להזין מיקוד ב-
ComposeView
. ההתנהגות שלclearFocus()
תואמת להתנהגות של View ב-API בגרסה < 28, שבהclearFocus()
יכול לגרום למיקוד ב-View שמוגדר כברירת מחדל. - תוקנה הבעיה שבה נעשה שימוש ב-
placeOrder
שגוי לביטול של lookahead, ולכן תוקן מקרה קצה שבו דילגו על מיקום של lookahead.
גרסה 1.7.2
18 בספטמבר 2024
androidx.compose.ui:ui-*:1.7.2
משוחרר. גרסה 1.7.2 מכילה את הקומטים האלה.
תיקוני באגים
- שיפור הביצועים של מידע על צמתים של נגישות ואירועים סמנטיים על ידי הסרת מעקב מפורט. (I89156, b/362530618)
-
ComposeView
לא יקרוס יותר כשיועבר לו גודל מדידה גדול במיוחד (da5db, b/347036173) - תוקנה בעיה בנגישות של קורא המסך שגרמה לכך שלא הושמעו הודעות על לחצנים.
LiveRegion
(f66fa7, b/348590026)
גרסה 1.7.1
10 בספטמבר 2024
- לא חלו שינויים בארטיפקטים של Android.
-desktop
ארטיפקטים הוסרו ו--jvmStubs
ו--linuxx64Stubs
ארטיפקטים נוספו. היעדים האלה לא מיועדים לשימוש, אלא הם משמשים כ-placeholder כדי לתמוך במאמצים של Jetbrains Compose.
גרסה 1.7.0
4 בספטמבר 2024
androidx.compose.ui:ui-*:1.7.0
משוחרר.
שינויים חשובים מאז גרסה 1.6.0
שינויים חשובים בגרסה 1.7.0 מפורטים בפוסט הזה בבלוג.
גרסה 1.7.0-rc01
21 באוגוסט 2024
androidx.compose.ui:ui-*:1.7.0-rc01
משוחרר. גרסה 1.7.0-rc01 מכילה את הקומטים האלה.
שינויים בולטים
- מודול ui:ui מחייב עכשיו גרסה מינימלית של foundation:foundation, לפחות 1.7.0-rc01 או גרסה חדשה יותר. האכיפה הזו נועדה לתקן חוסר תאימות בהתנהגות בין ui לבין foundation בנוגע לשינויים ב-
NestedScrollSource
שקרו בשלב מוקדם במהלך 1.7.0-alpha01.
גרסה 1.7.0-beta07
7 באוגוסט 2024
androidx.compose.ui:ui-*:1.7.0-beta07
משוחרר. גרסה 1.7.0-beta07 מכילה את הקומטים האלה.
תיקוני באגים
- הפונקציות
SemanticsNodeInteraction
,performTextInput
ו-performTextClearance
שקשורות לקלט טקסט, יחזירו עכשיו שגיאות של טענות (assertion) כשהן מופעלות עלTextFields
לקריאה בלבד.performTextReplacement
(I4ae8f)
גרסה 1.7.0-beta06
24 ביולי 2024
androidx.compose.ui:ui-*:1.7.0-beta06
משוחרר. גרסה 1.7.0-beta06 מכילה את הקומטים האלה.
גרסה 1.7.0-beta05
10 ביולי 2024
androidx.compose.ui:ui-*:1.7.0-beta05
משוחרר. גרסה 1.7.0-beta05 מכילה את התחייבויות האלה.
תיקוני באגים
- תוקן באג שבו שינוי המקלדת הווירטואלית גרם לכך ש-
TextField
לא קיבלה קלט מהמקלדת החדשה עד שהפוקוס אבד וחזר. - תוקנה הבעיה שבה ניסיונות לשמור את תוכן השכבה גרמו לתופעות לוואי לא רצויות בזמן העיבוד עם תוכן
SurfaceView
.
גרסה 1.7.0-beta04
26 ביוני 2024
androidx.compose.ui:ui-*:1.7.0-beta04
משוחרר. גרסה 1.7.0-beta04 מכילה את הקומטים האלה.
תיקוני באגים
- תיקון באג שגורם לקריסה כשמודדים שורות טקסט גדולות מאוד (למשל 10,000 תווים) (8157ab)
- השבתת התמיכה ברינדור תוכנה עבור
GraphicsLayer
API. (35ddd8) - תיקון של קריסה בלוגיקה של שמירת שכבות. (70b13e)
- האופטימיזציה של שימוש חוזר באובייקטים של שכבות בוטלה, כי היא גרמה לבעיות ברינדור. (70b13e)
גרסה 1.7.0-beta03
12 ביוני 2024
androidx.compose.ui:ui-*:1.7.0-beta03
משוחרר. גרסה 1.7.0-beta03 מכילה את הקומטים האלה.
גרסה 1.7.0-beta02
29 במאי 2024
androidx.compose.ui:ui-*:1.7.0-beta02
משוחרר. גרסה 1.7.0-beta02 מכילה את הקומטים האלה.
שינויים ב-API
- השם של
SemanticsProperties.Editable
השתנה ל-IsEditable
והערך שלSemanticsPropertyReceiver.editable
השתנה ל-isEditable
. המאפיין הוא עכשיו בוליאני ותמיד מצוין על ידי שדות טקסט. (I8acd8) - לשנות את השם של פרמטר נקודת ההשוואה של הנגישות. (I3d440)
- עדכון API לעיצוב הקישורים:
TextLinkStyles
הוא עכשיו חלק מה-constructorLinkAnnotation
ומה-methodAnnotatedString.fromHtml
(I90b2b). הסרנו גם אתTextDefaults
מחומר הלימוד (I5477b)
תיקוני באגים
- שם השדה
LayoutCoordinates.introducesFrameOfReference
שונה ל-LayoutCoordinates.introducesMotionFrameOfReference
כדי לשקף טוב יותר את המטרה שלו. שם הפונקציה שקשורה לחישוב הקואורדינטות שונה בהתאם לדגל. (I3a330)
גרסה 1.7.0-beta01
14 במאי 2024
androidx.compose.ui:ui-*:1.7.0-beta01
משוחרר. גרסה 1.7.0-beta01 מכילה את הקומטים האלה.
שינויים ב-API
- השם של
performCustomAccessibilityActionLabelled
שונה ל-performCustomAccessibilityActionWithLabel
ושלperformCustomAccessibilityActionWhere
ל-performCustomAccessibilityActionWithLabelMatching
. (I5387f) -
AnnotatedString.hasEqualsAnnotations
נקרא עכשיוhasEqualAnnotations
(I685c0) - ה-API לעדכון קישורים עם עיצוב Material בטקסט עודכן. הסרנו את השיטות מה-
TextDefaults
ליצירתLinkAnnotations
עם נושאים ולניתוח HTML עם קישורים שמותאמים לנושאים. במקום זאת, הוספנו מחלקהTextLinkStyles
שמאפשרת לעצב את הקישורים כפרמטר ל-Text composable. (I31b93)
תיקוני באגים
- תוקנו תרחישי שימוש נוספים שקשורים להוספה דינמית של משנים של קלט מצביע במהלך אירועים 63e1504
גרסה 1.7.0-alpha08
1 במאי 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
משוחרר. גרסה 1.7.0-alpha08 מכילה את הקומטים האלה.
שינויים ב-API
- הוספנו תמיכה בהטמעות של צורות שניתנות לשינוי. התג
Shape#createOutline
נצפה עכשיו בשכבות גרפיות, כך שקריאת ערכי מצב בתוך השכבות האלה תגרום לביטולים כשהמצב ישתנה, ותאפשר אנימציות של צורות עם ביצועים טובים יותר. (Id1629, b/326070216) - השם של
isPositionedByParentWithDirectManipulation
שונה ל-introducesFrameOfReference
. שימו לב שההשפעה שלה הפוכה עכשיו, כלומר, כברירת מחדל, רובLayoutCoordinates
מציגים מסגרת הפניה, ורק כשממקמים אותם תחת מניפולציה ישירה, המאפיין יהיה false. כדי לשאול על מיקום רק עם אלה שמציגים מסגרת התייחסות, משתמשים ב-positionInLocalFrameOfReference(...)
. אוpositionInLocalLookaheadFrameOfReference
מ-LookaheadScope
. (Ifc5f7) LookaheadScope
ממשקי ה-API הפכו ליציבים (I21507)- שינוי של lambda של פעולה עבור
getScrollViewportLength
בהתאם למשוב של מועצת ה-API. (Ibc74a) - בוצע עדכון של ממשקי
GraphicsLayer
outline API כדי להשתמש בפרמטרים מסוג float במקום בפרמטרים מסוג int. הוסרו ערכיUnsetOffset/UnsetSize IntSize
sentinel לטובת קבועים מסוג Unspecified שכבר קיימים במחלקות מוטבעות מסוג Offset ו-Size שמבוססות על float (I2fb03, b/333863462) - כשמזריקים קלט של עכבר במהלך בדיקות, הפונקציות
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
מקבלות עכשיו פרמטרbutton: MouseButton
כדי שיהיה אפשר להשתמש בהן באופן אוניברסלי יותר. ערך ברירת המחדל הואMouseButton.Primary
לכל השיטות. (I31a23, b/190493367, b/261439695) - השם של
onClicked
שונה ל-onClick
בתוךLinkInteractionListener
. (Iaa35c) - שינוי השם של
TextInclusionStrategy.isInside
לisIncluded
. הגדרת סוג ההחזרה שלParagraph/MultiParagraph#getRangeForRect()
כלא ניתן לאיפוס. (I51f26)
תיקוני באגים
- תוקנה בעיה בצילום מסך ארוך של מאגרי תגים נגללים עם
reverseScrolling=true
. (I7c59c)
External Contribution
- הוספנו תמיכה באחזור מראש של פריטים ב-
LazyLists
מקוננים (למשלLazyColumn
שמציגLazyRows
מקונן). השינוי הזה צפוי להפחית את מספר הפריימים שנושרים במהלך גלילה ב-LazyLists
האלה. ההתנהגות שמוגדרת כברירת מחדל בהטמעה היא אחזור מראש של 2 הפריטים הראשונים ברמה השנייה, אבל אפשר לשלוט בהתנהגות הזו באמצעות ממשקי ה-API החדשיםLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
ו-LazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
גרסה 1.7.0-alpha07
17 באפריל 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
משוחרר. גרסה 1.7.0-alpha07 מכילה את הקומטים האלה.
שינויים ב-API
- האפשרות
ClickableText
הוצאה משימוש. כדי להוסיף קישורים לטקסט, יוצריםAnnotatedString
עםLinkAnnotation
שמתאים לקישור ומעבירים את ה-AnnotatedString
הזה ל-Text composable. (I34d4b, b/323346994) - הוספנו את
ViewConfiguration.HandwritingGestureLineMargin
לתנועות של כתב יד. תמיכה במחוותJoinOrSplit
עבורBasicTextField
(Ie6e13, b/325660505) - התכונות
FocusProperties.enter
ו-FocusProperties.exit
כבר לא ניסיוניות. התכונותFocusDirection.Enter
ו-FocusDirection.Exit
כבר לא ניסיוניות. FocusRequester.Cancel
כבר לא ניסיוני (I461a1, b/261564106) - כשמבצעים שאילתה לגבי קואורדינטות של פריסה, אפשר להשתמש עכשיו בארגומנט
excludeDirectManipulationOffset
כדי להחריג את ההיסט שמוגדר על ידי פריסות אב שמיקמו את רכיבי הצאצא שלהן באמצעותPlaceable.PlacementScope.withDirectManipulationPlacement
. באופן דומה, רכיב Layout שמשנה את המיקום של רכיבי הצאצא שלו לעיתים קרובות עשוי למקם אותם עכשיו באמצעותwithDirectManipulationPlacement
(כמו Scroll, שמוטמע כברירת מחדל). השינוי הזה עוזר ליצור אנימציות אינטואיטיביות יותר ב-approachLayout
, כי עכשיו אפשר להבחין בין ההיסט שרוצים להנפיש לבין ההיסט שרוצים להחיל ישירות כשמחליטים להנפיש את הגישה. (I60ec7) - הסרנו את דגל התכונה לצילומי מסך ארוכים. (I28648, b/329128246)
- מעכשיו,
LazyColumn
יעבד כותרות קבועות בצורה נכונה בצילומי מסך ארוכים. (I8d239, b/329296635) - מקורות
NestedScroll
Drag and Fling מוחלפים ב-UserInput
וב-SideEffect
כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (Side Effect) וגלגל העכבר והמקלדת (UserInput
). (I40579) - גרסאות
ApproachLayoutModifierNode
ו-Modifier.approachLayout
יציבות עכשיו, ויש גרסאות חדשותisMeasurementApproachInProgress()
ו-isPlacementApproachInProgress()
שמחליפות את הגרסאות הישנותisMeasurementApproachComplete()
ו-isPlacementApproachComplete()
בהתאמה. - הוסר שינוי הגישה
intermediateLayout
שהוצא משימוש. (I3e91c) - שינוי השם של
GraphicsLayer#buildLayer
ל-record כדי לשקף את השיטות begin/endRecording של ממשקי API שנתמכים על ידי Displaylist כמוRenderNode
ו-Picture. - העדכון של
rememberGraphicsLayer
מאפשר שימוש ב-rememberObserver
. (I312c1, b/288494724, b/330758155) - המאפיין
UrlAnnotation
הוצא משימוש. במקומו צריך להשתמש ב-LinkAnnotation.Url
. אם משתמשים בערכת נושא של Material, צריך להשתמש באובייקטTextDefaults
כדי ליצור את ההערה עם ערכת הנושא של Material (I8d180, b/323346545) - נוספה אפשרות לעיצוב קישורי טקסט במצב לחיצה, בנוסף לעיצוב רגיל, עיצוב במצב ריחוף ועריכה (I5f864, b/139312671)
- השם של
String.parseAsHtml
שונה לשםAnnotatedString.Companion.fromHtml
. (I43dcd) - נוספו ארגומנטים של סגנון (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) ומאזין לאינטראקציה עם קישור לשיטהparseAsHtml
. כשמנתחים את המחרוזת עם תגי ה-HTML באמצעות תגי<a>
, השיטה תיצורLinkAnnotation.Url
לכל תג כזה ותעביר את אובייקטי הסגנון ואת מאזין האינטראקציות עם הקישור לכל הערה. (I7c977) -
LinkAnnotation
מקבל עכשיו את הארגומנטים של העיצוב מבוסס-המצב ואתLinkInteractionListener
. כדי לקבל היפר-קישור, צריך להוסיף את ההערה הזו ל-AnnotatedString
. אפשר להעביר אתfocusedState
או אתhoveredState
כדי להגדיר את המראה של הקישורים כשמתמקדים בהם או כשמעבירים מעליהם את העכבר.configuration
(I81ce4, b/139312671) - השדה
ImeOptions.hintLocales
כבר לא יכול להכיל ערך null. אם רוצים להעביר רשימה ריקה של Locale, צריך להשתמש ב-LocaleList.Empty
. (Ic5bc4)
תיקוני באגים
- מטפל בצורה חלקה בנתוני אירועים היסטוריים שגויים או פגומים (מתעלם מנתוני אופסט שגויים).
- תוקנו אירועים לא צפויים של הצבעה כשמוסיפים באופן דינמי משנה של קלט הצבעה לפני משנה אחר של קלט הצבעה במהלך שידור פעיל של אירועי קלט הצבעה (לדוגמה, בין כניסה למצב ריחוף לבין יציאה ממצב ריחוף [עכבר/עט]).
גרסה 1.7.0-alpha06
3 באפריל 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
משוחרר. גרסה 1.7.0-alpha06 מכילה את הקומטים האלה.
תכונות חדשות
- הוספנו את השיטה
parseAsHtml
למחרוזות עם סגנון: היא מאפשרת להמיר מחרוזת שמסומנת בתגי HTML ל-AnnotatedString
. שימו לב: לא כל התגים נתמכים. לדוגמה, אי אפשר להציג עדיין רשימות עם תבליטים. (I84d3d, I30626, b/139326648) - הטמענו תמיכה ניסיונית בצילומי מסך ארוכים במאגרי גלילה של Compose באמצעות Android API רשמי (
ScrollCaptureCallback
). התכונה הזו ניסיונית ויכול להיות שהיא לא תטפל כרגע בכל המקרים בצורה נכונה. לכן, בשלב הזה הוא מושבת כברירת מחדל. כדי להצטרף, מגדירים את הדגלComposeFeatureFlag_LongScreenshotsEnabled
לערך true. (I2b055, b/329296471)
שינויים ב-API
- הערך
fun ClipEntry.getMetadata()
השתנה ל-val ClipEntry.clipMetadata
. (I50155) - הפונקציות
ClipboardManager.getClipMetadata
ו-ClipboardManager.hasClip
הוסרו. אפשר להשתמש ב-clipEntry.getMetadata()
כדי לקרוא את המטא-נתונים של רשומת הקליפ הנוכחית. כדאי גם לבדוק את התוצאה שלClipboardManager.getClip
אם היא null או לא, כדי להבין אם יש בלוח קטע נוכחי. (I50498) - עכשיו אפשר להעביר אובייקטים של
GraphicsLayer
לפונקציות שלplaceable.placeWithLayer()
(I1b22f) -
ClipboardManager.setClip
מקבל עכשיו ערך null כדי לאפשר ניקוי של הלוח. (I7d2e9) - נוספו מזהי משאבים כדי להסתיר תצוגות שמשמשות כפרטי הטמעה בכלי בנייה (I99531)
- נוספה שיטת ההשהיה
GraphicsLayer#toImageBitmap
כדי לתמוך בהצגת תוכן של מפת סיביות ב-GraphicsLayer
. זוהי פעולת רינדור עם האצת חומרה ב-API ברמה 22 ומעלה (כולל), שתומכת ביותר מ-99% מכל מכשירי Android. ב-Android ברמת API 21, המערכת חוזרת לרינדור תוכנה. (I9e114) - שיטת עזר להמרה של
RectF
ב-Android ל-ComposeRect
(I39925, b/325660505) - לכל הפרמטרים של
KeyboardOptions
יש עכשיו ערך לא מוגדר כברירת מחדל. נוספה השיטהKeyboardOptions.merge
. - שם המאפיין
KeyboardOptions.autoCorrect
שונה ל-autoCorrectEnabled
, והוא יכול להיות ריק (null), כלומר לא צוין ערך. (Ia8ba0, b/295951492) - הגרסאות
BasicTextField(state)
ו-BasicSecureTextField
משתמשות עכשיו ב-KeyboardActionHandler
במקום ב-KeyboardActions
כדי לעבד פעולות שמבוצעות באמצעות המקלדת הווירטואלית. (I58dda)
גרסה 1.7.0-alpha05
20 במרץ 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
משוחרר. גרסה 1.7.0-alpha05 מכילה את הקודים האלה.
תכונות חדשות
- השקנו
GraphicsLayer
API חדש לתיעוד פקודות ציור ברשימת תצוגה, וגם מאפיינים נוספים שמשפיעים על העיבוד של רשימת התצוגה. הגבול הזה מאפשר לחלק סצנה מורכבת לחלקים קטנים יותר שאפשר לעדכן בנפרד בלי ליצור מחדש את כל הסצנה. אפשר לבצע שינויים ב-GraphicsLayer
בלי להקליט מחדש את רשימת התצוגה. בניגוד ל-Modifier.graphicsLayer
,GraphicsLayer
מאפשרת עיבוד של תוכן שאפשר להרכיב במקומות אחרים, והיא שימושית בתרחישים של אנימציה שבהם התוכן אמור לעבור עיבוד בסצנות שונות.
שינויים ב-API
-
GraphicsLayer.draw(Canvas)
כבר לא זמין כ-API ציבורי. במקומה צריך להשתמש בפונקציית התוסףDrawScope.drawLayer(GraphicsLayer)
כדי לצייר את השכבה. (I7a7c0) - פיצול
restrictedConstraints()
לשתי שיטות:fitPrioritizingWidth()
ו-fitPrioritizingHeight()
(I6d7fd) - נוסף stub לשימוש ב-Android L (I1c3b5, b/288494724)
HardwareCanvas
- עדכון של Compose framework כדי לחשוף
GraphicsContext
composition local לצד עדכון של Owner,DelegateableNode
ושלdrawWithCache
Modifier implementations כדי לחשוף גישה אלGraphicsContext
לגישה מוגבלת שתנקה באופן אוטומטי מופעים שלGraphicsLayer
כש-Modifiers יוסרו. (I64a2f, b/288494724) - הוספנו את
InterceptPlatformTextInput
כדי לעזור לכתוב בדיקות ברמה נמוכה שקשורות ל-IME, ותרחישי שימוש אחרים ב-IME ברמה נמוכה. המאפייןPlatformTextInputTestOverride
הוצא משימוש. (I862ed, b/322680547) - נוספה פונקציית התוסף
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - הוספנו את בנאי הפונקציות
GraphicsContext
כדי ליצור מפעל ליצירת מופעים שלGraphicsLayer
(Ib98d6, b/288494724) - חשפנו את
GraphicsLayer
ה-API כדי לספק למפתחים גמישות בהגדרת הפקודות לציור, שאפשר להשתמש בהן כדי לצייר במקומות אחרים וגם להחיל אפקטים ויזואליים שונים על התוצאה הסופית. (I80245, b/288494724) - הוספנו את הפונקציה
Paragraph#getRangeForRect
שמחזירה טווח של טקסט שמכוסה על ידי אזור מלבני נתון. (Iee516, b/325660505) - הוסרה החלפה ניסיונית של
BasicText
עם הארגומנטonLinkClicked
. בעתיד נשיק API חלופי לתמיכה בהיפר-קישורים. (I107d5)
תיקוני באגים
- הוספנו הגדרת API של
GraphicsLayer
expect/actual כדי לתמוך בלכידה ובהפעלה מחדש של פקודות ציור עם אפקטים חזותיים והמרות אופציונליים של קומפוזיציה. הוספנו ממשקGraphicsContext
שמכיל יחסי תלות של גרפיקה, כולל יצירה וניהול של מופעיGraphicsLayer
. (I4a8d6, b/288494724) - תוקנה בעיה של פעולה הדדית עם חיפוש מיקוד דו-ממדי, שבה המיקוד נתקע בתוך
ComposeView
שהוטמע בין תצוגות אחרות. (I08fd4)
External Contribution
-
LocalLifecycleOwner
הועבר מ-Compose UI אלlifecycle-runtime-compose
כדי שאפשר יהיה להשתמש בממשקי העזר מבוססי-Compose שלו מחוץ ל-Compose UI. תודה ל-Jake Wharton על התרומה. (I6c41b, b/328263448) - חשיפה עקבית של מאפייני הטיה צפים בכל סוגי המשנה של התאמה שמבוססת על הטיה. (I69f0f, b/328088992)
גרסה 1.7.0-alpha04
6 במרץ 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
משוחרר. גרסה 1.7.0-alpha04 מכילה את הקומטים האלה.
שינויים ב-API
- תמיכה בתכונת הכתיבה הידנית בסטיילוס ב-BasicTextField2 במכשירים עם Android U ואילך. (I002e4)
- ב-CL הזה אנחנו מוסיפים את הפעולה הסמנטית
GetScrollViewportLength
כדי שנוכל להעביר מידע על הרכיבים שמוצגים בגלילה ב-Compose למערכת הנגישות. ב-CL הזה נעשה שימוש במאפיין הזה גם ברשימות שאפשר לגלול בהן ב-Foundation. (Ic5fa2) -
FocusRequester.createRefs
יציב עכשיו (I4d92c, b/261436820) - הוספנו את
DelegatableNode.requireView()
כדי לאפשר לצמתי שינוי לקבל אתView
הנוכחי של Android בלי לקרוא את המיקום המקומי של הקומפוזיציה. (I40768) - API חדש
Path.reverse()
להפיכת הכיוון של נתיב (I36348) - נוסף
hintLocales
ל-KeyboardOptions
כדי לספק ל-TextFields
את היכולת להציע לממשקי IME לוקאלים ספציפיים כדי להגדיר מראש שפה מועדפת. - הצגת המאפיין
platformLocale
מתוךLocale
שמחזיר את אובייקט הפלטפורמה הבסיסי, למשלjava.util.Locale
. (I921c6)
גרסה 1.7.0-alpha03
21 בפברואר 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
משוחרר. גרסה 1.7.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- חדש:
ContextualFlowRow
וFlowRow
/Column
משופרים עם MaxLines ו-Overflow. אנחנו שמחים לבשר על שיפורים בתכונות הניסיוניותFlowRow
ו-FlowColumn
, שכוללות עכשיו תמיכה ב-maxLines וב-overflow, ועל ההשקה של התכונותContextualFlowRow
ו-ContextualFlowColumn
. העדכון הזה נועד לספק רכיבים עם ביצועים אופטימליים. הרכיבContextualFlow*
מתאים למספר גדול של פריטים שמשתמשים בהגדרתmaxLines
קטנה ובלחצנים דינמיים של 'עוד' (+N). הרכיביםFlowRow
ו-FlowColumn
מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow
או ב-FlowColumn
, שבה כל הפריטים מורכבים בלי קשר להתאמה שלהם לערך המקסימלי של הציר הניצב, צריך להגדיר אתoverflow
ל-FlowRowOverflow.Visible
או ל-FlowColumnOverflow.Visible
במהלך האתחול. כדאי לצפות בסרטוניםContextualFlowRowSample
וFlowRowSample
כדי לראות דוגמאות לשימוש בתכונות החדשות האלה. (Ib9135, b/293577082) - הוספת מאפיין סמנטי
maxTextLength
שצריך להגדיר בשדות טקסט שמסננים את מספר התווים המקסימלי המותר. (I24d9f, b/170648072) - ה-wrapper
Modifier.inspectable
יצא משימוש. ה-API הזה יוצר יותר ביטולים של שינוי המחיר מהנדרש, ולכן השימוש בו לא מומלץ יותר. מפתחים שרוצים לחשוף מאפייני שינוי לכלים, מומלץ להם להטמיע את המתודהinspectableProperties()
ב-ModifierNodeElement
. (Ib3236) - Constructor חדש ל-
PopupProperties
שמאפשר שליטה מלאה בדגלים שלWindowManager.LayoutParams
. (Ibb33e, b/312485503) - הוספנו את
DelegatableNode.requireLayoutCoordinates()
כדרך לקבל אתLayoutCoordinates
הנוכחי שלModifier.Node
בלי שתצטרכו לבטל אתonPlaced
ולאחסן את הקואורדינטות בנכס בעצמכם. (Ia8657) - הוספנו את
DelegatableNode.currentLayoutCoordinates
כדרך לקבל אתLayoutCoordinates
הנוכחי שלModifier.Node
בלי שתצטרכו לבטל אתonPlaced
ולאחסן את הקואורדינטות בנכס בעצמכם. (Iaebaa) -
BasicTextField2
וממשקי API קשורים בחבילהandroidx.compose.foundation.text2
מועברים אלandroidx.compose.foundation.text
. (I9f635) - הוספנו
ApproachLayoutModifierNode
API חדש כדי לתמוך ביצירת לוגיקה מותאמת אישית של גישה בצומת Modifier מפורש. נוסף גםDeferredTargetAnimation
API ניסיוני חדש לאנימציות שהיעד שלהן לא ידוע בזמן יצירת המופע. (I60745) - ממשקי API חדשים של
Path
לשאילתות לגבי הכיוון של נתיב ולחילוץ קווי מתאר מ-Path
. (I63d04) - נוספו הפונקציות
PathHitTest
ו-Path.contains(Offset)
כדי לבדוק אםPath
מכיל נקודה ספציפית. (I3b218) - השיטה
TextLayoutResult
חושפת עכשיו את השיטהgetLineBaseline(lineIndex)
. בנוסף למאפייני הנוחות הקיימיםfirstBaseline
ו-lastBaseline
, אפשר לקרוא את קו הבסיס של שורה שרירותית בטקסט. (Ide4e8, b/237428541) - הוספנו שיטה להשוואה רק בין ההערות של שני
AnnotatedStrings
. (I32659)
תיקוני באגים
- תוקנה בעיית תאימות לאחור ב-
SemanticsPropertyReceiver.performImeAction
וב-SemanticsActions.PerformImeAction
. (Id0528, b/322269946)
גרסה 1.7.0-alpha02
7 בפברואר 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
משוחרר. גרסה 1.7.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- נפתרה בעיית תאימות בינארית עם
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - ה-constructor
PopupProperties
שמקבל פרמטרusePlatformDefaultWidth
כבר לא ניסיוני. (I8f8d2) - נוספה גרסת יתר של
ComposeTestRule.waitUntil
שמקבלת תיאור מחרוזת של התנאי שייכלל בהודעת הזמן הקצוב לתפוגה. (I9413e) - API חדש של סמנטיקה
unset()
להסרת מאפייני סמנטיקה שנוספו באותה שרשרת של משנים. מאפיין סמנטי חדשisOpaque
. (I8c583, b/317966058, b/246056649) - הוסר
originalEventPosition
משיטת ההעתקה ב-API הציבורי שלPointerInputChange
. (I7bead)
תיקוני באגים
- תוקן באג בנגישות שאיפשר ללחוץ על רכיבים שאינם כרטיסיות או לחצני בחירה כשהם נבחרו. (I2181c)
- מעכשיו, התיקון להוספת נקודות מופעל כברירת מחדל ב-
VelocityTracker
. אם יש בעיות, עדיין אפשר להשבית את התיקון על ידי הגדרתVelocityTrackerAddPointsFix
לערך false. (Ib3877, b/269487059) - תוקנה בעיה של חוסר תאימות לאחור בפורמט בינארי ב-
TextStyle
וב-ParagraphStyle
. (I179f0, b/320819734)
External Contribution
- נוסף בנאי חדש
DialogProperties
ללא פרמטרים ספציפיים לפלטפורמה. (I45829) - נוסף בנאי חדש
PopupProperties
ללא פרמטרים ספציפיים לפלטפורמה. (I9a038)
גרסה 1.7.0-alpha01
24 בינואר 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
משוחרר. גרסה 1.7.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
- הורחב
ClipboardManager
על ידי הוספתClipEntry
ו-ClipMetadata
כדי לתמוך בתוכן שרירותי כמו תמונות. - הוספת
DeviceConfigurationOverride
API ל-ui-test
כדי לאפשר שינוי מקומי של התנהגות התוכן שנבדק, למשל כדי לציין גודל זמין, מיקום, כיוון פריסה, קנה מידה של גופן או ערכת נושא.
גרסה 1.6
גרסה 1.6.8
12 ביוני 2024
androidx.compose.ui:ui-*:1.6.8
משוחרר. גרסה 1.6.8 מכילה את הקומטים האלה.
תיקוני באגים
- תוקנו אי-התאמות בשינוי גודל הגופן כשהגודל קטן מהגודל המוגדר הנמוך ביותר בטבלה. במקרה הזה, אנחנו מבצעים אינטרפולציה בין קנה המידה הלינארי 1x לבין הטבלה המוגדרת הנמוכה ביותר, כך שגודל הגופן גדל באופן מונוטוני ככל שקנה המידה גדל. (Icbae3)
גרסה 1.6.7
1 במאי 2024
androidx.compose.ui:ui-*:1.6.7
משוחרר. גרסה 1.6.7 מכילה את הקומטים האלה.
גרסה 1.6.6
17 באפריל 2024
androidx.compose.ui:ui-*:1.6.6
משוחרר. גרסה 1.6.6 מכילה את התחייבויות האלה.
תיקוני באגים
- תיקון של קריסה נדירה של
BasicTextField
.
גרסה 1.6.5
3 באפריל 2024
androidx.compose.ui:ui-*:1.6.5
משוחרר. גרסה 1.6.5 מכילה את הקומטים האלה.
גרסה 1.6.4
20 במרץ 2024
androidx.compose.ui:ui-*:1.6.4
משוחרר. גרסה 1.6.4 מכילה את הקומטים האלה.
גרסה 1.6.3
6 במרץ 2024
androidx.compose.ui:ui-*:1.6.3
משוחרר. גרסה 1.6.3 מכילה את הקומטים האלה.
גרסה 1.6.2
21 בפברואר 2024
androidx.compose.ui:ui-*:1.6.2
משוחרר. גרסה 1.6.2 מכילה את הקומיטים האלה.
גרסה 1.6.1
7 בפברואר 2024
androidx.compose.ui:ui-*:1.6.1
הושקה. גרסה 1.6.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיית תאימות לאחור ב-
SemanticsPropertyReceiver.performImeAction
וב-SemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - פריסות מציגות עכשיו שגיאה בזמן המדידה אם אחת מהן מחזירה גודל גדול באופן חריג. שגיאה כזו מתרחשת בדרך כלל כשמשתמשים במגבלות מקסימליות ישירות במדידה בלי לבדוק אם יש
Constraints.Infinity
. הבדיקה תעזור למפתחים למצוא בעיות בפריסה עם גודל שגוי, ולא בפריסה שמכילה אותה. (I339a9)
גרסה 1.6.0
24 בינואר 2024
androidx.compose.ui:ui-*:1.6.0
משוחרר. גרסה 1.6.0 כוללת את הקומיטים האלה.
גרסה 1.6.0-rc01
10 בינואר 2024
androidx.compose.ui:ui-*:1.6.0-rc01
משוחרר. גרסה 1.6.0-rc01 כוללת את הקומיטים האלה.
תיקוני באגים
- הטמעה של גרפיקה וקטורית שעברה אופטימיזציה כדי לשפר את הביצועים על ידי צמצום מספר ההרכבות מחדש.
גרסה 1.6.0-beta03
13 בדצמבר 2023
androidx.compose.ui:ui-*:1.6.0-beta03
משוחרר. גרסה 1.6.0-beta03 מכילה את הקומיטים האלה.
תכונות חדשות
- עכשיו אפשר לנתק
LayoutCoordinates
בלי לנתק את הצומת. כדי למנוע את זה, אפשר להשתמש בכלי לבדיקת פריסות ב-Compose (If693)
תיקוני באגים
-
PlatformImeOptions
היא עכשיו מחלקה קונקרטית במקום ממשק. (If40a4) - תוקן באג שגרם להרכבות חוזרות מיותרות במורד הזרם, בגלל שערכים חדשים סופקו ל-
LocalSoftwareKeyboardController
ול-LocalTextInputService
בכל פעם שהתבצעה הרכבה חוזרת של רכיב הבסיס. (I42190, b/310510985)
גרסה 1.6.0-beta02
29 בנובמבר 2023
androidx.compose.ui:ui-*:1.6.0-beta02
משוחרר. גרסה 1.6.0-beta02 מכילה את הקומיטים האלה.
גרסה 1.6.0-beta01
15 בנובמבר 2023
androidx.compose.ui:ui-*:1.6.0-beta01
משוחרר. גרסה 1.6.0-beta01 מכילה את הקומיטים האלה.
שינויים ב-API
- המשנה
DragAndDropTarget
מקבל עכשיו אתDragAndDropTarget
המקבל באופן מפורש, ויש לו ביטוי למדא כדי להצטרף לסשן של גרירה ושחרור. יש עכשיו שתי פונקציות ליצירת אובייקטDragAndDropModifierNode
. אחד לקבלת העברות ואחד להעברת נתונים (I69481) - העדכון בוצע ב-
maximumFlingVelocity
כדי שיוצג כ-Float. עדכנו את התיעוד כדי להבהיר את נושאmaximumFlingVelocity
האחדות. (I8adc7) - השם של
onDragAndDropStart
במפעלDragAndDropModifierNode
שונה ל-acceptDragAndDropTransfer
.המשנהacceptsDragAndDropTransfer
נוסף ל-dragAndDropTarget
כדי לאשר קבלה מסשן של גרירה ושחרור. פונקציית ה-lambda הזו מחזירהDragAndDropTarget
אם המשתמש מעוניין בסשן של גרירה ושחרור. פונקציות למבדא אחרות לעיבוד אירועי גרירה הוחלפו בפונקציה הזו. נוספה פונקציית למבדאDragAndDropTarget
כדי לקבל נתונים מסשנים של גרירה ושחרור (Iebf3a) הוסר
DragAndDropInfo
כסוג.DragAndDropModifierNode.drag
מקבל עכשיו פרמטרים עבורtransferData
, גודל העיטור וגרירת העיטורDrawScope
lambda
DragAndDropTarget
כולל שיטות לאירועי גרירה ושחרור ספציפיים, במקום שיטה מופשטת אחתהפרמטר
onDragAndDropEvent
בפונקציית היצירה שלDragAndDropModifierNode
שונה ל-onDragAndDropStart
כדי להבהיר שהערך שלDragAndDropTarget
תקף רק לסשן מסוים של גרירה ושחרורהוסר
DragAndDropEventType
(I645b1)השם של
PlatformTextInputModifierNode.runTextInputSession
שונה ל-establishTextInputSession
. (I03cd0)שיפור השמות של ממשקי ה-API של הצמתים שניתן לעבור ביניהם כדי שיהיו מובנים יותר. (Ia4474)
צריך להחליף את
OriginalText
ב-TextSubstitution
. (Ifa5a8)השם של
PlatformTextInputModifierNode.textInputSession
שונה ל-runTextInputSession
. (Ie9c6b)האלמנטים הצאצאים של
SubcomposeLayout
(ופריסות כמוLazyColumn
שמבוססות עליו) שנשמרים לשימוש חוזר בעתיד נחשבים כלא פעילים. הוספנוassertIsDeactivated()
API חדש לבדיקה כדי לבדוק צמתים כאלה. שאר ממשקי ה-API לבדיקה יסננו כברירת מחדל צמתים שהושבתו. (I2ef84, b/187188981)הוסרו
FocusDirection.In
ו-FocusDirection.Out
. במקומם אפשר להשתמש ב-FocusDirection.Enter
וב-FocusDirection.Exit
(I2f660)ממשקי ה-API של Material
SwipeToReveal
(לכרטיסים ולצ'יפים) מסתמכים עכשיו על ממשק API מבוסס-משבצות (כפי שמומלץ ב-Compose) במקום על מופעים מבוססי-מחלקות נתונים כדי ליצור את המשבצות האלה. זהו שינוי שעלול לגרום לבעיות, לכן מומלץ לעיין בהדגמה ובדוגמאות הקוד כדי ללמוד איך להשתמש ב-API החדש. (Ia8943)הקונסטרוקטור
FontStyle(int)
הוצא משימוש. במקומו צריך להשתמש ב-FontStyle.Normal
או ב-FontStyle.Italic
. (I66610)השם של הממשק
FontScalable
שונה ל-FontScaling
(Ie804a)
תיקוני באגים
- אם לא מתמקדים בעורך טקסט, המקלדת הווירטואלית לא תוצג יותר עם
SoftwareKeyboardController.show()
. (I2165a, b/301477279) - אירועי לחיצה על מקש (Up) במקלדת פיזית עבור מקשים שלא התקבל לגביהם אירוע לחיצה (Down) באותו חלון כתיבה, יתעלמו מהם. (Ib37b4, b/305518328)
- הוספנו תמיכה ב-Sweep Gradient לרכיב Renderer ב-
ArcLine
. (I4d5bb) - צריך להטמיע את הפונקציות equals ו-hashcode עבור
PageSize.Fixed
. (Ie3ede, b/300134276) - פתרון בעיה של תאימות בינארית עם שינוי של Window Inset (Iee695)
- הסרנו את שכבת הליבה של Material עבור רכיב Chip/Button של Material3, כי המיקרו-בנצ'מרקים מראים ביצועים טובים יותר בלעדיה. (I55555)
- הערך
TestDispatcher
s שמועבר כ-effectContext
לבדיקות Compose ישמש עכשיו ליצירת הבדיקה ולמסגרת השעונים. (Ia7178)
גרסה 1.6.0-alpha08
18 באוקטובר 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את הקומיטים האלה.
שינויים ב-API
- השם של פונקציית ה-lambda
onDrawDragShadow
ב-Modifier.dragAndDrawSource
שונה ל-drawDragDecoration
, והשם של פרמטר הגודל ב-DragAndDropInfo
שונה ל-dragDecorationSize
. (Id0e30, b/303904810) - מציגים את
SemanticsNodeInteraction.isDisplayed()
ואתSemanticsNodeInteraction.isNotDisplayed()
כדי לבדוק אם צומת תואם גלוי או לא, בלי לבצע גם טענה לגביו. (I2c196, b/302100809) - הוספנו ערך מיוחד
Unspecified
לשדותTextAlign
,TextDirection
,Hyphens
ו-LineBreak
שלParagraphTextStyle
כדי להחליף אתnull
. מכיוון שהמחלקות האלה הן מחלקות מוטבעות, אם נחליף את האפשרות 'ניתן לאתחול ל-null' באפשרות 'לא צוין', נמנע מהעברה של טיפוסים פרימיטיביים לאובייקט. העדכנו את הבונה, את ה-getters ואת שיטות אחרות ב-TextStyle
ובסגנון Paragraph כדי לקבל את הפרמטרים שצוינו כסוגים שאינם null. (I4197e, b/299490814) - הוספת
GoogleFont
overload לקריאתGoogleFont
מ-XML. (If8f59) - הגדרתם את
LoremIpsum
PreviewParameterProvider
ככיתה פתוחה. (I41bf5, b/266918816, b/300116360)
תיקוני באגים
-
FontFamilyResolver
משתמש עכשיו ב-Dispatchers.Main
עבור קורוטינות לניהול מטמון. (Ie8dd9) -
AndroidViewBinding
עכשיו,Fragment
מסיר באופן סינכרוני מופעים שלFragmentContainerView
שנוצרו על ידי הכללה שלonRelease
בפריסה באמצעותcommitNow
(במקוםcommit
שבו השתמשתם קודם), וכך פותר בעיות בשיטה של Live Edit להחלפת הקומפוזיציה בעקבות שינויים. (I58fbf)
גרסה 1.6.0-alpha07
4 באוקטובר 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
משוחרר. גרסה 1.6.0-alpha07 מכילה את הקומיטים האלה.
שינויים ב-API
- השקנו את
PlatformTextInputMethodTestOverride
לכתיבת בדיקות לעורכי טקסט בהתאמה אישית. (Id159b) - נוספו
dragAndDropSource
Modifier להפעלת סשנים של גרירה ושחרור, ו-dragAndDropTarget
Modifier לקבלת נתונים מסשנים של גרירה ושחרור. (Ib7828, b/286038936) - נוספו אוספים של
ColorList
ושלColorSet
שלא נכללים בהקצאות. (I744bd) - נוסף
DisableNonLinearFontScalingInCompose
דגל זמני להשבתת שינוי גודל הגופן הלא ליניארי. אם אתם צריכים זמן לנקות את הבדיקות, אתם יכולים להגדירDisableNonLinearFontScalingInCompose = true
בבדיקות. הדגל הזה יוסר ב-Compose 1.6.0-beta01. (Ic9486)
תיקוני באגים
- ניתוח אופטימלי של פריטים גרפיים וקטוריים ב-XML. (Ibb015)
גרסה 1.6.0-alpha06
20 בספטמבר 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
משוחרר. גרסה 1.6.0-alpha06 מכילה את הקומיטים האלה.
שינויים ב-API
- אופטימיזציות נוספות לאייקוני Material. (I3e08d)
- נוספה האפשרות לעבור למעלה או למטה בעץ של שינוי המאפיינים כדי למצוא צמתים דומים. (I2d234)
- נוספה קריאה חוזרת (callback) של
onRestoreFailed()
לערך המקדםfocusRestorer()
(Ie1d43) - הוספנו הערות של androidx לממשקי API שונים של גרפיקה כדי לציין
ColorInt
,FloatRange
,IntRange
,Size
ועוד. (Id65c8, b/290950582) - הוספת
showSystemUi=true
להגדרתPreviewScreenSizes
(Ib61d3)
שינויים בהתנהגות
- התכונה 'יצירת אימייל' משתמשת עכשיו בסקאלת גופנים לא לינארית כדי לשפר את הקריאות והנגישות. אם קנה המידה של הגופן גדול מ-100% בהגדרות המערכת, גודל הטקסט הקטן יגדל כרגיל, אבל גודל הטקסט שכבר גדול יגדל רק קצת. בנוסף, גובה השורה שמוגדר ב-SP ישתנה באופן אוטומטי כדי לשמור על יחס פרופורציונלי לגובה המיועד של 100%. מידע נוסף זמין במאמר בנושא שיטות מומלצות לשינוי גודל הגופן. (I11518)
גרסה 1.6.0-alpha05
6 בספטמבר 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
משוחרר. גרסה 1.6.0-alpha05 מכילה את הקומיטים האלה.
שינויים ב-API
- הפעלת צילום תוכן ב-
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - המהירויות של תנועת ההטלה ברכיבי תצוגה כמו
ScrollView
ו-RecyclerView
מוגבלות ל-ViewConfiguration.ScaledMaximumFlingVelocity
. הגרסה שלmaximumFlingVelocity
שמופיעה עכשיו בכלי הכתיבה חלה עלDraggable
. (Ibf974) - הוספנו פיגומים ראשוניים לתמיכה בממשקי API של פלטפורמות לגרירה ולשחרור. (If84ce)
- הוספת
deviceId
ל-RotaryScrollEvent
(Iba3bf) - עדכנו את
ui-tooling
Devices API כך שיכלול מכשירים חדשים יותר (Ib25b4)
גרסה 1.6.0-alpha04
23 באוגוסט 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
משוחרר. גרסה 1.6.0-alpha04 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה שיטה להשבתה של
ReusableComposition
, שמאפשרת להסיר תצפיות אבל לשמור את הצמתים במקומם. אפשר להפעיל מחדש את הקומפוזיציה שהושבתה על ידי התקשרות אלsetContent
. (Ib7f31) - הוספנו
ReusableComposition
ממשק לניהול מחזור החיים של קומפוזיציות משנה ולשימוש חוזר בהן. (I812d1, b/252846775) -
Modifier.focusGroup
קודם לממשקי API יציבים. (I7ffa3) - הוספנו הערות של androidx לממשקי API שונים של גרפיקה כדי לציין
ColorInt
,FloatRange
,IntRange
,Size
ועוד. (I70487, b/290950582) - עדכנו את
ColorFilter
API כדי להוסיף סוגים קונקרטיים של מחלקות משנה, וכך לשפר את יכולת הבדיקה של הפרמטרים. (I5fe29) - הוספנו את הספרייה wear-tooling-preview כדי להציג רשימה של מכשירי Wear תקפים שאפשר להשתמש בהם לתצוגה מקדימה של ממשק המשתמש (Ib036e)
- יצרנו את הממשק
FontScalable
כדי לטפל בחלק של שינוי גודל הגופן בממשק הצפיפות. (I2cf3f)
גרסה 1.6.0-alpha03
9 באוגוסט 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
משוחרר. גרסה 1.6.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- סוג חדש של מעבר כניסה/יציאה שמשנה את גודל התוכן בהתאם לגודל של מאגר התגים המונפש במהלך אנימציית הכניסה והיציאה.
LookaheadScope
הממשק והכיף המודולריים יציבים עכשיו. (Ifb2ce) - נוספה תמיכה בהגדרת
privateImeOptions
(Idb772)
תיקוני באגים
- החל מעכשיו,
PopupPositionProvider.calculatePosition
יעודכן באופן אוטומטי את מיקום החלון הקופץ כשמצב הקריאה בחישוב משתנה. (I676a1, b/292257547) - תוקנה בעיה שבה שדות טקסט הציגו מקלדת ואפשרו עריכה כשערך המאפיין
readOnly
היה true. בנוסף, תוקנה בעיה שגרמה לכך שהמקלדת לא הוצגה כשreadOnly
השתנה מ-true ל-false בזמן שהמיקוד היה עליה. (I34a19, b/246909589) - הרחבנו את השימוש בהצהרות גלובליות בבדיקות ממשק משתמש. (I1f90d)
גרסה 1.6.0-alpha02
26 ביולי 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
משוחרר. גרסה 1.6.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף ממשק לאיתור שירותים שאפשר להטמיע באמצעות הטמעות של Composition, שמאפשרות להטמעה של Composition להעביר את החיפושים של שירותים נציגיים אחרים של Composition אל ה-Composition המקורי. אין לקרוא לפונקציה הזו ישירות, והיא משמשת ליצירת ממשקי API ניסיוניים בזמן הריצה שאפשר למצוא מגרסאות עטופות של רכיב ה-composer, כמו מודול ממשק המשתמש. (I296b9)
- עיצוב מחדש מלא של
PlatformTextInput*
API. (I6c93a, b/274661182, b/267235947, b/277380808) - התכונות
SoftwareKeyboardController
ו-LocalSoftwareKeyboardController
כבר לא ניסיוניות. בנוסף,LocalSoftwareKeyboardController
הוא עכשיוCompositionLocal
. (I4c364) - הוצאנו משימוש את
LookaheadLayout
ואתLookaheadLayoutScope
בכמה גרסאות, ועכשיו אנחנו מסירים אותם. ממשקי ה-API החלופיים הםLookaheadScope
שאפשר להשתמש בהם עם כל פריסת מקלדת. (I12ac3) - הוספנו את
SemanticsNodeInteraction.requestFocus
כדרך נוחה יותר לבקש התמקדות בבדיקות. (Ie8722) - הוספנו ממשקי API ניסיוניים לרישום של הצהרות גלובליות, לשימוש עתידי במסגרות בדיקה. (I12d77)
תיקוני באגים
- הקריאה הראשונה של פונקציית ה-callback של
AndroidView
תידחה עד שהתצוגה תצורף, במקום לפעול כשהקומפוזיציה שמציגה אתAndroidView
מוחלת.update
התיקון הזה פותר באג שבו הקריאה החוזרת (callback) שלupdate
לא בוטלה אם מצב שהיא קראה השתנה מיד על ידי אפקט. (Ie9438, b/291094055)
גרסה 1.6.0-alpha01
21 ביוני 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
משוחרר. גרסה 1.6.0-alpha01 מכילה את הקומיטים האלה.
תכונות חדשות
- תמיכה בחיפוש קדימה ב-
LazyList
. הפעולה הזו מאפשרת ל-LazyList
במעבר הצפייה קדימה לדלג על כל אנימציה (למשל, אנימציה של מיקום פריט,AnimatedVisibility
וכו') ולחשב את הגודל והמיקום של הצפייה קדימה עבור כל רכיבי הצאצא. אחרי המעבר לחיזוי, ילדים שלLazyList
יכולים להנפיש באופן עצמאי את המציאות כפי שהיא נראית במעבר לחיזוי.
שינוי בהתנהגות: הערך של includeFontPadding הוא עכשיו false כברירת מחדל ב-Compose
הערך של includeFontPadding
הוא עכשיו false כברירת מחדל (21d806) בכתיבת הודעות.
includeFontPadding
הוא מאפיין מדור קודם שקובע אם להוסיף מרווח פנימי נוסף מעל השורה הראשונה ומתחת לשורה האחרונה של הטקסט, כדי להכיל תווים שעשויים לחרוג מעל או מתחת לקו הבסיס של הטקסט.
עדכון הגרסה הזו של Compose ישנה את אופן העיבוד של כל הטקסטים בממשק המשתמש. השינוי יתבצע על ידי הסרת הריווח הנוסף מעל השורה הראשונה ומתחת לשורה האחרונה של כל טקסט שמוצג.
השינויים צריכים להיות מינימליים, בהתאם לדרישות של ממשק המשתמש ולמדדי הגופן שבהם אתם משתמשים. עם זאת, יכול להיות שתיתקלו בחסימות כמו: - בדיקות צילומי מסך פגומות. אם צריך, מתקנים את ממשק המשתמש ויוצרים מחדש את תמונות הזהב. – הטקסט לא מיושר בצורה מושלמת. מסירים שוליים פנימיים שליליים מותאמים אישית או מוסיפים שוליים פנימיים לפי הצורך.
אתם יכולים להביע הסכמה לשימוש ב-includeFontPadding
באמצעות PlatformTextStyle
לכל טקסט:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
אתם יכולים להביע הסכמה לשימוש ב-includeFontPadding
בכל ההודעות שלכם על ידי הגדרת סגנונות Material. שימו לב: שמות הפרמטרים משתנים בין M2 ל-M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
מידע נוסף על Compose includeFontPadding
זמין בתיעוד למפתחים ובפוסט הזה בבלוג.
אם נתקלתם בבעיות או באגים שקשורים לשינוי הזה, אתם יכולים להגיש דוח באגים באמצעות כלי המעקב אחר בעיות.
שינויים ב-API
- תמיכה ב-
InputConnection#requestCursorUpdates
(I0c69b) - נוספו
FocusRequester.saveFocusedChild
ו-FocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - הוספת
ResourceResolutionException
type כדי לעטוף את ה-throwables שמופעלים כשמנסים לטעון נכסי bitmap עם תיאור של נתיב הנכס שלא נטען. (I19f44, b/230166331, b/278424788) - נגישות אופטימלית לביצועים ולהקצאות זיכרון. (Iede48)
- נוספו מאפיינים ופעולות סמנטיים לתמיכה בתרגום טקסט. (I4a6bc)
- מאפיין חדש ב-
IntrinsincMeasureScope
וההטמעות שלו (למשל,MeasureScope
) כדי לציין אם המעבר הנוכחי של המדד הוא מעבר של חיזוי. (I7a812) - עדכנו את
DrawScope
API כדי להוסיף את האפשרות לטרגט מחדש את הרנדור לקנבס אחר עם צפיפות, כיוון פריסה וגודל חלופיים. - בוצע עדכון של
DrawContext
כדי לתמוך בהגדרת הצפיפות וכיוון הפריסה, וגם כדי לאפשר הגדרה של אזור הציור. (Ie1f9b, b/225408150) - נוסף
Paragraph#fillBoundingBoxes
כדי לחשב תיבות תוחמות של תווים. (If30ee) - נוסף קבוצה של
MultiPreviews
נפוצים (Ia5a27)
תיקוני באגים
- נוסף ממשק
FocusTargetModifierNode
שאפשר להשתמש בו כדי ליצורFocusTarget
בהתאמה אישית. (I9790e) - השם של הפרמטרים
fallback*
ב-constructorTextMeasurer
השתנה ל-default*
. (I940a5) - השם של
SemanticsPropertyReceiver.performImeAction
שונה ל-onImeAction
ושלSemanticsActions.PerformImeAction
ל-OnImeAction
. (I8e841) - נוסף Wheel כדי להבדיל בין גלילה בעכבר לבין גרירה בגלילה מקוננת (במיוחד ב-
NestedScrollConnection
). (Ie57e4) - הוספנו את API
asComposePaint
כדי להחליף את APItoComposePaint
, כי האובייקט שמוחזר עוטף את האובייקט המקוריandroid.graphics.Paint
(I22b4c) - הוצאה משימוש של
SemanticsProperties.imeAction
והחלפה בפרמטר חדש ל-SemanticsActions.performImeAction
. (I4a587) - נוספה תמיכה בבחירה באמצעות העכבר. בממשק מבוסס מגע, הבחירה תתרחב לפי מילה ותצטמצם לפי תו. (Ic0c6c, b/180639271)
- שיטות
Paragraph
שבעבר הציגו את השגיאהAssertionError
עבור היסטים מחוץ לתחום, מציגות עכשיו את השגיאהIllegalArgumentException
כמוMultiParagraph
. (I549d3, b/243338896)
גירסה 1.5
גרסה 1.5.4
18 באוקטובר 2023
androidx.compose.ui:ui-*:1.5.4
משוחרר. גרסה 1.5.4 מכילה את הקומיטים האלה.
גרסה 1.5.3
4 באוקטובר 2023
androidx.compose.ui:ui-*:1.5.3
משוחרר. גרסה 1.5.3 מכילה את הקומיטים האלה.
תיקוני באגים
- (b/301209788)
TextField
לפעמים פקודות קודמות הוחלו באופן שגוי כשמתמקדים בהזנת קלט בקוריאנית, מה שגרם לאובדן תווים.
גרסה 1.5.2
27 בספטמבר 2023
androidx.compose.ui:ui-*:1.5.2
משוחרר. גרסה 1.5.2 מכילה את הקומיטים האלה.
תיקוני באגים
- נוסף פתרון עקיף לקריסות כשניגשים ל-API של גלילה לנגישות משרשור ברקע.
- תיקון של צמתים לא מצורפים שנוספים לעץ הסמנטיקה.
גירסה 1.5.1
6 בספטמבר 2023
androidx.compose.ui:ui-*:1.5.1
משוחרר. גרסה 1.5.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה שדות טקסט הציגו מקלדת ואפשרו עריכה כשערך המאפיין
readOnly
היה true. בנוסף, תוקנה בעיה שגרמה לכך שהמקלדת לא הוצגה כשreadOnly
השתנה מ-true ל-false בזמן שהמיקוד היה עליה. (I34a19, b/246909589)
גרסה 1.5.0
9 באוגוסט 2023
androidx.compose.ui:ui-*:1.5.0
משוחרר. גרסה 1.5.0 מכילה את הקומיטים האלה.
גרסה 1.5.0-rc01
26 ביולי 2023
androidx.compose.ui:ui-*:1.5.0-rc01
משוחרר. גרסה 1.5.0-rc01 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה קריסה שקורית כשמשתמשים ב-
SubcomposeLayout
בתוךmovableContentOf()
.
גרסה 1.5.0-beta03
28 ביוני 2023
androidx.compose.ui:ui-*:1.5.0-beta03
משוחרר. גרסה 1.5.0-beta03 מכילה את הקומיטים האלה.
תיקוני באגים
- נוסף הממשק FocusTargetModifierNode שאפשר להשתמש בו כדי ליצור FocusTarget מותאם אישית. (Ifb1d6)
- תוקנה בעיה ברכיבים הניתנים להרכבה של חלונות קופצים וחלונות דו-שיח, שיכולה לגרום לכך שגודל חלון הצאצא לא ישתנה כמצופה כשמשתמשים ב-
usePlatformDefaultWidth=true
. (I112ee)
גרסה 1.5.0-beta02
7 ביוני 2023
androidx.compose.ui:ui-*:1.5.0-beta02
משוחרר. גרסה 1.5.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף
asComposePaint
API כדי לאפשר שימוש במופע שלandroid.graphics.Paint
ב-Compose
תיקוני באגים
- הוספנו את API
asComposePaint
כדי להחליף את APItoComposePaint
, כי האובייקט שמוחזר עוטף את האובייקט המקוריandroid.graphics.Paint
(I22b4c)
גרסה 1.5.0-beta01
24 במאי 2023
androidx.compose.ui:ui-*:1.5.0-beta01
משוחרר. גרסה 1.5.0-beta01 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרנו הקצאות בהרכבה מחדש, באנימציות של צבעים וב-
AndroidComposeView
(Ib2bfa) - הוספת פונקציית עזר
CacheDrawModifierNode()
כדי לאפשר הרשאת גישה (Icf8f9) - הוספנו את המאפיין
isLookingAhead
, שאפשר לגשת אליו מ-MeasureScope
, כדי לצפות בתוצאות של חיפוש מראש ולהשפיע על המעבר הראשי אם רוצים. (Ibf4c3) - מאפיין סמנטי חדש
traversalIndex
, מספר עשרוני שמשמש לסידור מחדש של צמתים ב-TalkBack
(ערכים נמוכים מופיעים לפני). (I9a81b, b/186443263) - שינוי השם של מאפיין הסמנטיקה
isContainer
ל-isTraversalGroup
(I121f6) - מעכשיו ל-
ColorProducer
ישoperator fun invoke
במקוםproduce
(I4a9a2) - מוסיפים את
Path
transform API כדי להחיל טרנספורמציות של תרגום/שינוי גודל/סיבוב על אובייקטים של נתיבים. (I23434, b/233772232) - ה-method של
ColorProducer
נקראתproduce
. (I78bde) - שינוי השם של
toFrameworkColorSpace
לtoAndroidColorSpace
(I4f547) - שינוי השם של
ColorLambda
לColorProducer
. (I73b1a) - הוספת ממשקי API להמרה בין סוגים של מרחבי צבעים ב-Android וב-Compose. (Ie7db4, b/279979665)
- נוסף פרמטר צבע ל-
BasicText
כדי לאפשר אנימציה יעילה או הגדרת צבע טקסט. (Iffd88, b/246961787) - השם של
TextRange.constrain
שונה ל-TextRange.coerceIn
. (I31be2) - הוספנו את
TextStyle.merge(...)
שעבר אופטימיזציה עם רשימה מלאה של פרמטרים. (Iad234, b/246961787) - ייצבנו הרבה ממשקי API של טקסט, כולל
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) - המאפיין
PlatformTextStyle.includeFontPadding
כבר לא מוצא משימוש. הכוונה המקורית שלנו הייתה להסיר את השדה, אבל המשוב שקיבלנו מראה שמפתחים צריכים את אפשרות ההגדרה הזו. לכן, הסרנו את ההוצאה משימוש של השדה (I98e96, b/277703184) - נוספה שיטה גלויה לכולם
TextRange.constrain
. (I97912) - עכשיו אפשר לפתוח
UrlAnnotation
ב-AnnotatedString
באמצעות שירותי נגישות כמוTalkBack
. (If4d82, b/253292081) - נוספה פעולת הסמנטיקה
InsertTextAtCursor
לשדות טקסט. (I11ed5) - ה-constructor של
LineHeightStyle.Alignment(topRatio)
מקודם ל-API יציב. (I79c32, b/261565383) -
TextMeasurer
וממשקי API קשורים כבר לא ניסיוניים. (I74647, b/261581753) - נוספה פעולת הסמנטיקה
PerformImeAction
להפעלת פעולת ה-IME בצמתים של עורך טקסט. (Ic606f, b/269633506) - ממשקי ה-API של
PlatformTextInput
כבר לא ניסיוניים ב-Android. (I668eb) - הערך של שם הפרמטר עבור
Enum.valueOf
השתנה (Ia9b89) - more thrown exceptions from enum valueOf (I818fe)
- השקנו ממשק API חדש ברמה נמוכה,
PlatformTextInputAdapter
, ליצירת הטמעות מותאמות אישית של הזנת טקסט שמתקשרות ישירות עם ממשקי API של הפלטפורמה. (I58df4) - נוסף הפרמטר
BlendMode
לשיטותDrawScope.drawText
,Paragraph.paint
ו-MultiParagraph.paint
כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508) - שינוי השם של
Font.MaximumAsyncTimeout
לFont.MaximumAsyncTimeoutMillis
. שינוי שם בלבד. (I07af5) - ערכי DPI מעודכנים של
@Preview
מכשירי הפניה (Id6151, b/254528382) - מוסיפים פרמטרים
brush
,alpha
ל-BasicText
כדי לאפשר אנימציה יעילה או הגדרה של מברשת טקסט. - הגדרת סוגי למדה ללא תיבות עבור Float, Double, Long, Int, Short ב- :ui:ui-unit (I6f18d, b/246961787)
תיקוני באגים
- הוסרו הקצאות מרובות במעקב אחר מהירות המצביע (I26bae)
- הפחתת ההקצאות בניהול פריסת המקלדת והזנת המצביע (I5333a)
- אופטימיזציה של השימוש בזיכרון הווקטורי ושל עיבוד הפריימים הראשונים (I2f3c6)
- הסרת הקצאות כשמציירים קווים ונקודות באמצעות Canvas (I9f535)
- הוספת מסמכים ל-
AndroidFont.fontVariationSettings
(I7d9e2)
External Contribution
- שיפור הביצועים והפחתת ההקצאות בממשקי Vector API (I906cb)
גרסה 1.5.0-alpha04
10 במאי 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
משוחרר. גרסה 1.5.0-alpha04 מכילה את הקומיטים האלה.
תכונות חדשות
Modifier.Node
שיפורים בהענקת הרשאות הוספנו יכולת משופרת להעניק הרשאות למופעים אחרים שלModifier.Node
מתוךDelegatingNode
. אפשר לעשות את זה באמצעות ממשקי ה-APIdelegate
ו-undelegate
. לפני השינוי הזה, כל API מהצומת המקצה היה צריך להיות מוקצה במפורש לצומת המוקצה. אחרי השינוי הזה, הממשקים של הצמתים יוקצו באופן מרומז, אלא אםDelegatingNode
מבטל אותם באופן מפורש. (67352bc)
שינויים ב-API
- הצגת
NestedScrollModifierNode
,NestedScroll Modifier.Node
שאפשר להקצות לו הרשאות. (I69513) - נוספו הפרמטרים
onReset
ו-onRelease
ל-AndroidViewBinding
composable, שמשקף אתAndroidView
composable ומאפשר תמיכה בשימוש חוזר ב-View עםViewBinding
. (I00b1e, b/276802519) - עדכנו את Compose Path API כדי לתמוך בפעולות של הרצה אחורה, וכך לתמוך בתרחישי שימוש של מניפולציה תכופה של נתיבים עם שימוש חוזר מהיר יותר. (I7b797)
- הוספנו את
TextStyle.merge(...)
שעבר אופטימיזציה עם רשימה מלאה של פרמטרים. (Iad234, b/246961787) - ייצבנו הרבה ממשקי API של טקסט, כולל
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) - המאפיין
PlatformTextStyle.includeFontPadding
כבר לא מוצא משימוש. הכוונה המקורית שלנו הייתה להסיר את השדה, אבל המשוב שקיבלנו מראה שמפתחים צריכים את אפשרות ההגדרה הזו. לכן, הסרנו את ההוצאה משימוש של השדה (I98e96, b/277703184)
תיקוני באגים
- תוקנה רגרסיה שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי רכיב ה-
Dialog
composable. (I82551, b/262140644)
גרסה 1.5.0-alpha03
19 באפריל 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
משוחרר. גרסה 1.5.0-alpha03 מכילה את הקומיטים האלה.
תכונות חדשות
- התנהגות ברירת מחדל חדשה עבור
SubcomposeLayout
ב-LookaheadScope
:SubcomposeLayouts
שלא כוללים משבצות מותנות (למשלTabRow
,Scaffold
,BoxWithConstraints
וכו') פועלים עכשיו בצורה טובה עם אנימציות של חיזוי מראש.
שינויים ב-API
- הוגדר ערך ברירת מחדל חדש
intermediateMeasurePolicy
שמשתמש מחדש במדיניות המדידה ממעבר החיפוש קדימה, ומאפשר לסוגי משנה שלSubcomposeLayout
ללא משבצות מותנות כמוScaffold
, TabRow
ו-BoxWithConstraints
לפעול עם חיפוש קדימה כברירת מחדל. (Id84c8) - הכלי ליצירת קומפוזיציה שנוצר לחלון ב-Android יחסום עכשיו רק שיחות אל
withFrameNanos
במקום את כל הקומפוזיציה כשהוא מקבל התראה עלON_STOP
. המשמעות היא שחלונות שמשויכים לפעילויות שהופסקו ימשיכו להרכיב מחדש שינויים בנתונים, אבל האנימציות או כל קריאה אחרת שלwithFrameNanos
ייחסמו. (Id9e7f, b/240975572) - שינויים
motionEventSpy
בגרסה היציבה. (Ic5ec4, b/261560988) - נוספה שיטה גלויה לכולם
TextRange.constrain
. (I97912) - הוצאת
PlatformTextStyle.includeFontPadding
משימוש הופסקה כדי לעודד מפתחים להשתמש ב-API הזה של תאימות כדי לעבור לבדיקה ולהגדיר את הערךincludeFontPadding
כ-false. (I98e96, b/277703184)
גרסה 1.5.0-alpha02
5 באפריל 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
משוחרר. גרסה 1.5.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- API חדש של
SubcomposeLayout
שמקבל מדיניות נוספת של אמצעי ביניים לטיפול בלוגיקה של מדידה או פריסה במהלך אנימציות מבוססות-lookahead. (I017d3) - ה-PointerInput הוא עכשיו עצלן ומשתמש ב-Modifier.Node לשיפור הביצועים (מידע נוסף על השינוי הקל בהתנהגות). (15dab9)
- שינוי ממשקי API ניסיוניים ליציבים באמצעות אירועים מרכזיים. (I9c7d8, b/261566839, b/261567368)
- שינוי ממשקי API ניסיוניים ליציבים ב-
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - הוספנו דרך ליצור מופע של
SuspendingPointerInputModifierNode
להטמעות מורכבות יותר שלModifier.Node
. (Ic4933) - עכשיו אפשר לפתוח
UrlAnnotation
ב-AnnotatedString
באמצעות שירותי נגישות כמוTalkBack
. (If4d82, b/253292081) - נוסף API ליירוט מקשי חומרה לפני שהם נשלחים למקלדת הווירטואלית (I4f4c6, b/186800395)
- נוספה פעולת הסמנטיקה
InsertTextAtCursor
לשדות טקסט. (I11ed5) - פעולות בדיקה שקשורות לטקסט (למשל,
performTextInput
) יבקשו עכשיו להתמקד ישירות, באמצעות פעולת הסמנטיקה, במקום ללחוץ על השדה. (I6ed05)
תיקוני באגים
- כדי להשתמש בפעולות לבדיקת טקסט, צריך להפעיל שדות טקסט. (Iab328)
גרסה 1.5.0-alpha01
22 במרץ 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
משוחרר. גרסה 1.5.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
- ה-Modifier.intermediateLayout לא דורש יותר LookaheadScope מפורש. בלוק המדידה ב-intermediateLayout כולל IntermediateMeasureScope כמקבל, שמספק CoroutineScope, LookaheadScope ו-MeasureScope נוחים.(Ibe2e5)
- ה-Layout LookaheadLayout הוחלף ב-LookaheadScope, שכבר לא מוגדר כ-Layout. כך אפשר לשלוט ישירות בתוכן של צאצא ב-LookaheadScope באמצעות MeasurePolicy של האב. (Ibe2e5)
- הוספה של
Modifier.Node#coroutineScope
כדי לאפשר ל-Modifier.Nodes להפעיל קורוטינות. (I76ef9) - מאפשרים ל-Modifier.Nodes לקרוא CompositionLocals על ידי הטמעה של הממשק CompositionLocalConsumerModifierNode. (Ib44df)
- העברה של מחלקה עם הערה @Deprecated לנכס. (I882d1)
גרסה 1.4
גרסה 1.4.3
3 במאי 2023
androidx.compose.ui:ui-*:1.4.3
משוחרר. גרסה 1.4.3 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה יכול להיות שהפריסה של
AndroidView
לא תהיה נכונה כשמשתמשים בה עם מקשי שינוי מסוימים. (I4dc77, b/274797771) - תוקן באג בחיפוש פוקוס דו-ממדי שהשפיע על
DropDown
תפריטים (b/276811828) - תוקן באג במאפייני כניסה/יציאה של מיקוד בהתאמה אישית, שגרם להפעלת בלוק הכניסה/יציאה רק בפעם הראשונה שהופעלה פונקציית ה-lambda (b/277234245)
- תוקנה רגרסיה במערכת המיקוד שגרמה לקריסה בזמן קריאת
focusProperties
. (b/271324781, b/274897776)
גרסה 1.4.2
19 באפריל 2023
androidx.compose.ui:ui-*:1.4.2
משוחרר. גרסה 1.4.2 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה
AndroidView
לא השתמש מחדש במאפייני השינוי שלו בצורה נכונה, מה שיכול היה לגרום להתנהגות לא צפויה ולקריסות. (Ib67ee, b/275919849) - תוקנה רגרסיה שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי ה-composable
Dialog
(I82551, b/262140644)
גרסה 1.4.1
5 באפריל 2023
androidx.compose.ui:ui-*:1.4.1
משוחרר. גרסה 1.4.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה
ParentDataModifier
לא משפיע עלAndroidView
(b/274797771)
גרסה 1.4.0
22 במרץ 2023
androidx.compose.ui:ui-*:1.4.0
משוחרר. גרסה 1.4.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 1.3.0
- נוסף
PinnableContainer
API חדש שמאפשר להצמיד פריטים ברשימה עצלה, כדי שהם לא יוסרו כשהם יוצאים מהגבולות בזמן גלילה. לדוגמה,Modifier.focusable()
משתמש במנגנון הזה כדי להצמיד את הפריט שמסומן כרגע. (Ib8881, b/259274257, b/195049010) - מערכת המיקוד נכתבה מחדש באמצעות ממשקי ה-API הניסיוניים החדשים של
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - נוספה תכונת
IsContainer
סמנטיקה בפלטפורמות השונות של Google. הנכס הזה ישמש בשינוי מאוחר יותר שקובע את סדר המעבר על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (I63379) - נוסף תפקיד נגישות חדש
DropdownList
. אפשר להשתמש בזה כדי לשכפל את ההתנהגות שלTalkBack
כשמתמקדים ב-android.widget.Spinner
. (I177e5, b/236159001) - עכשיו אפשר להשתמש ב-
PlatformTextStyle(emojiSupportMatch)
כדי להשבית את העיבוד של תמיכת האמוג'י לפסקה אחת. (Ia7100, b/139326806) - בבדיקות של ממשק משתמש ב-Android Compose, המערכת תפעיל עכשיו מעברים של פריסות לכל פריים כשמבצעים פריים כדי להגיע למצב סרק (לדוגמה, באמצעות
waitForIdle
). יכול להיות שהשינוי הזה ישפיע על בדיקות שמאמתות פריים ספציפי של אנימציות פריסה. (I8ea08, b/222093277) - נוסף הניסוי
TextMotion
ל-TextStyle
כדי להגדיר אם הטקסט יהיהStatic(default)
או מונפש. משתמשים ב-TextMotion.Animated
אם הטקסט אמור לעבור שינוי גודל, תרגום או סיבוב באמצעות אנימציה. (I24dd7)
גרסה 1.4.0-rc01
8 במרץ 2023
androidx.compose.ui:ui-*:1.4.0-rc01
משוחרר. גרסה 1.4.0-rc01 כוללת את הקומיטים האלה.
שינויים ב-API
- נוספה פונקציית עומס יתר (overload) של
AndroidView
פונקציה שאפשר להרכיב ממנה פונקציות אחרותonReset
, שמקבלת את הפרמטרonReset
. היא מאפשרת שימוש חוזר במופעים של View כשצומת שלהם בקומפוזיציה מושלך ונעשה בו שימוש חוזר באופן תואם. הנתונים האלה שימושיים במיוחד לLazyRows
ולLazyColumns
של הצפיות. (I3f10d, b/230099236) - השקנו ממשק API חדש ברמה נמוכה,
PlatformTextInputAdapter
, ליצירת הטמעות מותאמות אישית של הזנת טקסט שמתקשרות ישירות עם ממשקי API של הפלטפורמה. (I58df4)
תיקוני באגים
- הפעולה הסמנטית של
BasicTextField
'sSetText
תעדכן עכשיו את מאגר הטקסט באמצעות אותו נתיב קוד כמו עדכוני IME ופונקציות הבדיקה (לדוגמה,performTextReplacement
). - פונקציות הבדיקה של טקסט
performTextClearance
,performTextReplacement
ו-performTextSelection
משתמשות עכשיו ב-SemanticsActions
. (I0807d, b/269633168, b/269624358)
גרסה 1.4.0-beta02
22 בפברואר 2023
androidx.compose.ui:ui-*:1.4.0-beta02
משוחרר. גרסה 1.4.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרנו את
modifierElementOf()
API. במקום זאת, צריך להשתמש בהרחבה ישירה מ-ModifierNodeElement
. (I2256b) - נוסף קריאה חוזרת (callback) חדשה
Modifier.Node.onReset()
שמאפשרת לאפס חלק מהמצב המקומי כדי לטפל כמו שצריך במקרה שבו נעשה שימוש חוזר ב-Layout
(למשל, כפריט שלLazyColumn
). תוקןFocusTargetModifierNode
כדי לאפס כמו שצריך את המצב של המיקוד. (I65495, b/265201972) - נוסף הפרמטר
BlendMode
לשיטותDrawScope.drawText
,Paragraph.paint
ו-MultiParagraph.paint
כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508)
תיקוני באגים
- שופר האלגוריתם של סדר המיקוד לנגישות. לדוגמה, סרגלי הצד העליון והתחתון נקראים לעיתים קרובות ראשונים ואחרונים בהתאמה (74e9c5)
גרסה 1.4.0-beta01
8 בפברואר 2023
androidx.compose.ui:ui-*:1.4.0-beta01
משוחרר. גרסה 1.4.0-beta01 מכילה את הקומיטים האלה.
שינויים ב-API
- השם של
PinnableContainer.PinnedHandle.unpin()
שונה לrelease()
(I4667a) - הוספנו את
waitUntilNodeCount
, waitUntilAtLeastOneExists
, waitUntilExactlyOneExists
ו-waitUntilDoesNotExist
כ-API ניסיוני ל-ComposeTestRule
, והרחבנו אתwaitUntil
API כך שיקבל כל התאמה וכל מספר של צמתים. מידע נוסף זמין בכתובתComposeTestRule
. (Ifa1b9, b/226934294) - שינוי השם של
Font.MaximumAsyncTimeout
לFont.MaximumAsyncTimeoutMillis
. (I07af5) - הוסר
GoogleFont.Provider.AllFontsListUri
ונוסף קישור אליו ב-ktdoc. (I16f29)
תיקוני באגים
- הוספת מסמכים ל-
AndroidFont.fontVariationSettings
(I7d9e2)
גרסה 1.4.0-alpha05
25 בינואר 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
משוחרר. גרסה 1.4.0-alpha05 מכילה את הקומיטים האלה.
שינויים ב-API
- הוספנו עומסים חדשים לניסויים לפונקציה
runComposeUiTest
ולפונקציותcreate*ComposeRule
שמקבלות פרמטרים מסוגCoroutineContext
. ההקשר ישמש להרכבת הבדיקה ולכל קריאותLaunchedEffect
ו-rememberCoroutineScope()
בהרכבה. (I10614, b/265177763) - הוספת API חדש למעקב אחר מהירות חד-ממדית (If5a82)
- החשבון
FocusRequester
מסומן עכשיו כ@Stable
. (I580ee) - מסירים הערה ניסיונית מהבונה
DialogProperties
שמקבל פרמטרusePlatformDefaultWidth
. (Ic4048) - נוספה פונקציה לחישוב המיקום והמשיק במרחק מסוים בנתיב – עם
PathMeasure.getPosition()
ו-PathMeasure.getTangent()
(I3b47c) - הוסר בטעות setter ציבורי שנחשף ב-
PlatformParagraphStyle
. (I07f47) - שינויים נוספים בסוגים ובערכי null של פונקציות מוטמעות/מוסתרות שהוצאו משימוש (I24f91)
- מוסיפים
AnnotatedString.hasStringAnnotations
לשאילתה כדי לחפש הערות עם הקצאות אפס. (I94dfe, b/246960758) - נוסף עומס יתר חדש לפונקציה
TextMeasurer.measure
שמקבלתString
כטקסט. (I47b2d, b/242705342) - ממשקי ה-API של
LineBreak
ו-Hyphens
ב-TextStyle עברו לשלב היציבות. (Ic1e1d)
External Contribution
- השיטות
notifyFocusedRect
ב-TextInputSession
וב-TextInputService
לא הוצאו משימוש שוב. (I23a04, b/262648050)
גרסה 1.4.0-alpha04
11 בינואר 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
משוחרר. גרסה 1.4.0-alpha04 מכילה את הקומיטים האלה.
תכונות חדשות
- נוסף
PinnableContainer
API חדש שמאפשר להצמיד פריטים ברשימה עצלה, כדי שהם לא יוסרו כשהם יוצאים מהגבולות בזמן גלילה. לדוגמה,Modifier.focusable()
משתמש במנגנון הזה כדי להצמיד את הפריט שמסומן כרגע. (Ib8881, b/259274257, b/195049010) - מערכת המיקוד נכתבה מחדש באמצעות ממשקי ה-API הניסיוניים החדשים של
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - נוספה תכונת
IsContainer
סמנטיקה בפלטפורמות השונות של Google. הנכס הזה ישמש בשינוי מאוחר יותר שקובע את סדר המעבר על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (I63379) - נוסף תפקיד נגישות חדש
DropdownList
. אפשר להשתמש בזה כדי לשכפל את ההתנהגות שלTalkBack's
כשמתמקדים ב-android.widget.Spinner
. (I177e5, b/236159001) - עכשיו אפשר להשתמש ב-
PlatformTextStyle(emojiSupportMatch)
כדי להשבית את העיבוד של תמיכת האמוג'י לפסקה אחת. (Ia7100, b/139326806) - בבדיקות של ממשק משתמש ב-Android Compose, המערכת תפעיל עכשיו מעברים של פריסות לכל פריים כשמבצעים פריים כדי להגיע למצב סרק (לדוגמה, באמצעות
waitForIdle
). יכול להיות שהשינוי הזה ישפיע על בדיקות שמאמתות פריים ספציפי של אנימציות פריסה. (I8ea08, b/222093277) - נוסף הניסוי
TextMotion
ל-TextStyle
כדי להגדיר אם הטקסט יהיהStatic(default)
או מונפש. משתמשים ב-TextMotion.Animated
אם הטקסט אמור לעבור שינוי גודל, תרגום או סיבוב באמצעות אנימציה. (I24dd7)
שינויים ב-API
- הארגומנט
maxSize: IntSize
בפונקציהdrawText
הוחלף ב-size: Size
כדי להתאים לפונקציות אחרות שלDrawScope
. כברירת המחדל,size
מוגדר כ-Size.Unspecified
, ולא אמור לשנות את התנהגות ברירת המחדל הקודמת. (Icd27d) - הוסר בנאי גופנים ניסיוני שיצא משימוש. (I8a724, b/261435386)
- במחלקת הנתונים של כלי ה-UI
Group
יש עכשיו שדה,isInline
, שמציין אם הקבוצה היא לקריאה לפונקציה מוטמעת שניתנת להרכבה. אםisInline
הואtrue
, הקריאה היא לפונקציה מוטמעת שניתנת להרכבה. עם זאת, הערך עשוי להיות false עבור קריאות לפונקציות מוכללות שניתנות להרכבה, שמגיעות ממודולים שעברו קומפילציה באמצעות גרסה של תוסף קומפילציית ה-Compose שלא יוצרת את פרטי הפונקציה המוכללת. (Idb846) - העברנו מספר ממשקי API שהיו בשלב הניסוי לשלב היציב
- Rotary Scroll Event API יציב עכשיו (I42ad3, b/261561229)
-
FontVariation
API יציב עכשיו (I8779f, b/241016309) - כל הקונסטרוקטורים של
Font()
הם עכשיו API יציב (I5948b, b/261435386) - גרסה
DeviceFontFamilyName
יציבה עכשיו (I8b640, b/261435386) - הקונסטרוקטור
AndroidFont
עםvariationSettings
הוא עכשיו API יציב, ואפשר להשתמש בו כדי ליצור סוגים חדשים של מתארי גופנים. (I5adcc, b/261565807) - ממשק ה-API
createFontFamilyResolver
יציב עכשיו. אפשר להשתמש בזה כדי לזהות חריגים שלא נתפסו במהלך טעינה אסינכרונית של גופנים. (Ibb481, b/261435386) - ממשק ה-API
Font.loadingStrategy
יציב עכשיו. (I5937c, b/261435386) - ממשק ה-API
GoogleFont
יציב עכשיו. (Ic90b0, b/261435386) -
TextUnit(float, TextUnitType)
הוא עכשיו API יציב. (I90c84, b/261561612) -
pluralStringResource
הוא עכשיו API יציב. (I09849, b/261439703)
גרסה 1.4.0-alpha03
7 בדצמבר 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
משוחרר. גרסה 1.4.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרה של
ExperimentalComposeUiApi
מתוךPointerIcon
(I23af8) - הוספנו פעולות נגישות בדף:
PageUp
,PageDown
,PageLeft
,PageRight
. הערה: האפשרויות האלה זמינות רק מ-API 29. (Ida4ab) - העדכון של תצוגת הפרמטר
rememberNestedScrollConnection
מתצוגת הבסיס לתצוגת המארח. (Ia5200) - נוסף Modifier API כדי לשלוח שאילתות לגבי פרטי גלילה של רכיבי צאצא. (I2ba9d, b/203141462)
- משמש ב-
Clickable
כדי להשהות נכון אינטראקציות של לחיצה, כשמחוות יכולות להפוך לאירועי גלילה. - תוקנה הבעיה שבה לא היה עיכוב נכון באפקט האדוות כשנעשה שימוש ב-
Clickables
בתוךScrollable ViewGroup
. - עדכנו את מגירות האפליקציות ואת Sheets כדי לעכב לחיצות בצורה נכונה במקרים שבהם תנועות יכולות להפוך לאירועי גלילה.
- השם של
CompositingStrategy.Always
שונה ל-Offscreen
כדי לציין שה-graphicsLayer
תמיד יעבור רינדור למאגר ביניים (I47dc1) - פריסה עם יותר מדי משבצות תוכן יציבה עכשיו (I10566, b/248294649)
- נוספו ממשקי API חדשים וניסיוניים
PerfettoTrace.record {}
ו-PerfettoTraceRule
כדי לתעד עקבות של Perfetto (שנקראים גם עקבות מערכת) כחלק מבדיקה, במטרה לבדוק את התנהגות הבדיקה והביצועים שלה. (I3ba16) - בבדיקות של ממשק משתמש באמצעות כלל Compose, המשכי הפעולה שמתחדשים במהלך קריאות חוזרות (callbacks) של
withFrameNanos
לא יישלחו עד שכל הקריאות החוזרות של המסגרת יסיימו את הפעולה. ההתנהגות הזו זהה להתנהגות של כתיבת הודעה כשהיא פועלת כרגיל. עם זאת, יכול להיות שבדיקות שמסתמכות על ההתנהגות הישנה ייכשלו. השינוי הזה אמור להשפיע רק על קוד שמבצע קריאה ישירה לפונקציותwithFrameNanos
אוwithFrameMillis
, וכולל לוגיקה מחוץ לפונקציות הקריאה החוזרת שמועברת לפונקציות האלה, שאולי צריך להעביר אותה אל תוך הקריאות החוזרות. דוגמאות לשינויים בבדיקת האנימציה מופיעות ברשימת השינויים הזו. - נוסף פרמטר אופציונלי
onPerformTraversals: (Long) -> Unit
ל-constructor ולפונקציית factory שלTestMonotonicFrameClock
כדי להריץ קוד אחרי הקריאות החוזרות (callbacks) שלwithFrameNanos
אבל לפני חידוש שגרות המשנה (coroutines) של המתקשרים. (Idb413, b/254115946, b/222093277, b/255802670) - נוספה EmojiCompat ל-Compose (Ibf6f9, b/139326806)
- נוסף פרמטר טפט חדש ל-
@Preview
לתמיכה בצבע דינמי (I9f512)
תיקוני באגים
- ההתראות על החלת תמונת מצב נשלחות עכשיו אחרי ש-
Recomposer
מסיים להחיל את השינויים. (Iad6c0, b/222093277) - הוספנו שינויים בגרסה
captureToImage
כדי לאפשר צילום מסך של ריבוי חלונות. האפשרות הזו שימושית לבדיקות של צילומי מסך שמשתמשים בחלונות קופצים של Compose. (I169c5)
עדכונים של יחסי תלות
- Compose UI ו-Compose Material תלויים עכשיו ב-Lifecycle 2.5.1. (I05ab0, b/258038814)
גרסה 1.4.0-alpha02
9 בנובמבר 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
משוחרר. גרסה 1.4.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- המאפיין
GraphicsLayerScope
עודכן כדי לחשוף את הגודל הנוכחי שלgraphicsLayer
. האפשרות הזו שימושית לחישוב טרנספורמציות שלgraphicsLayer
כפונקציה של גודל ה-Composable. (If8c43,b/181387080) - הוספנו את
CompositingStrategy
כדי לקבוע מתי להשתמש בשכבת קומפוזיציה מחוץ למסך לצורך עיבוד של תוכןgraphicsLayer
. הפונקציה Auto שומרת על התנהגות ברירת המחדל, שמשתמשת באופן פנימי בשכבה אם מוחל אלפא או ב-RenderEffect/Overscroll
. תמיד יוצג מאגר זמני מחוץ למסך, ואילוModulateAlpha
לא ישתמש במאגר זמני מחוץ למסך אלא ישנה את כל הוראות הציור המתועדות בתוךgraphicsLayer
. השימוש ב-ModulateAlpha
עדיין יתבסס על מאגר נתונים זמני מחוץ למסך לשימושים ב-RenderEffect/Overscroll
(I25e82, b/256382834) - הוספנו את
invalidateSubtree()
ל-Modifier.Node
כדי לאפשר ביטול של היררכיות שלמות עבור פריסה ושרטוט. (I4bd90) - קידום
rememberNestedScrollInteropConnection
לגרסה יציבה. הוספנו את האפשרות להעביר תצוגת בסיס אלrememberNestedScrollInteropConnection
. השינוי הזה יכול לעזור לתצוגה המותאמת אישית להגיב טוב יותר למגבלות הגלילה, במיוחד בתצוגות לא סטנדרטיות (למשלModalBottomSheetDialog
). (I9e107) - נוסף ממשק
ObserverNode
שאפשר להשתמש בו בהטמעות שלModifier.Node
שצריך לקבל התראה כשהערך שהן קראו בעבר משתנה (I5728b, b/247716483) - נוסף בנאי חדש ל-
Paint
שמקבלandroid.graphics.Paint
מקורי. נוספה גם פונקציית הרחבהtoComposePaint()
שממירה אובייקט Paint מקורי קיים ל-Compose Paint. (Ica91b) - הוספת
FontFamily.Resolver.resolveAsTypeface
חדש לשימוש ב-Android. (I8950b) - הוספת
ToolingState
כדי לאפשר לכלים לשנות מצבים פנימיים של Composable (Ie6614) - שינוי מבנה של כלי פיתוח כדי לשפר את התמיכה באנימציות חדשות שנוספו (I8677b)
- נוסף הפרמטר
minLines
לרכיבי Text של Material ו-Material3, TextField
ו-OutlinedTextField
שמאפשר להגדיר את הגובה המינימלי של הרכיב במונחים של מספר שורות (I4af1d)
גרסה 1.4.0-alpha01
24 באוקטובר 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
משוחרר. גרסה 1.4.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה שיטה חדשה,
awaitEachGesture()
, לגלאי תנועות. היא פועלת באופן דומה ל-forEachGesture()
, אבל הלולאה של המחוות פועלת כולה בתוךAwaitPointerEventScope
, כך שלא יכול להיות אובדן של אירועים בין איטרציות. - הפונקציה
forEachGesture()
הוצאה משימוש לטובתawaitEachGesture()
כי היא מאפשרת לאירועים ללכת לאיבוד בין תנועות. (Iffc3f, b/251260206) - הוצאה משימוש של מיחזור אובייקטים של נגישות ב-androidx. גילינו ששינויים בביצועים הם זניחים גם בגרסאות הנתמכות הכי ישנות. (I0a961)
- הוספנו את
DrawStyle
כמאפיין ניסיוני ל-TextStyle
ול-SpanStyle
כדי לאפשר שרטוט של טקסט עם קווי מתאר. (If24b8, b/155421273) AnnotatedString.Builder
מטמיע עכשיו אתkotlin.text.Appendable
. (I1a061, b/231030444)-
AnnotatedString.Builder
כולל עכשיו שיטהappend(AnnotatedString, start: Int, end: Int)
לצירוף מחרוזת משנה שלAnnotatedString
והסגנונות החוצים. - נוסף הפרמטר
DrawStyle
לפונקציותParagraph
ו-MultiParagraph
של צביעה, שמאפשר לצייר טקסט עם קו מתאר. (Ic8102, b/155421273)
External Contribution
- תודה על
vighnesh
על הוספת מכשירי טלוויזיה לתצוגות מקדימות (Ie15cd)
גרסה 1.3
גרסה 1.3.3
11 בינואר 2023
androidx.compose.ui:ui-*:1.3.3
משוחרר. גרסה 1.3.3 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה קריסה שמתרחשת לפעמים ב-Android 9 כשמצב התצוגה של כתיבת הודעה נשמר בפעילות. (I0b755, b/260322832)
גרסה 1.3.2
7 בדצמבר 2022
androidx.compose.ui:ui-*:1.3.2
משוחרר. גרסה 1.3.2 מכילה את הקומיטים האלה.
תיקוני באגים
- העדכון כולל שימוש ב-Profobuf 3.21.8, כדי למנוע התראת אבטחה ב-
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
גרסה 1.3.1
9 בנובמבר 2022
androidx.compose.ui:ui-*:1.3.1
משוחרר. גרסה 1.3.1 מכילה את הקומיטים האלה.
גרסה 1.3.0
24 באוקטובר 2022
androidx.compose.ui:ui-*:1.3.0
משוחרר. גרסה 1.3.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 1.2.0
- חבילת API ניסיונית חדשה
LookaheadLayout
(מאפשרת התנהגויות של אנימציה שלא היו אפשריות קודם) - חבילת API חדשה לניסוי
Modifier.Node
(חלופה עם ביצועים טובים יותר ל-Modifier.composed
) - תמיכה משופרת בשינוי הגודל והמיקום של החלונות.
- תמיכה בהתמקדות ב-D-Pads ובמקלדת חומרה ב-LazyLists.
- הגובה המקסימלי שנתמך בתיבות דו-שיח ובחלונות קופצים צומצם ל-8dp (שינוי שמשפיע על התנהגות של חלק ממערכות עיצוב מותאמות אישית – הסבר בהערות לגרסה beta01)
- שיפורים קלים ב-API שלא גורמים לשיבושים
- הרבה תיקוני באגים ושיפורי ביצועים
גרסה 1.3.0-rc01
5 באוקטובר 2022
androidx.compose.ui:ui-*:1.3.0-rc01
משוחרר. גרסה 1.3.0-rc01 כוללת את הקומיטים האלה.
שינויים ב-API
- נוספו מקפים חדשים ל-API הניסיוני כדי לתמוך בהוספת מקפים אוטומטית בטקסט (Iaa869)
תיקוני באגים
- גופני
DeviceFontFamilyName
לא יגדירו כברירת מחדל את ההגדרות שלwght
ושל וריאציות שלital
, אלא ישתמשו בהגדרות הפלטפורמה לגביTypeface
שנטענו. (Ia7a6d, b/246989332) - תוקן דליפת זיכרון ב-
LazyColumn
– לא בוצעה קריאה ל-onModifierLocalsUpdated
עם ערך ברירת המחדל כשנעשה שימוש חוזר במאפייני שינוי (b/230168389)
גרסה 1.3.0-beta03
21 בספטמבר 2022
androidx.compose.ui:ui-*:1.3.0-beta03
משוחרר. גרסה 1.3.0-beta03 מכילה את הקומיטים האלה.
שינויים ב-API
- אפשר להוסיף אפשרויות להתאמה אישית של מעברי שורה בטקסט. (I86907)
- הארגומנט
size:IntSize
הוחלף בארגומנטconstraints: Constraints
בשיטהTextMeasurer.measure
כדי לתמוך באילוצי רוחב מינימליים. (I37530, b/242707525)
תיקוני באגים
- AndroidX Activity's
BackHandler
API פועל עכשיו בתוך קומפוננטהDialog
. (I35342)
גרסה 1.3.0-beta02
7 בספטמבר 2022
androidx.compose.ui:ui-*:1.3.0-beta02
משוחרר. גרסה 1.3.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה עומס יתר ניסיוני לרכיב Layout, שמקבל רשימה של כמה ביטויי למדה של תוכן שניתן להרכבה. כך אפשר לטפל במדדים שניתנים למדידה שמוצבים בביטויי למדה שונים של תוכן בצורה שונה (Ic1b4e)
שינויים בממשקי Focus API ניסיוניים:
- התכונות
FocusDirection.In
ו-FocusDirection.Out
הוצאו משימוש והוחלפו בתכונותFocusDirection.Enter
ו-FocusDirection.Exit
. (Ia4262, b/183746982) - נוספו שני מאפייני מיקוד חדשים, enter ו-exit, כדי לציין התנהגות מותאמת אישית עבור
FocusManager.moveFocus(Enter)
ו-FocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - מעכשיו אפשר להשתמש ב-
FocusRequester.Cancel
כדי לבטל את ההעברה של המיקוד. אפשר להשתמש ב-FocusRequester.Cancel
בכל אחד ממאפייני המיקוד הבאים: up, down, left, right, next, previous, start, end, enter ו-exit. (Ib300f)
גרסה 1.3.0-beta01
24 באוגוסט 2022
androidx.compose.ui:ui-*:1.3.0-beta01
משוחרר. גרסה 1.3.0-beta01 מכילה את הקומיטים האלה.
Modifier Node Refactor
השכבה שמטפלת במופעים של Modifier/Modifier.Element
ומתאמת את ההתנהגות שלהם ב-LayoutNodes
עברה שינוי משמעותי. במצב הנוכחי, מדובר בארגון מחדש שלא השפיע על ה-API הציבורי של אף אחד מהמשנים הרבים ב-Compose, ואפשר לראות בו שינוי שקשור להטמעה בלבד. למרות זאת, מדובר בשינוי חשוב מסיבות שונות. (Ie4313)
סיכום השינויים
ממשקי ה-API הניסיוניים של Modifier.Node
מספקים הפשטה שמאפשרת לשמור את המצב במופע שיישמר עם מחזור החיים של צומת הפריסה, ויוקצה לכל צומת פריסה ולכל שימוש ב-Modifier.Element
המתאים שיצר אותו.
באופן כללי, האבסטרקציה הזו מספקת מנגנון חלופי ליצירת משנים עם שמירת מצב בלי להסתמך על המכניקה של Modifier.composed
API.
סיכון
השינוי הזה תואם באופן בינארי לגרסאות קודמות, והוא נועד להיות תואם לדור קודם מבחינת התנהגות שניתנת לצפייה, ככל שניתן באופן מעשי וסביר. עם זאת, יש כמה תתי-מערכות של Compose שהשינוי הזה לא השפיע עליהן, וסביר להניח שההתנהגות שלהן השתנתה בדרכים שלא נכללו בבדיקות שלנו, ושעדיין לא זוהו ולא תוקנו.
מומלץ לשדרג לגרסה הזו בזהירות. אם לדעתך השינוי הזה גרם לבעיה כלשהי, אפשר ליצור איתנו קשר.
ממשקי API ניסיוניים
הוספנו ממשקי API ניסיוניים שונים, שכולם קשורים למושג החדש של 'צומת שינוי'. Modifier.Node’s נוצרים כתוצאה מ
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
שינוי התנהגות שעלול לגרום לכשל
הגובה המקסימלי שנתמך בתיבות דו-שיח ובחלונות קופצים הופחת ל-8dp.
הגובה המקסימלי שנתמך לתיבות דו-שיח ולחלונות קופצים של כתיבה הופחת מ-30dp ל-8dp. השינוי הזה משפיע גם על חלונות קופצים ודיאלוגים בהתאמה אישית של ממשק המשתמש וגם על חלונות קופצים ודיאלוגים בהתאמה אישית של חומרים. השינוי הזה נעשה כדי לצמצם את ההשפעה של באג נגישות בגרסאות Android שמתחת לגרסה S, וכדי לוודא ששירותי הנגישות בחלונות האלה יוכלו ליצור אינטראקציה עם התוכן בתוך תיבת הדו-שיח או החלון הקופץ.
השינוי הזה ישפיע עליכם רק אם אתם יוצרים הטמעה של תיבת דו-שיח או חלון קופץ מותאמים אישית עם הגבהה שמוגדרת לרמות גבוהות מ-8dp. כדאי להנמיך את הגובה של תיבת הדו-שיח או החלון הקופץ. אם אתם רוצים לבטל את ההצטרפות להתנהגות החדשה הזו, אתם יכולים ליצור עותק של תיבת הדו-שיח או החלון הקופץ עם ההגדרה הרצויה של ההרשאה. הפעולה הזו לא מומלצת, כי היא עלולה לפגוע בנגישות, והמפתח צריך לוודא שניתן להפעיל את החלק התחתון של תיבת הדו-שיח או החלון הקופץ ולקרוא אותו באמצעות שירותי נגישות.
שינויים ב-API
- תוקנה בעיה שגרמה לכך ש-
painterResource
לא התעדכן בעקבות שינויים בהגדרות (I58e73, b/228862715) - הפרמטר
rememberTextMeasurer
לא מקבל יותר פרמטרים שלFontFamily.Resolver
,Density
אוLayoutDirection
. כדי לספק ערכים מותאמים אישית לפרמטרים האלה, צריך להשתמש בבונהTextMeasurer
. (Ia1da3) - נוסף מאפיין
DialogProperties.decorFitsSystemWindows
כדי לאפשר לתיבות דו-שיח לתמוך ב-WindowInsets
. (I57742, b/229378542) - החזרנו את בנאי הגופנים לקובץ המקורי של Kotlin כדי לשמור על תאימות בינארית. אין שינוי לעומת הגרסה היציבה האחרונה. (Ieb2f3)
- הוסר אופרטור מיותר מכמה הגדרות של equals – אין לכך השפעה. (I6c309)
-
FontVariation.Setting
הוא ממשק אטום, כדי לאפשר ממשקי API עתידיים של הידוק. (I11021, b/143703328) - הוספה של
CompositionGroup.findParameters
אלSlotTree.kt
. כך כלי יכול לאחזר פרמטרים שלCompositionGroup
בלי לנתח את כל טבלת המשבצות. (I124fe)
גרסה 1.3.0-alpha03
10 באוגוסט 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
משוחרר. גרסה 1.3.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
-
LayoutCoordinates.findRootCoordinates()
עכשיו גלוי לכולם (I7fa37, b/204723384) - הוספנו API ניסיוני כדי לקבל את
LayoutCoordinates
ב-PlacementScope
. כך המפתחים יודעים איפה הפריסה הנוכחית נמצאת כדי למקם את רכיבי הצאצא ביחס למיקום שלה. (I5482b, b/238632578) - נוסף
LayoutCoordinates.transformFrom
כדי לקבל את טרנספורמציית המטריצה מ-LayoutCoordinates
אחד לאחר. (Ic5ab1, b/238632578) - הוצאנו משימוש את
SemanticsModifier.id
והעברנו את מזהה הסמנטיקה אלLayoutInfo.semanticsId
. (Iac808, b/203559524) - התכונה Resource Fonts (גופנים של משאבים) תומכת עכשיו בהגדרת וריאציות של גופנים (API 26 ואילך). (I900dd, b/143703328)
- תמיכה בגופנים משתנים ב-
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - אפשר להשתמש עכשיו בבוני גופנים כדי להגדיר גופנים משתנים במכשירי O ומעלה. לשם כך, צריך להעביר רשימה של
FontVariation.Setting
. (I11a9d, b/143703328) - הוספנו
FontVariation
API להגדרה ולשימוש בגופנים משתנים. (I3c40c, b/143703328) - ה-constructor
LineHeightStyle.Alignment
הוא עכשיו ציבורי (בשלב ניסוי) (I4bbbe, b/235876330) - הפסקה מוגדרת עכשיו כ-expect|actual עבור Android ומחשבים. (Id387e, b/239962983)
- הממשק Interface Paragraph הוא עכשיו ממשק חתום Paragarph. אין תרחיש לדוגמה שבו יש צורך ביצירת מחלקת משנה של פסקה, ואנחנו ממליצים לפנות אלינו אם השינוי הזה משפיע עליכם. (If5247, b/239962983)
- ההערה הניסיונית הוסרה מ-
PlatformTextStyle
ומ-LineHeightStyle
. (I64bef) - הוצאה משימוש של
TextInputService.show|hideSoftwareKeyboard
. במקומה, צריך להשתמש ב-SoftwareKeyboardController
בקוד האפליקציה וב-TextInputSession
בקוד לניהול IME. (I14e4c, b/183448615) - הוספת API חדש לסוגי אנימציה קיימים (I26179)
תיקוני באגים
- הוספנו את
@RequiresPermission
לממשקי API שנדרשת בהם הרשאתPOST_NOTIFICATIONS
ב-SDK 33 ואילך. (Ie542e, b/238790278)
גרסה 1.3.0-alpha02
27 ביולי 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
משוחרר. גרסה 1.3.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף נכס חדש
PointerInputChange#pressure
לאחזור הלחץ. (I45a5e, b/205164819) - הוספנו את
rememberTextMeasurer
כדי ליצור בקלות מופעים שלTextMeasurer
ולזכור אותם בהלחנה. (I8d66e) -
Rect
,RoundRect
ו-MutableRect
תומכים עכשיו בתחביר של Kotlinin
לקריאה לפונקציהcontains
. (Ie42b0, b/238642990) - מסירים פונקציות מיותרות מ-
KeyInjectionScope
, כי אפשר להטמיע אותן בקלות באמצעות חלקים פשוטים יותר של ה-API. הפונקציות שהוסרו כוללות אתpressKeys
, keysDown
ו-keysUp
. (I81d77) - שמות של קבועים ופרמטרים שונו ב-
KeyInjectionScope
כך שיכללו את הסיומת 'Millis' במקרים שבהם היחידות של הקבועים והפרמטרים האלה הן אלפיות השנייה. (Iabef5) - נוספה שיטה
toStringForLog()
ל-EditCommand
כדי לעזור בפתרון בעיות בעריכת טקסט. (I53354, b/228862731) - נוספה פונקציית התוסף
drawText
ב-DrawScope
כדי לספק דרך לצייר טקסט עם כמה סגנונות ברכיבים ובשינויים שפועלים ב-DrawScope
כמוCanvas
ו-drawBehind
. (I16a62, b/190787898) - הוספנו API ניסיוני חדש בשם
TextMeasurer
שמאפשר חישוב של פריסת טקסט שרירותית שיוצר תוצאות זהות ל-BasicText
, ללא תלות בזמן הריצה של Compose. (I17101) - הוספה של
mapTree
אלSlotTree.kt
. כך כלי יכול לבדוק אתSlotTree
בלי ליצור קודם עותק בזיכרון כמו שקורה ב-asTree. במקרה של הכלי לבדיקת פריסה, השיפור בביצועים הוא בערך פי 10. (I5e113) - השתנה: התצוגה המקדימה של Compose מאוחסנת עכשיו בקובצי פלט בינאריים, כדי לאפשר למפתחים לכתוב הערות
MultiPreview
מספריות ולעשות בהן שימוש חוזר. (I85699, b/233511976)
תיקוני באגים
- כשמוסיפים אירועים מסוג
InputEventChange
ל-Velocity
Tracker, המערכת תתייחס עכשיו לשינויים במקום למיקומים. כך מובטח שהמהירות תחושב בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (Icea9d, b/216582726, b/223440806, b/227709803). - תיקון של NPE שנגרם על ידי
AnnotatedString.toUpperCase
כשיש הערות. (I0aca2, b/210899140)
גרסה 1.3.0-alpha01
29 ביוני 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
משוחרר. גרסה 1.3.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
-
LookaheadLayout
חדש שתומך במעבר צפוי לפני המידה או הפריסה בפועל. כך אפשר לבצע חישוב מראש של הפריסה כשהיא משתנה, ובמקביל לאפשר למדד או לפריסה אחרי החיזוי להשתמש בגודל או במיקום שחושבו מראש כדי להנפיש את הגודל והמיקומים לעבר היעד.SubcomposeLayouts
עדיין לא נתמכים, אבל הם יתמכו בגרסה הקרובה. (I477f5) - מוסיפים פרמטר אלפא אופציונלי ל-Brush flavor של
TextStyle
ושלSpanStyle
כדי לשנות את האטימות שלText
כולו. (Ic2fac, b/234117635) - הוספנו את סוג ההערה
UrlAnnotation
ואת השיטות שמשויכות אליו כדי לתמוך בקישורים שלTalkBack
ב-AnnotatedString
. (I1c754, b/231495122) - העברת פונקציונליות של כלי עזר לזמן ריצה (I4f729)
תיקוני באגים
- הפונקציה
TextLayoutResult.getLineForOffset
לא מפעילה חריגה. (Idc5d6, b/235876324)
External Contribution
- נוסף API חדש
WindowInfo.keyboardModifiers
כדי לצפות במצב שלו בתוך פונקציות שאפשר להרכיב או באמצעות snapshotFlow (Icdb8a)
גרסה 1.2
גרסה 1.2.1
10 באוגוסט 2022
androidx.compose.ui:ui-*:1.2.1
משוחרר. גרסה 1.2.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקן nullpointer בכלי הבדיקה (b/237987764)
- תוקנה חריגה של המרת מחלקה במהלך שמירה בכלי לבדיקת רכיבים (b/235526153)
גרסה 1.2.0
27 ביולי 2022
androidx.compose.ui:ui-*:1.2.0
משוחרר. גרסה 1.2.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 1.1.0
שיפורים במעבר בין רכיבים:
- גלילה מבוססת-מיקוד ברשימות Lazy פועלת עכשיו באמצעות ה-API החדש
BeyondBoundsLayout
- ממשקי API חדשים להתאמה אישית של התנהגות ב-
FocusOrder
וב-FocusProperties
- שיפור ההתנהגות עם מקלדת פיזית או שלט לטלוויזיה
- גלילה מבוססת-מיקוד ברשימות Lazy פועלת עכשיו באמצעות ה-API החדש
ממשקי API חדשים ל:
- חלונות שקועים
- פרימיטיבים מרכזיים לאנימציות אינסופיות של פריסות ולפריסות אנימטיביות שמבוססות על מחוות
- יכולות, כולל
RenderEffect
GraphicsLayer
הרבה תיקוני באגים ושיפורי ביצועים
גרסה 1.2.0-rc03
29 ביוני 2022
androidx.compose.ui:ui-*:1.2.0-rc03
משוחרר. גרסה 1.2.0-rc03 מכילה את הקומיטים האלה.
- לא בוצעו שינויים מאז גרסה 1.2.0-rc02.
גרסה 1.2.0-rc02
22 ביוני 2022
androidx.compose.ui:ui-*:1.2.0-rc02
משוחרר. גרסה 1.2.0-rc02 מכילה את הקומיטים האלה.
גרסה 1.2.0-rc01
15 ביוני 2022
androidx.compose.ui:ui-*:1.2.0-rc01
משוחרר. גרסה 1.2.0-rc01 כוללת את הקומיטים האלה.
שינויים ב-API
- ממשקים בספריות של Compose נוצרים עכשיו באמצעות שיטות ממשק שמוגדרות כברירת מחדל ב-jdk8 (I5bcf1)
- נוספו פונקציות מסדר גבוה יותר ל-
KeyInjectionScope
להחדרת לחיצות על מקשים בזמן שמקשים אחרים מוחזקים או מופעלים. הפונקציות האלה כוללות אתwithKeysDown
, withKeysToggled
וכו'. נוספו גם מאפיינים לבדיקה אם מקש מטא מסוים לחוץ, למשל,isCtrlDown
כדי לבדוק אם אחד ממקשי הבקרה לחוץ. בכתובתKeyInjectionScope
יש תיעוד של כל פונקציה. (I9f6cd, b/229831515) - נוספה תכונה ניסיונית
OverscrollEffect
שמאפשרת ליצור אפקטים מותאמים אישית של גלילה מעבר לקצה, בנוסף לעומסים העודפים שלModifier.scrollable
שמקבלים אותה. - החבילה Experimental
LocalOverScrollConfiguration
הועברה מ-foundation.gesture
לחבילת הבסיס ושמה שונה ל-LocalOverscrollConfiguration
(If19fb, b/204650733) - שינוי השם של
runComposeUiTestWithoutActivity {}
ל-runEmptyComposeUiTest {}
, כדי להתאים אותו ל-createEmptyComposeRule()
(I6fed7)
גרסה 1.2.0-beta03
1 ביוני 2022
androidx.compose.ui:ui-*:1.2.0-beta03
משוחרר. גרסה 1.2.0-beta03 מכילה את הקומיטים האלה.
שינויים ב-API
- הוספת את
pressKeyTimes
, אתisCapsLockOn
ואת החברים אלKeyInjectionScope
. בנוסף, ה-API תומך עכשיו בדפוסי הזרקה משולבים של עכבר ומקלדת, כמו לחיצה על לחצן בעכבר תוך כדי החזקת מקש מטא. (I4c8da, b/229831515) - נוספה תמיכה ניסיונית בהחדרת אירועים מרכזיים. משתמשים ב-
performKeyInput
כדי לשלוח אירועים מרכזיים, או שולחים אותם דרך המאפייןkey
שלMultiModalInjectionScope
במהלך תנועת קלט מרובת מצבים עםperformMultiModalInput
. מידע נוסף על ה-API מופיע בכתובתKeyInjectionScope
. (Ic5000, b/229831515) - מוסיפים
GoogleFont.Provider.AllFontsListUri
חדש כדי לאחזר את מקור האינטרנט הקנוני של Google Fonts שנתמך על ידי Android. - שיפור הודעות השגיאה שמוצגות כש-GoogleFonts לא נטען בכלי הכתיבה. (I0416c)
תיקוני באגים
- כשמוסיפים אירועים של
InputEventChange
ל-Velocity Tracker, המערכת תתייחס עכשיו לשינויים במקום למיקומים. כך מובטח שהמהירות תחושב בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (I51ec3, b/216582726, b/223440806, b/227709803) - ההגדרה
Show Layout Bounds
תופעל עכשיו ברכיבים הניתנים להרכבה מיד אחרי שתעברו ממצב מופעל למצב מושבת ולהפך בלחצן ההגדרה המהירה, בלי שתצטרכו לצאת מהפעילות ולהיכנס אליה מחדש. (I843d5, b/225937688) - חיפוש מחרוזת נגישות לא מפעיל טעינת גופן. בעבר, המערכת ניסתה לטעון גופנים עבור
StyleSpans
, מה שהוביל לקריסות אםFontFamily.Resolver
נדרס. (I4609d) - לחיצה על מקש המחיקה קדימה כשהסמן נמצא בסוף שדה טקסט לא תגרום יותר לקריסה.
- הארגומנטים של בנאי המחלקה
DeleteSurroundingTextCommand
ו-DeleteSurroundingTextInCodePointsCommand
חייבים להיות לא שליליים. (Ica8e6, b/199919707)
גרסה 1.2.0-beta02
18 במאי 2022
androidx.compose.ui:ui-*:1.2.0-beta02
משוחרר. גרסה 1.2.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- שימוש חוזר בפונקציונליות בסוגים אחרים של תצוגה מקדימה (I19f39)
תיקוני באגים
- השם של
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
שונה ל-DisposeOnDetachedFromWindowOrReleasedFromPool
כדי לשקף בצורה טובה יותר את המקרים שבהם מתבצעות השלכות, ולא רק את המקרים שבהם הן לא מתבצעות. (If15ca)
גרסה 1.2.0-beta01
11 במאי 2022
androidx.compose.ui:ui-*:1.2.0-beta01
משוחרר. גרסה 1.2.0-beta01 מכילה את הקומיטים האלה.
תכונות חדשות
- זו גרסת הבטא הראשונה של 1.2!
שינויים ב-API
- נוספה תכונה ניסיונית
BeyondBoundsInterval
שאפשר להשתמש בה בהטמעות מותאמות אישית שלLazyList
כשהן מציגות פריטים מעבר לגבולות הנראים (Ifabfb, b/184670295) - גרסאות עם מפתח של
Modifier.composed
הן עכשיו API יציב (Ie65e4, b/229988420) - פישטנו את
rememberNestedScrollConnection
ה-API כדי להשתמש ב-composition locals כדי לקבל את פרטי התצוגה הנוכחית (I67ca7) - עכשיו אפשר להשתמש בהערה
@ComposableTarget
ובהערות שמסומנות ב-@ComposableTargetMarker
בהיקף הקובץ באמצעות הקידומת@file
. שימוש בהערת יעד בהיקף הקובץ יגרום לקומפיילר להניח שכל הפונקציות שניתנות להרכבה בקובץ מיועדות להיות היעד של כלי ההחלה המשויך. לדוגמה, השימוש ב-@file:UiComposable
מצהיר שכל הפונקציות של@Composable
מכוונות למרכיב Compose UI applier. פונקציה שצריכה לטרגט כלי החלה אחר חייבת לספק במפורש את הערת הסמן של היעד עבור כלי ההחלה הרצוי. (I40804) הוספנו API חדש לניסויים, שלא תלוי בפלטפורמה:
interface ComposeUiTest
ו-fun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, שאפשר להשתמש בהם כדי להריץ בדיקות של Compose UI בלי צורך ב-TestRule
. כדי להריץ בדיקה בליComposeTestRule
, מעבירים את הבדיקה כביטוי למבדה אלrunComposeUiTest
, ומשתמשים במתודות ובמאפיינים בהיקף המקבלComposeUiTest
, שהם אותם אלה שמופיעים ב-ComposeContentTestRule
.הפונקציות הספציפיות ל-Android
interface AndroidComposeUiTest
ו-fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
מתווספות כדי לספק גישה לפעילות הבסיסית, בדומה ל-AndroidComposeTestRule
. כדי לקבל שליטה רבה יותר, אפשר ליצור מופע שלclass AndroidComposeUiTestEnvironment
בעצמכם.ההטמעה במחשב היא
class DesktopComposeUiTest
, אבל אין כרגע פונקציות הפעלה ספציפיות למחשב.אפשר להעביר בדיקה מ-
ComposeTestRule
ל-ComposeUiTest
באופן הבא (דוגמה ל-Android). מאת:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
אל:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
בשלב הזה,
ComposeContentTestRule
ו-ComposeTestRule
לא נגזרות מ-ComposeUiTest
, כלומר אי אפשר עדיין להפעיל פונקציות של תוספים בממשקTestRule
.ComposeUiTest
כש-ComposeUiTest
יעבור לסטטוס API יציב,ComposeContentTestRule
ו-ComposeTestRule
ישתנו כך שיתבססו עלComposeUiTest
. (Ib4e90)השם של
LineHeightBehavior
השתנה ל-LineHeightStyle
השם של
LineVerticalAlignment
השתנה ל-LineHeightStyle.Alignment
השם של
LineHeightTrim
שונה לLineHeightStyle.Trim
הערכים של בנאי ברירת המחדל מ-
LineHeightStyle
הוסרו (I582bf, b/181155707)נוספו
Brush
ל-TextStyle
ו-SpanStyle
כדי לספק דרך לשרטט טקסט עם צביעת מעבר צבעים. (I53869, b/187839528)המאפיינים
trimFirstLineTop
ו-trimLastLineBottom
שלLineHeightBehavior
השתנו לסוג enum יחיד:LineHeightTrim
.LineHeightTrim
יש 4 מצבים שמוגדרים על ידי שני ערכים בוליאניים:FirstLineTop
, LastLineBottom
, Both ו-None (Ifc6a5, b/181155707)הוספת את
LineHeightBehavior
אלTextStyle
ואלParagraphStyle
. LineHeightBehavior
קובע אם גובה השורה יחול על החלק העליון של השורה הראשונה ועל החלק התחתון של השורה האחרונה. התג גם מגדיר את היישור של השורה במרחב שמוגדר על ידיTextStyle(lineHeight)
.לדוגמה, אפשר לקבל התנהגות דומה למה שמוגדר ב-CSS באמצעות
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.ההגדרות
trimFirstLineTop
ו-trimLastLineBottom
פועלות בצורה תקינה רק אם הערך שלincludeFontPadding
הוא false. (I97332, b/181155707)הפונקציות
PlatformParagraphStyle.lerp
ו-PlatformSpanStyle.lerp
השתנו והפכו לפונקציות ברמה העליונה (I9a268)
תיקוני באגים
- במסמכי התיעוד של
PointerInputChange::copy
מצוין עכשיו בצורה נכונה שמדובר בעותק שטחי. (I182f5) - תמיכה בשלוש נקודות כשגובה מוגבל ואין מקום לכל שורות הטקסט (Ie528c, b/168720622)
- הופעלה ברירת המחדל
includeFontPadding
. אפשר להשבית אתincludeFontPadding
באמצעות המאפייןTextStyle.platformTextStyle
. בעתיד הקרוב נשנה את התנהגות ברירת המחדל, אבל עד אז השינוי הזה מאפשר לנו לשלב טוב יותר שיפורים בגובה השורה (aosp/2058653) ולפתור בעיות שלTextField
חיתוך. (I01423, b/171394808)
External Contribution
-
MouseInjectionScope.scroll(delta = someDelta)
עכשיו הפוך ב-Android אם גוללים אנכית (אם someDelta חיובי, הגלילה תהיה כלפי מטה) (Ifb697, b/224992993)
גרסה 1.2.0-alpha08
20 באפריל 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
משוחרר. גרסה 1.2.0-alpha08 מכילה את הקומיטים האלה.
שינויים ב-API
- פונקציות
pluralStringResource
סומנו כניסיוניות כדי לאפשר שיפורים בעתיד לתמיכה טובה יותר בבינאום. (If24e4) - הפרמטר Constraints מתקבל עכשיו ב-Paragraph וב-MultiParagraph. הערך
Constraints.maxHeight
לא מבצע פעולה בשלב הזה, אבל הוא יאפשר לבצע חישובים בעתיד, כמו השמטת חלק מהטקסט בהתאם לגובה. (I6afee, b/168720622) -
SubcomposeSlotReusePolicy.getSlotsToRetain()
מקבל עכשיו מחלקה מותאמת אישית שדומה ל-MutableSet, שלא מאפשרת להוסיף אליה פריטים חדשים. (Icd314) - PointerIcon הוא עכשיו ממשק
@Stable
(I9dafe) - השימוש החלקי (הורדה או מיקום) הוצא משימוש ב-
PointerInputChange
. אפשר להשתמש ב-consume()
כדי להחיל את השינוי באופן מלא. אפשר להשתמש ב-isConsumed
כדי לקבוע אם מישהו אחר כבר השתמש בשינוי. - הפונקציה
PointerInputChange::copy()
יוצרת עכשיו תמיד עותק שטחי. המשמעות היא שעותקים שלPointerInputChange
ינוצלו ברגע שאחד מהעותקים ינוצל. אם רוצים ליצורPointerInputChange
לא מאוגד, צריך להשתמש בבונה במקום זאת. (Ie6be4, b/225669674) - הפעלה של יכולת פעולה הדדית של גלילה מקוננת בין Compose ל-View בכיוון Compose > View. המשמעות היא שרכיב אב של כתיבה יוכל לקבל דלתאות של גלילה מוטמעת מתצוגת גלילה מוטמעת. (If7949, b/174348612)
-
SemanticsProperty testTagsAsResourceId
, שאפשר להשתמש בו כדי להתאים את Compose לבדיקות UIAutomator שנועדו למערכת View. (I39c20) - הצגת כל המשקלים הזמינים לגופני מערכת ב-Android כשמשתמשים ב-
FontFamily.SansSerif
. במקרים כאלה, המערכת תשתמש באופן פנימי בשמות של גופנים חלופיים כמו sans-serif-medium ב-API 21-28. זהו שינוי בהתנהגות, כי קודם לכן הייתה תמיכה רק במשקלים 400 ו-700 ב-API 21-28. (I380fe, b/156048036, b/226441992) - בפונקציות Paragraph ו-Multiparagraph, הארגומנטים התלויי מיקום הוזזו כך שיופיעו לפני הארגומנטים האופציונליים. (Idafaa)
- הפונקציה
AndroidFont
מקבלת עכשיו את typefaceLoader כפרמטר של בנאי. (I2c971)
גרסה 1.2.0-alpha07
6 באפריל 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
משוחרר. גרסה 1.2.0-alpha07 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה פונקציה חדשה
Snapshot.withoutReadObservation { ... }
. היא מאפשרת למשתמשים להפעיל את ה-lambda שהועבר בלי להירשם לשינויים של ערכי המצב שנקראו במהלך הבלוק הזה. התכונה הזו יכולה להיות שימושית בתרחישי שימוש שבהם רוצים ליהנות מהיתרונות של קריאה וכתיבה בטוחה לשרשור שמבוססת על snapshot, אבל רוצים לקרוא את הערך בלי לגרום להרכבה מחדש או למדידה מחדש מיותרות. (I9f365, b/214054486) - מאפיין התוסף
consumeWindowInsets
שלComposeView
מאפשר למפתחים להשבית את הצריכה שלWindowInsets
ב-Android. כך כלComposeViews
בהיררכיה יכול להחילWindowInsets
בלי להפריע לComposeViews
אחרים. (I0ef08, b/220943142) - נוספה האפשרות
KeyboardType.Decimal
כחלופה ל-Keyboard.Number
כדי לכלול במפורש מפריד עשרוני ב-IME. (Iec4c8, b/209835363) -
PointerEventType.Scroll
ו-PointerEvent.scrollDelta
הם ממשקי API יציבים עכשיו (I574c5, b/225669674) - הפעלת יכולת פעולה הדדית של גלילה מקוננת בין View ל-Compose עבור מחלקות View שפועלות יחד. המשמעות היא שעכשיו אפשר לשלוח את ההפרשים של הגלילה אל רכיב View האב (שמשתף פעולה). (I5d1ac, b/174348612)
- בוצע עדכון של
FontFamily.Resolver
כדי לשלב את הגדרת הנגישות של טקסט מודגש בכל המערכת (I6c1e7) - המאפיין
Font(AssetManager, String, ...)
הוצא משימוש והוחלף במאפייןFont(String, AssetManager, ...)
. זהו API ניסיוני. (I1c7a4) - מוסיפים את מתאר הגופן החדש
Font(DeviceFontFamilyName)
כדי לחפש גופנים שמותקנים במערכת במהלך שרשראות של גופנים חלופיים (אופציונלי). (I30468, b/219754572) - נוספה הגדרת תאימות זמנית ל-
includeFontPadding
ב-TextStyle/ParagraphStyle. אפשר לשנות אתincludeFontPadding
דרךTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. זוהי אפשרות הגדרה זמנית להפעלת ההעברה, והיא תוסר בהמשך. (If47be, b/171394808) - מוסיפים את התוסף
GoogleFont.Provider.isAvailableOnDevice
כדי לקבל עזרה בניפוי באגים. (I64e31) - Add
GoogleFont.Provider
constructor for use with@ArrayRes
(Ic5ee1, b/225984280) -
Compose GoogleFont
נקרא עכשיוFont(GoogleFont)
, ה-API נשאר יציב בכל שאר המקרים. (I125f2)
תיקוני באגים
- הוספנו בדיקת lint ל-material/Scaffold כדי לוודא שהמרווח הפנימי נמצא בשימוש (Ifb111)
גרסה 1.2.0-alpha06
23 במרץ 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
משוחרר. גרסה 1.2.0-alpha06 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה פעולת סמנטיקה
RequestFocus
כדי לבקש התמקדות ביעד שניתן להתמקדות. (I17b71) - עדכון של ניתוח של וקטורים שניתנים לציור כדי לתמוך בשיקוף אוטומטי להפיכת התוכן של
VectorPainter
אם כיוון הפריסה הנוכחי הוא מימין לשמאל. (I79cd9, b/185760237) הצבעים של הצללה/האווירה עודכנו כך שיהיו פרמטרים נגררים של
Modifier.graphicsLayer
לצורך תאימות ל-API (I3f864, b/160665122)נוספו הטמעות ברירת מחדל לצבע הצללית/הסביבה ב-
GraphicsLayerScope
כדי להבטיח שינויים ב-API שלא יגרמו לבעיותהוספת משך האירוע לאירועים ב-RSB (Ief8ae)
החשבון
FocusOrder
מוזג עכשיו עםFocusProperties
, ולחשבוןfocusProperties()
יש עכשיו את כל היכולות שלfocusOrder()
. התכונותFocusOrder
ו-focusOrder()
הוצאו משימוש. focusOrder()
שכוללfocusRequester
צריך להיות מוחלף בשינויfocusRequester()
בשילוב עםfocusProperties()
. כך אפשר להפריד בצורה טובה יותר בין התפקידים של משני המשתנים. (I601b7)שדרוג של
RecyclerView
וגם שלCompose
יביא לביצועים טובים יותר של גלילה ב-RecyclerViews עם תצוגות Compose כרכיבי צאצא.הוספת
ViewCompositionStrategy.Default
כאמצעי לאחזור אסטרטגיית ברירת המחדל המובניתמוסיפים את
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, שהיא שיטת ברירת המחדל החדשה ומטפלת בצורה נכונה במאגרי תגים כמו RecyclerView. (If7282)הוספנו תמיכה בהוספת הערות למחלקות של הערות באמצעות @Preview כשלב ראשון להוספת התכונה Multipreview. אפשר להשתמש בהערות כאלה כדי להוסיף הערות לשיטות Composable או למחלקות הערות אחרות, שאז ייחשבו כהערות שנוספו באופן עקיף באמצעות @Preview. (I12eff)
מכשירים להתייחסות נוספו לרשימת המכשירים ב-@Preview (I071c9)
תיקוני באגים
- ממשקי ה-API של גרפיקה וקטורית עודכנו כך שישתמשו בהערה הנכונה שאפשר להרכיב @VectorComposable במקום @UiComposable (I942bc)
- הסרת crossinline מ-
AnnotatedString.Builder.withStyle
(If84d5)
External Contribution
- compose-ui: Add
ambientShadowColor
andspotShadowColor
properties toGraphicsLayerScope
(I1ba1a, b/160665122) - יש עכשיו תמיכה במשאבים רבים באמצעות הפונקציות
pluralStringResource
. (Ib2f23, b/191375123)
גרסה 1.2.0-alpha05
9 במרץ 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
משוחרר. גרסה 1.2.0-alpha05 מכילה את הקומיטים האלה.
שינויים ב-API
- הפונקציה
TextToolbar
מקבלת עכשיו ארגומנטים מסוג lambda במקוםActionCallback
. (Ib2eb9, b/197950089) - עודכן מצב ה-nullability בספריות הליבה וב-appcompat כך שיתאים ל-Tiramisu DP2 (I0cbb7)
- ממשק Measured חושף עכשיו את המאפיין parentData (I3313f)
- הממשק של
Modifier.onPlaced
ושלOnPlacedModifier
יציב עכשיו. (Ib5482) - הידד! האנימציה של יצירת הודעה תומכת עכשיו בהגדרה 'קנה מידה למשך זמן אנימציה' מתוך 'אפשרויות למפתחים'. (I5a4fc, b/161675988)
- נוסף משנה
BeyondBoundsLayout
local (If8b51, b/184670295) - טקסט: ההגדרה includeFontPadding מושבתת עכשיו כברירת מחדל. בעיות החיתוך כתוצאה משימוש ב-
includeFontPadding=false
מטופלות, ולא אמור להתרחש חיתוך של סקריפטים ארוכים. (I31c84, b/171394808)
תיקוני באגים
-
ComposeContentTestRule.setContent
יציג עכשיוIllegalStateException
אם תנסו להגדיר תוכן כשכבר יש תוכן. (I888a5, b/199631334) - תוקנה קריסה שנגרמה בגלל תוכן הלוח בזמן קריאה מהלוח ב-Android. (I06020, b/197769306)
- שיפור הדוגמאות לגלילה ב-RSB. (I6a596)
External Contribution
- העדכון כולל שימוש ב-Kotlinx coroutines 1.6.0 (I3366d)
גרסה 1.2.0-alpha04
23 בפברואר 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
משוחרר. גרסה 1.2.0-alpha04 מכילה את הקומיטים האלה.
שינויים ב-API
נוספו הפונקציות
ComposableTarget
,ComposableTargetMarker
ו-ComposableOpenTarget
שמאפשרות דיווח בזמן קומפילציה על מצבים שבהם מתבצעת קריאה לפונקציה הניתנת להרכבה שמטרגטת כלי להחלת שינויים שלא נועד להשתמש בה.ברוב המקרים, אפשר להסיק את ההערות האלה באמצעות התוסף של מהדר Compose, ולכן השימוש בהערות האלה ישירות צריך להיות נדיר . המקרים שלא ניתן להסיק לגביהם כוללים יצירה ושימוש בפונקציית החלה בהתאמה אישית, פונקציות קומפוזביליות מופשטות (כמו שיטות ממשק), שדות או משתנים גלובליים שהם ביטויי למבדה קומפוזביליים (משתנים מקומיים ופרמטרים נגזרים), או כשמשתמשים ב-
ComposeNode
או בפונקציות קומפוזביליות קשורות.במקרה של פונקציות מותאמות אישית, הפונקציות המורכבות שקוראות ל-
ComposeNode
או ל-ReusableComposeNode
צריכות להוסיף הערהComposableTarget
לפונקציה ולכל סוגי הפרמטרים של lambda שניתנים להרכבה. עם זאת, מומלץ ליצור הערה שמוערת באמצעותComposableTargetMarker
ואז להשתמש בהערה המסומנת במקוםComposableTarget
ישירות. הערה שאפשר להוסיף לה הערות אחרות, שמסומנת ב-ComposableTargetMarker
, שווה ל-ComposbleTarget
עם השם המלא של מחלקת המאפיינים כפרמטר של ה-applier. דוגמה לשימוש ב-ComposableTargetMarker
מופיעה ב-anroidx.compose.ui.UiComposable
. (I38f11)
Font(resId, ...)
עכשיו מקבל loadingStrategy ב-API יציב. (Ief3d2)
FontLoadingStrategy
הוא עכשיו API יציב. (I1ee35, b/174162090)תמיכה בטעינה אסינכרונית של גופנים בטקסט (I77057, b/214587005)
הוספת bridge API להמרת
Font.ResourceLoader
מותאם אישית ל-FontFamily.Resolver
. (Ia0060)
תיקוני באגים
- הערכים שצוינו
FontFamily.Resolver
מועברים לרכיבי משנה כמו Popup. - הערכים שצוינו
Font.ResourceLoader
מועברים לרכיבי משנה כמו Popup. (I48fa5)
גרסה 1.2.0-alpha03
9 בפברואר 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
משוחרר. גרסה 1.2.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- השיטות
notifyFocusedRect
ב-TextInputSession
וב-TextInputService
הוצאו משימוש ולא יופעלו. במקום זאת, אתם צריכים להשתמש ב-BringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - הוספנו את method
destroyDisplayListData
ל-stub classRenderNode
(I1e659, b/216660268) - נוסף API חדש שמאפשר למדוד מראש את הצאצאים של
SubcomposeLayout
שהרכבתם מראש. (I857ea) נוספה הפונקציה
movableContentOf
שממירה lambda שניתן להרכבה ל-lambda שמעביר את המצב שלה, ואת הצמתים התואמים, לכל מיקום חדש שהיא נקראת אליו. כשהשיחה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני, ואם שיחה חדשה אל ה-Lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של השיחה החדשה. אם לא נוספת שיחה חדשה, המצב מוסר באופן סופי והמאזינים מקבלים הודעה.אם קוראים ל-
movableContentOf
lambda כמה פעמים באותו קומפוזיציה, נוצרים מצב וצמתים חדשים לכל קריאה. כשהקריאות יוצאות מהקומפוזיציה ונכנסות קריאות חדשות, המצב מועבר מהקריאות הראשונות שיוצאות לקריאות שנכנסות, לפי הסדר שבו הן נקראות. כל המידע שלא נדרש לשיחות חדשות יוסר באופן סופי. (Ib4850)האפליקציה
FontFamilyResolver
זמינה עכשיו דרךLocalFontFamilyResolver.current
נוספו
createFontFamilyResolver(context)
ו-createFontFamilyResolver(context, coroutineScope)
כדי ליצור פונקציות חדשות לפתרון בעיות של FontFamily מחוץ לשימוש ב-Compose.הפרמטרים Paragraph ו-MultiParagraph מקבלים עכשיו את הערך
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
מכיל עכשיו את הפונקציה לפתרון בעיות שמשמשת לפריסה הזו, והפונקציהTextLayoutResult.layoutInput.resourceLoader
הוצאה משימוש כי היא כבר לא בשימוש. (Id5a45, b/174162090)תמיכה בטעינת גופנים אסינכרונית ואופציונלית, עם התנהגות חלופית. הנתיב הזה משמש את Text ו-TextField, והוא נחשף דרך FontFamilyResolver
תמיכה בטעינה מראש של גופנים באמצעות
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
מאפשר להגדיר את ההקשר הגלובלי של קורוטינה שמשמש לטעינת גופנים אסינכרוניים. (I87fe8, b/174162090)נוסף
AndroidFont
, API חדש ברמה נמוכה שמאפשר לספק סוגים חדשים של מתארים של משאבי גופנים ב-Android. לדוגמה, טעינת גופנים משרת קצה ספציפי לאפליקציה, איתור אופציונלי של גופנים שהותקנו מראש במכשיר או טעינת גופן ממקור שלא מסופק על ידי מפעלי הגופנים הנוכחיים.הרחבת
Font.ResourceLoaded
API כדי לתמוך בטעינת גופנים אופציונלית ואסינכרונית. לא מומלץ למפתחי אפליקציות להשתמש בממשק ה-API הזה באופן ישיר. כדי להוסיף סוגים חדשים של גופנים, אפשר לעיין במאמרAndroidFont
.פונקציית התוסף
Font.AndroidResourceLoader
מאפשרת ליצורFont.ResourceLoader
כשלא מדובר בהרכבה.הוספנו את הפרמטר
loadingStrategy
לגופנים מבוססי-משאבים, כדי לאפשר טעינה אסינכרונית כשגופן המשאב מפנה ל-XML של גופנים להורדה. (Ie5aea, b/174162090)ה-constructor של
Typeface(FontFamily)
הוצא משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, וההורדה של גופנים להורדה עשויה להימשך עד 10 שניות. בגופנים שאפשר להוריד, הקריאה הזו עשויה להיחסם למשך 10 שניות. במקומה צריך להשתמש ב-FontFamilyResolver.preload
.האפשרות
fontResource(FontFamily): Typeface
הוצאה משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, וההורדה של גופנים להורדה עשויה להימשך עד 10 שניות. במקום זאת, אפשר להשתמש ב-FontFamilyResolver.preload
(If8e7c, b/174162090)ה-constructor של
SubcomposeLayoutState
שמקבל אתmaxSlotsToRetainForReuse
הוצא משימוש. במקום זאת, יש בונה חדש שמקבלSubcomposeSlotReusePolicy
– ממשק חדש שמאפשר שליטה מפורטת יותר על המשבצות שצריך לשמור לשימוש חוזר בעתיד. (I52c4d)הפונקציות HSV ו-HSL מוצגות ב-
Color
כ-API לא ניסיוני. מרחב הצבעים Oklab הוא עכשיו API ציבורי. (I08fb6, b/180731008)הוצא משימוש
AndroidComposeTestRule.AndroidComposeStatement
, שלא נועד להיות בממשק API ציבורי ולא עשה שום דבר בשבילכם בכל מקרה. (Ibc46b)שינוי שם פנימי של מחלקת kt שנוצרה (Ia0b9e, b/174162090)
הוסר
FontLoadingStrategy.values
(I42a9d, b/174162090)הכלי Global font loader נקרא עכשיו
FontFamilyResolver
. (I4f773, b/174162090)שימוש במערכת חדשה לטעינת גופנים במחשב. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
החזרותState<Any>
(I4406c, b/174162090)
תיקוני באגים
- תיבות טקסט יישארו מעל המקלדת כשהן ממוקדות והמקלדת מוצגת, כשמצב הקלט הרך הוא
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - ב-Desktop נעשה שימוש ב-composition local ל-
FontFamily.Resolver
- הגרסה למחשב של
FontLoader
הוצאה משימוש - מפעל חדש של
createFontFamilyResolver
במחשב (I6bbbb, b/174162090) - סוג הקלט של המקלדת הווירטואלית לא מהבהב יותר כשמעבירים את המיקוד בין שדות טקסט. (I1bf50, b/187746439)
גרסה 1.2.0-alpha02
26 בינואר 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
משוחרר. גרסה 1.2.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספו
Modifier.onRotaryScrollEvent()
ו-Modifier.onPreRotaryScrollEvent()
למכשירי Wear עם לחצן צדדי מסתובב (I18bf5, b/210748686) - הוספה של תוסף ניסויי
View.createLifecycleAwareRecomposer
(I0cde6)
External Contribution
-
PointerEvent.scrollDelta.y
הפוך עכשיו ב-Android (עכשיו הוא מחזיר 1 במקום -1 אם מטים את גלגל העכבר ימינה) (Ia9811)
גרסה 1.2.0-alpha01
12 בינואר 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
משוחרר. גרסה 1.2.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
- הוצא משימוש
FontFamily.canLoadSynchronously
. למאפיין הזה אין משמעות סמנטית. (Ica5ef) - נוסף שדה זהות ל-
CompositionData
ליצירת מזהים קבועים בכלי לבדיקת פריסות. (Ic116e) - נוספו מזהי מכשירים של Wear OS לרשימת מכשירי התצוגה המקדימה (I93232)
עדכונים של יחסי תלות
- עכשיו תלוי ב-Kotlin
1.6.10
.
גרסה 1.1
גרסה 1.1.1
23 בפברואר 2022
androidx.compose.ui:ui-*:1.1.1
משוחרר. גרסה 1.1.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תיקון
NullPointerException
ב-androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - תוקנה קריסה שנגרמה בגלל תוכן הלוח בזמן קריאה מהלוח ב-Android. (I06020, b/197769306)
- תוקנה בעיה בפריסה מימין לשמאל ב-
LazyVerticalGrid
(aosp/1931080, b/207510535)
גרסה 1.1.0
9 בפברואר 2022
androidx.compose.ui:ui-*:1.1.0
משוחרר. גרסה 1.1.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 1.0.0
- תמיכה יציבה באפקט הגלילה העודפת ב-Android 12
- שיפורים בגודל משטח המגע
- שימו לב: ב-Compose 1.0, רכיבי Material ירחיבו את שטח הפריסה שלהם כדי לעמוד בהנחיות הנגישות של Material בנוגע לגודל משטח המגע. לדוגמה, משטח המגע של לחצן יתרחב לגודל מינימלי של 48x48dp, גם אם הגדרתם שהלחצן יהיה קטן יותר. כך, התנהגות הרכיבים של Compose Material תהיה זהה להתנהגות הרכיבים של Material Design, ותוכלו ליהנות מהתנהגות עקבית אם תשתמשו גם ב-Views וגם ב-Compose. השינוי הזה גם מבטיח שכשתצרו את ממשק המשתמש באמצעות רכיבי Compose Material, הדרישות המינימליות לנגישות של משטחי מגע יתקיימו.
- תמיכה יציבה בפס ניווט
- העברה של מספר ממשקי API שהיו בשלב הניסוי לשלב היציב
- תמיכה בגרסאות חדשות יותר של Kotlin
גרסה 1.1.0-rc03
26 בינואר 2022
androidx.compose.ui:ui-*:1.1.0-rc03
משוחרר. גרסה 1.1.0-rc03 מכילה את הקומיטים האלה.
תיקוני באגים
- עדכון לתמיכה ב-Compose Material 1.1.0-rc03
גרסה 1.1.0-rc01
15 בדצמבר 2021
androidx.compose.ui:ui-*:1.1.0-rc01
משוחרר. גרסה 1.1.0-rc01 כוללת את הקומיטים האלה.
תיקוני באגים
- תוקן באג שגרם לכך שפעולות גלילה של נגישות לא הופיעו (I7cbfb)
- מעכשיו,
SemanticsNodeInteraction.captureToImage()
יפעל גם אםHardwareRenderer.isDrawingEnabled()
הואfalse
, על ידי הפעלתו למשך השיחה (Idf3d0)
גרסה 1.1.0-beta04
1 בדצמבר 2021
androidx.compose.ui:ui-*:1.1.0-beta04
משוחרר. גרסה 1.1.0-beta04 מכילה את הקומיטים האלה.
תכונות חדשות
- עודכן כך שיהיה תואם ל-Kotlin
1.6.0
שינויים ב-API
- בוצע ניקוי של ערכי null ב-
androidx.core.view
(I7078a, b/204917439) - נוספו ממשקי API ניסיוניים שמאפשרים למשתמשים לצרוך את PointerInputchange כמכלול או לבדוק אם הוא נצרך או לא. (I2e59d)
- הוספת תמיכה באירועים של גלגל הגלילה של העכבר בשכבת ממשק המשתמש. (Ia14eb, b/198214718)
- הוספת עומסים עודפים ניסיוניים של
Modifier.composed
שמקבלים מפתחות להשוואה לצורך שוויון, ועומדים בדרישות לדילוג על אופטימיזציות. (Ice799, b/205851704) - הטיסה של
ComposeNotIdleException
יוצאת עכשיו מException
במקום מThrowable
. הערה: המשמעות היא שסעיפי catch שתפסוException
עשויים לתפוס עכשיוComposeNotIdleException
, מה שלא קרה בעבר. (I9c217)
תיקוני באגים
- תוקנה בעיה שגרמה לכך שהידיות של הטקסט לא זזו כשחלו שינויים במיקום של ה-IME. (I25f2e)
גרסה 1.1.0-beta03
17 בנובמבר 2021
androidx.compose.ui:ui-*:1.1.0-beta03
משוחרר. גרסה 1.1.0-beta03 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף משנה חדש Modifier.onPlaced כדי לאפשר מעקב אחרי שינוי מיקום. לכן, אפשר לבצע שינויים נוספים בהיסט של משנה צאצא על סמך השינוי שנצפה במיקום. (I558fd)
- הוסרו
InjectionScope.flush()
ו-InjectionScope.dispose()
. הפעולה של ניקוי כל האירועים והסרת ההיקף מתבצעת עכשיו בסוף השיטה perform*Input() שנקראת, כמו קודם. (I2bed8) - הוסרו
MultiModalInjectionScope.Touch
ו-MultiModalInjectionScope.Mouse
. כדי להוסיף אירועי מגע ועכבר לתנועות מרובות מצבים, אפשר עכשיו להשתמש ב-MultiModalInjectionScope.touch()
וב-MultiModalInjectionScope.mouse()
. שתי הפונקציות האלה מקבלות ביטוי למדא עם היקף הנמען של המצב הזה. (Idde18)
תיקוני באגים
- ערך ברירת המחדל של
durationMillis
ב-TouchInjectionScope.swipeWithVelocity
מחושב עכשיו כך שההחלקה תהיה אפשרית. (I19deb)
גרסה 1.1.0-beta02
3 בנובמבר 2021
androidx.compose.ui:ui-*:1.1.0-beta02
משוחרר. גרסה 1.1.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף ממשק API ניסיוני של BringIntoView שמאפשר לשלוח בקשה להורים כדי שיגללו כדי להציג פריט (Ib918d, b/195353459)
- ממשקי API חדשים לאנימציה לתמיכה בכלים. הם מאפשרים לכלים לבדוק את האנימציות ואת ההגדרות שלהן במעברים. (I4116e)
External Contribution
- נוסף Modifier.pointerHoverIcon (I95f01)
גרסה 1.1.0-beta01
27 באוקטובר 2021
androidx.compose.ui:ui-*:1.1.0-beta01
משוחרר. גרסה 1.1.0-beta01 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף ממשק API ניסיוני
BringIntoView
שמאפשר לשלוח בקשה להורים כדי שהם יגללו את המסך ויציגו פריט מסוים (Ib918d, b/195353459) - ממשקי API חדשים לאנימציה לתמיכה בכלים. הם מאפשרים לכלים לבדוק את האנימציות ואת ההגדרות שלהן במעברים. (I4116e)
גרסה 1.1.0-alpha06
13 באוקטובר 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
משוחרר. גרסה 1.1.0-alpha06 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרת
ExperimentalComposeUiApi
מהחשבוןViewRootForInspector
ומ-LayoutInfo.ownerViewId
(I5c2e3) - נוספה פונקציית עומס יתר ללא ילדים עבור Layout, עם יעילות משופרת (Ib0d9a)
- הוסר
InternalCompilerApi
משיטות של Composer שנדרשות לקריאה בין מודולים (I1aa0b) - הפונקציה
SemanticsNodeInteraction.performSemanticsAction
מחזירה עכשיו אתSemanticsNodeInteraction
שעליו בוצעה הקריאה לפונקציה. (I9e5db) - נוסף LocalInputModeManager CompositionLocal כדי לזהות TouchMode/NonTouchMode. (I6a83c, b/175899786)
- נוספה
viewConfiguration: ViewConfiguration
אלLayoutInfo
כדי לאפשר לצרכנים לקבל את הערך הנכון עבור דברים כמו זמן קצוב לתפוגה של לחיצה ארוכה. (I76ca6)- נוספה האפשרות
viewConfiguration: ViewConfiguration
ל-InjectionScope
כדי לאפשר לבדיקות להתאים את הזרקת הקלט על סמך דברים כמו זמן קצוב לתפוגה של לחיצה ארוכה או טווח תנועה של מגע. - השתנה משך הזמן שמוגדר כברירת מחדל ללחיצה ארוכה וללחיצה כפולה, גם עבור קלט מגע וגם עבור קלט עכבר, כך שהוא מבוסס על הערכים ב-
InjectionScope.viewConfiguration
.
- נוספה האפשרות
- הטמעה של ExposedDropdownMenu על סמך ExposedDropdownMenuBox עם TextField ו-DropdownMenu בפנים (If60b2)
- המאפיין dismissOnOutsideClick נוסף ל-PopupProperties והחליף את dismissOnClickOutside שהוצא משימוש. הנכס החדש מקבל את מיקום הקליק ואת גבולות העוגן, וכך מאפשר שליטה מדויקת יותר בשאלה אם צריך להפעיל את onDismissRequest או לא. לדוגמה, זה יכול להיות שימושי כדי למנוע סגירה של העוגן במקרה של מגע בעוגן.
- הפונקציה updateAndroidWindowManagerFlags נוספה ל-PopupProperties, ומציעה שליטה ברמה נמוכה על הדגלים שהחלון הקופץ מעביר ל-WindowManager של Android. הפרמטר של ה-lambda יהיה הדגלים שמחושבים מהערכים של PopupProperties שיוצרים דגלים של WindowManager: למשל focusable. התוצאה של ה-lambda תהיה הדגלים הסופיים שיועברו אל Android WindowManager. כברירת מחדל, הפונקציה updateAndroidWindowManagerFlags לא משנה את הערכים של הדגלים שחושבו מהפרמטרים. צריך להשתמש ב-API הזה בזהירות, רק במקרים שבהם יש דרישות מאוד ספציפיות לגבי אופן הפעולה של החלון הקופץ. (I6e9f9)
- הפונקציה
Recomposer.state
הוצאה משימוש והוחלפה בפונקציהRecomposer.currentState
כדי לשנות את הסוג שלה ל-StateFlow (Ic2ab3, b/197773820) - הוספת את
flush()
ואתdispose()
אלInjectionScope
. משתמשים בהן כשרוצים לנקות את כל האירועים שהוכנסו לתור באופן מיידי, וכשרוצים להשמיד את ההיקף, בהתאמה. (Ifb73a) - נוסף
performScrollToNode(matcher: SemanticsMatcher)
שגורם לגלילה של מאגר עם אפשרות גלילה לתוכן שתואם לשיטת ההתאמה שצוינה. (Ic1cb8) -
InjectionScope
כולל עכשיו אתDensity
, כך שאפשר להמיר בקלות בין יחידות px ו-dp ב-performTouchInput
ובמוצרים נוספים של Google. (I8fe1f)
תיקוני באגים
- AndroidView מעביר עכשיו את LocalLifecycleOwner ואת LocalSavedStateRegistryOwner לתצוגה שלו באמצעות ViewTreeLifecycleOwner ו-ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- תיקון של WearOS SwipeToDismissBox שלפעמים לא מטפל בהחלקות. (I9387e)
- ברירת המחדל של הזמן בין אירועי קלט מוזרקים השתנתה מ-10ms ל-16ms. הדבר עלול לשנות את תוצאות הבדיקות שמבצעות מחוות קלט, כמו החלקה ספציפית. (I829fd)
גרסה 1.1.0-alpha05
29 בספטמבר 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
משוחרר. גרסה 1.1.0-alpha05 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספה תמיכה בתקשורת בין משנים (Id5467, b/198826874)
- הוספנו מצביעים היסטוריים ניסיוניים ל-PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- הוספת את
density: Density
ואתlayoutDirection: LayoutDirection
אלLayoutInfo
. כך צרכניLayoutInfo
יכולים לפרש את המאפיינים והמיקום שנחשפים ב-LayoutInfo
כראוי. (I002f1) - הוספנו תמיכה ניסיונית בהחדרה של אירועי עכבר. משתמשים ב-
performMouseInput
כדי להתחיל לשלוח אירועי עכבר, או שולחים אירועי עכבר דרך המאפייןMouse
שלMultiModalInjectionScope
במהלך תנועת קלט מרובת מצבים עםperformMultiModalInput
. מידע נוסף על ה-API הזמין מופיע במאמרMouseInjectionScope
. (Iaa4a8, b/190493367)
תיקוני באגים
- תוקנה תמיכת הנגישות ברכיבים שניתן לגלול בהם (גם כאלה שנטענים באופן עצלני וגם כאלה שלא) בהקשר של גלילה (I6cdb0)
- שיפור של
TouchInjectionScope.swipeWithVelocity
. הוא מקבל עכשיו מגוון רחב יותר של משתני קלט, ויציע שינויים בקלט אם לא ניתן ליצור תנועת החלקה (I40fbe, b/182477143)
גרסה 1.1.0-alpha04
15 בספטמבר 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
משוחרר. גרסה 1.1.0-alpha04 מכילה את הקומיטים האלה.
שינויים ב-API
-
PointerEvent
כולל עכשיוPointerEventType
לתמיכה באירועי ריחוף. (I091fa) - מאפשרים לילדים לקבל קלט מצביע מחוץ לגבולות הקלט של המצביע של ההורה. הורים יכולים ליירט את הקריאות האלה באמצעות הנכס PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- הוצאו משימוש
performGesture
ו-GestureScope
, שהוחלפו ב-performTouchInput
וב-TouchInjectionScope
. (Ia5f3f, b/190493367) - הוספנו את
touchBoundsInRoot
אלSemanticsNode
, שכולל את הגודל המינימלי של משטח המגע, כדי שמפתחים יוכלו לוודא שמשטחי המגע עומדים בדרישות המינימליות של נגישות. (I2e14b, b/197751214) - ביצוע מחדש של הטמעה של inspectable (I927bc, b/191017532)
- שם הפרמטר של inspectable שונה כדי להתאים לפרמטר המורכב (I3a482, b/191017532)
השקנו את
performTouchInput
ו-TouchInjectionScope
כתחליף ל-performTouchInput
ו-TouchInjectionScope
, כדי לפתוח את האפשרות לשימוש באמצעים אחרים (כמו עכבר).ל-
TouchInjectionScope
יש את אותן שיטות כמו ל-GestureScope
, מלבדmovePointerTo
ו-movePointerBy
, ששמותיהן שונו ל-updatePointerTo
ו-updatePointerBy
. כל שאר השיטות זהות.ההתנהגות של
TouchInjectionScope
כמעט זהה לזו שלGestureScope
, עם שני הבדלים קטנים:- כששולחים אירוע down בזמן שהסמנים הוזזו בלי לשלוח אירוע move (במילים אחרות, נעשה שימוש ב-
updatePointerTo()
, אבל לא ב-move()
, ואז מופעלdown()
), ההטמעה הקודמת הייתה מקדמת את זמן האירוע ושולחת אירוע move לפני שליחת אירוע down. ההטמעה החדשה עדיין שולחת את אירוע ההעברה, אבל לא מקדמת את זמן האירוע בתרחיש הספציפי הזה. - כששולחים אירוע up בזמן שהסמנים הוזזו בלי לשלוח אירוע move (בדומה למה שמתואר למעלה), ההטמעה הקודמת הייתה מקדמת את זמן האירוע ושולחת אירוע move לפני שליחת אירוע up. ההטמעה החדשה לא עושה את זה: המיקומים החדשים של מצביעי העכבר יבואו לידי ביטוי רק דרך אירוע ההעלאה.
לבסוף,
TouchInjectionScope
מציגה שיטה חדשהcurrentPosition(pointerId: Int)
לקבלת המיקום הנוכחי של הסמן הנתון. (If1191, b/190493367)- כששולחים אירוע down בזמן שהסמנים הוזזו בלי לשלוח אירוע move (במילים אחרות, נעשה שימוש ב-
תיקוני באגים
- מאפשרים לקליפ להרחיב את גבולות יעד המגע מעבר לאזור הקליפ למטרות של יעד מגע מינימלי. (I43e10, b/171509422)
- נוספה תמיכה בגלילה מוגזמת במכשירי Android 12. (Iccf3c, b/171682480)
גרסה 1.1.0-alpha03
1 בספטמבר 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
משוחרר. גרסה 1.1.0-alpha03 מכילה את הקומיטים האלה.
תכונות חדשות
- העדכון של Compose
1.1.0-alpha03
תלוי ב-Kotlin1.5.30
. (I74545)
שינויים ב-API
- נוסף
Modifier.inspectable
כדי לעטוף משנים אחרים. (I1909b, b/191017532) - הוספנו את
BlurredEdgeTreatment
API כדי לפשט את תרחישי השימוש בטשטוש ולשלב אותם עם שילובים נפוצים יותר של דגלי קליפים ו-TileModes. ברוב תרחישי השימוש, התוכן המטושטש מוצג מחוץ לגבולות התוכן המקורי, והאזורים שמחוץ לגבולות האלה מטושטשים בשחור שקוף. לחלופין, התוכן נחתך לגבולות התוכן, והדגימה של הגבול הקרוב ביותר מתבצעת עבור ליבות הטשטוש שחורגות מגבולות התוכן. (I6b4b7, b/166927547) - נוספה תמיכה ב-RenderEffect ב-Compose Desktop. הוספנו את OffsetEffect ואת modifier הטשטוש כדרך פשוטה להוסיף אפקטים חזותיים של טשטוש לחלק מההיררכיה של הקומפוזיציה. (I0f6aa, b/166927547)
- השקנו את RenderEffect API שאפשר להגדיר אותו באופן אופציונלי ב-
Modifier.graphicsLayer
כדי לשנות את התוכן של השכבה עצמה. אפשר להשתמש בזה כדי לטשטש את התוכן של רכיבים שאפשר להרכיב ושל רכיבי צאצא שאפשר להרכיב בהיררכיית הרכבה. (I47c4d, b/166927547) - ל-AwaitPointerEventScope יש עכשיו את הפונקציות withTimeout() ו-withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- הוספנו גודל מינימלי של משטח המגע ל-ViewConfiguration לשימוש בסמנטיקה ובקלט של מצביע, כדי להבטיח נגישות. (Ie861c)
- הוספת תמיכה ב-TileMode.Decal, שימושי להגדרת התנהגות הקצוות עבור RenderEffects מבוססי-טשטוש. (I7e8ed, b/166927547)
-
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ו-hasScrollToKeyAction
הם עכשיו API יציב (I142ae, b/178483889) - נוספה שיטת בדיקה לקבלת הגבולות של החיתוך. (I6b28e)
תיקוני באגים
- הוסרה השיטה isBounded מ-BlurredEdgeTreatment לטובת בדיקה מפורשת אם פרמטר הצורה הוא null. (I85d68)
גרסה 1.1.0-alpha02
18 באוגוסט 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
משוחרר. גרסה 1.1.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- ל-PointerEvent יש עכשיו תמיכה בקריאה של מצב לחצן העכבר ומצב מקש הצירוף במקלדת. (I6310c, b/180075467)
- עכשיו, מחוות שמוזרקות משתמשות בזמן של MainTestClock כמקור האמת לזמן. השעה הנוכחית של אירועים שמוזרקים ב-
performGesture
תאותחל לשעה הנוכחית של MainTestClock. (Ifb364, b/192064452) - נוסף בנאי
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - נוספה המחלקה DpSize (I7abb1, b/194219828)
תיקוני באגים
- עדכנו את ניתוח ה-XML של הגרפיקה הווקטורית כדי לתמוך ב-ColorStateLists כמאפייני גוון צבע בסיסיים ב-VectorDrawables. (I86915, b/195668138)
גרסה 1.1.0-alpha01
4 באוגוסט 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
משוחרר. גרסה 1.1.0-alpha01 מכילה את הקומיטים האלה.
שינויים ב-API
-
RelocationRequester.bringIntoView
מקבל עכשיו מלבן כפרמטר, שמאפשר לנו להציג חלק מפריט שאפשר להרכיב (Ice2c5, b/194330245) -
AnimatedImageVector
וממשקי ה-API שקשורים אליו נמצאים עכשיו במודולandroidx.compose.animation:animation-graphics
החדש. (I60873) - נוספה התאמה ניסיונית לטיפול בבקשות להעברה. (I65a97, b/178211874)
הוספנו את BrushPainter API כדי לתמוך בציור של Brush שרירותי בתוך Painter, בדומה ל-ColorPainter
עדכון של Brush API כך שיכלול פרמטר של גודל פנימי שנשלחת לגביו שאילתה ב-BrushPainter (Ia2752, b/189466433)
השיטה DrawScope#drawImage עודכנה כך שתצרוך פרמטר FilterQuality אופציונלי, בנוסף לפרמטרים הקיימים של מקור ושל יעד. האפשרות הזו שימושית לפיקסל ארט שנועד להיות מפוקסל כשמגדילים אותו, כדי ליצור אמנות שמבוססת על פיקסלים. בוצע עדכון של BitmapPainter + Image composable כדי שיכללו גם פרמטר אופציונלי של FilterQuality (Ie4fb0, b/180311607)
הוספנו את השיטה
GestureScope.advanceEventTime
כדי לתת יותר שליטה בתזמון של אירועים במחוות (Ibf3e2)
תיקוני באגים
- כדי לשפר את התמיכה בשרשור של משני ציור, צריך לוודא שההטמעה של Modifier.paint קוראת ל-drawsContent.
בעבר, הפונקציה Modifier.paint הייתה אמורה להיות צומת עלים בשרשרת של Modifiers, אבל בגלל זה אי אפשר היה להגדיר אותה במיכל שאפשר להרכיב (למשל, box) או להוסיף לה קישוטים נוספים כמו
Modifier.paint().border()
. הוספנו את הקריאה Modifier.paint ל-drawContent אחרי ציור התוכן של האובייקט painter שצוין, כדי לשפר את העקביות בהתנהגות של התבנית modifier. (Ibb2a7, b/178201337, b/186213275) - תיבות הדו-שיח פועלות עכשיו בהתאם להתנהגות של שינוי הגודל בפלטפורמה. כדי לשנות את אופן הפעולה הזה, צריך להגדיר את הארגומנט
usePlatformDefaultWidth
לערך false. (Iffaed, b/192682388) - הועבר
InfiniteAnimationPolicy
אל :compose:ui (I5eb09, b/160602714) - הגלילה באמצעות פעולות סמנטיות ברשימות עצלות וברכיבי גלילה רגילים מונפשת עכשיו (Id9066, b/190742024)
גירסה 1.0
גרסה 1.0.5
3 בנובמבר 2021
androidx.compose.ui:ui-*:1.0.5
משוחרר. גרסה 1.0.5 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה קריסה במעקב אחר מופעים של derivedStateOf. (aosp/1792247)
גרסה 1.0.4
13 באוקטובר 2021
androidx.compose.ui:ui-*:1.0.4
משוחרר. גרסה 1.0.4 מכילה את הקומיטים האלה.
עדכונים של יחסי תלות
- העדכון כולל תלות ב-Kotlin
1.5.31
גרסה 1.0.3
29 בספטמבר 2021
androidx.compose.ui:ui-*:1.0.3
משוחרר. גרסה 1.0.3 מכילה את הקומיטים האלה.
עדכונים של יחסי תלות
- העדכון כולל תלות ב-Kotlin
1.5.30
גרסה 1.0.2
1 בספטמבר 2021
androidx.compose.ui:ui-*:1.0.2
משוחרר. גרסה 1.0.2 מכילה את הקומיטים האלה.
העדכון כולל תמיכה בגרסת Compose 1.0.2
. Compose 1.0.2
עדיין תואם ל-Kotlin 1.5.21
.
גרסה 1.0.1
4 באוגוסט 2021
androidx.compose.ui:ui-*:1.0.1
משוחרר. גרסה 1.0.1 מכילה את הקומיטים האלה.
עדכונים של יחסי תלות
- העדכון כולל תלות ב-Kotlin
1.5.21
.
גרסה 1.0.0
28 ביולי 2021
androidx.compose.ui:ui-*:1.0.0
משוחרר. גרסה 1.0.0 מכילה את הקומיטים האלה.
התכונות העיקריות של גרסה 1.0.0
זו הגרסה היציבה הראשונה של Compose. פרטים נוספים זמינים בבלוג הרשמי של Compose.
בעיות מוכרות
אם אתם משתמשים ב-Android Studio Bumblebee Canary 4 או ב-AGP
7.1.0-alpha04
/7.1.0-alpha05
, יכול להיות שתיתקלו בקריסה הבאה:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
כדי לפתור את הבעיה, צריך להגדיל באופן זמני את minSdkVersion ל-24 ומעלה בקובץ
build.gradle
. נפתור את הבעיה הזו בגרסה הבאה של Android Studio Bumblebee וב-AGP7.1
. (b/194289155)
גרסה 1.0.0-rc02
14 ביולי 2021
androidx.compose.ui:ui-*:1.0.0-rc02
משוחרר. גרסה 1.0.0-rc02 מכילה את הקומיטים האלה.
תיקוני באגים
- תיבות הדו-שיח פועלות עכשיו בהתאם להתנהגות של שינוי הגודל בפלטפורמה. כדי לשנות את אופן הפעולה הזה, צריך להגדיר את הארגומנט
usePlatformDefaultWidth
לערך false. (Iffaed, b/192682388)
גרסה 1.0.0-rc01
1 ביולי 2021
androidx.compose.ui:ui-*:1.0.0-rc01
משוחרר. גרסה 1.0.0-rc01 כוללת את הקומיטים האלה.
תכונות חדשות
- פיצול מודול ui-tooling ל-
ui-tooling
ול-ui-tooling-preview
(Iefa28, b/190649014)
שינויים ב-API
- הוסרו התכונות הניסיוניות שיצאו משימוש
FocusManager#moveFocusIn
ו-FocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) - Canvas תומך עכשיו בפרמטר contentDescription לצורך נגישות. (Ib547c)
- השם של
useDefaultMaxWidth
ב-PopupProperties
שונה ל-usePlatformDefaultWidth
. (I05710) - עכשיו אפשר להשתמש ברוחב המסך המלא בתיבות דו-שיח. (I83929, b/190810877)
- נוספה תמיכה ניסיונית בייצוגים של צבעי HSV ו-HSL. (Id7cf8, b/180731008)
שינויים בהתנהגות
- Compose
@Preview
מספק עכשיוLocalActivityResultRegistryOwner
שמאפשר לכם לראות תצוגה מקדימה של רכיבי Composables שמשתמשים בממשקי API כמוrememberLauncherForActivityResult()
שתלויים בקיום הבעלים. (Ib13d1, b/185693006) - Compose
@Preview
כולל עכשיוLocalOnBackPressedDispatcherOwner
שמאפשר לכם לראות תצוגה מקדימה של רכיבי Composable שמשתמשים בממשקי API כמוBackHandler
שתלויים בקיום הבעלים. (Ia1c05, b/185693006)
תיקוני באגים
- הועבר
InfiniteAnimationPolicy
אלandroidx.compose.ui:ui
(I5eb09, b/160602714) - הסרנו באופן זמני את AnimatedImageVector כדי לשנות את מבנה המודול. (I41906, b/160602714)
גרסה 1.0.0-beta09
16 ביוני 2021
androidx.compose.ui:ui-*:1.0.0-beta09
משוחרר. גרסה 1.0.0-beta09 מכילה את הקומיטים האלה.
שינויים ב-API
- שינוי enum Role ו-LiveRegionMode למחלקות מוטבעות עם בנאי פרטי (Id1890)
- ההגדרה KeyboardCapitalization מומרת למחלקה מוטבעת. (Id5a1c)
- משנים את HapticFeedbackType למחלקה מוטמעת. (I255ec)
- Modifier.pointerInteropFilter הוא @ExperimentalComposeUiApi. (Iede6c)
- המחלקות TextAlign, FontSynthesis ו-TextDirection הן עכשיו מחלקות מוטבעות. (I212fe)
- המאפיין TextOverflow משתנה למחלקה מוטבעת. (I433af)
- FontStyle היא עכשיו מחלקה מוטבעת. (I9e48b)
תיקוני באגים
- הקבועים העיקריים הם @ExperimentalComposeUiApi בשלב הזה. קוד צריכה יכול להצהיר על קבועים פרטיים לפני ייצוב. (Ia5d48)
- מעכשיו אפשר להריץ בדיקות של כתיבת הודעות ב-Robolectric. המגבלות הבאות זוהו עד כה:
- אין מפת סיביות מקורית, ולכן
ImageBitmap()
מוביל ל-NullPointerException. - אין ציור, ולכן הפונקציה
captureToImage()
תמתין ללא הגבלת זמן למעבר הציור הבא (כלומר, היא תיכנס למצב של חסימה הדדית). - לא נטען גופן, ולכן כל טקסט יימדד בצורה שגויה. לכל התווים יש גובה קבוע של כ-20 פיקסלים ורוחב של פיקסל אחד.
-
ComposeTestRule.waitUntil {}
לא מפעיל את ה-thread הראשי בזמן ההמתנה, ולכן הוא זהה ל-ComposeTestRule.mainClock.advanceTimeUntil {}
צפוי שבעתיד יזוהו עוד מגבלות. (I284fa)
- אין מפת סיביות מקורית, ולכן
נוספו כללי פרופיל
בגרסה הזו נוספו כללי פרופיל למודולים הבאים של כתיבת הודעות (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
מהם כללי פרופיל?
כללי הפרופיל של ספרייה מצוינים בקובץ טקסט
baseline-prof.txt
שנמצא בתיקייהsrc/main
או בתיקייה מקבילה. בכל שורה בקובץ מצוין כלל, ובמקרה הזה כלל הוא תבנית להתאמה לשיטות או למחלקות בספרייה. התחביר של הכללים האלה הוא קבוצת-על של פורמט פרופיל ART שקריא לבני אדם, שמשמש כשמשתמשים ב-adb shell profman --dump-classes-and-methods ...
. הכללים האלה יכולים להיות באחת משתי צורות, כדי לטרגט שיטות או מחלקות.כלל של method ייראה כך:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
כלל כיתה יכלול את התבנית הבאה:
<CLASS_DESCRIPTOR>
כאן
<FLAGS>
הוא אחד או יותר מהתוויםH
,S
ו-P
כדי לציין אם לסמן את השיטה הזו כ'פופולרית', 'הפעלה' או 'אחרי הפעלה'.השדה
<CLASS_DESCRIPTOR>
הוא המתאר של המחלקה שאליה שייכת השיטה המטורגטת. לדוגמה, למחלקהandroidx.compose.runtime.SlotTable
יהיה דסקריפטור שלLandroidx/compose/runtime/SlotTable;
.
<METHOD_SIGNATURE>
הוא החתימה של ה-method, והוא כולל את השם, סוגי הפרמטרים וסוגי הערכים המוחזרים של ה-method. לדוגמה, לשיטהfun isPlaced(): Boolean
ב-LayoutNode
יש חתימהisPlaced()Z
.התבניות האלה יכולות להכיל תווים כלליים (
**
,*
ו-?
) כדי שכלל יחיד יכלול כמה שיטות או מחלקות.
מה עושים הכללים?
שיטה עם הדגל
H
מציינת שהשיטה הזו היא שיטה 'פעילה' וצריך לקמפל אותה מראש.שיטה עם הדגל
S
היא שיטה שמופעלת בהפעלה, וצריך לבצע קומפילציה שלה מראש כדי להימנע מעלות הקומפילציה והפרשנות של השיטה בזמן ההפעלה.שיטה עם הדגל
P
מציינת שהיא שיטה שמופעלת אחרי ההפעלה.אם מחלקה מופיעה בקובץ הזה, המשמעות היא שהיא נמצאת בשימוש במהלך ההפעלה, ולכן צריך להקצות לה מראש מקום ב-heap כדי להימנע מעלות הטעינה של המחלקה.
איך זה עובד?
- ספריות יכולות להגדיר את הכללים האלה, שייארזו בארטיפקטים של AAR. כשיוצרים אפליקציה שכוללת את הארטיפקטים האלה, הכללים האלה משולבים יחד, והכללים המשולבים משמשים ליצירת פרופיל ART בינארי קומפקטי שספציפי לאפליקציה. לאחר מכן, מערכת ART יכולה להשתמש בפרופיל הזה כשהאפליקציה מותקנת במכשירים, כדי לבצע קומפילציה מראש של קבוצת משנה ספציפית של האפליקציה ולשפר את הביצועים שלה, במיוחד בהפעלה הראשונה. הערה: הפעולה הזו לא תשפיע על אפליקציות שאפשר לבצע בהן ניפוי באגים.
גרסה 1.0.0-beta08
2 ביוני 2021
androidx.compose.ui:ui-*:1.0.0-beta08
משוחרר. גרסה 1.0.0-beta08 מכילה את הקומיטים האלה.
שינויים ב-API
- הסוג
NestedScrollSource
enum מוחלף במחלקה מוטמעת. (Ie321b, b/187055290) - השם של
FocusManager.clearFocus(forcedClear = true)
שונה לFocusManager.clearFocus(force = true)
(Ia0c41) - בוצע רפקטורינג של השימוש בסוגי enum כדי להשתמש במחלקות מוטבעות, כדי למנוע בעיות בשימוש במשפטי when מקיפים כשמוסיפים ערכי enum חדשים. (I2b5eb)
- הסרת
@ExperimentalComposeUiApi
מהחשבוןPopupProperties
. (I01fa6) - הערך
PointerType
השתנה מספירה למחלקה מוטבעת (If5058) - המאפיינים הסמנטיים ContentDescription ו-Text הם כבר לא ערכים יחידים אלא רשימות. כך אפשר למזג אותם כמו שהם במקום לשרשר אותם. בנוסף, סיפקנו ממשקי API משופרים לבדיקה כדי להשתמש בשינויים האלה (Ica6bf, b/184825850)
- הפרמטר
Modifier.focusModifier()
הוצא משימוש והוחלף בפרמטרModifier.focusTarget()
(I6c860) - הפונקציות
Modifier.onSizeChanged()
ו-Modifier.onGloballyPositioned()
כבר לא מוטמעות (I727f6, b/186109675) - הסוג
KeyboardType
enum מוחלף במחלקה מוטמעת. (I73045, b/187055290) - החלפנו את ה-enum
FocusState
בממשקFocusState
(Iccc1a, b/187055290) - ה-enum ImeAction מוחלף במחלקה מוטבעת. (I18be5, b/187055290)
-
PlaceholderVerticalAlign
מומר לכיתה מוטמעת. (If6290) - TextUnitType הוא עכשיו מחלקה מוטמעת. (I4cba9)
- פונקציות
AnnotatedString.withAnnotation
הן עכשיו ExperimentalTextApi במקום ExperimentalComposeApi. (I0cd0a)- הבונה של TextUnit עם TextUnitType הוא עכשיו ExperimentalTextApi במקום ExperimentalComposeApi.
תיקוני באגים
- תוקן הבאג שהוצג בגרסה beta07, שבו פריטים של LazyColumn/Row הוצגו באופן חלקי אחרי הגלילה (I8c9ac, b/188566058)
- החל מעכשיו, הרכיבים
detectDragGesures
, detectVerticalGestures
ו-detectHorizontalGestures
יבצעו את השינוי במיקום באופן אוטומטי, ולא יהיה צורך להפעיל את הפונקציה change.consumePositionChange בקריאות החוזרות של onDrag (I42fc4, b/185096350, b/187320697) - תוקנה הבעיה ב-LayoutModifiers שגרמה לכך שלא הוצגו קווי יישור. תוקן באג שגרם לכך שהמערכת לא מדדה מחדש את ההורה כשקווי היישור של הילדים השתנו. (I4401f, b/174315652)
-
Modifier.onGloballyPositioned()
השתנה כך שהוא מדווח על הקואורדינטות של המשנה הזה בשרשרת המשנים, ולא על קואורדינטות הפריסה אחרי החלת כל המשנים. המשמעות היא שעכשיו סדר המאפיינים משפיע על הקואורדינטות שידווחו. (Ieb67d, b/177926591)
גרסה 1.0.0-beta07
18 במאי 2021
androidx.compose.ui:ui-*:1.0.0-beta07
משוחרר. גרסה 1.0.0-beta07 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף ממשק
ViewRootForInspector
לשימוש בכלי לבדיקת מודעות (Ib70df) -
SubcomposeLayoutState
תומך עכשיו בהגדרת מספר המשבצות שאפשר לעשות בהן שימוש חוזר. הפריסה תשמור על עד מספר המשבצות הזה פעילות במקום להשליך אותן כדי לעשות בהן שימוש חוזר בפעם הבאה שנצטרך משבצת חדשה (Ieb981) - ה-enum KeyEventType מוחלף במחלקה מוטבעת. (Id670a, b/187055290)
- הסוג
FocusDirection
enum מוחלף במחלקה מוטמעת. (Ib6d03, b/187055290, b/184086802) - הוספנו אפשרות להעביר את הסטטוס של SubcomposeLayout, שמאפשרת להכין מראש את התוכן ל-slotId נדרש. כך, המדידה הבאה תהיה מהירה יותר, כי כשננסה להכין מראש עם ה-slotId הנתון בפעם הבאה, לא יהיה צורך בהרכבה. (I42580, b/184940225)
- נוספה נקודת אחיזה לבחירת קליפ (Iff80d, b/183408447)
- הוסרו ממשקי API שלא נמצאים בשימוש שקשורים לתמיכה ב-LayoutInspector. (I2ac78)
תיקוני באגים
- הקומפוננטות LazyColumn/Row ישמרו עכשיו עד 2 פריטים שהיו גלויים בעבר כפעילים (לא יבוטלו), גם אם הם כבר לא גלויים בגלל גלילה. כך הרכיב יכול לעשות שימוש חוזר בתתי-הקומפוזיציות הפעילות כשצריך ליצור פריט חדש, מה שמשפר את ביצועי הגלילה. (Ie5555)
- הערכים
TextGeomerticTransform
ו-TextDecoration
ב-AnnotatedString
יוחלו כמו שהם. (I61900, b/184760917)
גרסה 1.0.0-beta06
5 במאי 2021
androidx.compose.ui:ui-*:1.0.0-beta06
משוחרר. גרסה 1.0.0-beta06 כוללת את הקומיטים האלה.
שינויים ב-API
- פתרון התנגשות עם תנועת ניווט (I1145e)
- מעכשיו
@ComposeCompilerApi
(Iab690)@RequiresOptIn
- נוספו ממשקי API של נגישות CollectionInfo ו-CollectionItemInfo שמאפשרים לסמן אוסף ופריטים בו לשירותי נגישות (Id54ef, b/180479017)
- נוספה האפשרות
SemanticsActions.ScrollToIndex
לגלילה ברשימה עם פריטים ממוספרים לפריט עם מספר מסוים, ונוספה האפשרותSemanticsProperties.IndexForKey
לקבלת המספר של פריט ברשימה עם פריטים ממוספרים. שתי הפעולות מיושמות על ידי LazyList.- נוספו הפונקציות
SemanticsNodeInteraction.performScrollToIndex
שגוללת רשימה לאינדקס שצוין, ו-SemanticsNodeInteraction.performScrollToKey
שגוללת רשימה לפריט עם המפתח שצוין. (I4fe63, b/178483889, b/161584524)
- נוספו הפונקציות
- נוסף ownerViewId ל-GraphicLayerInfo (I19f62)
- נוספו עומסים יתרים של Font() כדי לטעון גופנים מנכסים, מקובץ ומ-FileDescriptor (I5d382)
- נוסף API לנגישות
error
שמאפשר לסמן צומת שמכיל קלט לא תקין (I12997, b/180584804, b/182142737) - נוספו
Font()
עומסים כדי לטעון גופנים מנכסים, מקובץ ומ-FileDescriptor (I43007) - תמיכה בשמירה של AnnotatedString ב-
TextFieldValue.Saver
. נוספו פונקציות כלי עזר שלaddTtsAnnotation
ו-withAnnotation אלAnnotatedString.Builder
(I8cbdc, b/178446304) - נוספה פונקציית constructor של TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
גרסה 1.0.0-beta05
21 באפריל 2021
androidx.compose.ui:ui-*:1.0.0-beta05
משוחרר. גרסה 1.0.0-beta05 מכילה את הקומיטים האלה.
שינויים ב-API
- נוספו התכונות הניסיוניות
FocusManager.moveFocus(In)
ו-FocusManager.moveFocus(Out)
(Ic5534, b/183746743) - נוסף API ניסיוני של
performTextInputSelection
(I2dcbb, b/178510628) - הממשק של
InputEventCallback
הוצא משימוש. אי אפשר היה להשתמש בממשק באף API ציבורי, ולא היה בו שימוש בקוד. (I34a02, b/184003208) - הפונקציה
TextLayoutResult/createTextLayoutResult
הוצאה משימוש. זו פונקציה ציבורית שלא נעשה בה שימוש, והיא נוספה לצורך בדיקה. הפונקציה לא עושה שום דבר שימושי בממשקי API של Compose text. הפונקציה הזו הוצאה משימוש ותוסר בהמשך. (I80413)
תיקוני באגים
- בעיות שפתרנו: פעולות גלילה של נגישות ב-
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
, accessibilityActionScrollUp
,accessibilityActionScrollRight
ו-accessibilityActionScrollDown
. במקום לגלול עד לסוף של אזור הגלילה, המערכת תגלול עכשיו מסך אחד בכיוון הנתון. (Ieccb0) - קבצי AndroidManifest מ-ui-test-manifest ומ-ui-tooling-data תואמים עכשיו ל-Android 12 (I6f9de, b/184718994)
גרסה 1.0.0-beta04
7 באפריל 2021
androidx.compose.ui:ui-*:1.0.0-beta04
משוחרר. גרסה 1.0.0-beta04 כוללת את הקומיטים האלה.
שינויים ב-API
- שינוי השם של
hideSoftwareKeyboard
ושלshowSoftwareKeyboard
ב-SoftwareKeyboardController
ל-hide()
ול-show()
בהתאמה.- סיפקנו את הממשק המלא של CompositionLocal עבור LocalSoftwareKeyboardController, כדי לאפשר את ההגדרה שלו (שימושי במיוחד בבדיקות) (I579a6)
- הוספנו API לנגישות של LiveRegion. אם הצומת מסומן כאזור פעיל, שירותי הנגישות יודיעו למשתמש באופן אוטומטי על השינויים בו (Idcf6f, b/172590946)
- הוצג TextOverflow.Visible. (Ic8f89)
תיקוני באגים
- תוקנה הבעיה שבה פריטים מסוג
LazyColumn
/LazyRow
שנמצאים בקצוות מוקמו באופן שגוי אחרי העברה מהירה (Ie4d13, b/183877420) -
AndroidViewBinding
מסיר עכשיו באופן תקין פרגמנטים שהורחבו באמצעותFragmentContainerView
כשמסירים אתAndroidViewBinding
מההיררכיה של יצירת ההודעה. (Ib0248, b/179915946) -
AndroidViewBinding
מקונן עכשיו בצורה נכונה פרגמנטים שהורחבו באמצעותFragmentContainerView
כש-ComposeView
נמצא בתוךFragment
, וכך נפתרות בעיות בשמירה ובשחזור של מצב הפרגמנטים האלה. (I70eb0, b/179915946) - התלות של Compose ViewBinding היא עכשיו ב-Fragment
1.3.2
, ועכשיו מוצגים באופן עקבי פרגמנטים שהורחבו באמצעותFragmentContainerView
אחרי שינויים בהגדרות. (I0743d, b/179915946)
גרסה 1.0.0-beta03
24 במרץ 2021
androidx.compose.ui:ui-*:1.0.0-beta03
משוחרר. גרסה 1.0.0-beta03 מכילה את הקומיטים האלה.
שינויים ב-API
- דחיית הבדיקה של התלויות ב-ViewTree של ComposeView (I8dbbf, b/182466548)
- נוספו פרמטרים אופציונליים
startX
/endX
ו-startY
/endY
לפונקציותswipeUp
/swipeDown
/swipeLeft
/swipeRight
ב-GestureScope
. (I49e2d, b/182063305)
גרסה 1.0.0-beta02
10 במרץ 2021
androidx.compose.ui:ui-*:1.0.0-beta02
משוחרר. גרסה 1.0.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף API חדש של
LocalSoftwareKeyboardController
composition local כדי להחליף את הממשק הקודם SoftwareKeyboardController ב-TextField. (I5951e, b/168778053) - נוסף API חדש של
LocalSoftwareKeyboardController
composition local כדי להחליף את הממשק הקודם SoftwareKeyboardController ב-TextField. (I84472, b/168778053) - הוסר
SemanticsMatcher
הבא:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- הסימון הבא
SemanticsMatchers
בוצע כ- @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- הוספנו את
SemanticsMatcher
הבאים:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
תיקוני באגים
- החלת הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
-
androidx.compose.ui:ui
כבר לא תלוי ב-AppCompat או ב-Fragment. אם אתם משתמשים ב-ComposeView באפליקציה שלכם, ואתם משתמשים ב-Fragment או ב-AppCompat, ודאו שאתם משתמשים ב-AppCompat 1.3+ או ב-Fragment 1.3+ – הגרסאות האלה נדרשות כדי להגדיר בצורה נכונה את הבעלים של מחזור החיים והמצב השמור שנדרשים ל-ComposeView. (I1d6fa, b/161814404) - תוקן באג שגורם ל-
rememberSaveable { mutableStateOf(0) }
לא לפעול כשמשתמשים בו בתוך יעד של navigation-compose. (I1312b, b/180042685, b/180701630) - נוסף API חדש של
LocalSoftwareKeyboardController
composition local כדי להחליף את הממשק הקודם SoftwareKeyboardController ב-TextField. (I658b6, b/168778053) - תוקנה שגיאת NoSuchElementException נדירה ב-
ComposeRootRegistry
'stearDownRegistry()
(Iddce1)
גרסה 1.0.0-beta01
24 בפברואר 2021
androidx.compose.ui:ui-*:1.0.0-beta01
משוחרר. גרסה 1.0.0-beta01 מכילה את הקומיטים האלה.
זו הגרסה הראשונה של Compose 1.0.0 Beta.
שינויים ב-API
- נוספה קראה חוזרת (callback) מסוג onStart אל
detectDragGestures
(I67269, b/179995594) - המשנים של גודל המאפיינים הפנימיים כבר לא ניסיוניים. (I15744)
- השם של MeasureBlocks שונה ל-MeasurePolicy, והוא הפך לממשק מהנה. ממשקי Layout API עודכנו או פושטו כדי להשתמש ב-MeasurePolicy. (Icab48, b/167662468, b/156751158)
- הטקסט
InteractionState
הוחלף בטקסט[Mutable]InteractionSource
- ממשקי המשתמש אחראים לפליטה ולאיסוף של אירועי אינטראקציה.
- במקום להעביר את
interactionState = remember { InteractionState() }
לרכיבים כמוButton
ו-Modifier.clickable()
, צריך להשתמש ב-interactionSource = remember { MutableInteractionSource() }
. - במקום:
Interaction.Pressed in interactionState
צריך להשתמש בפונקציות ההרחבה ב-InteractionSource, כמו InteractionSource.collectIsPressedAsState(). - בתרחישי שימוש מורכבים, אפשר להשתמש ב-InteractionSource.interactions כדי לצפות בזרם האינטראקציות. מידע נוסף זמין במסמכי התיעוד ובדוגמאות של InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- הוספת הממשק AccessibilityMananger ו-LocalAccessibilityMananger ב-CompositionLocals (I53520)
- הוסרו שיטות LayoutCoordinates שהוצאו משימוש. במקום המאפיין משתמשים בפונקציה למיקום בפריט האב ולגבולות בפריט האב (I580ed, b/169874631, b/175142755)
- החלפנו את הכינויים לסוגים בסוגים הבסיסיים:
-
ColorStop
נקרא עכשיוPair<Float, Color>
-
SpanStyleRange
נקרא עכשיו `AnnotatedString.Range -
ParagraphStyleRange
נקרא עכשיוAnnotatedString.Range<ParagraphStyle>
-
StringAnnotation
נקרא עכשיוAnnotatedString.Range<String>
- (I8dd1a)
-
- נוצר TextInputSession חדש לסשנים של קלט מרכיבי טקסט ברמה נמוכה, כמו CoreTextField. (I8817f, b/177662148)
- הקומפוננטה Placeable חושפת עכשיו את המאפיין measuredSize, שמייצג את הגודל שהפריסה של רכיב הצאצא נמדדה בפועל. יכול להיות שהגודל הזה לא עומד במגבלות המדידה. (Ib2729, b/172560206, b/172338608)
- הוספת משנה selectionGroup שמאפשר לסמן אוסף של רכיבי Tabs או RadioButtons למטרות נגישות (Ie5c29)
השדה
defaultFactory
עבורcompositionLocalOf
ועבורstaticCompositionLocalOf
הוא עכשיו חובה במקום אופציונלי.השינוי הזה מסיר שגיאת סוג פוטנציאלית עבור סוגים שאי אפשר להגדיר כ-nullable, שלא סופקה להם ברירת מחדל של factory. בעבר, הפעולה הזו הייתה מספקת הפניה לערך null עבור סוג שלא ניתן להגדיר כ-nullable.
בסוגים שניתן להגדיר בהם ערך null, כדאי לספק את
{ null }
כברירת המחדל של factory.אנחנו לא ממליצים להשתמש ב-locals עם סוגים שלא ניתן להגדיר להם ערך null, אלא אם אפשר לספק ערך ברירת מחדל הגיוני. אם אין ברירת מחדל הגיונית, פונקציית ה-lambda
defaultFactory
צריכה להחזיר חריגה. עם זאת, אם מתרחשת חריגה, הצרכנים של המשתנה המקומי יהיו תלויים בו באופן מרומז, והתלות הזו לא נאכפת על ידי מערכת הטיפוסים. (Ifbd2a)הוסרו שיטות שהוצאו משימוש ממודולים של ממשק משתמש (I646f6)
השם של מגבילי המידות השתנה. השמות של modifier.width/height/size שונו ל-requiredWidth/requiredHeight/requiredSize. השמות של Modifier.preferredWidth/preferredHeight/preferredSize שונו ל-width/height/size. (I5b414)
Modifier.tapGestureFilter
הוסר. במקום זאת, אתם צריכים להשתמש ב-Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)הסרה של צריכה חלקית ממערכת קלט ההצבעה. הדרך המומלצת לתאם צריכה חלקית היא Modifier.nestedScroll. (Ie9c9b)
ההגדרה 'כיוון' הועברה לחבילת הבסיס. ה-VelocityTracker הועבר מ-ui.gesture ל-ui.input.pointer. (Iff4a8, b/175294473)
imageResource ו-vectorResource הן עכשיו פונקציות הרחבה ב-ImageBitmap וב-ImageVector בהתאמה.
load{Image,Vector,Font}Resource
פונקציות נמחקו. (I89130)הוסרו AnimationClockObservable ומחלקות משנה. התכונה AnimatedFloat הוסרה. (Icde52, b/177457083)
השם של Providers השתנה ל-CompositionLocalProvider
- הקונסטרוקטור Composition לא מקבל יותר פרמטר מפתח, והוצא משימוש.
- הפונקציה currentCompositeKeyHash הפכה למאפיין ברמה העליונה שאפשר להגדיר אותו, במקום פונקציה ברמה העליונה שאפשר להגדיר אותה.
- המחלקות CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
- הפונקציה ComposableLambda הפכה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
- הפונקציה ComposableLambdaN הפכה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
- הפונקציה snapshotFlow הועברה למרחב השמות androidx.compose.runtime
- שיטת המיזוג של SnapshotMutationPolicy כבר לא ניסיונית
- הוסרה הפונקציה clearRoots ברמה העליונה עם הערך @TestOnly. היא כבר לא נחוצה.
- הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
- הפונקציה Composer.collectKeySourceInformation הוסרה. היא כבר לא נחוצה.
- הוסרו השיטות isJoinedKey, joinedKeyLeft ו-joinedKeyRight. הם כבר לא נחוצים.
- ממשקי API שונים ברמה העליונה הועברו ואורגנו מחדש בקבצים שונים. בגלל הסמנטיקה של מחלקת הקבצים ב-Kotlin, הפעולה הזו תשבור את התאימות הבינארית אבל לא את תאימות המקור, ולכן לא אמורה להיות בעיה עבור רוב המשתמשים.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
הוסר מ-compose:ui. משתמשים בזה מ-androidx.activity:activity-compose:1.3.0-alpha01
. הסרנו אתviewModel()
ואתLocalViewModelStoreOwner
מ-compose:ui. שימוש באלה מ-androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)בוצע שינוי ב-Modifier.scrollable. עכשיו נעשה שימוש בממשק Scrollable במקום במחלקה ScrollableController (I4f5a5, b/174485541, b/175294473)
הוסרה התמיכה ב-CustomEvents מ-PointerInputModifier (I02707, b/175294473)
SnapshotStateObserver כבר לא ניסיוני (Id2e6a)
נמחקו כמה ממשקי API שהוצאו משימוש בעבר (Ice5da, b/178633932)
המסננים longPressGestureFilter ו-doubleClickGestureFilter הוסרו. אפשר להשתמש ב-Modifier.pointerInput עם פונקציות עזר, למשל detectTapGestures (I2fedf, b/175294473)
הוסר String.format API שימוש חוזר בשיטות שונות toString כדי לא להשתמש ב-String.format באופן פנימי. (Id1290)
הוסרו טענות dp (I798d2)
הוסר androidx.compose.runtime:runtime-dispatch (I55feb)
פעולות בטקסט בודקות עכשיו את המיקוד באופן אוטומטי (I13777, b/179648629)
הוסר
runBlockingWithManualClock
(I15cdc, b/179664814)מיקום הגלילה ב-Modifier.verticalScroll()/horizontalScroll() מיוצג עכשיו באמצעות Ints (I81298)
השם של FlingConfig שונה ל-FlingBehavior, ועכשיו אפשר להתאים אישית את האנימציה של ההשהיה במקום להשתמש ב-Decays מוגדרים מראש. (I02b86, b/175294473)
נוספה פונקציית עזר שיכולה לעזור להגדיר את אותה פעולה לכל הקריאות החוזרות של ImeAction (I63447, b/179226323)
הסרנו את הקריאה החוזרת (callback) של SoftwareKeyboardController מכל שדות הטקסט, והיא תוחלף בקרוב ב-API חדש. (Iae869, b/168778053)
השימוש ב-FontSpan וב-FontWeigthStyleSpan הופסק והם הוסרו. (Ie5b56, b/177423444)
בוצעו השינויים הבאים ב-Material API:
- נוסף הפרמטר contentPadding לרכיב Top/BottomAppBar כדי לאפשר התאמה אישית של הריווח שמוגדר כברירת מחדל.
- הפרמטרים ב-BackdropScaffold סודרו מחדש כך שהפרמטרים הנדרשים יופיעו לפני הפרמטרים האופציונליים, בהתאם להנחיות ה-API.
- הפרמטר
icon
ב-BottomNavigationItem הועבר כך שהוא מופיע אחריselected
ו-onClick
. - השם של הפרמטר
alwaysShowLabels
ב-BottomNavigationItem השתנה ל-alwaysShowLabel
. - השם של הפרמטרים
bodyContent
בכמה רכיבים השתנה ל-content
. - הפרמטרים ב-
ButtonDefaults.buttonColors()
סודרו מחדש. חשוב לשים לב: מכיוון שסוג הפרמטרים לא השתנה, לא תהיה שגיאה בקוד. עם זאת, כדי שהקוד יפעל כמו קודם, צריך לוודא שאתם משתמשים בפרמטרים עם שמות או לעדכן את הסדר באופן ידני. - הפרמטר
secondaryVariant
נוסף אלdarkColors()
. הצבע הזה בדרך כלל זהה לצבעsecondary
בעיצוב כהה, אבל אנחנו מוסיפים אותו כדי לשמור על עקביות ולאפשר התאמה אישית נוספת. - הוסרו ElevationDefaults ו-animateElevation() מ-API ציבורי כי לא היה בהם שימוש נפוץ או שהם לא היו שימושיים.
- השם של
onValueChangeEnd
ב-Slider
שונה ל-onValueChangeFinished
והוגדר כ-nullable. - כדי לשמור על עקביות, שינינו את השם של הפרמטר
text
ב-Snackbar
ל-content
. - נוסף פרמטר
contentPadding
ל-DropdownMenuItem
כדי לאפשר התאמה אישית של שולי ברירת המחדל, ו-content
הפך לתוסף ב-RowScope
. - השם של
ModalDrawerLayout
שונה ל-ModalDrawer
. - השם של
BottomDrawerLayout
שונה ל-BottomDrawer
. - (I1cc66)
תיקוני באגים
- הוספנו API לשימוש במשאבי AnimatedVectorDrawable ב-Compose. משתמשים ב-animatedVectorResource כדי לטעון
<animated-vector>
XML כ-AnimatedImageVector ולהנפיש אותו באמצעות painterFor (I8ea91) - נוסף API חדש של LocalSoftwareKeyboardController composition כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I658b6, b/168778053)
גרסה 1.0.0-alpha12
10 בפברואר 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
משוחרר. גרסה 1.0.0-alpha12 מכילה את הקומיטים האלה.
שינויים ב-API
- התמיכה ב-ViewGroups הוסרה מ-UiApplier. הפונקציות הניתנות להרכבה emitView שהוצאו משימוש הוסרו. (Ifb214)
- הפונקציה Modifier.pointerInput מחייבת עכשיו שימוש במפתחות remember כדי לציין מתי קורוטינת הזיהוי של קלט מצביע צריכה להתחיל מחדש עבור תלות חדשות. (I849cd)
- השם של התג CompositionReference שונה ל-CompositionContext (I53fcb)
- השם של Bounds השתנה ל-DpRect (I4b32a)
- עדכון לבדיקה: הפונקציה hasText() תבדוק את הטקסט בשדה הטקסט, כולל טקסט של קלט, תווית, רמז או placeholder (Iab803)
- הפונקציה viewModel() הניתנת להרכבה וה-LocalViewModelStoreOwner הועברו אל androidx.lifecycle.viewmodel.compose. כדי להשתמש בה, צריך להוסיף תלות נפרדת: androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- אפשרות לאפשר פעולה שניתנת לאיפוס ב-AccessibilityAction, שינוי התווית של הפעולה ב-AccessibilityAction וב-CustomAccessibilityAction מ-CharSequence ל-String (I0dc82)
- כדי להתאים טוב יותר את מוסכמות מתן השמות ל-ImageBitmap ול-ImageVector, השם ImagePainter שונה ל-BitmapPainter כדי ליצור הקבלה ל-VectorPainter. (Iba381, b/174565889)
- ממשקי API טובים יותר לבדיקת מחרוזות משנה, עם מחרוזת משנה כארגומנט (Icbe78)
- נוסף
Modifier.focusOrder()
שמקבל FocusRequester בלי לציין סדר מיקוד מותאם אישית של lambda. השימוש הזה שימושי כשצריך לציין רק הפניה ולא סדר מיקוד מותאם אישית לרכיב שאפשר להרכיב (I4f52a, b/179180978) - הפונקציה ComponentActivity.setContent הועברה אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
- הוסרו שיטות של פירוק מבנה והעתקה (copy()) מכמה מחלקות שבהן השימוש בהן היה נדיר. (I26702, b/178659281)
- העברנו את החלון הקופץ כך שיהיה ספציפי לפלטפורמה. השם של AndroidPopupProperties שונה ל-PopupProperties, והערך
isFocusable
הועבר לפרמטרfocusable
ב-PopupProperties
(Ieeea5) - העברנו את תיבת הדו-שיח כך שתהיה ספציפית לפלטפורמה. השם של AndroidDialogProperties שונה ל-DialogProperties. (I4ef69, b/179138130)
- הפכנו את LayoutNode ל-internal (I8a7b1, b/175103944)
- המאפיין Constraints.enforce הוחלף במאפיין Constraints.constrain. (I8b8ea)
- הפונקציה loadFontResource הוצאה משימוש. צריך להשתמש ב-fontResource במקום זאת. הפונקציות imageResource, loadImageResource, vectorResource ו-loadVectorResource הוצאו משימוש. במקומו צריך להשתמש ב-painterResource. (I6b809)
- מסיבות שקשורות לביצועים, הסמנטיקה של ScrollAxisRange מחזירה עכשיו lambdas שמחזירות ערכי Float במקום ערכי Float ישירים. (If4a35, b/178657186)
- נוספה סמנטיקה של EditableText כדי לסמן טקסט קלט שניתן לעריכה בשדה הטקסט לנגישות, ונוספו שיטות בדיקה תואמות כדי לבדוק את הסמנטיקה (I8e07a)
- הפכנו את OwnerLayer/OwnerScope/OwnerSnapshotObserver ל-internal (I4ffaf, b/175103944)
- הפונקציה toIntPx() שונה ל-roundToPx(). (I9b7e4, b/173502290)
- השם IntBounds שונה ל-IntRect וה-API שופר. (I1f6ff)
- Snapshot API עודכן כדי להיות עקבי יותר עם הנחיות ה-API, וגם כדי להסתיר מחלקות הטמעה פנימיות מ-API ציבורי. (Id9e32)
- נוספו פעולות סמנטיות להרחבה ולכיווץ. נוספו expand ו-halfExpand ב-ModalBottomSheetState (Ib5064)
- המאפיין Modifier.dragGestureFilter הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-
Modifier.pointerInput { detectDragGestures (...)}
. אפשרות נוספת היא להשתמש ב-Modifier.draggable לגרירות בציר אחד (I0ba93, b/175294473) - שונה השם של Ambients כדי להתאים לשינוי השם של Ambient -> CompositionLocal. בעבר, השם של Ambients היה AmbientFoo, ועכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)
- המאפיין BaseTextField שיצא משימוש הוסר. במקום זאת, משתמשים ב-BasicTextField. (I71368)
- הבחירה הועברה לבסיס. (I7892b)
- בדומה להסרה הקודמת של
state { 0 }
composable, ועכשיו אנחנו מעודדים שימוש ב-remember { mutableStateOf(0) }
, אנחנו עומדים להסיר אתsavedInstanceState { 0 }
composable. במקום זאת, כדאי להשתמש ב-rememberSaveable { mutableStateOf(0) }
, והוא ישמור וישחזר אוטומטית אם אפשר לאחסן את הסוג שמשמש בתוך MutableState ב-Bundle. אם בעבר העברתם אובייקט מותאם אישית של saver, עכשיו אתם צריכים להשתמש בעומס יתר חדש של rememberSaveable עם פרמטרstateSaver
. השימוש ייראה כך:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - נוספה סמנטיקה של סיסמאות לנגישות (I231ce)
- נוסף ProgressBarRangeInfo.Indeterminate כדי לסמן סרגלי התקדמות לא מוגדרים לצורך נגישות (I6fe05)
- הוצאנו משימוש את כלי השירות
emptyContent()
ו-(@Composable () -> Unit).orEmpty()
כי הם כבר לא משפיעים לטובה על הביצועים או על הערך (I0484d) -
snapshotFlow
ו-withMutableSnapshot
כבר לא ניסיוניים (I6a45f) - עכשיו אפשר לסגור את כלי ההלחנה מחדש. רכיבי Composable סגורים ימשיכו את הפעולה עד שקורוטינות הצאצא של ה-Composition יסיימו את הפעולה. השם של הפונקציה Recomposer.shutDown שונה ל-cancel כדי ליצור ניגוד לפונקציה close. (Ib6d76)
- השם של UiSavedStateRegistry שונה ל-SaveableStateRegistry, השם של AmbientUiSavedStateRegistry שונה ל-AmbientSaveableStateRegistry ושניהם הועברו לחבילה androidx.compose.runtime.saveable. (I30224)
- הארטיפקט androidx:compose:runtime:runtime-saved-instance-state שונה ל-androidx:compose:runtime:runtime-saveable (I6dcac)
- הרבה ממשקי API ותיקים בחבילת ui הוצאו משימוש ונמחקו. (I2f2dc)
- הוצאנו משימוש את פריט המידע שנוצר בתהליך פיתוח (Artifact) compose:runtime-dispatch. MonotonicFrameClock נמצא עכשיו ב-compose:runtime ו-AndroidUiDispatcher נמצא ב-compose:ui. (Ib5c36)
- מחלקות Outline.* הן כבר לא מחלקות נתונים (I4879e, b/178001427)
- הסרת את
view.captureToImage()
בלי להחליף אותו. (I7fcd2) - השקנו את ColorMatrix API שמשמש לשינוי ערכי RGB של תוכן המקור. ביצענו שינוי בקוד של ColorFilter API כך שיהיה ממשק ויתאים להטמעה של PathEffect. (Ica1e8)
- הוספת הפרמטר layoutDirection ל-createOutline של Shape. כך אפשר ליצור צורות שמתאימות לכיוון הפריסה. (I57c20, b/152756983)
- השיטה onImeActionPerformed הוצאה משימוש. במקומה צריך להשתמש ב-KeyboardActions (If0bbd, b/179071523)
- הוספנו רכיב של הקשר קורוטינה
InfiniteAnimationPolicy
שיחול על אנימציות אינסופיות. כברירת מחדל, לא מותקנת מדיניות, אלא אם מריצים בדיקות עםComposeTestRule
. (I50ec4, b/151940543) - המאפיין canDrag הוסר מה-Modifier.scrollable. (Id66e7, b/175294473)
- שם המאפיין LayoutCoordinates.parentCoordinates שונה ל-LayoutCoordinates.parentLayoutCoordinates כדי לאפשר שימוש במאפיין parentCoordinates חדש. המאפיין parentCoordinates כולל עכשיו את LayoutCoordintes של משנה ההורה. כך יהיה אפשר להשתמש ב-onSizeChanged() וב-onGloballyPositioned() בצורה מלאה יותר (Idfbfd, b/177926591)
- המסננים tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter ו-pressIndicaitonGestureFilter הוצאו משימוש. במקום זאת, אפשר להשתמש ב-Modifier.clickable או ב-Modifier.pointerInput עם הפונקציה detectTapGestures. (I6baf9, b/175294473)
- הוסרה הפונקציה unregisterProvider של SaveableStateRegistry. במקום זאת, registerProvider() מחזירה עכשיו אובייקט SaveableStateRegistry.Entry שבו אפשר להשתמש כדי לבטל את הרישום (Ic4274, b/178583739)
- השם של rememberSavedInstanceState() שונה ל-rememberSaveable() והוא הועבר לחבילה androidx.compose.runtime.saveable. (I1366e, b/177338004)
- הוסרו CoreText ו-CoreTextField מ-API ציבורי
- הוסר עומס יתר של SelectionContainer שהוצא משימוש
- (I99c19)
- בדיקות שבהן נעשה שימוש ב-Compose בהיררכיות שנוספו או הוסרו ישירות ל-WindowManager, יציבות יותר עכשיו. (Ie81ed, b/175765614)
- הוסר Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. ההרכבה מחדש והטיקים של האנימציה שמבוססים על withFrameNanos מושהים בזמן שמחזור החיים של המארח מושהה. (I38e11)
- Recomposer.runningRecomposers כולל עכשיו StateFlow גלובלי של RecomposerInfo לקריאה בלבד, כדי לעקוב אחרי מצב הקומפוזיציה בתהליך. עדיף להשתמש ב-API הזה במקום ב-Recomposer.current(), שמוצא משימוש. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver הועברו מ-androidx.compose.runtime.savedinstancestate אל androidx.compose.runtime.saveable (I77fe6)
- EditCommands מקבל AnnotatedString. עם זאת, זהו שינוי שמתבצע רק ב-API, ועדיין לא הוטמעה האפשרות לעריכת טקסט עם כמה סגנונות. (I4c3ea)
- הוסרו הערכים 'זמן פעולה' ו'משך'. (Ib9bf4, b/177420019)
- הפונקציות CompositionData.asTree() וממשקי API קשורים הועברו למודול ui-tooling-data נפרד וסומנו כניסיוניים (Ic95b8)
- הפרמטרים ב-RounderCornerShape, CutCornerShape ו-CornerBasedShape קיבלו שמות חדשים: במקום left/right (ימין/שמאל) הם נקראים start/end (התחלה/סיום). זאת כדי לתמוך בשיקוף אוטומטי של הצורה בכיוון מימין לשמאל. הוספנו את הצורות AbsoluteRounderCornerShape ו-AbsoluteCutCornerShape למקרים שבהם לא רוצים שיקוף אוטומטי. (I61040, b/152756983)
ה-API שאליו מכוון פלאגין הקומפיילר של Compose עבר רפקטורינג כדי להשתמש בממשק במקום במחלקה קונקרטית. בנוסף, הממשק לא משתמש יותר בפרמטר type.
זהו שינוי פנימי שלא אמור להשפיע על התאימות של קוד המקור, אבל הוא שינוי בינארי שעלול לגרום לבעיות. (I3b922, b/169406779)
הסרה של הפונקציה StringBuilder.deleteAt שהוגדרה בטעות כציבורית (Id6ed9)
תיקוני באגים
- תצוגות ComposeViews שמוצבות בהיררכיות של תצוגות שהן צאצאים של קומפוזיציה אחרת, מארחות עכשיו קומפוזיציות צאצא של האבות הקדמונים שלהן (I92883)
- בוצע עדכון של ה-API imageFromResource ב-Compose כדי לעשות שימוש חוזר במטמון של משאב drawable כשמטעינים אובייקטים של ImageBitmap. (If3627, b/178751994)
גרסה 1.0.0-alpha11
28 בינואר 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
משוחרר. גרסה 1.0.0-alpha11 מכילה את הקומיטים האלה.
שינויים ב-API
- הקומפוזיציה WithConstraints עברה שינוי משמעותי, שמה שונה ל-BoxWithConstraints והיא הועברה ל-foundation.layout. (I9420b, b/173387208)
- המאפיין Key.DPadUp הוצא משימוש. במקום זאת, צריך להשתמש ב-Key.DirectionUp. (Iab335, b/177954892)
- ממשק הבעלים יהיה מעכשיו פנימי. (If8e35)
- נוסף API FocusManager.moveFocus() להעברת המיקוד באופן פרוגרמטי. (I045cb, b/177681839)
- השינוי PopupPositionProvider לשימוש בקואורדינטות יחסיות לחלון, ולא בקואורדינטות גלובליות. השם של parentGlobalBounds שונה ל-anchorBounds, והשם של windowGlobalBounds שונה ל-windowSize: IntSize (I2994a)
- הערכים של משך הזמן וזמן הפעולה יוחלפו בערכים של אלפיות שנייה ארוכות, ובשלב הזה תוסר התלות של קלט מצביע במחלקות האלה. (Ia33b2, b/175142755, b/177420019)
- התווסף AmbientSavedStateRegistryOwner באופן דומה ל-AmbientLifecycleOwner ו-AmbientViewModelStoreOwner שכבר קיימים (I9a3e8, b/176756365)
- ממשק ה-API של גרפיקה וקטורית עודכן כדי לתמוך בניתוח של גוון שהוחל על השורש של גרפיקה וקטורית. (Id9d53, b/177210509)
- נוסף toolType ל-PointerInputChange כדי להבדיל בין מכשירים (Iac787, b/175142755)
- השם של AmbientWindowManager שונה ל-AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- הוצאנו משימוש שיטות של קואורדינטות גלובליות ויצרנו שיטות חדשות של קואורדינטות מבוססות חלון. (Iee284)
- נוסף Modifier.toolingGraphicsLayer שמוסיף משנה של שכבת גרפיקה כשמפעילים בדיקה. (I315df)
- הפונקציה FocusRequester.createRefs מסומנת עכשיו כניסיונית כי היא עשויה להשתנות. (I2d898, b/177000821)
- השם של SemanticsPropertyReceiver.hidden שונה ל-invisibleToUser והוא סומן כ-@ExperimentalComposeUiApi. השם של AccessibilityRangeInfo שונה ל-ProgressBarRangeInfo. השם של stateDescriptionRange שונה ל-progressBarRangeInfo. השם של AccessibilityScrollState שונה ל-ScrollAxisRange. השם של horizontalAccessibilityScrollState שונה ל-horizontalScrollAxisRange. השם של verticalAccessibilityScrollState שונה ל-verticalScrollAxisRange. (Id3148)
- הוסר PointerInputData ובוצע שינוי ב-PointerInputChange כדי להעניק לו את כל השדות של PointerInputData. הפכנו את PointerInputEvent ו-PointerInputEventData לפנימיים כי הם לא נמצאים בשימוש באף API ציבורי. (Ifff97, b/175142755)
- בוצע עדכון של GraphicsLayerScope implement density כדי לתמוך בהמרות של dp לפיקסלים גולמיים. (Ied528, b/176819695)
- ה-API של מטריצה עודכן כך שיפעל לפי סדר השורות ויספק קבועי אינדקס כדי לסייע בהמרות בין ייצוגים שונים של מטריצות, בהתאם ללוגיקת ההמרה של המסגרת בין SkMatrix לבין Matrix4 באופן פנימי. (I432e6)
- הוסרו שיטות ניסיוניות של monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- העברה של String.fintPrecedingBreak ו-String.fingFollowingBreak אל InternalTextApi. (I657c4)
- הפונקציה androidx.compose.ui.util.isSurrogatePair הוסרה מ-API ציבורי. (Ia9494)
- השם של TransformedText.transformedText שונה ל-TransformedText.text
- TransformedText כבר לא סיווג נתונים (Ie672a)
- המשתמש
data class
הוסר מהכיתות הבאות:- InlineTextContent
- LocaleList (I605c7)
- הכיתות הבאות כבר לא מוגדרות ככיתות נתונים:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- הפכנו את VisualTransformation לממשק פונקציונלי (I3bba4)
- נוסף סוג פרמטר של הפניה לפונקציה (I5e1bd)
- הוספת גבולות שעברו טרנספורמציה ל-InspectorNode (Ice42f)
תיקוני באגים
- הפונקציות onCommit, onDispose ו-onActive הוצאו משימוש לטובת ממשקי ה-API SideEffect ו-DisposableEffect (If760e)
שינויים בפונקציות של Font/FontFamily/Typeface
- נוספו פונקציות ליצירת אובייקטים שמתחילות באות גדולה
- הוצאנו משימוש פונקציות קודמות ליצירת אובייקטים עם אותיות קטנות בתחילת השם
- פונקציות חדשות של מפעל מחזירות את FontFamily במקום מחלקות משנה
- הסתרנו את ה-constructors של מחלקות המשנה, כך שאפשר ליצור אותן רק באמצעות פונקציות factory.
- השם של Font.asFontFamily שונה ל-Font.toFontFamily (I42aa7)
הוספנו את
ComposeContentTestRule
, שמרחיב אתComposeTestRule
ומגדיר אתsetContent
, שהוסר מ-ComposeTestRule
. נוספה שיטת יצירהcreateEmptyComposeRule()
שמחזירהComposeTestRule
ולא מפעילה פעילות בשבילכם. משתמשים באפשרות הזו כשרוצים להפעיל את הפעילות במהלך הבדיקה, למשל באמצעותActivityScenario.launch
(I9d782, b/174472899)הפונקציה animateAsState נקראת עכשיו animateFooAsState, כאשר Foo הוא סוג המשתנה שמונפש. למשל: Float, Dp, Offset וכו' (Ie7e25)
נוסף פרמטר של תיאור תוכן לתמונה ולסמל. הוא משמש כדי לספק תיאור לשירותי הנגישות (I2ac4c)
צריך להסיר את displaySize כי מומלץ להימנע משימוש בו. בדרך כלל עדיף להשתמש בגודל של onRoot() או בגודל החלון לפחות. (I62db4)
הפונקציה OnSizeChanged דיווחה על הגודל של התוכן בפריסה. הוא מדווח עכשיו על הגודל במיקום שלו בשרשרת של שינוי המאפיינים. (I36b78, b/177562900)
הוצאנו משימוש את ה-API emit() ואת כל העומסים העודפים שלו, ושינינו את השם שלו ל-ComposeNode. ממשקי ה-API זהים, רק השם שונה כדי לפעול בהתאם למוסכמות מתן השמות של Compose (I4137b)
TextFieldValue מקבל AnnotatedString. עם זאת, זהו שינוי שמתבצע רק ב-API, ועדיין לא הוטמעה האפשרות לעריכת טקסט עם כמה סגנונות.
- הוסר
initial
מפרמטרים של בנאי EditingBuffer. (I326d5)
- הוסר
הפונקציות invalidate ו-compositionReference() הוצאו משימוש, ועכשיו משתמשים בפונקציות currentRecomposeScope ו-rememberCompositionReference בהתאמה. (I583a8)
המחרוזת AnnotatedString השתנתה כך שהיא נגזרת מ-kotlin.CharSequence. לכן, הפונקציות length ו-subSequence הן עכשיו פונקציות של מופע, והפונקציות של התוסף הוסרו. (Iaf429)
הפונקציה RememberObserver מחליפה את CompositionLifecycleObserver, והשימוש ב-CompositionLifecycleObserver הוצא משימוש.
RememberObserver
הוא תחליף ל-CompositionLifecycleObserver
עם סמנטיקה שונה ושיטות ששמן שונה. אפשר לעבור ל-API החדש באופן אוטומטי לאובייקטים שזוכרים רק פעם אחת, וזו עדיין השיטה המומלצת. עם זאת, אם הפניה נשמרה יותר מפעם אחת בקומפוזיציה, הפונקציהonRemembered
נקראת לכל הפניה, והפונקציהonEnter
נקראת רק פעם אחת. הייתה קריאה לפונקציהonEnter
כמה פעמים אם האובייקט היה בשימוש בקומפוזיציות משנה, כמוWithConstraints
ו-Scaffold
, ולכן אי אפשר היה להסתמך על קריאה יחידה לפונקציהonEnter
. לכן, הפונקציה הוסרה ב-RememberObserver
.
RememberObserver
מוסיף אתonAbandoned
שמופעל אם מופעRememberObserver
מוחזר מהקריאה החוזרת שהועברה אלremember
אבל לא נשמר במצב הקומפוזיציה, ולכן אף פעם לא תתבצע קריאה אלonRemembered
. זה יכול לקרות אם חריגה מסיימת את ההרכבה לפני שהיא מסתיימת, או אם ההרכבה נפסלת כי המצב שהיא יצרה עבורו הרכבה כבר לא עדכני או כבר לא נחוץ. אם המופע שלRememberObserver
אחרי ההמלצה שלמעלה לגבי הפניה יחידה עוקב אחרי משאב חיצוני, גםonForgotten
וגםonAbandoned
מציינים שהמשאב כבר לא נחוץ. אם האובייקט עוקב אחרי עבודה שהתחילה או משאבים שהוקצו ב-onRemembered
, אפשר להתעלם מ-onAbandoned
כי הוא לא יופעל אםonRemembered
יופעל. (I02c36)הוצאנו משימוש פעולות חשבון בין 2 או יותר TextUnit. הפונקציות TextUnit.Sp ו-TextUnit.Em הוצאו משימוש, ועדיף להשתמש בפונקציות ההרחבה כמו Int.sp ו-Int.em. (I48369)
משאבים בספריות שלא הוגדרו במפורש כמשאבים ציבוריים (למשל באמצעות public.xml) מוגדרים עכשיו כפרטיים כברירת מחדל. (Ia1dcc, b/170882230)
התכונות ScrollableColumn ו-ScrollableRow הוצאו משימוש. השימוש ב-ScrollableColumn פחות יעיל בהשוואה ל-LazyColumn כשמדובר בתוכן גדול שניתן לגלול בו, כי באמצעות LazyColumn אפשר להלחין, למדוד ולצייר רק את הרכיבים הגלויים. כדי למנוע מהמשתמשים להשתמש בדרך הלא יעילה, החלטנו להוציא משימוש את ScrollableColumn ו-ScrollableRow ולעודד שימוש ב-LazyColumn וב-LazyRow במקומם. המשתמשים עדיין יכולים להחליט שהם לא צריכים את ההתנהגות של lazy ולהשתמש במאפיינים ישירות, כמו בדוגמה הבאה: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
items(count: Int)
factory method חדש להיקף של LazyColumn/LazyRow/LazyVerticalGrid. הפונקציותitems(items: List)
ו-itemsIndexed(items: List)
הן עכשיו פונקציות הרחבה, ולכן צריך לייבא אותן באופן ידני כשמשתמשים בהן. עומסים חדשים של תוספים למערכים:items(items: Array)
ו-itemsIndexed(Array)
(I803fc, b/175562574)במקומו צריך להשתמש ב-ImeAction.None ולא ב-ImeAction.NoAction
- צריך להשתמש ב-ImeAction.Default במקום ב-ImeAction.Unspecified (Ie1bcc)
שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)
שם הפונקציה TextInputService.onStateUpdated שונה ל-updateState (Id4853)
הוצא משימוש מעבר שמבוסס על TransitionDefinition (I0ac57)
הערך TextUnitType.Inherit הוסר. במקומו צריך להשתמש ב-TextUnitType.Unspecified. (I9ff64)
גרסה 1.0.0-alpha10
13 בינואר 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
משוחרר. גרסה 1.0.0-alpha10 מכילה את הקומיטים האלה.
שינוי שעלול לגרום לכשלים
שינוי המבנה של ה-API הפנימי של הקומפיילר מאפשר לאגד שינויים בצמתים שנוצרו כתוצאה מהקומפוזיציה לשלב 'החלת שינויים' בקומפוזיציה, אחרי שכל הפונקציות
@Composable
הושלמו.זהו שינוי שובר תאימות שמשפיע על התנהגות המערכת, ויכול להשפיע על קוד האפליקציה, כי הצמתים כבר לא זמינים מממשקי API פנימיים וניסיוניים עד שהשינויים יחולו. בדרך כלל אפשר לעקוף את הבעיה הזו על ידי הצבת הקוד עם התלויות האלה ב-
SideEffect
composable כדי לדחות את ההפעלה של הקוד עד אחרי שהצמתים נוצרו ואותחלו. (I018da)
שינויים ב-API
- נוסף Modifier.focusOrder() שאפשר להשתמש בו כדי לציין סדר מעבר מותאם אישית בין רכיבים במצב פוקוס (I90cf5, b/175899543, b/170155556, b/170155429)
- הוסרה השימוש המיושן ב-focusObserver. במקום זאת, צריך להשתמש ב-onFocusChanged או ב-onFocusEvent (I3ecb9, b/175156387)
- שינויים ב-EditOperations API
- השם של EditOperation שונה ל-EditCommand
- נוספה סיומת פקודה להטמעות קונקרטיות של EditOperation
- EditCommand's כבר לא מסווגות כ-data classes
- השם של הפונקציה EditOperation.process השתנה ל-applyTo
- השם של InputEventListener שונה ל-InputEventCallback
- (I0a366)
- הוסרו הפונקציות PxSquared, PxCubed ו-PxInverse שלא היו בשימוש. הפונקציה Size.center() שונתה למאפיין. (I973f7)
- מודול ui-test יוכל עכשיו להגדיר את היצירה של Recomposers לממשקי משתמש שנבדקים (Ibebd8)
- הוספנו לרכיב Velocity חלקים ופעולות מתמטיות. (Ib0447)
- שינינו את השם של
@ExperimentalTesting
ל-@ExperimentalTestApi
כדי לשמור על עקביות עם הערות דומות של ממשקי API ניסיוניים (Ia4502, b/171464963) - השם של Color.useOrElse() שונה ל-Color.takeOrElse() (Ifdcf5)
- הוסרו המחלקות DpInverse, DpSquared ו-DpCubed שלא היו בשימוש. (I4d62b)
- השם של המאפיין Constraints#satisfiedBy שונה ל-isSatisfiedBy. (I9cf5c)
- הוספת קריאה חוזרת כדי להודיע לבעלים כשגבולות layoutnode משתנים. (I72fd1)
- נוספו isSpecified, isUnspecified ו-useOrElse למחלקות מוטבעות עם קבוע Unspecified. (I93f7b, b/174310811)
הרחבת ממשקי ה-API של [Abstract]ComposeView כדי לאפשר שימוש חוזר בתצוגות מבוססות-Compose, השבתת הקומפוזיציה שלהן כדי ליצור אותה מחדש מאוחר יותר. הוספת ממשקי API להתקנה ולגילוי של Recomposers בהיקף חלון ושל CompositionReferences ליצירת קומפוזיציות צאצא.
מוסיפים ViewCompositionStrategy כדי להגדיר את אסטרטגיית הסילוק של [Abstract]ComposeViews; התנהגות ברירת המחדל היא סילוק בהסרת החלון. (I860ab)
הוסר Any.identityHashCode() public api (I025d7)
הסרנו את ה-API toStringAsFixed במקום להשתמש ישירות ב-String.format. (Iaba6b)
הוספת Toggle ל-foundation Strings.kt (I4a5b7, b/172366489)
העברנו את nativeClass למודול ui והגדרנו אותו כפנימי. השימוש ב-nativeClass עודכן בהטמעות של equals כך שישתמשו ב-'is MyClass' במקום זאת. (I4f734)
הפונקציות Modifier.focus() ו-Modifier.focusRequester() הוצאו משימוש. במקום זאת, צריך להשתמש ב-Modifier.focusModifier() וב-Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
הוספנו את SelectionRegistrar.notifySelectableChange כדי להודיע ל-SelectionManager על עדכונים ב-Selectable. (I6ff30, b/173215242)
הוספנו את המאפיין Outline.bounds כדי לקבל את המלבן התוחם עבור הטמעות שונות של קווי מתאר. (I16e74, b/175093504)
TestUiDispatcher יצא משימוש. במקום זאת, צריך להשתמש ב-Dispatchers.Main (Ic171f, b/175385255)
המחלקות ImeOptions ו-KeyboardOptions הן כבר לא מחלקות נתונים (I3c898, b/168684531)
שינויים ב-VisualTransformation API
- השם של OffsetMap שונה ל-OffsetMapping
- השם של OffsetMapping.identityOffsetMap שונה ל-OffsetMapping.Identity
- הסיווג PasswordTransformation כבר לא מסווג כסוג נתונים
- העברנו את OffsetMapping לקובץ משלו
- (I0bdf3)
שינוי השם של Position ל-DpOffset והסרה של getDistance() (Ib2dfd)
הפונקציה Dp.isFinite() שונתה ל-val Dp.isFinite (I50e00)
תיקוני באגים
- ה-Recomposer חושף עכשיו את ה-Flow של המצב הנוכחי שלו, ומאפשר מעקב אחרי הפעילות שלו והפעילות של האפקטים המשויכים. (Ifb2b9)
- עכשיו אפשר לגשת ל-native keyEvent דרך keyEvent.nativeKeyEvent (I87c57, b/173086397)
- הפונקציה
animate()
הוחלפה בפונקציהanimateAsState()
, שמחזירהState<T>
במקוםT
. כך אפשר לשפר את הביצועים, כי אפשר לצמצם את היקף הביטול למקום שבו נקרא ערך המצב. (Ib179e) - מוסיפים את Semantics role API ומוסיפים Role כפרמטר ל-SemanticsModifier שאפשר ללחוץ עליו, לבחור אותו או להפעיל ולכבות אותו. בוצע שינוי ב-Modifier.progressSemantics כדי שגם Slider יוכל להשתמש בו. (I216cd)
- API חדש מבוסס-קוריטינות
Animatable
שמבטיח הדרה הדדית בין האנימציות שלו.- DecayAnimationSpec חדש לתמיכה באנימציית דעיכה רב-ממדית
- (I820f2, b/168014930)
גרסה 1.0.0-alpha09
16 בדצמבר 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
משוחרר. גרסה 1.0.0-alpha09 מכילה את הקומיטים האלה.
שינויים ב-API
- המאפיין KeyEvent.Alt שהוצא משימוש הוסר עכשיו. במקומו, צריך להשתמש ב-KeyEvent.isAltPressed. (Idd695)
- המאפיינים Modifier.keyInputFilter ו-Modifier.previewKeyInputFilter הוצאו משימוש. במקומם צריך להשתמש במאפיינים Modifier.onKeyEvent ו-Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- המאפיין Modifier.focusObserver הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.onFocusChanged או ב-Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- לגבי השעיה של ממשקי API של קלט מצביע, בוצע שינוי בשם של HandlePointerInputScope ל-AwaitPointerEventScope ושל handlePointerInput() ל-awaitPointerEventScope(). (Idf0a1, b/175142755)
- Autofill API הוא עכשיו API ניסיוני ונדרשת הסכמה לשימוש בו (I0a1ec)
- הוספת הצהרות על פירוק מבנה כדי ליצור מופעים של FocuSRequester (I35d84, b/174817008)
- השם של accessibilityLabel השתנה ל-contentDescription. השם של accessibilityValue השתנה ל-stateDescription. (I250f2)
- הוסרו אירועים מותאמים אישית מ-API להשהיית קלט מצביע (Ia54d5, b/175142755)
- הוספנו כמה פונקציות חדשות ב-SelectionRegistrar ושינינו את השם של onPositionChange ל-notifyPositionChange. (Ifbaf7)
- עוד חברים ב-LayoutNode שסימנו כפנימיים (I443c6)
- התכונה LayoutInfo נוספה כדי לשמש כלי בדיקה (I9b190)
- AndroidOwner made internal (Ibcad0, b/170296980)
- הוסרה ההערה ExperimentalPointerInput (Ia7a24)
- נוספה מערכת גלילה מקוננת. מידע נוסף זמין במאמר בנושא Modifier.nestedScroll (I36e15, b/162408885)
- הפונקציה subcomposeInto(LayoutNode) הפכה לפנימית (Id724a)
הממשק של
Applier
השתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.השם של ה-method
insert()
השתנה ל-insertTopDown()
.נוספה שיטה חדשה,
insertBottomUp()
.הכלי להחלת מדיניות מוסיף צמתים לעץ שהוא עורך באמצעות
insertTopDown()
אוinsertBottomUp()
, בהתאם למה שנותן תוצאות טובות יותר.יותר יעיל לבנות חלק מהעצים, כמו
LayoutNode
ו-View
, מלמטה למעלה מאשר מלמעלה למטה. לפני השינוי הזה, כדי להטמיע את השיטה מלמטה למעלה היה צריך להשתמש במערך של תוספים, והיה צריך להעתיק אותו לכל כלי שנדרש לבנייה מלמטה למעלה כדי לשפר את הביצועים. בעקבות השינוי הזה,Applier
overridesinsertBottomUp()
כדי ליצור עץ מלמטה למעלה ו-insertTopDown()
כדי ליצור עץ מלמעלה למטה. (Icbdc2)נוספו המאפיינים dismissOnBackPress ו-dismissOnClickOutside ל-AndroidDialogProperties. ההגדרות האלה מאפשרות לקבוע מתי יופעל ה-lambda של onDismissRequest של תיבת הדו-שיח. (If5e17)
נוסף painterResource API לטיפול בטעינה אטומה של אובייקטים של Painter מפורמטים של נכסי רסטר (כמו PNG) או מ-VectorDrawables. הצרכנים לא צריכים יותר לקבוע מראש את סוג הנכס, ויכולים לקרוא לשיטה הזו כדי לקבל אובייקט Painter לשימוש ב-Image composables או ב-painter modifiers. (I2c703, b/173818471)
נוספה הפונקציה Modifier.clearAndSetSemantics כדי לנקות את הסמנטיקה של צאצאים ולהגדיר סמנטיקה חדשה. (I277ca)
העברנו את ContentDrawScope למודול ui-graphics כדי שיהיה עם DrawScope. (Iee043, b/173832789)
הוספנו את PathEffect API לגרפיקה כדי לספק דוגמאות שונות לצורות עם קו מתאר. שימוש ב-NativePathEffect הוצא משימוש. במקומו צריך להשתמש ביישום expect/actual של PathEffect. (I5e976, b/171072166)
נוספו ממשקי IdlingResource ל-Compose, כגרסה נתמכת של Compose למשאבי ההמתנה של Espresso. אפשר לרשום אותם ולבטל את הרישום שלהם באמצעות ComposeTestRule (I433f3)
הוסרה הרשמה גלובלית (ביטול הרשמה) של ComposeIdlingResource ושל שעונים ל-ComposeIdlingResource (I32660)
תיקוני באגים
- פונקציות למדא במגדירי היסט מחזירות עכשיו IntOffset ולא Float. (Ic9ee5, b/174137212, b/174146755)
הסרנו את SlotTable, SlotReader ו-SlotWriter מה-API הציבורי. בעבר הם סומנו כ-InternalComposeAPI. עכשיו הם פנימיים למודול הכתיבה.
הוספנו את CompositionData ו-CompositionGroup כתחליף ל-API של ui-tooling, כדי להשתמש בו לחילוץ מידע על קומפוזיציה. הם ציבוריים אבל לא מיועדים לשימוש מחוץ ל-API של ui-tooling, כי הם מספקים את המידע הגולמי ש-API של ui-tooling מפרש (I31a9c)
בוצע רפקטורינג ב-ShaderBrush כדי ליצור באופן עצלן מופע של Shader כשמידע על גודל סביבת הציור זמין. השימוש ב-Brush مفيد להגדרת מעברי צבע שממלאים את כל גבולות הציור של רכיב שאפשר להוסיף לו רכיבים אחרים בזמן ההוספה, בלי להטמיע הטמעות מותאמות אישית של DrawModifier.
הוצאנו משימוש ממשקי API של פונקציות ליצירת שיפועים לטובת שיטות ליצירת אובייקטים במפעל באובייקט Gradient. (I511fc, b/173066799)
הוצאה משימוש של LazyColumnFor, LazyRowFor, LazyColumnForIndexed ו-LazyRowForIndexed. במקום זאת, צריך להשתמש ב-LazyColumn וב-LazyRow (I5b48c)
הוצא משימוש BuildCompat.isAtLeastR (Idb37e)
נוספה פונקציית factory בשם buildAnnotatedString כדי ליצור AnnotatedString. פונקציית ה-builder של annotatedString הוצאה משימוש. (Idfe0b)
הוסרו שיטות הרחבה ב-Float וב-Double להמרת ערכים לרדיאנים. הועברה להיות פונקציה פרטית בהטמעה PathParser, שהייתה המקום היחיד שבו נעשה בה שימוש (I25f52)
גרסה 1.0.0-alpha08
2 בדצמבר 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
משוחרר. גרסה 1.0.0-alpha08 מכילה את הקומיטים האלה.
שינויים ב-API
- הוספת פעולה סמנטית Dismiss (ביטול) (I2b706)
- העברנו את ממשקי DrawModifier API מהחבילה androidx.compose.ui לחבילה androidx.compose.ui.draw. נוצר הקובץ DrawModifierDeprecated.kt כדי לכלול כינויי טיפוסים ושיטות עזר שיעזרו במעבר מ-API שיצא משימוש ל-API הנוכחי. (Id6044, b/173834241)
- השם של Modifier.drawLayer שונה ל-Modifier.graphicsLayer. בנוסף, עודכנו מחלקות קשורות ל-GraphicsLayer בהתאם למשוב על ה-API. (I0bd29, b/173834241)
- נוספו שיטות חדשות: placeable.placeWithLayer() ו-placeable.placeRelativeWithLayer(). הן מאפשרות לפריסות מותאמות אישית ולמשני פריסה למקם רכיב צאצא בלי להוסיף שכבת גרפיקה לציור שלו. כך נוכל קודם לבצע אופטימיזציה של הציורים מחדש, כדי שלא נצטרך לצייר מחדש את התוכן של רכיב צאצא כשנצטרך להזיז אותו. שנית, נוכל להחיל טרנספורמציות של ציור על רכיב צאצא (Ibd8f6, b/170296989, b/171493718, b/173030831)
- הוסר
<T>
מההצהרה של SubcomposeLayout. עכשיו אפשר להשתמש בו בלי לציין סוג. (Ib60c8) - הוספנו את ממשקי ה-API של Modifier.scale/rotate
כאמצעי נוחות ל-drawLayer.
- השם של
Modifier.drawOpacity
שונה ל-Modifier.alpha
- שינית את השם של
Modifier.drawShadow
לModifier.shadow
(I264ca, b/173208140)
- השם של
- השדות uptime ו-position של PointerInputData לא יכולים להיות null. (Id468a)
- MaterialTheme מגדיר עכשיו את הצבעים הנכונים של נקודות האחיזה לבחירה ושל הרקע של הבחירה. באפליקציות שאינן Material, אפשר להשתמש ב-AmbientTextSelectionColors באופן ידני כדי להתאים אישית את הצבעים שמשמשים לבחירה. (I1e6f4, b/139320372, b/139320907)
- נוספה הפונקציה WindowManager.isWindowFocused כדי לבדוק אם חלון המארח נמצא במיקוד, ונוסף WindowFocusObserver שמספק קריאה חוזרת (callback) מסוג onWindowFocusChanged. (I53b2a, b/170932874)
- עדכנו את TransformOrigin API כך שיכלול תחביר של פירוק כדי להחזיר את
pivotFractionX
ואתpivotFractionY
בתורcomponent1
ו-component2
(If43c4, b/173586560) - נוספה בדיקת Lint לשמות ולמיקום של פרמטרים של lambda שניתנים להרכבה, כדי לבדוק את העקביות עם ההנחיות של Compose.
בנוסף, העברנו חלק מממשקי ה-API באמצעות
children
כשם של פונקציית ה-lambda האחרונה שלהם אלcontent
, בהתאם לבדיקת ה-lint ולהנחיות. (Iec48e) - נוסף API לבדיקה אם מקשי הצירוף Alt, Ctrl, Meta או Shift נלחצו כשאירוע מקש נשלח. (I50ed9)
- נוספה שיטת
Modifier.drawLayer()
חדשה עם עומס יתר. הוא מקבל בלוק lambda ב-GraphicsLayerScope חדש שבו מגדירים את פרמטרים השכבה באופן שמאפשר לדלג על קומפוזיציה מחדש ועל פריסה מחדש כשמתרחש שינוי במצב. הפונקציה DrawLayerModifier היא עכשיו פנימית, כהכנה להעברת הלוגיקה שלה לשיטה placeable.placeWithLayer() של LayoutModifier (I15e9f, b/173030831) - הוצאנו משימוש את הסביבות המקיפות ששמן מסתיים ב-
Ambient
והחלפנו אותן במאפיינים חדשים שמתחילים ב-Ambient, בהתאם להנחיות של סביבות מקיפות אחרות ושל Compose API. (I33440) - הועבר
androidx.compose.ui.text.Typeface
אלandroidx.compose.ui.text.font.Typeface
(Ic2b81) - הארגומנט mergeAllDescendants של הסמנטיקה נקרא עכשיו mergeDescendants. (Ib6250)
- גלאי חדש של תנועת גרירה שמשעה את API של קלט מצביע, כולל נעילת כיוון. (Icef25)
- שם המחלקה VectorAsset שונה ל-ImageVector הועברה ושם המחלקה VectorAsset שונה ל-Builder כדי שתהיה מחלקה פנימית של ImageVector בהתאם להנחיות ה-API. הוספנו typealias של VectorAssetBuilder כדי לקשר אל ImageVector.Builder לצורך תאימות. (Icfdc8)
- שינינו את השם של ImageAsset ושל שיטות קשורות ל-ImageBitmap. (Ia2d99)
- נוסף פרמטר zIndex לפונקציה place() של PlacementScope, כך שהפונקציה Modifier.zIndex() פועלת עכשיו כ-LayoutModifier, וכל פריסה בהתאמה אישית יכולה להגדיר zIndex לצאצאים שלה ישירות בבלוק המיקום (I711f7, b/171493718)
- העברנו את מאפייני הסמנטיקה של הרכיבים הבסיסיים אל ui (I6f05c)
- הוצאה משימוש של place(Offset) ו-placeRelative(Offset). במקום זאת, אפשר להשתמש בעומסים עם היסטים של int (I4c5e7)
- הסרנו ממשקי API שהוצאו משימוש בעבר: הסרנו את Modifier.onPositioned, צריך להשתמש ב-Modifier.onGloballyPositioned. הוסרה הפונקציה Modifier.onDraw, צריך להשתמש בפונקציה Modifier.onDrawBehind. הוסר Modifier.plus, צריך להשתמש ב-Modifier.then. הוסר Color.Unset, צריך להשתמש ב-Color.Unspecified. הוסר המחלקה PxBounds, צריך להשתמש במחלקה Rect במקום זאת. (Ie9d02, b/172562222)
- הממשק של ההתאמה עודכן והפך לפונקציונלי. (I46a07, b/172311734)
- הוספנו גלאי מחוות להקשה, להקשה כפולה, ללחיצה ארוכה ולסימון של לחיצה באמצעות קלט חדש של מצביע בהשהיה. הוספנו גם כמה כלי עזר, כדי להקל על מפתחים לכתוב גלאי מחוות משלהם. (I00807)
- השם של
id
שונה לlayoutId
עבורLayoutIdParentData
. השם שלMeasurable.id
שונה לMeasurable.layoutId
. (Iadbcb, b/172449643) - גלאי חדש של תנועות מגע מרובות, כולל כלים לזיהוי סיבוב, שינוי מרחק התצוגה והזזה. (Ic459d)
- הוספנו את ממשקי ה-API SweepGradientShader ו-SweepGradientBrush. (Ia22c1)
- השליטה בזמן בבדיקות (TestAnimationClock והשימושים בה) היא עכשיו ניסיונית (I6ef86, b/171378521)
הוספת ממשקי API לגלילה מבוססת-קורוטינה:
נוספו LazyListState.snapToItem ו-LazyListState.smoothScrollBy, וגם ממשקי API ברמה נמוכה יותר לשליטה בגלילה. ממשקי ה-API האלה מספקים ממשק השהיה לשליטה בגלילה, שמחכה עד שהגלילה מסתיימת לפני שהוא חוזר. (Ie5642)
הוספנו את Modifier.focusable ל-foundation. אפשר להשתמש בזה כדי להוסיף התנהגות שניתן להתמקד בה לרכיב, עם סמנטיקה ונגישות נכונות. (I41eb9, b/152525426, b/162865824)
הוספת הטמעות ברירת מחדל של מתודות ומאפיינים ב-AnimationClockTestRule שאפשר להעביר ל-
clock
(I7ea3d, b/173399709)AndroidComposeTestRule יכול עכשיו לקבל מפעילים מותאמים אישית של פעילויות (Ib8288, b/153623653, b/154135019)
השיטה TextLayoutResult.getLineVisibleEnd הוצאה משימוש. במקום TextLayoutResult.getLineEnd יש עכשיו פרמטר חדש בשם visibleEnd. (I73282)
TextFieldValue API מעודכן
- made TextFieldValue.composition readonly
- הוסרה חריגה שמופעלת בטווח בחירה לא תקין (I4a675, b/172239032)
תמיכה ב-TtsAnnotation למנוע המרת טקסט לדיבור. (I54cc6)
ממשקי API חדשים להפעלת אנימציות ברוטינות משנה (Ied662)
תיקוני באגים
- השם של פרמטר היישור של Box שונה ל-contentAlignment. (I2c957)
- השם של משני offsetPx שונה ל-offset. עכשיו הם מקבלים פרמטרים של lambda במקום State. (Ic3021, b/173594846)
- נוסף הפרמטר resetInput ל-TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- הוספנו בדיקת לינט לפרמטרים של Modifier בפונקציות Composable. בדיקת ה-lint הזו בודקת את השם, סוג ההחזרה, ערך ברירת המחדל והסדר של הפרמטר כדי לוודא שהם עקביים עם ההנחיות של Compose. (If493b)
- נוספה באופן זמני אפשרות להפעיל את TestAnimationClock באמצעות MonotonicFrameClock (I1403b, b/173402197)
- נוסף ראפ Typeface ל-Android. אפשר לטעון גופן Android באמצעות הפונקציה
typeface
, כלומרtypeface(Typeface.DEFAULT)
. השם שלtypefaceFromFontFamily()
שונה ל-typeface()
(I52ab7) - הוספנו בדיקת lint כדי לוודא שפונקציות של יצירת Modifier מוגדרות כתוספים ב-Modifier, כדי שאפשר יהיה לשרשר אותן בצורה חלקה. (I07981)
- הסרת המודול הישן ui-test וה-stubs שלו (I3a7cb)
- Recomposer לא מקבל יותר EmbeddingContext. יחסי התלות הנדרשים בתזמון מתקבלים מ-effectCoroutineContext. ה-API FrameManager הוצא משימוש. שילובים של פלטפורמות צריכים לאתחל טיפול משלהם בתמונת מצב גלובלית. (I02369)
- העברת מידע על סגנון לצומת הנגישות. (If5e8d)
- השם של TextUnit.Inherit שונה ל-TextUnit.Unspecified כדי לשמור על עקביות עם יחידות אחרות. (Ifce19)
ממשק המשתמש של כתיבת הודעות גרסה 1.0.0-alpha07
11 בנובמבר 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
משוחרר. גרסה 1.0.0-alpha07 מכילה את הקומיטים האלה.
שינויים ב-API
- הוספנו את המחלקה ScaleFactor
inline כדי לייצג גורמי קנה מידה
לצירים האופקי והאנכי, בלי תלות אחד בשני, כדי לתמוך בתרחישי שימוש של שינוי קנה מידה לא אחיד.
- נוספה שיטת computeScaleFactor אל ContentScale
- נוסף ContentScale.FillBounds כדי לבצע שינוי גודל לא אחיד כדי להרחיב את גבולות ה-src כך שימלאו את היעד.
- נוספו שיטות אופרטור לחישוב פרמטרים של ScaleFactor עם פרמטרים של Size.
- (Ic96a6, b/172291582)
- נוספו המפעלים BiasAlignment ו-BiasAbsoluteAlignment ליצירת Alignments. (Iac836, b/169406772)
- מאפשרים למפתח לנקות את המיקוד בכוח. (I90372)
- תוקן באג שגרם לכך שההצללה לא הוצגה בתצוגות בתוך חלון הכתיבה. (If7782)
- נוצר API בשם onDrawBehind בתוך ContentDrawScope כדי להתאים למוסכמת השמות של Modifier.drawBehind. (I4fc3a, b/171955269)
- הוספנו תמיכה במרחק המצלמה כדי להשלים את השינויים בתלת-ממד, rotationX/rotationY, בממשקי API של שכבות. (I40213, b/171492100)
- נוסף SelectionContainer בלי הקריאה החוזרת (Ibfadb)
- ההערה ExperimentalSubcomposeLayoutApi הוסרה. מעכשיו אפשר להשתמש ב-SubcomposeLayout בלי להוסיף @OptIn (I708ad)
- הפונקציות FirstBaseline ו-LastBaseline הועברו לחבילה androidx.compose.ui.layout (Ied2e7)
- הוסר האפקט opacity (אטימות) מהמשנה drawShadow() כי הוא היה מבלבל. (I82c62, b/171624638)
- האובייקט MeasureResult הועבר מחוץ ל-MeasureScope. (Ibf96d, b/171184002)
- כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, b/170475424)
- הוסר FocusState2 שיצא משימוש (I686cb, b/168686446)
- ה-ZIndexModifier הוא עכשיו פנימי (I1808b, b/171493718)
- עדכנו את סוג ההחזרה של שיטת lerp בפרמטרים של Size כדי להחזיר Size שאינו null, וכך למנוע boxing מיותר. (Ib0044)
- נוסף TestMonotonicFrameClock לבדיקת קוד שמסתמך על MonotonicFrameClock של Compose להמתנה לאירועי פריים של קומפוזיציה באמצעות runBlockingTest של kotlinx-coroutines-test (I4402f)
- הוסר GestureScope.localToGlobal (I15299, b/171462785)
- נוסף כלי לחיפוש
onAllNodesWithSubstring
(I81dd7, b/171462889) - המודול androidx.ui.test הוצא משימוש. צריך לעבור אל androidx.compose.ui.test ו-androidx.compose.ui.test.junit4 (I452e8)
תיקוני באגים
- הפונקציה captureToBitmap הועברה אל captureToImage. (I86385)
- המאפיין foundation.Text הוצא משימוש והוחלף במאפיין material.Text. ל-API בסיסי של טקסט שלא צורך ערכים מעיצוב, אפשר לעיין ב-androidx.compose.foundation.BasicText. (If64cb)
- עדכון של TextFields כדי לקבל KeyboardOptions (Ida7f3)
- שינוי השם של KeyboardOptions ל-ImeOptions (I82f36)
- העברנו את KeyboardType ו-ImeAction אל KeyboardOptions (I910ce)
- האפשרות provideDefault נוספה כחלופה לאספקת ערכים של משתנים סביבתיים, ואפשר להשתמש בה כדי לציין ערכים של משתנים סביבתיים שיוגדרו רק אם לא סופק כבר ערך של משתנה סביבתי. (Id6635, b/171024925)
- ה-BaseTextField הוצא משימוש. במקום זאת, משתמשים ב-BasicTextField. (I896eb)
- הצגת המודול ui-test-junit4 (Ib91f8)
- השם של
relativePaddingFrom
שונה לpaddingFrom
. נוסף משנהpaddingFromBaseline
כדי להקל על הגדרת מרחקים מגבולות הפריסה לקווי הבסיס של הטקסט. (I0440a, b/170633813) - השם של LaunchedTask שונה ל-LaunchedEffect כדי לשמור על עקביות עם ממשקי ה-API של SideEffect ו-DisposableEffect. כדי לעודד שימוש בשיטות מומלצות, אסור להשתמש ב-LaunchedEffect ללא פרמטרים של נושא. (Ifd3d4)
- הוספנו משאבים שניתנים להרכבה מחדש כשמתבצע עדכון של ההגדרות. (I6387c, b/167352819)
- מעכשיו, Recomposer דורש CoroutineContext בזמן ההגדרה (Ic4610)
- סכום הערכים של
zIndex
כשמחילים כמה ערכים שלModifier.zIndex()
. בעבר, הראשון היה מנצח. (Ic514c, b/170623936) - שינויים בהטמעה הפנימית של SlotTable שלא אמורים להשפיע על ה-API הציבורי. (If9828)
- נוספה אפשרות לתיקון אוטומטי במקלדת IME (I57b8d)
- androidx.ui.test עבר אל androidx.compose.ui.test (I9ffdb)
- הוסר KeyboardOptions.toImeOptions מ-API ציבורי. (Ic2e45)
External Contribution
- השבתנו את הפרסום של ארטיפקט פנימי androidx.compose.ui:ui-text-android (Ib93fa)
גרסה 1.0.0-alpha06
28 באוקטובר 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
משוחרר. גרסה 1.0.0-alpha06 מכילה את הקומיטים האלה.
שינויים ב-API
- ה-Recomposer הוא עכשיו CompositionReference והורה תקף של קומפוזיציה. השימוש ב-Explicit Recomposer נדרש עכשיו בפחות מקומות. (I4036f)
- הוצאנו משימוש את VectorPainter לטובת rememberVectorPainter כדי לציין בצורה טובה יותר שה-API הניתן להרכבה משתמש באופן פנימי ב-remember כדי לשמור נתונים לאורך זמן בהרכבות. (Ifda43)
- עדכנו את Modifier.drawWithCache API כדי לחשוף את ContentDrawScope כהיקף מקבל במקום DrawScope, כדי לספק הטמעות עם היכולת לסדר מחדש פקודות ציור. האפשרות הזו שימושית לתרחישי שימוש של מיזוג או גוון, שבהם פיקסלים של תוכן צריכים לעבור עיבוד קודם כדי שהאלגוריתם המתאים של מצב המיזוג יופעל בצורה תקינה. (Ie7ec8)
- העברה של SimpleContainer אל PopupTestUtils.kt (I78c57)
- ConsumedData כבר לא מסווג כנתוני שימוש. פרטים נוספים זמינים בכתובת https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- תיקון המיקום של נקודת האחיזה לשינוי הסדר בפריסה מימין לשמאל. (I6e1e0)
- בוצע רפקטורינג של DrawScope ו-ContentDrawScope כך שיהיו ממשקים במקום מחלקות אבסטרקטיות
- נוצרה הטמעה של CanvasDrawScope של DrawScope
- בוצע רפקטורינג בהטמעות של DrawScope כדי להשתמש ב-CanvasScope במקום זאת
- נוצר DrawContext כדי לעטוף תלויות עבור DrawScope
- הוסרו שיטות שיצאו משימוש ב-DrawScope (I56f5e)
- שינוי שובר תאימות: הערך המוחזר הוסר מ-
PointerInputFilter.onPointerEvent(...)
, כי הערך היחיד שאפשר לשנות באירועי הצבעה הוא נתוני הצריכה. במקום להחזיר נתונים מ-PointerInputFilter.onPointerEvent(...)
, עכשיו אפשר פשוט לשנות את נתוני הצריכה של PointerEvents שמועברים. (I6acd0) - הפכנו את MeasureScope ו-IntrinsicMeasureScope לממשקים. (I1a087, b/170461665)
- הסתרנו את פונקציית המיזוג של AlignmentLine. (I9da1a, b/170612900, b/170611568)
- נוספה אפשרות לציין פרטים של הכלי לבדיקת מודעות במאפיין modifier מורכב (Idee08, b/163494569)
- הוספנו את האפשרות 'בחירת הכול' לתפריט הבחירה (Ief02b)
- הפונקציה DrawTransform.rotate עודכנה כך שתקבל פרמטר ברירת מחדל של נקודת ציר במרכז, בהתאם לתיעוד.
- הפונקציה DrawScope.rotateRad עודכנה כך שתצרוך Offset לנקודת הציר כדי להתאים לשיטות טרנספורמציה אחרות.
- הוצא משימוש עומס יתר של DrawScope.rotateRad שצרך ערכי float לקואורדינטות x ו-y של נקודת הציר.
- (Iffcbb, b/170434992)
תיקוני באגים
- הבדיקה של API lint ל-MissingGetterMatchingBuilder מופעלת עבור androidx (I4bbea, b/138602561)
- מוסיפים בדיקה. (I6b8ae)
- מפעילים מעברים ב-ComposeTestRule ומסירים את האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)
- נוספה אפשרות IME של KeyboardCapitalization (I8ac38)
- נוספה אפשרות למקלדת עם שורה אחת ל-CoreTextField (I72e6d)
- העברה של SimpleContainer אל PopupTestUtils.kt (I65c3e)
- שינינו את השם של Radius API ל-CornerRadius כדי להבהיר טוב יותר את אופן השימוש בו ב-Compose. עדכנו את התיעוד כדי לציין שרדיוסים שליליים של פינות מוצמדים לאפס. (I130c7, b/168762961)
- שיפור יכולת הפעולה ההדדית עם Android על ידי המשך שליחת MotionEvents ל-Android Views צאצאים שמחזירים false עבור onTouchEvent לכל הפעולות מלבד
ACTION_DOWN
(I94c5a, b/170320973) - התיבה הפכה לפונקציה מוטמעת. (Ibce0c, b/155056091)
External Contribution
- תמיכה בלוקאלים שונים עבור
AnnotatedString.capitalize
ו-AnnotatedString.decapitalize
(I4aa7f)
גרסה 1.0.0-alpha05
14 באוקטובר 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
משוחרר. גרסה 1.0.0-alpha05 מכילה את הקומיטים האלה.
שינויים ב-API
- הוספת DSL להגדרת פרטי הבודק (Ic9a22)
- מעבירים את LongPress אל Text. (Iff2bc)
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- הוספנו פעולות נגישות להעתקה, הדבקה וגזירה (I6db4f)
- הוסר בנאי ציבורי ל-AndroidOwner (Iacaef)
- חלונות קופצים ותיבות דו-שיח יורשים עכשיו את FLAG_SECURE מהחלון הראשי. נוספה גם אפשרות להגדיר את זה באופן מפורש (I64966, b/143778148, b/143778149)
נתוני הצריכה ניתנים עכשיו לשינוי. בנוסף, קריאות לפונקציות של תוספים שצורכות נתונים כבר לא מחזירות PointerInputChange חדש, אלא משנות את ה-PointerInputChange שסופק.
זה השלב הראשון בתהליך של שני שלבים שנועד לאפשר שינוי של נתוני PointerEvent, כך שקוד משתמש לא יוכל לערוך נתוני מצביע אחרים. בשלב השני, נסיר את סוג ההחזרה
List<PointerInputChange>
מ-PointerInputFilter.onPointerEvent(...)
. (Id067e)השבתה של בחירה בטקסט, והדגמה. (Ie7e97)
הפכנו את onGloballyPositioned לפונקציה מוטמעת (I15830)
השם של OnPositionedModifier שונה ל-OnGloballyPositionedModifier, והשם של onPositioned() שונה ל-onGloballyPositioned(). (I587e8, b/169083903)
המאפיין hasPendingMeasureOrLayout נוסף לאובייקט Owner, כדי לציין אם יש לאובייקט Owner עבודת פריסה בהמתנה. (I3d9f8, b/169038599)
נוסף API לניקוי המיקוד באופן פרוגרמטי (Ie1dc2, b/161487952)
בוצעה הסרה של
PointerInputFilter.onPointerInput(...)
. במקומה, צריך להשתמש ב-PointerInputFilter.onPointerEvent(...)
. (I6f04a)שינויים בגודל
- הוסרה הפונקציה Size.getFlipped
- הוסר Size.rem
- הוסרה הפונקציה Size.truncDiv (Ief44d, b/169790720)
במסגרת התהליך של סטנדרטיזציה של ערכי sentinel עבור מחלקות מוטבעות, שם המחלקה Color.Unset שונה ל-Color.Unspecified כדי לשמור על עקביות עם מחלקות מוטבעות אחרות (I97611, b/169797763).
הוצג TextOverflow.None. כשהערך של overflow הוא None, הרכיב Text לא יטפל יותר בגלישה, וידווח על הגודל בפועל שלו לרכיב LayoutNode. (I175c9, b/158830170)
הפרמטר scope ב-AnnotatedString.Builder.addStringAnnotation נקרא עכשיו tag, כדי לשמור על עקביות ה-API. (I7c8cb)
תיקוני באגים
- הביצועים של LazyColumn/Row משתפרים כי מתבצעת פחות עבודה בהרכב המשנה בכל גלילה. נוספה שיטה חדשה בשם hasInvalidations() למחלקה Composition. השיטה hasPendingChanges() מ-Recomposer שונתה ל-hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- הפרמטרים של Size.Unspecified עודכנו ל-Float.NaN במקום ל-Float.POSITIVE_INFINITY. עודכנו ההטמעות של Painter כדי לבדוק גם את Size.Unspecified וגם את הגדלים הלא סופיים. (I95a7e)
- הסדר של קריאות הפונקציה place() בפריסות מותאמות אישית מגדיר עכשיו את סדר הציור של רכיבי הצאצא (Ibc9f6)
- תמיכה בהמרת AnnotatedString ל-SpannableString לצורך נגישות. (Ief907)
- נוספו stub למחלקות של Android בפלטפורמות ישנות יותר כדי להימנע משימוש בהשתקפות כשזה אפשרי. (Ia1790)
- באג שתוקן: אם המקלדת הווירטואלית שמוצגת גרמה לאפליקציה לתרגם, קואורדינטות הקלט של מצביע העכבר היו שגויות. (Ic4cec, b/163077821)
גרסה 1.0.0-alpha04
1 באוקטובר 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
משוחרר. גרסה 1.0.0-alpha04 מכילה את הקומיטים האלה.
שינויים ב-API
- נוסף OwnerScope כדי לאפשר איסוף של היקפי תצפית על פריסות וציורים ברגע שהם כבר לא תקפים. (Ic4cf8)
- נוספו OnRemeasuredModifier ו-onSizeChanged() כדי לקבל קריאה חוזרת (callback) כשפריסת התוכן נמדדה מחדש והגודל השתנה, בהתאמה. (I657cf, b/154108792)
- הוספת פעולה של לחיצה ארוכה (I6281b, b/156468846)
- הגדרנו את FocusManager כפרטי. (I7872f)
העדכון בהטמעה הוא יצירה של הטמעה ייעודית של DrawCacheModifier במקום הוספה של מאפיינים אופציונליים ב-DrawModifier.
עדכון התיעוד של שיטות שונות (Ibd166)
כדאי להגדיר את TextRange כ-inline כדי להימנע מיצירת אובייקט. (Id034b)
אי אפשר יותר לקרוא את הערכים PlacementScope#parentWidth ו-PlacementScope#parentLayoutDirection מבלוק המיקום של פריסת מודעות בהתאמה אישית. (Icc1ae, b/168295623)
מוסיפים את AccessibilityScrollState למאפייני הסמנטיקה. (Ifeda9)
נוסף Modifier.drawWithCache כדי לתמוך ביצירת אובייקט ציור שיוצר מחדש באופן מותנה תלויות שתלויות במידע על גודל או מצב (I376dc)
המאפיין ParagraphConstraints הוסר. הרוחב מועבר עכשיו ישירות לפסקה. (Ica712)
תיקוני באגים
- עודכנו הרבה ממשקי API של גרפיקה
- ממשקי ה-API של שינוי קנה מידה וסיבוב עודכנו כך שישתמשו בפרמטר Offset יחיד כדי לייצג את קואורדינטת נקודת המשען, במקום בפרמטרים נפרדים של מספרים ממשיים לקואורדינטות x/y ב-DrawScope וב-DrawTransform
- הוסרו השיטות Rect.expandToInclude ו-Rect.join
- עודכן התיעוד של הרדיוס כך שיכלול גם צורה אובלית בנוסף לצורה אליפטית
- הוספנו תיעוד שמציין שאסור לקרוא ישירות לבנאי הציבורי של מחלקת Radius מוטבעת, אלא ליצור מופעים של אובייקטים של Radius באמצעות בנאי הפונקציות שלהם
- הוסרו ממשקי RoundRect API לשאילתות topRight, bottomRight, bottomCenter וכו'.
- הוצא משימוש Rect.shift לטובת Rect.translate
- הוסרו ממשקי ה-API RoundRect.grow ו-Rect.shrink
- השם של RoundRect.outerRect שונה ל-Rect.boundingRect
- הוסרו השיטות RoundRect.middleRect/tallMiddleRect/wideMiddleRect ו-Rect.isStadium
- השם של RoundRect.longestSide שונה ל-RoundRect.maxDimension
- השם של RoundRect.shortestSide שונה ל-RoundRect.minDimension
- הפונקציה RoundRect.center שונתה והפכה למאפיין במקום לפונקציה
- העדכון של ה-constructor של RoundRect מאפשר להשתמש במאפייני Radius במקום בפרמטרים נפרדים של ערכי הרדיוס x/y
- הוסרו ממשקי API של גודל שהניחו שמדובר במלבן עם מקור ב-0,0
- הוספנו API להשמדה ל-Radius
- העברנו פונקציות שונות של התוסף RoundRect להיות מאפיינים במקום
- (I8f5c7, b/168762961)
- הוצא משימוש foundation.Box. במקומה צריך להשתמש ב-foundation.layout.Box. (Ie5950, b/167680279)
- השם של Stack שונה ל-Box. ה-Box הקיים יוצא משימוש לטובת ה-Box החדש ב-compose.foundation.layout. ההתנהגות של Box החדש היא להציב את רכיבי הצאצא אחד מעל השני כשיש לו כמה רכיבי צאצא – זה שונה מ-Box הקודם, שהתנהג בצורה דומה ל-Column. (I94893, b/167680279)
- הפרמטרים של קישוט התיבה הוצאו משימוש. אם רוצים להוסיף קישוטים או ריווח לתיבה, צריך להשתמש במקום זאת בשינויים (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- עודכנו הרבה ממשקי API של גרפיקה
- עדכנו את ממשקי ה-API של DrawScope עם שיטות טרנספורמציה בהיקף מוגבל כדי לציין שהטרנספורמציה חלה רק בתוך הקריאה החוזרת (callback) ומוסרת אחרי שהקריאה החוזרת מופעלת.
- עדכון במסמכי התיעוד של clipPath כדי להפנות אל Path במקום אל מלבן מעוגל
- תוקן הרווח במסמכי התיעוד של הפרמטר right ב-clipPath
- השם של DrawScope.drawCanvas שונה ל-drawIntoCanvas והוסר פרמטר הגודל
- שמות הפרמטרים dx/dy בשיטת inset שונו ל-horizontal ו-vertical
- נוספה עומס יתר של inset שמספק את אותו ערך inset לכל 4 הגבולות
- הסרנו את התיעוד בנושא שיטת ההזחה, שצוין בו שההזחה תחול על כל 4 הצדדים
- עדכון התיעוד של המחלקה Rect
- עדכון ההערות על פרמטרים של Rect כדי להתאים לסגנון kdoc
- הוסרו Rect.join ו-Rect.expandToInclude
- נוצר עומס יתר עבור Rect.translate(offset) ו-Rect.shift הוצא משימוש
- (If086a, b/167737376)
- הוספת ההערה @VisibleForTesting ל-rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled ו-textInputServiceFactory, כדי להפוך אותם ל-API פנימי ולהסתיר את ה-kdoc שלהם (I554eb, b/168308412)
- כדי להשבית את הבחירה שמוגדרת כברירת מחדל ולמנוע התנהגות בלתי צפויה, צריך להסיר את SelectionContainer מהחלק העליון. אפשר להשתמש ב-SelectionContainer באופן ספציפי כדי לעטוף את התוכן שצריך להיות ניתן לבחירה. (I8dfe0, b/158459594)
גרסה 1.0.0-alpha03
16 בספטמבר 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
משוחרר. גרסה 1.0.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרת פעולות סמנטיות של גלילה קדימה או אחורה. נוספו שלבים ב-AccessibilityRangeInfo. (Ia47b0)
- הוסר
onInvalidate()
מהרשימהOwner
–OwnedLayer
מטפל בביטול תוקף. (Ica72b, b/162061312) הוסרו שיטות של אופרטורים ב-Size API שצורכות פרמטרים של Offset. התוצאה של הפעולות האלה לא ברורה, והסוג של התוצאה לא צפוי. לדוגמה, אם הפונקציה size - offset מחזירה הפרש, האם היא צריכה להחזיר את ההפרש או את התוצאה של גודל או היסט?
הוסרו גם שיטות שהוצאו משימוש במחלקה Size. (Iec902, b/166514214)
תיקוני באגים
- תוקנה הבעיה שבה לפעמים פריטים של LazyColumn נמשכו בצורה שגויה, מה שגרם גם לקריסות בתנאים מסוימים. (Ibcf17, b/163066980, b/165921895)
- הוצאנו משימוש את DpConstraints ואת ממשקי ה-API שמשתמשים בו. (I90cdb, b/167389835)
- הועברו
createAndroidComposeRule
וAndroidInputDispatcher
מandroidx.ui.test.android
אלandroidx.ui.test
(Idef08, b/164060572) - השימוש ב-gravity שונה באופן עקבי ל-align או ל-alignment ב-APIs של פריסות. (I2421a, b/164077038)
- נוספו onNode ושיטות גלובליות אחרות ב-ComposeTestRule כי השיטות הגלובליות הנוכחיות יוצאו משימוש. (Ieae36)
גרסה 1.0.0-alpha02
2 בספטמבר 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
משוחרר. גרסה 1.0.0-alpha02 מכילה את הקומיטים האלה.
שינויים ב-API
- הסרת קריאה חוזרת כדי להודיע לבעלים כשמשתנים הגבולות של layoutnode. (If654e, b/166106882)
- הוספנו תמיכה בפרמטרים של filltype בנתיבי גרפיקה וקטורית כדי לתמוך בחיתוכי צורות בהתאם לכללי מילוי הנתיבים evenOdd או NonZero. (I43dd2)
- השיעורים Uptime ו-Velocity הם עכשיו שיעורים מוטבעים (I48f4a)
- המאפיין 'משך' הוא עכשיו מחלקה מוטבעת (I565eb)
- הוספת קריאה חוזרת כדי להודיע לבעלים כשגבולות layoutnode משתנים. (Ic40b3)
תוקנה בעיה שבה בנאי הפונקציה Rect עם Offset ורדיוס יצר את ה-Rect בסדר left, right, top, bottom במקום בסדר left, top, right, bottom.
הוסרו שיטות נלוות שהוצאו משימוש ב-Rect לטובת בנאים של פונקציות.
נוספו בדיקות לאימות שיטות ב-Rect.kt (I08460, b/165822356)
תיקוני באגים
- נוסף MutableRect, מלבן שאפשר לשנות. (I71bd2, b/160140398)
- Matrix4 הוחלף ב-Matrix. כל החלקים האחרים בחבילת vectormath הוסרו. (Ibd665, b/160140398)
המוסכמה לקריאה לפונקציות שאפשר להרכיב השתנתה. זהו שינוי בינארי שעלול לגרום לכשל. צריך לקמפל מחדש את כל הספריות כדי שהן יפעלו עם הגרסה הזו של תוסף מהדר ה-Compose.
השינוי הזה לא יוצר שינוי שובר תאימות ברמת המקור, כי ממשקי ה-API היחידים שהשתנו הם ממשקי API של קומפיילר שנדרשת הסכמה מפורשת לשימוש בהם. (I7afd2, b/158123185)
תוקנה קריסה שיכולה להתרחש כששליחה ל-PointerInputFilter עלולה לגרום להסרה סינכרונית של ה-PointerInputFilter. (I58f25)
גרסה 1.0.0-alpha01
26 באוגוסט 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
משוחרר. גרסה 1.0.0-alpha01 מכילה את הקומיטים האלה.
גרסה 0.1.0-dev
גרסה 0.1.0-dev17
19 באוגוסט 2020
androidx.compose.ui:ui-*:0.1.0-dev17
משוחרר. גרסה 0.1.0-dev17 מכילה את הקומיטים האלה.
שינויים ב-API
- האפשרות
emitView
הוצאה משימוש. אם אפשר, משתמשים ב-AndroidView
במקום זאת כדי להוציא Views בתוך Compose. שימו לב: בעתיד לא תהיה תמיכה בהוספה ישירה של Views ו-ViewGroups, אלא אם הם עלים בעץ ההרכב. במקרה כזה, אפשר להשתמש ב-AndroidView. (I29b1e, b/163871221) -
FocusState2
הוצא משימוש והוחלף ב-FocusState
(Ia8b79, b/160822876, b/160923332) - הוסרו עומסי היתר של AndroidView שהוצאו משימוש. (I946b9, b/163802393)
- עכשיו אפשר להצהיר בפונקציות emit מותאמות אישית שאפשר לדלג על אחת או יותר מהפונקציות setter שלהן ולבצע קומפוזיציה מחדש באופן עצמאי. (Ibbd13)
שינינו את מחלקות הווקטור כך שלא יהיו יותר מחלקות נתונים, כי נעשה שימוש באותו מופע אובייקט ליצירה.
נוסף דגל mutableStateOf ל-VectorPainter כדי לצייר מחדש באופן מותנה אם התוכן של הווקטור משתנה.
בוצע רפקטורינג של מופע VectorComponent כדי שיהיה חלק מ-VectorPainter, כי נעשה בו שימוש חוזר בקומפוזיציות.
בוצע עדכון של GroupComponent ו-PathComponent כך ששדות השם שלהם ניתנים לשינוי (Ieae45, b/151378808)
הוסרו
onChildPositioned
ו-OnChildPositionedModifier
. המפתחים צריכים להשתמש ב-onPositioned
וב-OnPositionedModifier
בפריסת הצאצא במקום זאת. (I4522e, b/162109766)ההיסט הפך למחלקה מוטבעת (Iaec70)
נוסף פרמטר של שינוי ל-SelectionContainer (I4aada, b/161487952)
הוסר FocusModifier שיצא משימוש (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
הוספת פונקציית lambda
mergePolicy
אלSemanticsPropertyKey
. אפשר להשתמש בזה כדי להגדיר מדיניות מותאמת אישית למיזוג סמנטי של mergeAllDescendants. מדיניות ברירת המחדל היא להשתמש בערך של ההורה אם הוא כבר קיים, אחרת בערך של הצאצא. (Iaf6c4, b/161979921)האילוצים הם עכשיו מחלקה מוטבעת (I88736)
נוסף FocusManager שמעביר את הלוגיקה הנפוצה של המיקוד מ-AndroidComposeView (I528ef, b/161487952, b/162206799)
שמות מעודכנים של PointerEventPass לגרסת אלפא. (Ifda6f)
IntOffset הוא עכשיו מחלקה מוטמעת (Iac0bf)
IntSize היא עכשיו מחלקה מוטבעת (I2bf42)
השם של
PlacementScope.placeAbsolute()
שונה ל-PlacementScope.place()
, והשם הקודםPlacementScope.place()
שונה ל-PlacementScope.placeRelative()
. כתוצאה מכך, השיטהPlacementScope.place()
לא תשקף יותר אוטומטית את המיקום בהקשרים של כתיבה מימין לשמאל. אם רוצים להשתמש במדיניות הזו, צריך להשתמש במדיניותPlacementScope.placeRelative()
במקום זאת. (I873ac, b/162916675)AlertDialog משתמש עכשיו ב-FlowRow ללחצנים (I00ec1, b/161809319, b/143682374)
חלק מכלי הבדיקה לא ציבוריים כי הם לא נמצאים במקום הנכון. הסרטון יהיה גלוי לכולם בעתיד. (I32ab1)
שינוי מבנה הקוד של קלט מצביע. (Ie3f45)
הוצאה משימוש של PxBounds לטובת Rect. עדכנו את כל השימושים ב-PxBounds ל-rect והוספנו הערות מתאימות של deprecate/replace with כדי לעזור במיגרציה. (I37038, b/162627058)
הוסר KeyEvent2 שהוצא משימוש. במקומו, צריך להשתמש ב-KeyEvent. (Ied2d0, b/162097587)
ל-KeyEvent יש מאפיין unicode שאפשר להשתמש בו כדי לקבל את תו ה-unicode שנוצר על ידי השילוב של המקש שצוין ומצב מקש המטא (If3afc)
הפכנו את האירוע המותאם אישית DelayUp ואת המחלקות שקשורות אליו ל-API אופציונלי, כי סביר מאוד שהוא ישתנה. (I56d6f)
הוסרו 2 PointerEventPasses שכבר לא נדרשים. (I3dd9d)
הוספת פרמטרים של צבע, צל ו-TextDecoration ל-Paragraph.paint. הפונקציה הזו שימושית כדי להימנע מיצירה מחדש של Paragraph שלא לצורך. (I81689)
תיקוני באגים
- הוסרו קריאות חוזרות (callback) של onFocusChanged מ-TextField. במקומו, צריך להשתמש ב-Modifier.focusObserver. (I51089, b/161297615)
- המאפיין Modifier.drawBorder הוצא משימוש. במקומו צריך להשתמש ב-Modifier.border. הוחלף סוג הנתונים Border ב-BorderStroke (I4257d, b/158160576)
הוסרו קריאות ל-FrameManager שיצאו משימוש.
בוצעו שינויים בממשקי API פנימיים של יצירת הודעות כדי לצמצם את התקורה של מעקב אחרי אובייקטים של מצב כמו
mutableStateof()
(I80ba6)הוסרו הרכיבים VerticalScroller ו-HorizontalScroller. במקום זאת, צריך להשתמש ב-ScrollableColumn/Row. הפונקציה Modifier.drawBackground הוסרה. שימוש ב-Modifier.background (I73b0d, b/163019183)
תוקנה קריסה שמתרחשת כשמשתמשים בלולאת for במשהו ששומר את המצב. עכשיו מותר להשתמש באותו מפתח ב-savedInstanceState(), ה-API של UiSavedStateRegistry מותאם עכשיו לדרישה החדשה הזו (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
הקומפוזיציה
state { ... }
הוצאה משימוש, ועכשיו מומלץ להשתמש בקריאות מפורשות ל-remember { mutableStateOf(...) }
כדי לשמור על בהירות. השינוי הזה מצמצם את כלל ממשקי ה-API ואת מספר המושגים לניהול מצב, והוא תואם לתבניתby mutableStateOf()
להעברת מאפייני מחלקה. (Ia5727)השם RRect שונה ל-RoundRect כדי להתאים יותר לדפוסי השמות של Compose. נוצרו בנאים דומים של פונקציות ל-RRect, והוצאו משימוש בנאים של פונקציות RRect (I5d325).
גרסה 0.1.0-dev16
5 באוגוסט 2020
androidx.compose.ui:ui-*:0.1.0-dev16
משוחרר. גרסה 0.1.0-dev16 מכילה את הקומיטים האלה.
שינויים ב-API
- המאפיין OnChildPositioned הוצא משימוש. במקום זאת, צריך להשתמש ב-OnPositioned ברכיב הצאצא. (I87f95, b/162109766)
- הפונקציה setViewContent הוצאה משימוש. במקומה צריך להשתמש בפונקציה setContent. (I7e497, b/160335130)
- נוסף AndroidViewBinding API לניפוח ולחיבור של משאבי פריסה, על סמך ViewBinding. (I081c6)
- הוחלף KeyEvent2 ב-KeyEvent (I2d770, b/162097585)
- נוספה תמיכה במקש Alt בחומרה (I9036b)
- ה-API FocusManager הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.focus(), ב-Modifier.focusObserver() וב-Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource תומך במאפייני trimPath (I808fe)
- העברת תיבת דו-שיח לממשק המשתמש (I47fa6)
- הוסרו 2 PointerEventPasses שכבר לא נדרשים. (I33ca7)
- הוטמע PointerInteropModifier שמאפשר לקבל MotionEvents ולקיים אינטראקציה עם Compose כאילו מדובר בהטמעה של Android View. (Ieb08c)
- הוסר שינוי התג שיצא משימוש. במקומו צריך להשתמש ב-layoutId. (Idaa05, b/162023919)
- ממשקי ה-API לתמיכה בכתיבה מימין לשמאל עודכנו. נוסף LayoutDirectionAmbient, שאפשר להשתמש בו כדי לקרוא ולשנות את כיוון הפריסה. המאפיינים Modifier.rtl ו-Modifier.ltr הוסרו. (I080b3)
- תמיכה בחיתוך נתיבים בגרפיקה וקטורית (Ie16c9, b/158188351)
- נוספה הפונקציה Modifier.layout() שמאפשרת ליצור בקלות משנה פריסה בהתאמה אישית (I73b69, b/161355194)
- הוספנו AndroidView API חדש והוצאנו משימוש את הקיימים. (I5bcfd)
- ה-API Modifier.plus הוצא משימוש. במקומו צריך להשתמש ב-Modifier.then. השימוש במילה 'אז' מעביר מסר חזק יותר של סדר, וגם אוסר על הקלדת
Modifier.padding().background() + anotherModifier
, מה ששובר את הרצף ומקשה על הקריאה (Iedd58, b/161529964) - Add [Abstract]ComposeView View subclasses for hosting Compose content in a View hierarchy. (I46357)
- הפונקציות
Row
ו-Column
הן עכשיו פונקציות מוטמעות, מה שמפחית באופן משמעותי את התקורה של השימוש בהן. (I75c10) - SubcomposeLayout נוסף. זוהי פרימיטיב ברמה נמוכה שמאפשרת להרכיב את הילדים במהלך המדידה, אם רוצים להשתמש בערכים מסוימים שזמינים רק מאוחר יותר במהלך המדידה להרכבת עץ המשנה. לדוגמה, WithConstraints לא מיושם באמצעות SubcomposeLayout. (I25cc8)
- נוספה הפונקציה
SemanticsNode.positionInRoot
כדי לקבל את המיקום של SemanticsNode ביחס לבסיס של היררכיית Compose (Icdf26, b/161336532) - MotionEvents עוברים לאורך כל הדרך מ-Android, אל Compose, ובחזרה אל Android. (I14be8, b/158034713)
- הוסר dropdownPopup. (I00430)
- מיקום קבוע של חלונות קופצים במסכים עם מגרעת. (Idd7dd)
- הוספת פעולת נגישות לקבלת TextLayoutResult (I9d6e6)
- נוסף RemeasurementModifier. הוא מאפשר למדוד מחדש את הפריסה באופן סינכרוני. בדרך כלל לא צריך את זה כי המדידה מחדש או הפריסה מחדש מתבצעות באופן אוטומטי, אבל אנחנו משתמשים בזה בתוך LazyColumnItems במהלך הגלילה. (I5f331, b/160791058)
- הסרה של getLineEllipsisOffset/getLineEllipsisCount. במקום זאת, צריך להשתמש ב-getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- מומלץ להוסיף סימנים או הערות. (I66b20)
- הוספת עוד ממשקי API של שורות ל-TextLayoutResult. (I79bd2)
- עכשיו אפשר לגשת לממירים וקטוריים מובנים כדי להמיר יחידות מובנות באמצעות Foo.VectorConverter. לדוגמה: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter וכו' (I3e273)
תיקוני באגים
- טיפלנו בבעיות נרחבות ב-API (I077bc)
- הסרה של ממשק OffsetBase שלא בשימוש
- התאמה בין המחלקות Offset ו-IntOffset כדי ליצור ממשק API עקבי
- שינוי השם של IntOffset.Origin ל-IntOffset.Zero כדי לשמור על עקביות עם Offset API
- העברנו את השיטה nativeCanvas מממשק Canvas כדי לתמוך בצרכנים שרוצים ליצור מופעי Canvas משלהם
- נוצר מחלקה של stub EmptyCanvas כדי לבצע refactoring של DrawScope כך שיהיה פרמטר שאינו null במקום lateinit, וכדי להבטיח שהשדה לא יהיה null
- שינינו את השם של סוגי ה-enum ClipOp ל-Pascal Case
- השמות של הערכים המנויים (enum) של FilterQuality שונו ל-Pascal Case
- שינינו את השם של סוגי ה-enum של StrokeJoin ל-Pascal Case
- שמות הערכים של PointMode שונו ל-Pascal Case
- שינוי השם של סוגי ה-enum PaintingStyle ל-Pascal Case
- שמות ה-enum של PathFillType שונו ל-Pascal Case
- השמות של סוגי ה-enum של StrokeCap שונו ל-Pascal Case
- היישום של DrawCache עודכן כך שהוא לא משתמש יותר בפרמטרים של lateinit
- העדכון של DrawScope לא מאפשר יותר שימוש בהעברת הרשאות עצלה לפרמטרים הפנימיים fillPaint ו-strokePaint
- בוצע עדכון של Image composable כדי להימנע משימוש ב-Box לצורך תקורה נמוכה יותר
- עדכון של המחלקה Outline כך שתכלול הערות מסוג @Immutable
- העדכון של PathNode כולל הערות @Immutable לכל הוראת נתיב
- בוצע עדכון של Vector subcomposition כדי להסיר בדיקות מיותרות של שוויון מותנה, כי compose כבר מטפל בהן
- הוצאנו משימוש את שיטות ה-constructor הנלוות של Rect לטובת פונקציות constructor
- עדכנו את מחלקות המברשות ואת בנאי הפונקציות באמצעות ממשקי API של @Immutable ו- @Stable
- העדכון של ספירת VertexMode ל-PascalCase
- השיטה selectPaint של DrawScope עודכנה כדי להחליף באופן מותנה את פרמטרים של קו המכחול בציור אם הם השתנו
- העדכון של Size כולל הוספה של API לפירוק מבנה, שינוי השם של UnspecifiedSize ל-Unspecified והסרה של שיטות שלא נמצאות בשימוש
- עדכנו את השימוש ב-BlendMode API של Compose כדי למפות בצורה נכונה בין מצבי BlendMode של Android framework לבין מצבי PorterDuff, בהתאם לרמת ה-API. הוספנו את BlendMode#isSupported API כדי שישמש כשאילתת יכולת לקביעה אם BlendMode נתמך במכשיר לפני השימוש בו. (I0ef42)
- הוספנו את LazyItemScope לפרמטר itemContent של רשימות Lazy. הוא מספק משנים למילוי הגודל המקסימלי של הרכיב ההורה, וכך פותר את מקרה השימוש שבו הפריט צריך למלא את אזור התצוגה והמשנה הרגיל Modifier.fillMaxSize() לא פועל כי הפריט נמדד עם אילוצי אינסוף. (Ibd3b2, b/162248854)
- בוצעה הסרה של
SemanticsNodeInteraction.performPartialGesture
. במקום זאת, אתם צריכים להשתמש ב-SemanticsNodeInteraction.performGesture
. (Id9b62) - השם של
LazyColumnItems
שונה לLazyColumnFor
. השם שלLazyRowItems
שונה לLazyRowFor
(I84f84) - החבילה
foundation.shape.corner
נפרסה ל-foundation.share
(I46491, b/161887429) - השם של
AndroidComposeTestRule
שונה ל-createAndroidComposeRule
. (I70aaf) - הוספנו עוד ממשקי API ל-
TextLayoutResult
. (Id7e04) - השם של Material
FilledTextField
שונה ל-TextField
, והשם של foundationalTextField
שונה ל-BaseTextField
, כדי שיהיה קל יותר למצוא את ה-API הרצוי הפשוט ביותר ולהשתמש בו (Ia6242, b/155482676) - השם של Modifier.drawBackground שונה ל-Modifier.background (I13677)
גרסה 0.1.0-dev15
22 ביולי 2020
androidx.compose.ui:ui-*:0.1.0-dev15
משוחרר. גרסה 0.1.0-dev15 מכילה את הקומיטים האלה.
עדכון של יחסי תלות
- כדי להשתמש בגרסה
0.1.0-dev15
של Compose, צריך לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרה על יחסי תלות.
שינויים ב-API
- השימוש ב-FocusModifier הוצא משימוש והוחלף ב-Modifier.focus, Modifier.focusRequester ו-Modifier.focusObserver. המאפיינים FocusState ו-FocusDetailedState הוצאו משימוש לטובת FocusState2 (I46919, b/160822875, b/160922136)
- נוסף משנה כדי לעקוב אחרי שינוי במצב המיקוד. (I05866, b/160924455, b/160923326)
- נוסף משנה לבקשות לשינוי המיקוד (I8dd73, b/161182057, b/160924778)
- שינוי בתפריט סרגל הכלים כדי להציג את האפשרויות 'העתקה', 'גזירה' ו'הדבקה' בצורה תקינה. (Id3955)
- מאפיינים סמנטיים של ערך יחיד משתמשים עכשיו בסגנון קריאה.
לדוגמה, המחרוזת 'semantics { hidden = true }' נכתבת עכשיו כך:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - נוסף Modifier.focus שמחליף את FocusModifier. (Ib852a, b/160924778)
- הוספת סרגל כלים צף לבחירת שדה טקסט. (Ie8b07)
- הוספנו הערת API ניסיונית ל-API שקשור לקלט של מקשים (I53c0a)
- נוספה הערת API ניסיונית לכל ה-API שקשור למיקוד (I53b24, b/160903352)
- נוסף FocusState2 שיחליף את FocusDetailedState (I0a3ba, b/160822595)
- הוספנו את ExperimentalFocus, הערת OptIn ל-Focus API. (I1544b, b/160820961)
- נוספה מחלקת יחידות IntBounds שמייצגת גבולות של פיקסלים שלמים מפריסת הדף. ה-API של PopupPositionProvider עודכן כדי להשתמש בו. (I0d8d0, b/159596546)
- הכלי Applier דורש עכשיו שימוש בשיטה clear() לסילוק קומפוזיציות (Ibe697)
- האירוע KeyEvent הוצא משימוש והוחלף ב-KeyEvent2 (I68730)
- נוסף דגל אופציונלי חדש useUnmergedTree לבדיקת כלי חיפוש. (I2ce48)
- הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
הוספנו שיטות העתקה לסוגים שונים של מחלקות מוטבעות, כולל:
- היסט
- גודל
- רדיוס
- נסיעה, תנועה
TransformOrigin
הוצאה משימוש של השיטה Size.copy של אובייקט נלווה לטובת שיטת העתקה של מופע (Ife290, b/159905651)
חלונות קופצים, תיבות דו-שיח ותפריטים מקבלים עכשיו בירושה את MaterialTheme ההקשרי (Ia3665, b/156527485)
השם של TextDirection השתנה ל-ResolvedTextDirection (I3ff38)
הוסר פרמטר כיוון הפריסה מבלוק המידה של הפונקציה Layout(). עם זאת, כיוון הפריסה זמין בתוך הקריאה החוזרת דרך אובייקט היקף המדידה (Ic7d9d)
שינוי מבנה הקוד של SelectionHandles לשימוש חוזר. (I420e0)
המאפיין Clickable הוסר. שימוש ב-Modifier.clickable (I84bdf)
התכונות TestTag ו-Semantics נמחקו. במקום זאת, אפשר להשתמש ב-Modifier.testTag וב-Modifier.semantics (I15ff0, b/158841414)
לפני השינוי הזה, תוסף הקומפיילר של Compose היה מיירט באופן לא טריוויאלי קריאות ל-constructors בתוך פונקציה עם annotation @Composable אם הייתה (I5205a, b/158123804)
השם של Modifier.tag שונה ל-Modifier.layoutId כדי למנוע בלבול עם Modifier.testTag. (I995f0)
המיקומים של קו היישור שמוחזרים מ-Placeable#get(AlignmentLine) הם עכשיו לא null. אם קו היישור שנשלחה לגביו שאילתה חסר, יוחזר הערך AlignmentLine.Unspecified. (I896c5, b/158134875)
נוסף פרמטר של modifier לקומפוזיציה AndroidView. (I48a88, b/158746303)
הפונקציה Semantics() הוצאה משימוש. במקומה צריך להשתמש ב-Modifier.semantics(). (I72407, b/158841414)
הוספנו את פונקציית ה-composable viewModel() שמאפשרת ליצור ViewModel או לקבל ViewModel שכבר נוצר, באופן דומה לאופן שבו היא פועלת ב-Activity או ב-Fragment (I5fdd1)
השימוש ב-IntPx הוחלף ב-Int. השימוש ב-IntPxPosition הוחלף ב-IntOffset. המאפיין IntPxSize הוחלף במאפיין IntSize. (Ib7b44)
כדי לאחד את מספר הכיתות שמשמשות לייצוג מידע על גודל, צריך להשתמש בכיתת הגודל במקום ב-PxSize. היתרון של שימוש במחלקה מוטבעת הוא שאפשר להשתמש בערך ארוך כדי לארוז 2 ערכים מסוג float שמייצגים רוחב וגובה. (Ic0191)
כדי לצמצם את מספר המחלקות שמשמשות לייצוג נתוני מיקום, מומלץ להשתמש במחלקה Offset במקום ב-PxPosition. השימוש במחלקה מוטבעת מאפשר לנצל את היתרונות של long כדי לארוז 2 ערכי float לייצוג של היסטים x ו-y שמיוצגים כערכי float. (I3ad98)
החלפנו את השימוש במחלקה Px בכמה מחלקות Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים. מחקנו את הכיתה Px במלואה (I3ff33)
החלפנו את השימוש במחלקת Px בכמה מחלקות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I086f4)
החלפנו את השימוש במחלקת Px בכמה מחלקות Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (Id3434)
החלפנו את השימוש במחלקה Px בכמה מחלקות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I97a5a)
התג TestTag הוצא משימוש. במקומו, צריך להשתמש ב-Modifier.testTag. (If5110, b/157173105)
ההטמעה של ParentDataModifier#modifyParentData שהוגדרה כברירת מחדל, לא פעילה, הוסרה – היא הייתה שוות ערך לאי-הטמעה של הממשק מלכתחילה. (I0deaa)
הוצאנו משימוש את ScaleFit. במקומה, צריך להשתמש ב-ContentScale. (Ifbc5b)
החלפנו את השימוש במחלקה Px בכמה מחלקות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I19d02).
נוסף הרכיב DropdownMenu ב-ui-material, הטמעה של תפריט Material Design. (I9bb3d)
הוסר LayoutTag() שהוצא משימוש. במקומו צריך להשתמש ב-Modifier.tag(). הוסר השימוש ב-Modifier.matchParent() שהוצא משימוש. במקומו צריך להשתמש ב-Modifier.matchParentSize(). (If8044)
החלפנו את השימוש במחלקת Px בכמה מחלקות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I57bff)
הפסקנו את ההוצאה משימוש של Modifier.semantics כדי לאפשר שימוש ברכיבים ברמה גבוהה. (I4cfdc)
איחדנו את ההטמעות של CanvasScope, כך שעכשיו יש רק DrawScope ו-ContentDrawScope. שינינו את השם של CanvasScope ל-DrawScope. בוצע עדכון ב-DrawScope כדי להטמיע את הממשק Density ולספק את LayoutDirection מחלקת המשנה DrawScope נמחקה ב-ContentDrawScope בוצע עדכון ב-Painter וב-PainterModifier כדי שלא יחזיקו יותר במאפיין RTL בעצמם, כי DrawScope כבר מספק את זה בלי לספק אותו באופן ידני (I1798e)
DoubleTapGestureFilter מבחין עכשיו בין SingleTapGestureFilter בעץ. (If92b1)
API מעודכן של יישור והוספת תמיכה ביישור מוחלט (שלא משתקף אוטומטית בהקשר של RTL) (I38cd3)
בוצעו שינויים ב-DrawLayer modifiers API: השם של outlineShape שונה ל-shape, ערך ברירת המחדל שלו הוא RectangleShape והוא כבר לא יכול להיות null. השם של clipToOutline שונה ל-clip. האפשרות clipToBounds הוסרה כי היא זהה ל-clip == true עם RectangleShape (I7ef11, b/155075735)
בוצע עדכון של ממשקי API ברמה גבוהה יותר של Compose, שחושפים Canvas, כדי לחשוף CanvasScope במקום זאת. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם של Paint. צרכנים שעדיין צריכים גישה ל-Canvas יכולים להשתמש בשיטה של התוסף drawCanvas, שמספקת קריאה חוזרת להנפקת פקודות ציור עם ה-Canvas הבסיסי. (I80afd)
בוצע שינוי ב-API של lambda עם Constraints trailing. עכשיו, במקום שני פרמטרים, יש לו היקף של מקבל, שבנוסף למגבלות ול-layoutDirection מספק את המאפיינים minWidth, maxWidth, minHeight ו-maxHeight ב-Dp (I91b9a, b/149979702)
השם של LayoutModifier2 שונה ל-LayoutModifier. (Id29f3)
הוסר הממשק LayoutModifier שיצא משימוש. (I2a9d6)
לפונקציות המדידה המובנות ב-Layout וב-LayoutModifier2 יש עכשיו מקבל IntrinsicMeasureScope שמספק API של שאילתות מובנות עם כיוון פריסה שמועבר באופן מרומז. (Id9945)
אפשר למדוד רכיבי צאצא של Layout ו-LayoutModifier עם כיוון פריסה שונה. (Ibd731)
נוסף Modifier.zIndex() כדי לשלוט בסדר הציור של רכיבי הצאצא בפריסת האב. השם של המאפיין elevation ב-DrawLayerModifier שונה ל-shadowElevation, והוא כבר לא שולט בסדר הציור. הסדר של הפרמטרים של DrawShadow השתנה: elevation הוא עכשיו הראשון והצורה היא השנייה עם ברירת מחדל של RectangleShape. (I20150, b/152417501)
הוסרו הפונקציות onSizeChange ו-onPositionChange ב-Owner. (I5c718)
נוסף Constraints2, עותק של Constraints שתומך רק בערכי Int connstraints ולא ב-IntPx. המאפיין IntPx יוסר וכל האילוצים של מספרים שלמים יניחו שהם פיקסלים כמו ב-Android.
- נוסף גם IntSize, שיחליף בסופו של דבר את IntPxSize. (I4b43a)
הפכנו את Alignment לניתן ליצירה עם ערכים שרירותיים. נוספו התאמות חד-ממדיות. (Ia0c05)
הפונקציה alignToSiblings מקבלת עכשיו Measured במקום Placeable. (I5788d)
(I45f09, b/152842521)
- שינוי השם של ScaleFit ל-ContentScale
- העברנו את ContentScale מ-ui-graphics ל-ui-core module כדי שיהיה באותו מודול כמו Alignment API.
- השם של FillMaxDimension שונה ל-Crop
- השם של הפונקציה FillMinDimension שונה ועכשיו הוא Fit
- שינינו את השם של Fit to Inside (התאמה לתוך המסגרת) ל-Inside (בתוך המסגרת) כדי שיהיה יותר ברור
- מקבילות של ImageView.ScaleType
- הוספנו מסמכים שמציינים שהשילוב של Crop ו-Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.CENTER_CROP, ושהשימוש ב-Fit עם Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.FIT_CENTER. בנוסף, השימוש ב-Inside עם Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.CENTER_INSIDE.
תמיכה ב-RTL במגדירי ציור. (I0aaf9)
השקנו API לניפוח תצוגות Android מ-XML. פרטים נוספים זמינים בהדגמה של התכונה 'תצוגה מקדימה בכתיבה'. (I42916)
שיפור DrawModifier API:
- הגדרנו את היקף המקבל של draw() כ-ContentDrawScope
- הסרה של כל הפרמטרים ב-draw()
- ל-DrawScope יש את אותו ממשק כמו ל-CanvasScope הקודם
- ל-ContentDrawScope יש שיטה drawContent() (Ibaced, b/152919067)
נוספו positionInParent ו-boundsInParent ל-LayoutCoordinates. (Icacdd, b/152735784)
הערכים של clipToBounds ו-clipToOutline ב-DrawLayerModifier וב-drawLayer() הם עכשיו false כברירת מחדל. (I0eb8b, b/152810850)
השם של LayoutResult שונה ל-MeasureResult. (Id8c68)
נוסף LayoutModifier2, API חדש להגדרת משני פריסה. הוצא משימוש LayoutModifier (If32ac)
הוחלף אופרטור עם משנה בפונקציות של תוסף factory (I225e4)
נוספו מאפייני translationX/Y כדי לתמוך בהזזת רשימת הפקודות של הציור בשביל שכבה נתונה. האפשרות הזו שימושית להזזת תוכן בתגובה לאנימציות או לאירועי מגע. (I8641c)
הוספנו פרמטרים pivotX ו-pivotY ל-Layer APIs כדי לתמוך בסיבוב ושינוי גודל סביב נקודה מסוימת בשכבה (Icf7c3)
מוסיפים OnPositionedModifier ו-OnChildPositionedModifier כדי להחליף את הפונקציות הקומפוזיביליות OnPositioned ו-OnChildPositioned. (I2ec8f)
נוסף LayerModifier, משנה שמאפשר להוסיף RenderNode לפריסה. אפשר להגדיר חיתוך, אטימות, סיבוב, שינוי גודל וצללים. התכונה הזו תחליף את RepaintBoundary. (I7100d, b/150774014)
הגדרנו שהכיוון של הפריסה יועבר מצומת הפריסה של הרכיב הראשי לרכיבי הצאצא. נוסף משנה של כיוון הפריסה. (I3d955)
רכיב ה-Stack תומך בכיווניות מימין לשמאל (Ic9e00)
תמיכה ראשונית ב-RTL בפריסת Compose (Ia5519)
המאפיינים Density ו-DensityScope מוזגו לממשק אחד. במקום ambientDensity(), אפשר עכשיו להשתמש ב-DensityAmbient.current. במקום withDensity(density), רק with(density) (I11cb1)
השדה LayoutCoordinates השתנה כך שהשדה providedAlignmentLines הוא Set ולא Map, והשדה LayoutCoordinates מטמיע את האופרטור get() במקום זאת כדי לאחזר ערך. כך קל יותר לשנות ערך אחד או יותר מתוך הקבוצה בלי ליצור אוסף חדש לכל משנה. (I0245a)
לתכונה LayoutCoordinates אין יותר תכונת מיקום. המאפיין position לא הגיוני כשמביאים בחשבון את LayoutModifiers, rotation או scaling. במקום זאת, מפתחים צריכים להשתמש ב-parentCoordinates וב-childToLocal() כדי לחשב את הטרנספורמציה מ-LayoutCoordinate אחד ל-LayoutCoordinate אחר.
ב-LayoutCoordinates נעשה שימוש ב-IntPxSize במאפיין size במקום ב-PxSize. בפריסות משתמשים בגדלים של מספרים שלמים בפיקסלים, ולכן כל הגדלים של הפריסות צריכים להיות מספרים שלמים ולא ערכים של נקודה צפה. (I9367b)
שיפורים בממשק ה-API של Constraints (I0fd15)
יצרנו את CanvasScope API שעוטף אובייקט Canvas כדי לחשוף משטח API לציור דקלרטיבי ללא מצב. הטרנספורמציות מוגבלות להיקף המקלט שלהן, וגם פרטי הגודל מוגבלים לגבולות התואמים של התוסף. הוא לא מחייב את הצרכן לשמור אובייקט משלו של מצב הצביעה כדי להגדיר פעולות ציור.
- נוספה האפליקציה CanvasScopeSample, ואפליקציית ההדגמה עודכנה כך שתכלול הדגמה של גרפיקה הצהרתית (Ifd86d)
הוסר MaskFilter API שלא נמצא בשימוש כי השימוש בו מוגבל והוא לא מותאם להאצת חומרה ברוב תרחישי השימוש (I54f76)
RectangleShape הועבר מ-androidx.ui.foundation.shape.* אל androidx.ui.graphics.* (Ia74d5, b/154507984)
החלפנו את כל השימושים ב-Color שניתן להגדיר כ-nullable ב-API בשימושים ב-non-nullable, והשתמשנו ב-Color.Unset במקום ב-null (Iabaa7)
הוספנו פרמטר אופציונלי נוסף של rect ל-ImagePainter כדי לתמוך בציור של חלק משני של ImageAsset הבסיסי (I0ea9e)
נוסף UnsetColor כדי לייצג ערך לא מוגדר בלי להשתמש ב-boxing של Colors. (If901a)
נוספו שיטות ההרחבה Canvas.rotate ו-Canvas.scale כדי להשתמש בקואורדינטות אופציונליות של ציר לטרנספורמציות. ברירת המחדל היא הפינה השמאלית העליונה של התרגום הנוכחי של אזור הציור.
בנוסף, שינינו את Canvas.rotateRad כך שיהיה שיטת הרחבה כדי לשמור על עקביות (Ibaca6)
יצרנו את PixelMap API כדי לתמוך בשאילתות של מידע על פיקסלים מ-ImageAsset. (I69ad6)
שם הפונקציה שונה מ-FrameworkRect/toFrameworkRectF ל-toAndroidRect/toAndroidRectF כדי להתאים למוסכמות למתן שמות להמרות אובייקטים בין Compose לבין ממשקי ה-API של Android Framework שעליהם היא מבוססת. גם עדכנו את המסמכים בנושא ממשקי ה-API האלה (I86337)
הוספנו את VectorPainter API כדי להחליף את subcomposition API הקיים לגרפיקה וקטורית. התוצאה של subcomposition היא אובייקט VectorPainter במקום DrawModifier. הוצאנו משימוש את רכיבי ה-DrawVector הקודמים לטובת VectorPainter.
שם Image(Painter) API שונה ל-PaintBox(Painter) נוצר רכיב Vector שאפשר להרכיב ממנו רכיבים אחרים, והוא מתנהג כמו הרכיב Image, רק שבמקום ImageAsset הוא משתמש ב-VectorAsset (I9af9a, b/149030271)
שינינו את השם Image ל-ImageAsset כדי להבדיל טוב יותר בין נתוני Image לבין רכיב ה-Image שניתן להרכבה, שייעשה בו שימוש בעתיד כדי להשתתף בפריסה ובציור התוכן. _Body:נוצרה שיטת הרחבה ב-android.graphics.Bitmap, Bitmap.asImageAsset(), כדי ליצור מופע של ImageAsset ששימושי לשילוב של פיתוח אפליקציות מסורתיות ל-Android עם מסגרת ה-Compose (Id5bbd)
נוסף TextDirection.Content (I48f36)
נוסף האופרטור TextDecoration.plus (I0ad1a)
הערך
Force
הוסר מערכי ה-enum של TextDirectionAlgorithm (Icc944)השם של TextDirectionAlgorithm שונה ל-TextDirection (I75ce8)
מטמיע LongPressAndDrag לבחירת TextField. (I17919)
נוספה הפונקציה AnnotatedString.getStringAnnotations שמחזירה את כל ההערות בטווח. (I1fa00)
שם החבילה של Locale ו-LocaleList השתנה מ-androidx.ui.text ל-androidx.ui.intl (I8132c)
הסמן ב-TextField כולל אנימציית הבהוב (Id10a7)
שינוי ב-API: השם של AnnotatedString(builder: Builder) שונה ל-annotatedString(builder: Builder). (Ia6377)
שינוי ב-API: השם של AnnotatedString.Item שונה ל-AnnotatedString.Range. (I2d44d)
שינוי השם של AnnotatedString.Builder.addAnnotationString ל-addStringAnnotation. (I5059e)
עכשיו אפשר להסתיר או להציג את המקלדת הווירטואלית באמצעות SoftwareKeyboardController, שמועבר על ידי הקריאה החוזרת (callback) onTextInputStarted (I8dc44, b/151860051)
נוסף אופרטור פלוס ל-Style (טקסט/פסקה/טווח) שמועבר לפונקציה merge(). (Ia1add)
הפונקציה FontWeight.lerp לא קופצת יותר. היא עדיין סוג נתונים. (I521c2)
הקונסטרוקטור FontWeight הוא עכשיו ציבורי, והוא כבר לא מחלקת נתונים. (Id6b1f)
הוספה של getLineStart, getLineEnd, getEllipsisOffset ו-getEllipsisCount ל-TextLayoutResult (Ibc801)
השם של מודול ui-text שונה ל-ui-text-core (I57dec)
הוסר Size class שלא היה בשימוש כי היה Size class כפול במודול ui-geometry שהיה בשימוש. (I1b602)
נוסף AdapterList, רכיב של רשימה עם אפשרות גלילה שמרכיב ומסדר רק את הפריטים הגלויים. בעיות ידועות כרגע כוללות את העובדה שהפריסה היא אנכית בלבד, ושהיא לא מטפלת באופן מלא בכל המקרים של שינויים ברכיבי הצאצא שלה. (Ib351b)
הוספת פרמטרים של שוליים פנימיים, גבול, צורה ורקע לתיבה (I05027, b/148147281)
תיקוני באגים
- הקריאה החוזרת (callback) onFocusChange בשדות טקסט שונתה ל-onFocusChanged (Ida4a1)
- הוצאנו משימוש את הרכיבים VerticalScroller ו-HoriziontalScroller. אפשר להשתמש ב-ScrollableColumn וב-ScrollableRow כדי ליצור חוויה מובנית עם התנהגות ופרמטרים של Column/Row, או ב-Modifier.verticalScroll וב-Modifier.horizontalScroll ברכיב שלכם. באופן דומה, הוצאנו משימוש את ScrollerPosition לטובת ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- השם של
runOnIdleCompose
שונה לrunOnIdle
(I83607) - השמות של כמה ממשקי API לבדיקות השתנו כדי שיהיו אינטואיטיביים יותר. כל ממשקי ה-API מסוג findXYZ קיבלו שם חדש: onNodeXYZ. כל ממשקי ה-API מסוג doXYZ קיבלו שם חדש: performXYZ. (I7f164)
- עכשיו אפשר להשתמש ב-Compose UI בתוך ViewGroups בלי ליצור קומפוזיציה חדשה. דוגמה מופיעה ב-ViewInteropDemo. (I9ab0b, b/160455080)
- נוספו sortWith ו-removeRange ל-MutableVector (Icccf7)
- הטמעה של נקודות אחיזה לגרירת בחירה כדי לשנות את הבחירה ב-TextField. (I27032)
- הוסר Shader inline class שעטף את NativeShader expect class. שונה השם של NativeShader ל-Shader. המחלקת Shader המוכללת לא הוסיפה ערך משמעותי לממשק ה-API והיא הייתה מחלקה מוכללת, לכן צריך להשתמש ישירות במחלקה NativeShader. (I25e4d)
בוצע Refactoring ב-PainterModifier כך שהוא לא מספק יותר קנה מידה על סמך האילוצים שצוינו והפרמטר ContentScale. ההטמעות של Painter צריכות לשנות את קנה המידה של תוכן הציור בעצמן על סמך הגודל שמוגדר ל-DrawScope שהן מציירות לתוכו.
תוקנה בעיה שבה מפת הסיביות של מטמון VectorPainter הייתה בגודל ברירת המחדל שלה במקום בגודל שצריך לשרטוט.
העדכון של ImagePainter מאפשר לשנות את קנה המידה של התוכן שלו במקום להסתמך על PainterModifier שיעשה זאת בשמו. (I6ba90)
add top-level withFrameNanos function for animation timing (Ie34c5)
ההערה @Untracked הוצאה משימוש. החלפה עם @ComposableContract(tracked=false) (Id211e)
ה-API androidx.ui.foundation.TextFieldValue ו-androidx.ui.input.EditorValue הוצא משימוש. גם רכיבי ה-TextField, FilledTextField ו-CoreTextField הניתנים להרכבה שמשתמשים בסוג הזה הוצאו משימוש. במקום זאת, צריך להשתמש ב-androidx.ui.input.TextFieldValue (I4066d, b/155211005)
תוקנה בעיה שבה שליחת קלט של מצביע גרמה לקריסה אם מסנני קלט של מצביע הוסרו באמצעות subcomposition במהלך השליחה. בעיה זו כבר נפתרה. (I1f48b, b/157998762)
תוקנה בעיה שבה שליחת קלט של מצביע גרמה לקריסה אם PointerInputFilters הוסרו באמצעות subcomposition במהלך השליחה. בעיה זו כבר נפתרה. (Iab398, b/157998762)
בוצע רפקטורינג של מחלקת Radius כדי שתהיה מחלקה מוטמעת. הוסרו שיטות ליצירת רכיבים נלווים לטובת בנאי פונקציות עם פרמטר ברירת מחדל, כדי שהרדיוס לאורך ציר ה-y יתאים לפרמטר הרדיוס של ציר ה-x שהוא חובה.
הפונקציה DrawScope.drawRoundRect עודכנה כך שהיא מקבלת פרמטר Radius יחיד במקום 2 ערכי float נפרדים לרדיוס לאורך ציר x וציר y (I46d1b)
הקומפוזיציה Recompose כבר לא מהווה הפשטה שימושית. רוב השינויים בהרכב צריכים לקרות כתוצאה מהקצאות של MutableState. לכל דבר אחר, מומלץ להשתמש בפונקציה
invalidate
כדי להפעיל יצירה מחדש של ההיקף הנוכחי. (Ifc992)הוחלף השימוש במחלקת Px במחלקות שונות של Compose כחלק ממאמץ רחב היקף של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (Iede0b)
שינוי אסטרטגיית יצירת הקוד של מהדר Compose. לפני השינוי, מהדר ה-Compose היה משנה קריאות לפונקציות שניתנות להרכבה. בעקבות השינוי הזה, אנחנו משנים את הגוף של פונקציה שניתנת להרכבה, ולא משנים את מיקום הקריאה (ברוב המקרים).
המשמעות היא שרוב הלוגיקה שמתקשרת עם זמן הריצה של הקומפוזיציה מתרחשת בתחילת גוף הפונקציה, במקום במיקום הקריאה.
השינוי הזה אמור להיות תואם למקור בכל השימושים ב-Compose. רוב המשתמשים ב-Compose לא יצטרכו לעדכן קוד כתוצאה מהשינוי הזה.
כדי לתמוך בעבודה הזו, חתימת ה-JVM של כל הפונקציות שניתנות להרכבה השתנתה. פונקציה שאפשר להרכיב ממנה פונקציות אחרות שמקבלת פרמטר יחיד, הופכת לפונקציה שמקבלת 3 פרמטרים. הפרמטרים הנוספים הם Composer, מספר שלם מסוג 'key' ומספר שלם מסוג bitmask שמשמש להעברת מטא-נתונים דרך קריאות.
הפונקציה Compose גם הופכת עכשיו ארגומנטים שמוגדרים כברירת מחדל לפונקציה שאפשר להרכיב. היא עושה את זה בלי להוסיף עומס יתר של ברירת מחדל סינתטית לפונקציה עצמה, ולכן השינוי הזה יגרום להגדרת פחות פונקציות.
שינויים התנהגותיים מכוונים ידועים שנובעים מכך:
- חלק מהשיחות ידלגו על שלבים שלא היו מדלגות עליהם בעבר
- ביטויים שניתנים להרכבה בביטויי ארגומנטים שמוגדרים כברירת מחדל מטופלים עכשיו בצורה נכונה
העבודה הזו כללה כמה אופטימיזציות: 1. התוצאה של השוואות בין פרמטרים מועברת דרך גרף הקריאות לפונקציות אחרות שאפשר להרכיב. התוצאה תהיה פחות השוואות בזמן הריצה, הקטנה של גודל טבלת המשבצות ודילוג על יותר פונקציות שאפשר להרכיב שלא היה אפשר לדלג עליהן קודם. 2 פרמטרים שנקבע שהם 'סטטיים' בזמן ההידור לא מושווים יותר ולא נשמרים בזמן הריצה. כך מצמצמים את מספר ההשוואות ואת גודל טבלת המשבצות. 3. מבנה בקרת הזרימה של גוף הפונקציות משמש לצמצום מספר הקבוצות שנוצרות. כך מקטינים את הגודל של טבלת המשבצות ומפחיתים את העבודה של זמן הריצה 4. פרמטרים של שליחה וקבלה שלא נעשה בהם שימוש בפונקציות לא נכללים בקביעת האפשרות לדלג על הפונקציה אם לא נעשה בהם שימוש בגוף הפונקציה.
רוב השינויים שעלולים לשבור את הקוד הם ב-API שהקומפיילר מכוון אליו ישירות, והשימוש הרגיל ב-Compose לא יושפע: 1. Composer::startExpr הוסר 2. Composer::endExpr הוסר 3. Composer::call הוצא משימוש 4. העומסים העודפים שאינם varargs של
key
הוסרו. להשתמש בגרסהvararg
מעכשיו והלאה. 5. ההערה Pivotal הוצאה משימוש. אפשר להשתמש ב-key
במקום זאת. 6. הפונקציה ScopeUpdateScope::updateScope שונתה כך שהיא מצפה ל-Function3 במקום ל-Function1 הפונקציות restartableFunction ו-restartableFunctionN עודכנו כך שיכללו פרמטרים נוספים של זמן קומפילציה (I60756, b/143464846)הוסרו משנים של LayoutAlign שהוצאו משימוש. (I10877)
הוסר RepaintBoundary לטובת DrawLayerModifier (I00aa4)
לרכיבים Button, FloatingActionButton ו-Clickable יש עכשיו פרמטר
enabled
נפרד. השמות של חלק מהפרמטרים ב-Button השתנו או שהסדר שלהם השתנה. (I54b5a)החלפנו את ButtonStyle בפונקציות נפרדות והסרנו את העומס העודף של הטקסט (מחרוזת). אפשר לעיין בדוגמאות המעודכנות של פרטי השימוש. (If63ab, b/146478620, b/146482131)
שינויי תוכנה שעלולים לגרום לכשל ב-API של מצב אווירה. פרטים נוספים זמינים ביומן ובמסמכי התיעוד (I4c7ee, b/143769776)
Ambient<T>
השתנה אופן הפעולה של ברירת המחדל TextDirection כך שייקבע על ידי LayoutDirection. כלומר, אם LayoutDirection הוא RTL, ברירת המחדל TextDirection תהיה RTL. בעבר היה TextDirection.ContentOrLtr/Rtl (I4e803)
תיקון באג: כשמשקל הגופן וסגנון הגופן מוטמעים ב-AnnotatedString, הטקסט לא מוצג בצורה תקינה. (I77a9d)
הוספנו פרמטרים נפוצים ל-Text(). אם אתם יוצרים כרגע סגנון טקסט מקומי כדי להעביר מספר קטן של פרמטרים כאלה, כמו Text(style = TextStyle(textAlign = TextAlign.Center)), עכשיו אתם יכולים פשוט לספק את הפרמטרים ישירות: Text(textAlign = TextAlign.Center) (I82768)
השם של מודול ui-android-text שונה ל-ui-text-android (I68cbe)