ממשק המשתמש של כתיבת הודעות

רכיבים בסיסיים של ממשק משתמש ב-Compose שנדרשים לאינטראקציה עם המכשיר, כולל פריסה, ציור וקלט.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫7 באוקטובר 2026 1.12.1 - ‎1.13.0-beta01 -

מבנה

‫Compose הוא שילוב של 7 מזהי קבוצה ב-Maven בתוך androidx. כל קבוצה מכילה קבוצת משנה ממוקדת של פונקציות, ולכל אחת מהן יש קבוצה משלה של הערות על הגרסה.

בטבלה הזו מוסבר על הקבוצות ומופיעים קישורים לכל קבוצה של הערות מוצר.

קבוצהתיאור
compose.animationליצור אנימציות באפליקציות Jetpack Compose כדי לשפר את חוויית המשתמש.
compose.compilerאפשר להשתמש בפלאגין של Kotlin Compiler כדי לשנות פונקציות @Composable ולהפעיל אופטימיזציות.
compose.foundationכתיבת אפליקציות ב-Jetpack Compose באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם למערכת העיצוב.
compose.materialאפשר ליצור ממשקי משתמש של Jetpack Compose באמצעות רכיבי 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, צריך להוסיף את מאגר Maven של Google לפרויקט. מידע נוסף זמין במאמר בנושא מאגר ה-Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

Groovy

plugins {
    id 'org.jetbrains.kotlin.plugin.compose'
}

dependencies {
    implementation "androidx.compose.ui:ui:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

plugins {
    kotlin("plugin.compose")
}

dependencies {
    implementation("androidx.compose.ui:ui:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גרסה 1.13

גרסה ‎1.13.0-beta01

‫7 באוקטובר 2026

‫androidx.compose.ui:ui-*:1.13.0-beta01 מופץ. גרסה ‎1.13.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הגרסה 1.13 של Modifier.interactionBarrier() הוסרה מממשק ה-API הציבורי. (I47974, b/564575045, b/347038246)
  • עדכון של ממשקי ה-API של PolygonShape: העברנו את CornerRounding לרמה העליונה עם יצירת dp() ו-fraction(), והחלפנו את התוספים transformed() ו-scaledToFit() ב-PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) ו-PolygonShape.copy() שניתנים לשינוי במקום. (If5970)
  • הפרמטר onValueChange הוא עכשיו פרמטר חובה ב-Slider,‏ VerticalSlider ו-RangeSlider. הוסר ממשקי API שהוצאו משימוש והוסתרו בעבר ברכיבי Slider ו-RangeSlider, כולל ההטמעה של DraggableState ב-SliderState ועומסי העבודה של Saver מדור קודם. הוסר isVertical מהחשבון SliderState. הפונקציה SliderDefaults.Thumb עם העומס העודף SliderState הוצאה משימוש לטובת הפונקציה isVertical עם העומס העודף. (I3fdc1)
  • הסיווג Posture ב-MediaQuery הוחלף ב-WindowPosture, שחושף WindowFold פיזיים (FoldState ו-FoldOrientation). נוספו מאפייני הנוחות isTabletop ו-isFlat ב-WindowPosture, והוסר המצב המפורש Book. (Id9e8e)
  • הספריות מכוונות עכשיו ל-Kotlin 2.2 ונדרש kotlinc 2.2 (I82396, b/498369605)
  • הוספנו את @FloatRange אל BlurStop.fraction, שינינו את ברירת המחדל fallOffRadius ב-BlurRadiusSpec.radialGradient ל-Dp.Unspecified, שינינו את השם של הפרמטר radius של Modifier.blur ל-blurRadiusSpec, ושינינו את השם של BlurScope.radius ל-blurRadiusSpec. ‫(I91dbc, ‏ b/556335791)

תיקוני באגים

  • תוקנה שגיאת IllegalArgumentException ('LayoutNode not found in RectList') כשמתבצעת שאילתה לגבי קווי יישור במהלך המדידה. ‫(Icec9e, ‏ b/549552303)
  • ‫VectorPainter ישתף עכשיו משאבי גרפיקה פנימיים (ImageBitmap) כשמבצעים עיבוד של אותו ImageVector בכמה רכיבים קומפוזביליים. כך מצמצמים את העלאות הטקסטורה המיותרות ואת השימוש בזיכרון, ומשפרים את הביצועים בתרחישים כמו רשימות שבהן נעשה שימוש חוזר בסמלים. אפשר להשבית את האופטימיזציה הזו דרך ComposeUiFlags.isVectorDrawCacheSharingEnabled. (I91b41)
  • תוקן באג שבו הפונקציה AndroidTextPaint.setTextMotion לא ניקתה את LINEAR_TEXT_FLAG כשעברה ל-FontHinting או ל-None linearity. (I8c19c)
  • תוקנה בעיה שבה המיקוד של TalkBack בחיפוש באמצעות מגע יכול לקפוץ אל AndroidView מוטמע (כמו WebView) שמכוסה על ידי תוכן בממשק משתמש של Compose. (I11372, b/561099702)
  • תוקנה בעיה שבה קריאה ל-Color.toColorLong() או הגדרת צבע שמונח על Color.Unspecified ב-Paint עלולה לגרום לקריסה עם IllegalArgumentException. ‫(Ia365b, ‏ b/557521315)
  • התלות ב-androidx.lifecycle:lifecycle-runtime עודכנה ל-2.10.0. הגרסה הזו נדרשת כדי להריץ בדיקות lint של זמן ריצה של מחזור חיים בחבילה עם AGP בגרסה 9.5.0-alpha04 ואילך. (I99bfd, ‏ b/556807521)
  • תוקן חילוץ הפרמטרים בכלי ל-composables עם יותר מ-10 פרמטרים. (Ib167d)
  • תוקנה בעיה שגרמה לכך שצמתי פריסה שהושבתו לא נוקו מתור הפריסה, מה שגרם לקריסה במהלך המדידה מחדש. (Ie64a5)

גרסה ‎1.13.0-alpha03

‫9 בספטמבר 2026

‫androidx.compose.ui:ui-*:1.13.0-alpha03 מופץ. גרסה ‎1.13.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • העומסים העודפים של שדות טקסט ב-Material 2 שמקבלים פרמטרים של value, onValueChange הוצאו משימוש. צריך לבצע מיגרציה ל-overload שמשתמש ב-TextFieldState כדי להעביר את המצב שלו. (I6b841, ‏ b/556234973)
  • מוסיפים API משותף כדי להשבית את WindowInsetsRulers באופן גלובלי לפני שנוצר שורש ה-Compose הראשון. הוצאה משימוש ב-Android בלבד ComposeView.disableWindowInsetsRulers() לטובת המשותף WindowInsetsRulers.disable() (Iadc8f)
  • הוספת פונקציות הרחבה PolygonShape.transformed ו-PolygonShape.scaledToFit ב-Compose Foundation לצורך שינוי והתאמה של צורות פוליגון. (I3f327)
  • הפונקציה LineHeight.Trim.isTrimLastLineBottom() שונתה ל-LineHeight.Trim.trimsLastLineBottom והפונקציה LineHeight.Trim.isTrimFirstLineTop שונתה ל-LineHeight.Trim.trimsFirstLineTop (I02211)
  • הוספנו את boundsAssertionTolerance אל PlatformTestConfig מתחת ל-ComposeUiTestConfig.platform, כך שעכשיו אפשר להגדיר את טווח הטולרנס של הצהרת הגבולות כברירת מחדל ברמת הסביבה או הכלל. ‫(I7819d, ‏ b/545673912)
  • הוצאו משימוש עומסי יתר של BasicTextField שמקבלים פרמטרים של value, onValueChange. צריך להעביר את השימוש לBasicTextField overload שמשתמש ב-TextFieldState כדי להעלות את המצב שלו. (I636bf, b/552879150)
  • בדומה ל-BasicTextField(value, onValueChange), גם VisualTransformation הוצא משימוש כי הוא נחשף רק דרך הטעם TextField הזה. ההמרות הקיימות יועברו אל OutputTransformation. (I636bf, b/552879150)
  • נוספה האפשרות LineHeightStyle.Mode.PerLine כדי לחשב את גובה השורה בנפרד לכל שורה, וכך לתמוך בגדלים שונים של גופנים באותה פסקה בלי חפיפה. (I41738)
  • הוצאנו משימוש את האפשרות לספק LazyLayoutCacheWindow ו-LazyListPrefetchStrategy דרך LazyListState, ועכשיו צריך לספק LazyLayoutCacheWindow לפונקציה קומפוזבילית. (I71f19)
  • נוסף Modifier.blur { ... } API לתמיכה בטשטוש הדרגתי (למשל, מעברי צבע ו-shaders בהתאמה אישית) (Ie6595, ‏ b/481685669)
  • הוספנו את Modifier.interactionBarrier()‎ כדי לחסום אינטראקציות של מגע, מיקוד ונגישות. ‫(I7c1b7, ‏ b/347038246)
  • נוספה מאפיין של תוסף isCrossWindowBlurEnabled ב-WindowInfo כדי לאפשר למפתחים לשלוח שאילתות ולצפות במצב הטשטוש של חלונות שונים במערכת ב-Android. (If38e2, b/538405295)
  • נוסף LocalWindow CompositionLocal כדי לאפשר אחזור של אובייקט android.view.Window נוכחי, וכך קל יותר לשלוט בממשקי API ברמת החלון מתוך רכיבים שניתנים להרכבה. (I4d4ff, ‏ b/221889664)

תיקוני באגים

  • מופעלת isMinimalistLocalsEnabled כברירת מחדל. (Ibb4eb, ‏ b/523295932)
  • הפעלנו כברירת מחדל אופטימיזציה של גובה שורה יחידה. יכול להיות שיהיה הבדל של כמה פיקסלים במדדים מסוימים של טקסט, כמו גובה או נתיב בחירה (I5575a)
  • ‫compileSdk Compose libraries updated to 37.1. כדי לעשות את זה, צריך לעדכן את compileSdk באופן טרנזיטיבי בכל האפליקציות והספריות שמשתמשות ב-Compose. (I05b0f)
  • תוקנה בעיה שבה WindowInsetsRulers IME insets לא סומנו כאנימציה במהלך ניווט חזוי אחורה, ותוקנה בעיה שבה imePadding לא עודכן כשעברו בין שדות טקסט. (Id4562, ‏ b/537386261, ‏ b/539686000)
  • תוקנה בעיה שבה תנועות צביטה במשטח המגע לא נלקחו בחשבון כש-ComposeView אירח בתוך ViewGroup רגיל של Android. (I80f79)

External Contribution

  • תוקנה דליפת פעילות כשמנתקים ComposeView ומחברים אותו מחדש בתוך פריים יחיד, למשל כשמסדרים אותו מחדש באמצעות removeView ו-addView. (Ib5129, ‏ b/547675867)

גרסה ‎1.13.0-alpha02

‫26 באוגוסט 2026

‫androidx.compose.ui:ui-*:1.13.0-alpha02 מופץ. גרסה ‎1.13.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה מאפיין סמנטי חדש BackgroundColor ל-Modifier.background (I7eec3, ‏ b/518049030)
  • עכשיו אפשר ליצור Vertices ממערכים פרימיטיביים קיימים. (Ifaba8, ‏ b/496412761)
  • ‫VectorPainter ישתף עכשיו משאבי גרפיקה פנימיים (ImageBitmap) כשמבצעים עיבוד של אותו ImageVector בכמה רכיבים קומפוזביליים. כך מצמצמים את העלאות הטקסטורה המיותרות ואת השימוש בזיכרון, ומשפרים את הביצועים בתרחישים כמו רשימות שבהן נעשה שימוש חוזר בסמלים. אפשר להשבית את האופטימיזציה הזו דרך ComposeUiFlags.isVectorDrawCacheSharingEnabled. (I35639, b/331283180)
  • הוספת requestFocusForChildInLocalBounds helper ‏ (Ib1a48)

גרסה ‎1.13.0-alpha01

‫12 באוגוסט 2026

‫androidx.compose.ui:ui-*:1.13.0-alpha01 מופץ. גרסה ‎1.13.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת דגל התכונה isVelocityTrackerMinSampleSizeFixEnabled (Ic9b51, ‏ b/533444810, ‏ b/533775739, ‏ b/523705159)
  • הוסרה מחלקת ההערות ExperimentalVelocityTrackerApi שיצאה משימוש. (I6f9c6, b/483449576)
  • הסרת הדגל isClearNestedScrollCoroutineScopeFixEnabled ‏ (Iedfd7, ‏ b/506963276)
  • ‫TextFieldState שומרת עכשיו מידע על סגנון הטקסט ומשחזרת אותו. ‫AnnotatedString.Annotation.Saver עכשיו ציבורי כדי לאפשר שמירה ושחזור של אובייקטים מסוג AnnotatedString.Annotation. (I8b533, ‏ b/135556699)
  • הוספנו את TestFailurePolicy ואת TestFailureHandler ב-ComposeTestConfig כדי לתמוך ב-handlers של אירועי כשל בהתאמה אישית ובהקשר של ארטיפקטים של כשל בבדיקות של Compose UI. (Ib1a85, ‏ b/414802953, ‏ b/291106656, ‏ b/430644575)
  • נוסף SemanticsProperties.alpha כדי לחשוף את ערכי האלפא המורכבים של צומתי פריסה שנפתרו, לצורך בדיקה. (Ifddb6, b/524035059)
  • הוצאנו משימוש את עומסי היתר (overloads) של createComposeRule, createAndroidComposeRule ו-createEmptyComposeRule בחבילה ui-test-junit4 גרסה 2 שמקבלים פרמטרים נפרדים. משתמשים בעומסי היתר שמקבלים ComposeUiTestConfig או בעומסי היתר ללא פרמטרים, שמשתמשים ב-ComposeUiTestConfig כברירת מחדל. שימו לב: הגדרת ברירת מחדל של ComposeUiTestConfig קובעת את מצב הקלט הראשוני ל-InputMode.Touch בתחילת כל בדיקה. יכול להיות שהדבר יגרום לכך שבדיקות קיימות שמצפות למצב מקלדת (InputMode.Keyboard) ייכשלו. כדי לתקן את הבדיקות המושפעות, צריך להעביר את ComposeUiTestConfig(inputMode = InputMode.Keyboard) באופן מפורש ולהסיר את כל הלוגיקה של ההגדרה הידנית למצבי קלט. לחלופין, אפשר להגדיר את AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false כדי להשבית באופן זמני את הגדרת מצב הקלט שמוגדר כברירת מחדל בתחילת כל בדיקה, ולשמור על ההתנהגות הקודמת בזמן העברת הבדיקות. הדגל הזה יוסר בעתיד, ולכן אם רק מספר קטן של בדיקות נכשלות, מומלץ לפתור את הבעיה בבדיקות ישירות על ידי שינוי ההגדרה שלהן. (Idfb86, ‏ b/504195741)
  • קריאות ל-createComposeRule ול-createAndroidComposeRule ללא ארגומנטים (לדוגמה, createComposeRule() או createAndroidComposeRule<MyActivity>()) משתמשות עכשיו ב-ComposeUiTestConfig כברירת מחדל. כך מצב הקלט הראשוני מוגדר ל-InputMode.Touch בתחילת כל בדיקה, כדי לוודא שהמכשיר במצב נקי ולמנוע שינויים קודמים במצב הקלט להשפיע על הבדיקות. עם זאת, מצב המגע החדש שמוגדר כברירת מחדל עלול לגרום לכשל בבדיקות קיימות שמצפות למצב מקלדת (InputMode.Keyboard). כדי לתקן את הבדיקות המושפעות, צריך להעביר את ComposeUiTestConfig(inputMode = InputMode.Keyboard) באופן מפורש ולהסיר את כל הלוגיקה של ההגדרה הידנית למצבי קלט. לחלופין, אפשר להגדיר את AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false כדי להשבית באופן זמני את הגדרת מצב הקלט שמוגדר כברירת מחדל בתחילת כל בדיקה, ולשמור על ההתנהגות הקודמת בזמן העברת הבדיקות. הדגל הזה יוסר בעתיד, ולכן אם רק מספר קטן של בדיקות נכשלות, מומלץ לפתור את הבעיה בבדיקות ישירות על ידי שינוי ההגדרה שלהן. (Idc4dd, ‏ b/267253920, ‏ b/504195741)
  • הוספת הערות לשיטות בסיס ריקות שניתנות לביטול ב-Compose עם @EmptySuper כדי לציין שהטמעות של ביטול לא צריכות להפעיל את super. (Id407b)
  • הפונקציה ExposedDropdownMenu היא עכשיו פונקציית הרחבה ב-ExposedDropdownMenuBoxScope במקום חברה. יכול להיות שתצטרכו לעדכן את הקוד באמצעות ייבוא חדש. ‫(Ie8a65, ‏ b/356452026)
  • הוספנו את המאפיינים blurBehindRadius,‏ backgroundBlurRadius,‏ scrimAlpha ו-windowShape אל DialogProperties, וגם את blurBehindRadius ואת scrimAlpha אל PopupProperties. מפתחים יכולים עכשיו להגדיר טשטוש רקע, טשטוש חלון ואטימות של מסך חצי שקוף ישירות בתיבות דו-שיח ובחלונות קופצים. ההגדרה windowShape מאפשרת לחתוך את הרקע המטושטש של חלון תיבת הדו-שיח לפי פינות מעוגלות. (I5d437)
  • הוסר feature flag – הלחצנים בכלי הכתיבה שומרים עכשיו בצורה נכונה על המיקוד של הנגישות, ולא מהבהבים כשהתכונה 'ניווט באמצעות מגע' פעילה, כי אירועי ריחוף מסומנים בצורה נכונה כאירועים שטופלו. (Ib1c80)
  • נוספו עומסים יתרים של מיזוג ל-FontVariation.Settings למיזוג של אוספים אחרים של הגדרות או לביטול הגדרות בשורה. (I6340c)
  • המאפיין variationSettings נחשף בממשק של הגופן, ומוגדר כברירת מחדל ל-FontVariation.Empty החדש. בוצעה אופטימיזציה של FontVariation.Settings vararg constructor כדי להשתמש ב-asList() כדי להימנע מהקצאות של העתקת מערכים. (I9c22f)
  • הנכס NestedScrollDispatcher.coroutineScope עודכן כך שיחזיר בבטחה את הערך CoroutineScope שבוטל כשהוא לא מצורף או מנותק. (I9b112, b/535290281)
  • הוצאנו משימוש את העומסים העודפים runComposeUiTest,‏ runAndroidComposeUiTest ו-AndroidComposeUiTestEnvironment שמקבלים פרמטרים נפרדים של effectContext,‏ runTestContext ו-testTimeout. משתמשים בעומסי היתר שמקבלים ComposeUiTestConfig או בעומסי היתר ללא פרמטרים, שמשתמשים ב-ComposeUiTestConfig כברירת מחדל. שימו לב: הגדרת ברירת מחדל של ComposeUiTestConfig קובעת את מצב הקלט הראשוני ל-InputMode.Touch בתחילת כל בדיקה. יכול להיות שהדבר יגרום לכך שבדיקות קיימות שמצפות למצב מקלדת (InputMode.Keyboard) ייכשלו. כדי לתקן את הבדיקות המושפעות, צריך להעביר את ComposeUiTestConfig(inputMode = InputMode.Keyboard) באופן מפורש ולהסיר את כל הלוגיקה של ההגדרה הידנית למצבי קלט. לחלופין, אפשר להגדיר את AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false כדי להשבית באופן זמני את הגדרת מצב הקלט שמוגדר כברירת מחדל בתחילת כל בדיקה, ולשמור על ההתנהגות הקודמת בזמן העברת הבדיקות. הדגל הזה יוסר בעתיד, ולכן אם רק מספר קטן של בדיקות נכשלות, מומלץ לפתור את הבעיה בבדיקות ישירות על ידי שינוי ההגדרה שלהן. (Ia6d55, b/504195741)
  • קריאות ל-runComposeUiTest, ל-runAndroidComposeUiTest ול-AndroidComposeUiTestEnvironment עם lambda נגררת בלבד משתמשות עכשיו ב-ComposeUiTestConfig שמוגדר כברירת מחדל, שמגדיר את מצב הקלט הראשוני ל-InputMode.Touch בתחילת כל בדיקה. כך המכשיר נמצא במצב נקי ושינויים קודמים במצב הקלט לא משפיעים על הבדיקות. עם זאת, מצב המגע החדש שמוגדר כברירת מחדל עלול לגרום לכשל בבדיקות קיימות שמצפות למצב מקלדת (InputMode.Keyboard). כדי לתקן את הבדיקות המושפעות, צריך להעביר את ComposeUiTestConfig(inputMode = InputMode.Keyboard) באופן מפורש ולהסיר את כל הלוגיקה של ההגדרה הידנית למצבי קלט. לחלופין, אפשר להגדיר את AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false כדי להשבית באופן זמני את הגדרת מצב הקלט שמוגדר כברירת מחדל בתחילת כל בדיקה, ולשמור על ההתנהגות הקודמת בזמן העברת הבדיקות. הדגל הזה יוסר בעתיד, ולכן אם רק מספר קטן של בדיקות נכשלות, מומלץ לפתור את הבעיה בבדיקות ישירות על ידי שינוי ההגדרה שלהן. (I8c85d, b/504195741)
  • הוספנו @CheckResult ל-SemanticsNodeInteraction.isDisplayed() ול-isNotDisplayed() כדי לוודא שערכי ההחזרה שלהם מאומתים, וכך למנוע כשלים שקטים בבדיקות אם מפתחים משתמשים בהם בטעות במקום בממשקי API של טענות. (I1b447, ‏ b/508178494)
  • הדגל AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled יגרום לכך שה-ViewGroup שמכיל AndroidViews יופעל רק כשמוסיפים AndroidView כדי לשפר את הביצועים של ComposeViews שלא מכילים AndroidViews. כשהדגל מושבת, הרכיב ViewGroup שמכיל אותו עובר יצירת מופע ומצורף כשהרכיב ComposeView מצורף לחלון. (I306a3, ‏ b/524283041)
  • הצגת coroutineScopeOrNull() ב-NestedScrollDispatcher, API חלופי לגישה להיקף של שגרת המשך (coroutine) האב של ה-dispatcher. (I18c0f)
  • משנים את clearCallbacks ל-runAndClearCallbacks כדי לוודא שפעולות הניקוי תמיד יבוצעו. (If4720, b/526700075)
  • השם של ComposeTestConfig השתנה ל-ComposeUiTestConfig והוא הועבר מחבילת v2 לחבילת ההורה androidx.compose.ui.test. ‫(I1d2a1, ‏ b/504195741)
  • נוסף פרמטר timeoutMillis (ברירת המחדל היא 2,000 אלפיות השנייה) ל-SemanticsNodeInteraction.captureToImage() כדי לאפשר הגדרה של זמן קצוב לתפוגה בהמתנה למעבר של ציור מחדש. (Ib7d62, ‏ b/249501063)
  • נוספה היסטוריה לשינויים בהזנת הצבעה עקיפה (Ie62d2, ‏ b/526961645)
  • נוסף מאפיין סמנטי חדש, hintText, שמייצג טקסט של רמז בשדות טקסט. המאפיין הזה משפר את התמיכה בנגישות על ידי מיפוי ל-AccessibilityNodeInfo.hintText. (Ib65da, b/448376876)
  • CompositionLocalבוצעה אופטימיזציה של הרזולוציה על ידי פתרון דינמי מ-LocalOwner ומ-LocalAndroidComposeView לפי דרישה, שאפשר להפעיל או להשבית באמצעות ComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d)
  • מעכשיו ל-androidx.benchmark יש minSdk של 24. (Ic2a85)
  • נוסף דגל ניסיוני isPropagateHideFromAccessibilityToMergingChildrenEnabled ל-AndroidComposeUiFlags כדי לשלוט בהפצה של hideFromAccessibility למיזוג של צאצאים. (Ie41ff, ‏ b/483506400)
  • העברנו את ComposeUiTest ואת ממשקי ה-API הקשורים לבדיקות (כולל וריאציות של ComposeTestRule ושל waitUntil) מסטטוס ניסיוני לסטטוס יציב. (Iaec77, ‏ b/471148519, ‏ b/485124363)
  • תוקן TalkBack סדר הניווט בקבוצות מעבר מאוחדות. במקרה הצורך, אפשר להשבית את AndroidComposeUiFlags.isTraversalGroupSortingEnabled כדי לבטל את השינוי הזה. ‫(I5ae09, ‏ b/285043826)
  • מסירה פונקציית עזר ניסיונית ומיושנת IndirectPointerEvent. (I05dee, ‏ b/499336763, ‏ b/501098299, ‏ b/501098376, ‏ b/513249467)
  • מחליפים את ה-API הניסיוני ‎ @AnimationToolingApi ב-API‏ ‎ @RestrictTo עם ערבויות מעקב מחמירות יותר. (Ia4fd1, b/524317805)
  • הוספנו את בורר onDescendants() כדי למצוא את כל הצמתים הסמנטיים בעץ המשנה של צומת נתון. ‫(Id6b9b, ‏ b/444588117)
  • ממשקי API של עזר שהוצאו משימוש waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists ו-waitUntilDoesNotExist שלא מקבלים useUnmergedTree. נוספו עומסים חדשים שמקבלים useUnmergedTree כדי לתמוך בהמתנה לצמתים בעץ הסמנטיקה שלא מוזג. ‪(If675f, b/268432145)
  • הוספנו פרמטר tolerance לאישורי גודל ומיקום SemanticsNodeInteraction (assertWidthIsEqualTo, ‏ assertHeightIsEqualTo, ‏ assertTouchWidthIsEqualTo, ‏ assertTouchHeightIsEqualTo, ‏ assertPositionInRootIsEqualTo, ‏ assertTopPositionInRootIsEqualTo, ‏ assertLeftPositionInRootIsEqualTo) כדי לאפשר למפתחים להגדיר את סף ההשוואה, וכך לשפר את אמינות הבדיקות בצפיפויות מסך שונות. (I3a477, ‏ b/202752461)
  • בדיקות Compose תומכות עכשיו בסנכרון של ה-thread הראשי. עכשיו אפשר להפעיל בבטחה ממשקי API של סנכרון (כמו waitForIdle() ו-runOnIdle()) ולהריץ הצהרות או פעולות של Compose ישירות ב-callbacks של שרשור v-UI או השרשור הראשי. (I0247a, ‏ b/498478569)
  • הצגנו מודל הגדרה חדש (ComposeTestConfig) לממשקי API של בדיקות Compose כדי לפשט את ניהול הפרמטרים ולשפר את יכולת ההרחבה. הוספנו תמיכה בהגדרת מצב הקלט (מגע/מקלדת) ישירות דרך ComposeTestConfig, כדי להבטיח הגדרה ואיפוס אוטומטיים ולמנוע תנודות בבדיקות בגלל דליפת מצב. נוספו עומסים חדשים ל-run*ComposeUiTest ול-create*ComposeRule שמקבלים את האובייקט ComposeTestConfig. (Ia3da9, ‏ b/267253920, ‏ b/504195741)
  • תוקן קראש בתצוגה המקדימה של Compose כשמשתמשים ב-PreviewParameterProvider עם מאפייני Media Query‏ (Posture,‏ PointerPrecision וכו') על ידי שינוי הייצוג הבסיסי שלהם מ-String ל-Int. (Ic8f92, ‏ b/489939558)
  • נוסף פרמטר includeInputText ל-hasTextExactly ול-assertTextEquals כדי לאפשר התאמה מדויקת של טקסט קלט גולמי לצד טקסט חזותי. (Iee329, b/519026043)

תיקוני באגים

  • עברה אופטימיזציה SaveableStateRegistry.performSave() כדי למנוע הקצאות.HashMap נעשה שימוש פנימי ב-ScatterMap. (I7d510)
  • צבעי טקסט מאוכלסים ב-AccessibilityNodeInfo.ExtraRenderingInfo עבור רכיבי Text Composables. (I11c94, ‏ b/518049030)
  • תוקנה בעיה שגרמה לכך שגישה אל NestedScrollDispatcher.coroutineScopeOrNull במהלך ניתוק של צומת פריסה הציגה את השגיאה IllegalStateException במקום להחזיר את הערך null. ‫(I55634, ‏ b/533444810)
  • אופטימיזציה של אתחול ברמת הקובץ של compose:ui מאפיינים של מחלקת ערכים ברמה העליונה באמצעות פונקציות גט דינמיות. (I34184)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים ui-unit (TextUnit) באמצעות שימוש בשיטות גישה דינמיות. (If4a99)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים ui-graphics (BlendMode, Color וכו') באמצעות שימוש בשיטות גישה דינמיות. (Iaa86a)
  • אופטימיזציה של אתחול אובייקט נלווה של compose:ui:ui מחלקות ערכים (Key, CompositingStrategy וכו') באמצעות פונקציות get דינמיות . (I1a340)
  • אופטימיזציה של אתחול אובייקט נלווה של compose:ui מחלקות ערכי טקסט (TextAlign, TextOverflow, ImeAction וכו') באמצעות getters דינמיים. (I776e0)
  • אופטימיזציה של אתחול אובייקט נלווה של compose:ui כלי פיתוח ומחלקות ערכי בדיקה (AnimatedVisibilityState, ‏ MouseButton,‏ ScrollWheel) באמצעות פונקציות getter דינמיות. (I23e1b)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכי יחידה compose:ui (Dp, DpOffset, TextUnitType וכו') באמצעות פונקציות get דינמיות. (If5eb5)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכי גיאומטריה compose:ui (Offset, ‏ Size, ‏ CornerRadius) באמצעות שימוש ב-getters דינמיים. (I3b110)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים compose:ui (Role, FocusDirection, PointerEventType וכו') באמצעות שימוש בשיטות גישה דינמיות. (Ie35dd)
  • כדי להימנע ממעברים איטיים מיותרים בפריסה, צריך לטפל בצורה נכונה ב-BaselineShift.None, ב-BaselineShift.Unspecified וב-BaselineShift(0f). (I4350c)
  • תוקנה בעיה שבה ערכי Dp שמכילים אפס שלילי (‎-0.0) מתנהגים באופן שונה בהשוואות או בבדיקות שוויון בהשוואה להשוואות או לבדיקות שוויון של נקודה צפה. (I7dbcf, ‏ b/525506543)
  • ניקוי פרטי ה-API (Ia8066)

External Contribution

  • ממשקי ה-API‏ Alignment.topRatio, ‏ Trim.isTrimFirstLineTop() ו-Trim.isTrimLastLineBottom() הם עכשיו ממשקי API ציבוריים (I84f62)

גרסה 1.12

גרסה 1.12.1

‫9 בספטמבר 2026

‫androidx.compose.ui:ui-*:1.12.1 מופץ. גרסה 1.12.1 מכילה את השמירות האלה.

גרסה 1.12.0

‫12 באוגוסט 2026

‫androidx.compose.ui:ui-*:1.12.0 מופץ. גרסה 1.12.0 מכילה את השמירות האלה.

### גופנים משתנים שאפשר להוריד והגדרה ללא תצורה (ui-text-google-fonts)

‫• גופנים משתנים ואישורי GMS ללא הגדרה!

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### תמיכה בטווח רחב של צבעים (WCG) (ui-graphics)

שימור WCG:‏ * מרחבי צבעים שאינם sRGB (למשל, AdobeRgb, ‏ DisplayP3) שמוגדרים ב-Paint או ב-Shader נשמרים ב-API 29 ומעלה. * המערכת חוזרת ל-sRGB ברמות API ישנות יותר.

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### Hardware-Accelerated Mesh Gradients (ui)

‫• Painter API: ‏ Modifier.meshGradient מוחלף ב-MeshGradientPainter, שמשתמש ב-Canvas.drawMesh עם האצת חומרה.
• שימוש: אפשר להשתמש ב-MeshGradientPainter בתוך Modifier.paint.

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### 4. שילוב של Credential Manager (ממשק משתמש)

מילוי אוטומטי: * נוסף מאפיין סמנטי של credentialRequest ברמה נמוכה לשדות טקסט ב-API מגרסה 34 ואילך.

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### 5. צלילי אינטראקציה אוטומטיים (ממשק משתמש)

צלילי לחיצה וניווט: * תמיכה בצלילי לחיצה וניווט שתואמים ל-Android באמצעות הגדרת צלילים בפלטפורמה. * ביטול הסכמה: אפשר להשתמש ב-wrapper‏ SoundEffectOnInteraction כדי להשבית צלילים עבור עץ משנה.

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### 6. שילוב של Espresso בממשקי משתמש היברידיים (ui-test)
הגבלת האינטראקציות עם Compose להיררכיית התצוגות שתואמת ל-Espresso ViewInteraction.

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

גרסה ‎1.12.0-rc01

‫29 ביולי 2026

‫androidx.compose.ui:ui-*:1.12.0-rc01 מופץ. גרסה ‎1.12.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.12.0-beta02

‫1 ביולי 2026

‫androidx.compose.ui:ui-*:1.12.0-beta02 מופץ. גרסה ‎1.12.0-beta02 מכילה את השמירות האלה.

גרסה ‎1.12.0-beta01

‫17 ביוני 2026

‫androidx.compose.ui:ui-*:1.12.0-beta01 מופץ. גרסה ‎1.12.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • לא רלוונטי (העברת feature flag פנימי למפתחים) (Iaf2c4, ‏ b/368702588)
  • לא רלוונטי – הועבר feature flag. (I24668, ‏ b/521811270)
  • נוסף דגל תכונה ניסיוני ComposeUiFlags.‫isTrackpadPinchReinterpretationEnabled כדי לפרש מחדש תנועות פתיחה וסגירה של האצבעות במשטח המגע כאירועי עכבר עם גורמי קנה מידה. (Id3477, b/478053727)
  • שינוי השם של פונקציית הבדיקה להפעלת אירועי מצביע עקיפים (I3ee35, ‏ b/509618414)
  • הוספנו אופטימיזציה ל-BasicText ול-BasicTextField, כך שהגדרת גובה שורה לטקסט עם softwrap=false מחושבת עכשיו בצורה אופטימלית יותר (I2150a)

תיקוני באגים

  • הפצת מצב לכידת גלילה אופטימלית בין רכיבי משנה כדי למנוע רה-קומפוזיציה מיותרת של ממשק המשתמש. (I05830)
  • הופעל feature flag ניסיוני ComposeUiFlags.isTrackpadPinchReinterpretationEnabled כברירת מחדל. (I35ab8, ‏ b/478053727)
  • תוקנה בעיה בניתוח של משאב וקטורי שאפשר לצייר, שבה המערכת התעלמה מאלמנטים של הורה <clip-path> אם הם הכילו אלמנטים מוטמעים <group>. (Id4ea9, ‏ b/474530439)
  • נוספה תמיכה בכללי ניסיון חוזר סטנדרטיים של בדיקות JUnit 4 ב-AndroidComposeTestRule על ידי יצירה מחדש של סביבת הבדיקה הפנימית והיקף הקורוטינה בין ניסיונות ההרצה. (Iafaa7, ‏ b/235383900)

External Contribution

  • הוספת ממשק AndroidClipboard לבדיקה כדי לספק דרך ליצור מוקאפ של הטמעה של לוח העריכה (Ie4d72, b/512924975)
  • הוספת תאימות לדורות קודמים לTextAttribute וריאציות של commitText() ושל setComposingText(). ב-SDK בגרסה 37 ומעלה, שירותי הנגישות יוכלו להודיע אם נבחר טקסט חלופי להצעה. ב-SDK<37, לא תהיה השפעה על משוב קולי (כלומר, על אופן הפעולה הקיים). (I90e3d, ‏ b/439879822)

גרסה ‎1.12.0-alpha03

‫19 במאי 2026

‫androidx.compose.ui:ui-*:1.12.0-alpha03 מופץ. גרסה ‎1.12.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו מאפיין credentialRequest Semantics חדש ורכיב helper‏ CredentialRequestData ב-API 34 ומעלה, כדי לאפשר שדות טקסט של Jetpack Compose להשתלב עם Credential Manager ב-Android באמצעות מסגרת המילוי האוטומטי. ‫(Ida2bf, ‏ b/488446455)
  • נוספה פונקציית יצירה ParagraphIntrinsics שמקבלת את הארגומנט softWrap בין היתר. באופן פנימי, אנחנו יכולים להשתמש בזה כאות לכך שהטקסט מוצג כשורה אחת ולבצע אופטימיזציות מסוימות. (I66ca4, ‏ b/485495112)
  • נוספה תמיכה בצלילי אינטראקציה אוטומטיים (קליקים וניווט במיקוד) לרכיבי Compose, עם SoundEffectOnInteraction Composable חדש שמאפשר ביטול הסכמה. שימו לב: כתוצאה מהשינוי הזה, עכשיו צריך להפעיל את מאזיני הקליקים הסמנטיים מה-thread הראשי, וזה עשוי להשפיע על מספר קטן של תרחישי בדיקה. (I78f65)
  • הפונקציה Font של היצרן עברה ייצוב, והיא פועלת במשך variationSettings. (I183f2)
  • המאפיין ResourceFont loadingStrategy וה-method copy עברו ייצוב. (I40d84)
  • ממשקי ה-API של InterceptPlatformTextInput ושל PlatformTextInputInterceptor עברו לייצוב. (Id2784)
  • כדי לשפר את ההפרדה בין הפלטפורמות, הפונקציות registerIdlingResource ו-unregisterIdlingResource הועברו לפונקציות של תוספים, ולכן יכול להיות שתצטרכו לעדכן את הייבוא. (I21d3d, ‏ b/471148519)
  • הוספנו את runWithoutImplicitWait ל-ComposeTestRule ואת ComposeUiTest כדי לשפר את ביצועי הבדיקה במהלך בדיקת המצב. ממשק ה-API הזה מאפשר להריץ בלוק קוד עם השבתה של סנכרון מרומז, וכך להימנע מהתקורה של סנכרונים חוזרים לכל שאילתת צומת. כך הבדיקות מתבצעות הרבה יותר מהר, במיוחד בדיקות שכוללות מעבר ידני בין פריים לפריים ודגימה של כמה מאפיינים, כמו בדיקות של אנימציות. (Ie00e9, b/490270394)
  • עכשיו אפשר להחיל את ההערה @PreviewWrapper על מחלקות של הערות MultiPreview, וכך מפתחים יכולים ליצור הגדרות תצוגה מקדימה שאפשר לעשות בהן שימוש חוזר ושעטופות מראש. ‫(I8ae66, ‏ b/511170361)
  • נוסף MeshGradientPainter לעיבוד של מעברי צבע ברשת.Modifier.meshGradient הוסר, צריך להשתמש ב-MeshGradientPainter עם Modifier.paint במקום זאת. הסרטון MeshGradientRenderer הוא עכשיו פנימי. ‫(I2d170, ‏ b/508110246)
  • עכשיו אפשר לספק סרגלים בנפרד על ידי ציון פונקציית Lambda שמחזירה תשובה אם אפשר לספק את הסרגל, יחד עם פונקציית Lambda נפרדת שמספקת את הערך של הסרגל. ה-lambda‏ isRulerProvided לא נצפה, והוא צריך להיות אופטימי לגבי האפשרות לספק ערך. פונקציית ה-lambda‏ rulerProvider נצפית, כך שאם יש שינוי בערך כלשהו, הערך של הסרגל וכל הקוראים של הסרגל יעודכנו. (Ie9089)
  • ב-Style API הניסיוני, הוספנו תמיכה ביצירת סוגי סגנונות מותאמים אישית שיכולים לכלול היקפי סגנון מותאמים אישית. כך אפשר ליצור קבוצת משנה של המאפיינים שניתנים להגדרה על ידי סגנון (למשל, להסיר לחלוטין את שכבת הגרפיקה או מאפייני הטקסט), וגם להרחיב את ההיקף באופן עצמאי מסגנונות אחרים (למשל, לתמוך רק בתחביר playing { } ב-MediaPlayer שניתן להרכבה). השינוי הזה פוגע בתאימות של קוד המקור והקובץ הבינארי. השינוי העיקרי שגורם לאי-תאימות למקור הוא שפונקציות העזר ב-StyleScope עברו להיות פונקציות הרחבה (לדוגמה, fun contentProperty(all: Dp) היא עכשיו פונקציית הרחבה). כדי שהקוד שקורא לשיטות האלה יתקמפל בצורה תקינה, צריך לייבא את פונקציות התוסף הנדרשות או לייבא את כל הסמלים מ-androidx.compose.foundation.styles. (I1ef27, b/493676648)
  • מוסיפים את updatePointerBy() עם ארגומנט ברירת המחדל למזהה המצביע. (I99f30, b/502001776)
  • ‫DeferredTargetAnimation is no longer experimental, please remove opt-in." into androidx-main
  • נוסף דגל isClearNestedScrollCoroutineScopeFixEnabled כדי לשלוט בתיקון. (Ibd394, ‏ b/505343254)
  • ‫DeferredTargetAnimation כבר לא ניסיוני, צריך להסיר את ההסכמה. (I1e4ae, b/500030165)
  • סוג enum חדש לתמיכה בטריגרים בכלי לממשק משתמש (I6e198, b/478807872)
  • מותר ליצור את ComposeViewContext בלי לצרף את התצוגה של קובץ העזר. עדיין נדרש לצרף את התצוגה המקדימה לפני שקוראים ל-setContent(). (Id0952)

תיקוני באגים

  • תוקנה בעיה שבה focusRestorer המיקוד לא שוחזר בצורה תקינה כשבוצעו כמה קריאות שמירה לאותו פריסה (I10277, ‏ b/505371994)
  • שיפור ביצועים קודם גרם לתופעת לוואי שבה לא ניתן למדוד מודעות ComposeViews שלא צורפו. השינוי הזה מאפשר להשתמש בשיטה הזו בלי להחזיר את בעיית הביצועים. (I9b2c5, b/508650647)
  • היצירה מחדש מתבצעת עכשיו בשינוי ComposeViewContext כדי לתמוך בגישה מהירה יותר אל ComposeViewContext. (I3b3a8, ‏ b/487364963)
  • האפשרות הזו מאפשרת ל-Compose להגדיר צבעים שאינם sRGB בציור ובגוון ב-Android, וכך לשמור על מרחב צבעים רחב על ידי מיפוי נכון של מרחבי הצבעים של Compose למקבילים בפלטפורמה. אם מרחבי הצבעים לא נתמכים בפעולות רינדור בפלטפורמה (למשל, CIE XYZ,‏ CIE Lab,‏ OkLab) או שהם לא זמינים ברמת ה-API הנוכחית, המערכת תחזור בבטחה למרחב הצבעים Srgb. (I3efb5, ‏ b/388511109)

External Contribution

  • האפשרות androidx.compose.ui.platform.NativeClipboard typealias הוצאה משימוש. במקומה, צריך להשתמש ישירות ב-android.content.ClipboardManager (Ibc611)
  • החלפת מאפיין Clipboard.nativeClipboard בתוסף Clipboard.nativeClipboardManager כדי למנוע חשיפה של סוג הפלטפורמה ל-commonMain sourceset דרך typealias (Ibc611)

גרסה ‎1.12.0-alpha02

‫6 במאי 2026

‫androidx.compose.ui:ui-*:1.12.0-alpha02 מופץ. גרסה ‎1.12.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את מקש הצירוף MeshGradient. (Ia9a08, b/455752719)
  • מסירה קריאות חוזרות (callback) של רישום באגים במילוי אוטומטי מובנה. אפשר להשיג את אותה פונקציונליות על ידי התחברות מ-AutofillManager.AutofillCallback. (I631c7, b/502279690)
  • תמיכה בהגדרות של וריאציות לגופנים שאפשר להוריד (Ic25c7, b/496278020)
  • הפונקציות mediaQuery ו-derivedMediaQuery עודכנו כך שיחזירו סוג גנרי במקום Boolean, מה שמאפשר שימוש גמיש יותר כשיוצרים ממשקי משתמש מותאמים. ‫(I93830, ‏ b/498698350)

גרסה ‎1.12.0-alpha01

‫22 באפריל 2026

‫androidx.compose.ui:ui-*:1.12.0-alpha01 מופץ. גרסה ‎1.12.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הסרת דגל התכונה ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled (I82be3, b/455601135)
  • הפונקציה mediaQuery הפכה לפונקציה מוטמעת (Ie9457, ‏ b/498698350)
  • התכונה ComposeViewContext כבר לא בשלב הניסוי, וההערה ExperimentalComposeViewContextApi הוסרה (I32eca)
  • ‫ComposeView.disableWindowInsetsRulers() כבר לא ניסיוני (Ia81a5)
  • נוסף API‏ hasPendingWork() כדי לאפשר בדיקה פסיבית אם יש כרגע עבודה בהמתנה בממשק המשתמש של כלי הכתיבה, בלי להפעיל המתנה או להקדים את השעון. האפשרות הזו שימושית לבדיקות ידניות של השעון, כדי לקבוע מתי אנימציות או פעולות אחרות ברקע הסתיימו. (Ic54e3)
  • הוסר דגל התכונה AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled (I7fd25, ‏ b/491111451)
  • הוסר דגל התכונה AndroidComposeUiFlags.isSharedFontEnabled (I2cebe, ‏ b/479898293)
  • מוסיף עוד KeyboardType אפשרויות להשלמת קבוצת האפשרויות הנתמכות במקלדת ב-Android, כולל תאריך, שעה, תאריך ושעה, מספר עשרוני עם סימן ועוד. (I3713e, ‏ b/202353328)
  • הוסרה ההגדרה AndroidComposeUiFlags.isSharedHapticsEnabled (I6a1d4, ‏ b/479895628)
  • הוסר הדגל AndroidComposeUiFlags.isSharedClipboardManagerEnabled (I41e3c, b/479895130)
  • הוסרה ההגדרה AndroidComposeUiFlags.isSharedViewConfigurationEnabled (I6d3aa, ‏ b/479890645)
  • הוסר דגל התכונה AndroidComposeUiFlags.isSharedDrawingEnabled. (I27912, b/479849019)
  • הוסר דגל התכונה AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled (I6b726, ‏ b/479845566)
  • הסרת הדגל AndroidComposeUiFlags.isSharedWindowInfoEnabled (Ife9a9, ‏ b/479837249)
  • מסירים את הדגל AndroidComposeUiFlags.isSharedComposeViewContextEnabled. ‫(Ic522a, ‏ b/479834257)
  • הוספת הגדרות של וריאציות כדי להתאים אישית גופנים משתנים שאפשר להוריד (Ifdc93, ‏ b/223262013)
  • הוספת הגדרות של וריאציות כדי להתאים אישית גופנים משתנים שאפשר להוריד (I390af, ‏ b/223262013)
  • הסרת דגל isTraversableDelegatesFixEnabled (Ia7dfe, b/485962494)
  • הוספנו את runWhenIdle ואת הגרסה שלו להשהיה awaitAndRunWhenIdle ב-ComposeTestRule וב-ComposeUiTest כדי לשפר את ביצועי הבדיקה ואת יציבות המצב. ממשקי ה-API האלה מסנכרנים את ממשק המשתמש פעם אחת, ואז מריצים בלוק קוד בלי התקורה של סנכרונים חוזרים לכל פעולה. כתוצאה מכך, הביצוע של הבדיקות מהיר יותר באופן משמעותי ופחות בדיקה לא יציבה (flaky test), במיוחד בבדיקות שכוללות דגימה של הרבה נכסים, כמו בבדיקות של אנימציות. (Iabf66, ‏ b/490270394)
  • הוספת LayerOutsets ל-GraphicsLayer ו-Modifier.graphicsLayer, שאפשר להשתמש בהם כדי להגדיל את הגבולות החזותיים של השכבה מעבר לגודל שנמדד. אפשר להשתמש בזה כדי להימנע מההתנהגות המרומזת של clipToBounds כשמקדמים את השכבה למאגר מחוץ למסך. (Ic1189)
  • כברירת מחדל, אירועי קלט של מילוי אוטומטי לא מתועדים. הם מופעלים עכשיו על ידי התקשרות אל ComposeView.setAutofillDebugEnabled. (I5b430, ‏ b/487947860)
  • הוחלף VelocityTracker במימוש שסופק על ידי Android Framework (ניתן להגדרה באמצעות AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, ‏ b/359962905)
  • כשהערך של AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled הוא true, הפריסה של תצוגות צאצא תמיד נקראת אחרי המדידה במהלך מעבר פריסה. הפריסה של רכיב Child לא תמיד מתבצעת אחרי המדידה, אבל רכיבי Views דורשים זאת כדי לנהל את המצב בצורה תקינה. ‫(Ib4fe9, ‏ b/430974758)
  • הוספת isVirtual אל LayoutInfo (I3e5cd, ‏ b/494243978)
  • הוסר הסימון isGraphicsLayerShapeSemanticsEnabled. (I44be0, b/455600081)
  • נוסף Font API חדש שאפשר להשתמש בו להורדה בלי להוסיף אישורי גופן לבסיס הקוד באופן ידני. (I30b86, ‏ b/479454159)
  • נוספה האפשרות onRootWithViewInteraction לצמצם את החיפושים הסמנטיים ב-Compose לתצוגות ספציפיות ב-Android . כך אפשר לפשט את הבדיקה של ממשקי משתמש היברידיים, כמו RecyclerViews, בלי שיהיה צורך בתגי בדיקה ייחודיים בקוד הייצור . (Ic02c4, b/175226753)

תיקוני באגים

  • ה-API של captureToImage() מאפשר עכשיו לצלם חלון קופץ או תיבת דו-שיח יחד עם רכיב העוגן שלהם במפת סיביות אחת. (I9b83a, ‏ b/443137545)
  • עדכון של Compose compileSdk ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. ‫(Id45cd, ‏ b/413674743)
  • הגדרת ContentDataType.None בסמנטיקה מונעת עכשיו את שליחת האירועים של המילוי האוטומטי על ידי התכונה 'יצירת טקסט'. כך אפשר למנוע עלויות אתחול שקשורות לבקשות לשירותי מילוי אוטומטי. (I8fbda, ‏ b/487947860)

גרסה 1.11

גרסה 1.11.4

‫1 ביולי 2026

‫androidx.compose.ui:ui-*:1.11.4 מופץ. גרסה 1.11.4 מכילה את השמירות האלה.

גרסה 1.11.3

‫17 ביוני 2026

‫androidx.compose.ui:ui-*:1.11.3 מופץ. גרסה ‎1.11.3 מכילה את השמירות האלה.

גרסה 1.11.2

‫19 במאי 2026

‫androidx.compose.ui:ui-*:1.11.2 מופץ. גרסה 1.11.2 מכילה את השמירות האלה.

גרסה 1.11.1

‫6 במאי 2026

‫androidx.compose.ui:ui-*:1.11.1 מופץ. גרסה 1.11.1 מכילה את השמירות האלה.

גרסה 1.11.0

‫22 באפריל 2026

‫androidx.compose.ui:ui-*:1.11.0 מופץ. גרסה 1.11.0 מכילה את השמירות האלה.

גרסה ‎1.11.0-rc01

‫8 באפריל 2026

‫androidx.compose.ui:ui-*:1.11.0-rc01 מופץ. גרסה ‎1.11.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.11.0-beta02

‫25 במרץ 2026

‫androidx.compose.ui:ui-*:1.11.0-beta02 מופץ. גרסה ‎1.11.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • שינוי השם של PreviewWrapper API כדי לשמור על עקביות (I62659, b/490085948)
  • ‫ComposeViewContext מאפשר ל-ComposeView ליצור קומפוזיציה בלי להיות מצורף להיררכיית התצוגה. אפשר להשתמש ב-AbstractComposeView.createComposition(composeViewContext) כדי להתחיל לכתוב בלי ש-ComposeView יצורף. (I46e6f)
  • נוספה delayMillis לממשקי API של בדיקת משטח מגע עבור panEnd ו-scaleEnd (If80fe)

תיקוני באגים

  • ‫Clipboard ו-ClipboardManager מבקשים עכשיו את שירות המערכת בהפעלת ה-method הראשונה (If0016, ‏ b/487947860)
  • הפוקוס ישוחזר בצורה נכונה בתוך מאגרי מידע שנטענים לפי דרישה, שבהם נעשה שימוש חוזר בצמתים ובקבוצות של פוקוס (I18d36,‏ b/481564275)
  • החלון הקופץ עם clippingEnabled = false משתמש עכשיו בצורה נכונה בגבולות החלון המלאים כדי להציג תצוגה מקצה לקצה (I206408, ‏ b/327017902)

גרסה ‎1.11.0-beta01

‫11 במרץ 2026

‫androidx.compose.ui:ui-*:1.11.0-beta01 מופץ. גרסה ‎1.11.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו תמיכה ב-windowToken מותאם אישית לתיבת הדו-שיח של Jetpack Compose (Ic7728)
  • נוספה תמיכה בחלונות קופצים מותאמים אישית של windowToken ו-windowType ב-Jetpack Compose. (I0a04f)
  • הצגת הממשק של PreviewWrapper וספק ההערות. כך מפתחים יכולים להוסיף בקלות התנהגות מותאמת אישית לתצוגות המקדימות שלהם. ‫(I29f54, ‏ b/484306729)
  • אם הערך של AndroidComposeUiFlags.isSharedFontEnabled הוא true, אפשר לשתף מופעים של אובייקטים שקשורים לגופן, כמו FontLoader ו-FontFamilyResolver, בין מופעים של ComposeView בתוך ComposeViewContext. (I403e8)
  • מעבדי סמנטיקה של כתיבת הודעות ישתמשו ב-view.handler במקום ב-mainLooper, וכך יימנעו קריסות בתצוגות שמשתמשות ב-handlers שאינם ראשיים. (I671c3, ‏ b/486235925)
  • נוסף דגל isSkipNonImportantSemanticsNodesHitTestEnabled ששומר על תיקון באג בבדיקת פגיעה סמנטית, שמשפיע על התכונה 'הקשה להפעלה' ב-TalkBack. (I2933f, ‏ b/481011169, ‏ b/454377558, ‏ b/461360154)
  • נוספה תמיכה בהצגת תיבות דו-שיח של Jetpack Compose משירותי Android. על ידי ציון סוג חלון מותאם אישית באמצעות הפרמטר החדש windowType ב-DialogProperties, מפתחים יכולים עכשיו להציג תיבות דו-שיח בחלונות שכבת-על. ‫(I7c504, ‏ b/478214962)
  • שינוי השם של המאפיינים PointerInputChange ו-HistoricalChange כדי לאחזר את ערכי ההתאמה וההזזה. (I989a8, ‏ b/481333653)
  • הוספנו עוד פונקציונליות לממשקי API לבדיקת משטחי מגע, כדי לדמות עקומות וקלט שונים למחוות במשטח מגע. (I290fb, ‏ b/473603145, ‏ b/479213358)
  • פיצול של PointerEventType.Pan החדש ל-PointerEventType.PanStart, ‏ PointerEventType.PanMove ו-PointerEventType.PanEnd. באופן דומה, PointerEventType.Scale מפולח ל-PointerEventType.ScaleStart, ‏ PointerEventType.ScaleChange ו-PointerEventType.ScaleEnd. הפיצול הזה מאפשר להעביר מידע נוסף על ההתחלה והסיום של מחוות הזזה ושינוי גודל שפלטפורמת Compose מפרשת, וכך מאפשר למטפלים בקלט של מצביע ב-Compose להשתמש במידע הזה כדי לזהות אירועים בצורה מתאימה, ובמיוחד לדעת מתי מסתיימת הזזה או שינוי גודל. (I4daf6, ‏ b/479285849, ‏ b/481333653)
  • אם הערך של AndroidComposeUiFlags.isSharedHapticsEnabled הוא true, ‏ ComposeViewContext מכיל את מופע בקר המישוב המשותף. (Icd79a)
  • הוספנו ממשקי API ניסיוניים mediaQuery,derivedMediaQuery ו-UiMediaScope (מסומנים ב-@ExperimentalMediaQueryApi) כדי לאפשר פיתוח הצהרתי של ממשק משתמש דינמי על סמך מידות החלון, המיקום שלו ויכולות אחרות של המכשיר והסביבה. (I2d21e, ‏ b/479800750)

תיקוני באגים

  • תוקנה בעיה שבה הפונקציות Modifier.dropShadow ו-Modifier.innerShadow עם היקף חסימה לא ציירו מחדש כשהפרמטר Shape השתנה באופן דינמי. (Ida262, ‏ b/486202623)
  • תוקן באג שגורם לתוכן מוטמע להיות ממוקם בצורה שגויה בפריסות מימין לשמאל עם טקסט משמאל לימין או בפריסות משמאל לימין עם טקסט מימין לשמאל. (I09789)
  • תוקן באג שגרם לכך שכשנעשה שימוש ב-ComposeView במעבר בין רכיבים, נוצר חריג. (Ia425f, ‏ b/484100557)

External Contribution

  • מוסיפים מאפיין InputTextSuggestionState כדי לזהות את המצבים השונים שבהם יכול להיות קלט תעתיק כשהצעות להחלפת טקסט זמינות. בנוסף, נוסף TextCompositionRange כדי לעקוב אחרי טווח ההרכבה של הטקסט הנוכחי בתעתיק; ערך null מציין שאין הרכבה במקום. ‫(I7a67f, ‏ b/476472318)

גרסה ‎1.11.0-alpha06

‫25 בפברואר 2026

‫androidx.compose.ui:ui-*:1.11.0-alpha06 מופץ. גרסה ‎1.11.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • הדגל ComposeUiFlags.areWindowInsetsRulersEnabled הוחלף ב-API‏ ComposeView.disableWindowInsetsRulers(). (Idcdb4, b/455590696)
  • העברנו את דגל התכונה הניסיונית isAccessibilityShowOnScreenNestedScrollingEnabled שזמין רק ב-Android אל (I1c13a)
  • הוספת תמיכה בהליכה (I1c13a)
  • דיווח על צמתים סמנטיים מחוץ למסך שהם צאצאים של צמתים למיזוג שגלויים באופן חלקי במאגרי מידע עם אפשרות גלילה, כדי לשפר את חוויית המשתמש עם קוראי מסך ושירותי נגישות דומים (I71df9, b/434782764)
  • אם AndroidComposeUiFlags.isSharedClipboardManagerEnabled הוא true, אפשר לשתף מקרים שקשורים ללוח העתקה בין ComposeViews באמצעות ComposeViewContext (I65e2c)
  • הוסרה ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled (I6e14a, b/455601894)

גרסה ‎1.11.0-alpha05

‫11 בפברואר 2026

‫androidx.compose.ui:ui-*:1.11.0-alpha05 מופץ. גרסה ‎1.11.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • ‫AndroidComposeUiFlags.isSharedWindowInfoEnabled מעביר את פרטי WindowInfo אל ComposeViewContext. השבתת הדגל משאירה את WindowInfo בשליטת AndroidComposeView (I3b364)
  • מבנים נפוצים בתוך ComposeView יועברו לComposeViewContext המשותף. זהו השינוי הראשון שמעביר את CoroutineContext אל ComposeViewContext. אם הערך של AndroidComposeUiFlags.isSharedComposeViewContextEnabled הוא true, הערכים משותפים באופן אוטומטי. אם הערך הוא False, הם לא משותפים. (I9364d, ‏ b/461566955)
  • הוספת תמיכה במחוות במשטח המגע והמרה מאירועי קלט במשטח המגע לעכבר. בעקבות השינוי הזה, אירועים של מצביעים בלוח מגע ששולטים בסמן, כמו בטאבלטים או במחשבים ניידים, ידווחו בדרך כלל כסמני עכבר. כך יש שיפור בהתנהגות של המצביע לגבי תנועה לא רצויה, גלילה והשהיה מעל פריט. תנועות של הזזה ושינוי גודל ידווחו גם הן עם מידע נוסף שזמין בשינויים של אירוע המצביע, עם PointerEventType.Pan ו-PointerEventType.Scale חדשים שמציינים שהערכים האלה יוגדרו (Id071a, ‏ b/315527861, ‏ b/459831570).

תיקוני באגים

External Contribution

  • androidx.compose.ui.graphics.NativePaint האפשרות typealias הוצאה משימוש. במקומה יש להשתמש ישירות ב-android.graphics.Paint (I6303c,‏ b/477394763)
  • החלפת התוסף Paint.asFrameworkPaint() בתוסף Paint.nativePaint כדי למנוע חשיפה של סוג הפלטפורמה ל-commonMain sourceset דרך typealias (I6303c, ‏ b/477394763)
  • הוספת תמיכה במקשי התנועה NumPad (I1ff12)

גרסה ‎1.11.0-alpha04

‫28 בינואר 2026

‫androidx.compose.ui:ui-*:1.11.0-alpha04 מופץ. גרסה ‎1.11.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את TestCoroutineScheduler כדי לאפשר שימוש ב-runCurrent() ולוודא שיש גישה למופע של מתזמן הפגישות המשותף. (Iea662, ‏ b/254115946)
  • הוספנו תמיכה בהתקדמות הדרגתית בגלילה מקוננת בתגובה לandroid.R.id.accessibilityActionShowOnScreen מנגישות. (Ib2723, ‏ b/431148846)

תיקוני באגים

  • תוקנה המרה של מרחב צבעים RGB מותאם אישית ב-Android. המרות של גווני אפור בהתאמה אישית בוצעו בצורה שגויה בין מרחבי צבעים מותאמים אישית של Compose ו-Android RGB. ‏(ebd45,b/377021410)

גרסה ‎1.11.0-alpha03

‫14 בינואר 2026

‫androidx.compose.ui:ui-*:1.11.0-alpha03 מופץ. גרסה ‎1.11.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הוסר הסימון ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled. ממשקי ה-API של גרסה 2,‏ run*ComposeUiTest ו-create*ComposeRule, משתמשים עכשיו ב-StandardTestDispatcher כברירת מחדל. כדי להמשיך להשתמש ב-UnconfinedTestDispatcher, אפשר להשתמש בגרסאות ה-API שהוצאו משימוש. עם זאת, מומלץ מאוד לעבור לגרסה 2 של ממשקי ה-API כדי לקבל שליטה טובה יותר על הביצוע של קורוטינות. (Iecc9c, b/455601592)
  • השקנו ממשקי API של androidx.compose.ui.test.junit4.v2.create*ComposeRule. ממשקי ה-API החדשים האלה משתמשים ב-StandardTestDispatcher כברירת מחדל כדי לדמות בצורה טובה יותר את התנהגות הייצור שבה שגרות משנה מתוזמנות בתור ולא מופעלות באופן מיידי. מידע נוסף זמין בהנחיות להעברת נתונים. (I1870e, ‏ b/254115946)
  • השקנו ממשקי API של androidx.compose.ui.test.v2.run*ComposeUiTest. ממשקי ה-API החדשים האלה משתמשים ב-StandardTestDispatcher כברירת מחדל כדי לדמות בצורה טובה יותר את התנהגות הייצור שבה שגרות משנה מתוזמנות בתור ולא מופעלות באופן מיידי. מידע נוסף זמין בהנחיות להעברת נתונים. (I4f782, ‏ b/254115946)
  • מעכשיו אפשר לשתף מבנים נפוצים ב-ComposeView. אם הערך של ComposeUiFlags.isSharedComposeViewContextEnabled הוא true, הערכים משותפים באופן אוטומטי. אם הערך הוא False, הם לא משותפים. (I0d1b4, ‏ b/463540495, ‏ b/460468959, ‏ b/461503366, ‏ b/463641813)

תיקוני באגים

  • תוקן באג שבו הסרת כל התוכן מ-ComposeView לא מסירה את התוכן שצויר. (I8b382, b/299503084)
  • תוקנה קריסה בהרכבה שניתנת להשהיה כשהיא מונפשת באמצעות LookaheadScope. ‫(I7e649, ‏ b/469669851)
  • טופלה בעיה שבה שידור מחרוזות ארוכות מדי לשירות המילוי האוטומטי גרם לקריסה. כדי למנוע את הבעיה הזו, הטקסט נחתך אוטומטית לאורך תקין לפני שהוא נשלח.
  • תוקן באג שבו יציאה מהעברת העכבר מעל רכיב יכולה לגרום לקליק בתנאים ספציפיים מאוד (a3d5a0f)
  • תיקון של שליחת אירוע ריחוף של עט סטיילוס לבדיקות, והכנה של בדיקות עכבר לבדיקות חדשות של עט סטיילוס. (9ca9bc9)
  • הוספנו תמיכה בהזזה של רכיבי ממשק משתמש באמצעות קלט של סמן. (d0742b0, ‏ b/BUD_ID)
  • תוקן באג ב-Jetpack Compose Popup שבו קואורדינטות מוחלטות של גבולות העוגן הועברו אל PopupPositionProvider, מה שגרם למיקומי חלונות קופצים שגויים. חישובי המיקום של חלונות קופצים מתבססים עכשיו על קואורדינטות יחסיות נכונות.(1f7edf,b/469940907)

גרסה ‎1.11.0-alpha02

‫17 בדצמבר 2025

‫androidx.compose.ui:ui-*:1.11.0-alpha02 מופץ. גרסה ‎1.11.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • ממשקי ה-API של MultiModalInjectionScope יציבים עכשיו. הם כוללים את performKeyInput ואת performRotaryScrollInput, ואת ממשקי ה-API הבסיסיים שלהם למפתחות ולסיבוב מפתחות. ההערה של הניסוי הוסרה. ‫(Ie8bbc, ‏ b/261561237)
  • הוספנו ממשקי API לבדיקת משטח מגע. הם דומים לממשקי ה-API לבדיקת עכבר, ומזריקים אירועים שמדמים את ההתנהגות של טאבלט או משטח מגע של מחשב נייד. נקודות הכניסה העיקריות הן SemanticsNodeInteraction.performTrackpadInput ו-MultiModalInjectionScope.trackpad (I2ce67), b/432326139.

תיקוני באגים

  • תוקנה בעיה שקשורה לתאימות של קלט גלילה באמצעות גלגל העכבר, כך שהקלט ינוצל רק אם הוא נוצל בכתיבה, ולא אם הוא נשלח בכתיבה. ‫(I5e0c4),

גרסה ‎1.11.0-alpha01

‫3 בדצמבר 2025

‫androidx.compose.ui:ui-*:1.11.0-alpha01 מופץ. גרסה ‎1.11.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הסרת הדגל של ממשק המשתמש isSemanticAutofillEnabled כי המילוי הסמנטי האוטומטי הופעל כברירת מחדל. (I849cf, b/455587954)
  • השתנה האופן שבו השיטה find findNearestAncestor מגלה צמתים רלוונטיים. מעכשיו, נציגים מאותו סוג (NodeKind) יהיו גלויים במהלך המעבר. השינוי מוגן על ידי הדגל isTraversableDelegatesFixEnabled. (Ia3165, ‏ b/280804097)
  • הוספת מיפוי TextEntryKey ל-ANI#isTextEntryKey (Ifde7b, ‏ b/399540654)
  • המאפיין Modifier.onFirstVisible() הוצא משימוש כי ההתנהגות שלו מטעה והוא לא תמיד פועל בהתאם לחוזה שמוצהר בשם. לדוגמה, אם מוסיפים אותה לפריט של LazyColumn, המערכת תקרא לפונקציית הקריאה החוזרת הזו בכל פעם שהפריט הזה יהפוך לגלוי אחרי גלילה. זה לא מה שמשתמשים במאפיין הזה עם השם הזה היו מצפים. מומלץ להשתמש ב-Modifier.onVisibilityChanged() ולעקוב באופן ידני אחרי הנראות של הפריסה בהתאם לדרישות של תרחיש השימוש הספציפי. (Ia7095, b/447601783)
  • הוספנו את MeasuredSizeAwareModifierNode, שנדרש כשצריך קריאה חוזרת של onRemeasured(). במקום להשתמש ב-LayoutAwareModifierNode כללי יותר כשלא צריך קריאות חוזרות אחרות, עדיף להשתמש בממשק הזה ישירות. (If6fb0)

גרסה 1.10

גרסה 1.10.6

‫25 במרץ 2026

‫androidx.compose.ui:ui-*:1.10.6 מופץ. גרסה 1.10.6 מכילה את השמירות האלה.

גרסה 1.10.5

‫11 במרץ 2026

‫androidx.compose.ui:ui-*:1.10.5 מופץ. גרסה 1.10.5 מכילה את השמירות האלה.

גרסה 1.10.4

‫25 בפברואר 2026

‫androidx.compose.ui:ui-*:1.10.4 מופץ. גרסה 1.10.4 מכילה את השמירות האלה.

גרסה 1.10.3

‫11 בפברואר 2026

‫androidx.compose.ui:ui-*:1.10.3 מופץ. גרסה 1.10.3 מכילה את השמירות האלה.

גרסה 1.10.2

‫28 בינואר 2026

‫androidx.compose.ui:ui-*:1.10.2 מופץ. גרסה 1.10.2 מכילה את השמירות האלה.

גרסה 1.10.1

‫14 בינואר 2026

‫androidx.compose.ui:ui-*:1.10.1 מופץ. גרסה 1.10.1 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון קריסה בהרכב שניתן להשהות כשהוא מונפש באמצעות LookaheadScope (I7e649, ‏ b/469669851)
  • תוקן באג ב-Jetpack Compose Popup שבו קואורדינטות מוחלטות של גבולות העוגן הועברו אל PopupPositionProvider, מה שגרם למיקום שגוי של חלונות קופצים. חישובי המיקום של חלונות קופצים מתבססים עכשיו על קואורדינטות יחסיות נכונות.(1f7edf,b/469940907)

גרסה 1.10.0

‫3 בדצמבר 2025

‫androidx.compose.ui:ui-*:1.10.0 מופץ. גרסה ‎1.10.0 מכילה את השמירות האלה.

גרסה ‎1.10.0-rc01

‫19 בנובמבר 2025

‫androidx.compose.ui:ui-*:1.10.0-rc01 מופץ. גרסה ‎1.10.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • שליחה נכונה של קריאות חוזרות (callback) עם הערך false כש-minDurationMs לא אפס.visibilityChanged (2ac08b8, b/456384555)
  • לא מתבצעת קריאה חוזרת (callback) ל-onVisibilityChanged כשהצומת לא גלוי בהתחלה. (3969e8d, ‏ b/447364998)

גרסה ‎1.10.0-beta02

‫5 בנובמבר 2025

‫androidx.compose.ui:ui-*:1.10.0-beta02 מופץ. גרסה ‎1.10.0-beta02 מכילה את השמירות האלה.

גרסה ‎1.10.0-beta01

‫22 באוקטובר 2025

‫androidx.compose.ui:ui-*:1.10.0-beta01 מופץ. גרסה ‎1.10.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת אופטימיזציה לשליחת שינוי המיקוד. אפשר להשבית את האפשרות הזו באמצעות isOptimizedFocusEventDispatchEnabled = false (I919fb, ‏ b/449228515)
  • כל ממשקי ה-API של מגע עקיף עודכנו כך שישתמשו בשם indirect pointer APIs כדי להתאים לממשקי ה-API של קלט מצביע. (I238ce, b/451607214)
  • הפונקציות TextDirection,‏ TextAlign,‏ Hyphens ו-FontSynthesis valueOf מחזירות עכשיו את השגיאה IllegalArgumentException כשהן מקבלות ערך לא ידוע. (I07c67)
  • מעדכנים את CompositionDataTree.makeTree כדי להעביר ערכי ברירת מחדל במקום פונקציית wrapper. (Id64a6, b/445229688)
  • ממשקי ה-API של כללי הבדיקה createComposeRule, createAndroidComposeRule ו-createEmptyComposeRule שמקבלים את הפרמטר effectContext הם יציבים, וערך ברירת המחדל של הפרמטר הוא EmptyCoroutineContext. (If400c, ‏ b/450540702)
  • השם של UnplacedStateAwareModifierNode שונה לUnplacedAwareModifierNode (I6a551, b/449719932)
  • ביטול האופטימיזציה של צילום המסך (Ic000b, b/442364065)
  • נוסף דגל התכונה ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. היא מאפשרת אופטימיזציה של הביצועים, כך שבקשות לקואורדינטות כמו LayoutCoordinates.positionInRoot() משתמשות בהיסטים ששמורים במטמון שכבר יש לנו ב-RectManager, במקום לעבור על כל העץ בכל קריאה. (Ieaadc)

תיקוני באגים

  • ‫PlaceholderSpan משתמש עכשיו בצורה נכונה בסקלת גופנים לא לינארית לשינוי גודל (Id2ead, ‏ b/324462728)
  • משתמשים ב-ViewCompat כדי לבצע קבועים של משוב הפטי שנתמכים ברמת הפלטפורמה, בהסתמך על תמיכת הגיבוי שלה בקבועים חדשים יותר. (Ib5a00)

גרסה ‎1.10.0-alpha05

‫8 באוקטובר 2025

‫androidx.compose.ui:ui-*:1.10.0-alpha05 מופץ. גרסה ‎1.10.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג שגרם לכך שחלונות קופצים מוטבעים מוקמו בצורה שגויה בחלק העליון של המסך. עכשיו הם מעוגנים בצורה נכונה לחלון הקופץ הראשי. (Id4603, ‏ b/191279752)
  • נפתרה בעיה שקשורה להעברת המיקוד עם תצוגות אחרות בהיררכיה. (I95223, ‏ b/446028624)
  • תוקנו שדות עם פרמטרים מוטבעים שחסרים בכלי לבדיקת קוד בביטויי Lambda שנוצרו על ידי Kotlin 2.2.20 ‏ (I9855d, ‏ b/447110005)
  • תיקון של הצללת שמות של משאבי מילוי אוטומטי בין מודולים של ממשק משתמש ומודולים בסיסיים (I5da5a)

External Contribution

  • האובייקט UiModes מקבל את השם AndroidUiModes כדי לשקף את העובדה שהקבועים שלו נלקחים מ-Android API. (Ia0a77)

גרסה ‎1.10.0-alpha04

‫24 בספטמבר 2025

‫androidx.compose.ui:ui-*:1.10.0-alpha04 מופץ. גרסה ‎1.10.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הווריאציה של כלל הבדיקה Compose שמקבלת פרמטר CoroutineContext קודמה לגרסה יציבה. ההערה על הניסוי הוסרה, ומפתחים כבר לא צריכים להביע הסכמה כדי להשתמש ב-API הזה. (I74e6e)
  • השדה ComposeUiFlags.isRectTrackingEnabled הוסר. הלוגיקה הזו לא תמיד מופעלת. (Id78df)
  • הפונקציה Updater#set הוצאה משימוש בגלל שהיא ביצעה המרה (boxing) של הערך שסופק יותר מדי פעמים (Id679e)
  • סימון המאפיין הסמנטי onAutofillText כמאפיין שיצא משימוש. (I6f81c)
  • השקנו את UnplacedStateAwareModifierNode. הוא מספק קריאה חוזרת (callback) שנקראת כשהפריסה שהוצבה קודם לא מוצבת יותר. ‫(I8fdd8, b/309776096)
  • תוקן התיעוד של RetainObserver.onRetained והוסף RetainObserver.onUnused, שמשקף את RememberObserver.onAbandoned. (Ia6fc5)
  • נוסף onVisibilityChangedNode(), שמפיק Modifier.Node, שמשמש את Modifier.onVisibilityChanged() באמצעות הענקת גישה, מה שמאפשר להרחיב את הפונקציונליות הזו בModifier.Node המותאם אישית שלכם. (I70d84, b/443001320)

תיקוני באגים

  • נפתרה בעיה שגרמה לכך שהתוכן המוטמע לא עבר עיבוד כשהוא ממוקם בשורה האחרונה של טקסט עם קטיעה של כמה שורות, למרות שה-placeholder קדם לאזור הקטוע. ‫(I76aaf, ‏ b/441829208)

גרסה ‎1.10.0-alpha03

‫10 בספטמבר 2025

‫androidx.compose.ui:ui-*:1.10.0-alpha03 מופץ. גרסה ‎1.10.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • משנה את השם של DelegatableNode.invalidateLayoutForSubtree ל-DelegatableNode.invalidateMeasurementForSubtree. (I94257, ‏ b/430106107)
  • הסרת התאמה מיותרת של isInHiddenAccessibilitySubtree. (I4476c, ‏ b/443792965)
  • הוספנו עקבות מחסנית של Compose שמבוססים על מפתח קבוצה, שמופעלים כברירת מחדל בכל האפליקציות שעברו מיניפיקציה. מיפוי ה-proguard של העקבות האלה ייווצר על ידי תוסף Gradle של מהדר Compose החל מ-Kotlin 2.3.0. (Ifbcb5)
  • ‫Modifier.skipToLookaheadSize משתמש עכשיו ב-lambda שמופעל כברירת מחדל, שמאפשר דילוג על גודל רק כשמתבצע מעבר משותף, כמו ב-Modifier.skipToLookaheadPosition. ‫(Ibe0f5, ‏ b/432485585)
  • ההגדרה ComposeUiFlags.isOutOfFrameDeactivationEnabled הוסרה והפונקציונליות הזו תמיד מופעלת. (I421ed)
  • העברת פונקציות של מפעל ליצירת מופעים של FillableData לאובייקט נלווה. במקום להתקשר אל FillableData(value), אפשר להשתמש בשיטות החדשות של הפקטורי: FillableData.createFrom(value). (I2e200, b/441719650)
  • הוספנו BeyondBoundsLayoutModifierNode צומת חדש של Modifier כדי לבצע פריסה מעבר לגבולות לחיפוש ממוקד. (I39be1, b/416133658)
  • ‫FocusTargetModifierNode.requestFocus() מעביר את המיקוד לאחד מהצאצאים שלו כשהוא עצמו לא ניתן להתמקדות. התקופה הזו נקבעה בהתאם ל-FocusRequester.requestFocus() ול-FocusRequesterModifierNode.requestFocus(). אם אתם לא רוצים שהאפליקציה תתנהג ככה, אתם יכולים להגדיר את הדגל ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled כ-false באפליקציה. (Icca5c, b/436863604)
  • הוספת גודל חלון מבוסס-DP ב-WindowInfo (I9322b, ‏ b/424442112)
  • הוסר הדגל isNestedScrollDispatcherNodeFixEnabled. (If451a)
  • הוספנו תמיכה בערכי תאריך במילוי אוטומטי ב-API‏ FillableData. ‫val dateMillisValue: Long נוסף כדי לאחזר מידע על תאריכים, ונוסף בנאי FillableData(dateMillisValue: Long) תואם כדי ליצור מופעים של FillableData שמבוססים על תאריכים. (Id072a)

External Contribution

  • אובייקט UiModes מוצג כדי להצהיר על קבועים שמשמשים להערה UiMode (I03cb8)

גרסה ‎1.10.0-alpha02

‫27 באוגוסט 2025

‫androidx.compose.ui:ui-*:1.10.0-alpha02 מופץ. גרסה ‎1.10.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • עדכון של FillableData לתמיכה ברכיבים שאינם טקסטואליים, כמו מתגים ורשימות, כולל ערכים בוליאניים ושלמים בתוך FillableData ובוני מפעל ליצירת מופעים בוליאניים ורשימתיים של FillableData שמתורגמים ל-AutofillValue של הפלטפורמה. נוספים גם הפעולה והנכס הסמנטי הרלוונטיים. (Ia8105, Icc5cf)
  • במצב ללא מגע, מערכת התצוגה מקצה מיקוד ראשוני או מיקוד שמוגדר כברירת מחדל לאחד מהפריטים שניתן להתמקד בהם במסך. התכונה הזו מתווספת לכלי הכתיבה, ואפשר להפעיל אותה על ידי הפעלת ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178)
  • הוסר הדגל isPointerInteropFilterDispatchingFixEnabled. (Iaa589)
  • הוסר הדגל isNestedScrollInteropPostFlingFixEnabled. (I2a756)
  • הוספה של התאמות סמנטיות של isHiddenFromAccessibility() ושל isInHiddenAccessibilitySubtree(). (I9f5a1)
  • נוספה האפשרות runCurrent() ל-MainTestClock כדי להריץ את כל המשימות שמועד היעד שלהן חלף בתזמון הבסיסי. הסיבה לכך היא תמיכה בהרצת בדיקות ב-StandardTestDispatcher, שבהן המשימות מתווספות למתזמן במקום להתבצע באופן מיידי כשההשהיה שלהן היא 0 אלפיות השנייה. כדי להגדיר בדיקה שתשתמש ב-StandardTestDispatcher, צריך ליצור ComposeTestRule ולהעביר אליו StandardTestDispatcher. כברירת מחדל, הבדיקות מופעלות ב-UnconfinedTestDispatcher, ובמקרה כזה אין צורך לקרוא ל-runCurrent().
  • נוספה תמיכה בהרצת בדיקות ב-StandardTestDispatcher. בעבר, מסגרת הבדיקה הוגדרה (ועדיין מוגדרת) באמצעות UnconfinedTestDispatcher, ששונה מסביבת ייצור בדרכים עדינות. עכשיו אפשר לשנות את ההגדרה הזו על ידי יצירת StandardTestDispatcher משלכם והוספתו ל-effectContext כשיוצרים את ComposeTestRule (או כשקוראים ל-runComposeUiTest ). (I334d0, ‏ b/254115946)
  • מעדכנים את הקוד ליצירת עץ של צמתים מ-SlotTree. (I997d3)

תיקוני באגים

  • ממשק המשתמש של Compose מתקין עכשיו את RetainScopes ב-Android עם מודעות למחזור החיים. ההתנהגות שמוגדרת כברירת מחדל היא לשמור את הערכים שמוגדרים כ-retain גם אחרי שינויים בהגדרות. ‫(Id4a09, ‏ b/177562901)

External Contribution

  • התכונה הזו מוסיפה ל-VelocityTracker את היכולת לחשב את המהירות של מצביע על סמך אירועים של מצביע שעוקבים אחריהם, באמצעות התנהגות ספציפית לפלטפורמה. (I621e8)

גרסה ‎1.10.0-alpha01

‫13 באוגוסט 2025

‫androidx.compose.ui:ui-*:1.10.0-alpha01 מופץ. גרסה ‎1.10.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • אם לוחצים על העכבר או על לוח המגע ב-ComposeView, המיקוד יוסר אוטומטית אם הלחיצה לא מתבצעת בגבולות הצומת הממוקד. כתוצאה מכך, חוויית המשתמש היא 'הקשה להסרת ההדגשה', שהיא צפויה יותר מההתנהגות הנוכחית כשמשתמשים במכשירי קלט של מצביע. אפשר לבטל את ההסכמה להתנהגות הזו באמצעות API חדש של AbstractComposeView.isClearFocusOnPointerDownEnabled. ‫(I6322b, ‏ b/282963174)
  • הוספנו ממשק FillableData לתמיכה בסוגים שונים של רכיבי מילוי אוטומטי, בנוסף לטקסט. (If9bd2)
  • ‫API חדש שמאפשר להפעיל ולהשבית באופן דינמי רכיבים משותפים, וגם מאפשר לקחת בחשבון אם כבר מתבצע מעבר לרכיב משותף. ‫API חדש להגדרת גבולות יעד חלופיים כשאלמנט היעד המשותף מושמד במהלך המעבר. ‫API חדש לקבלת LayoutCoordinates של LookaheadScope. (I18dd4, ‏ b/409819304, ‏ b/395670637)
  • הוספנו את הדגל isNestedScrollInteropIntegerPropagationEnabled כדי לשלוט בניסוי של שליחת מספרים שלמים נכונים ל-nested scroll interop. (If8316)
  • נוספה requestFocusForChildInRootBounds() ל-DelegatableNode כדי להעביר את המיקוד לצאצא שחופף למלבן הנתון. (I001ef)
  • הוסרו הדגלים isOnScrollChangedCallbackEnabled, ‏ isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, ‏ isFlingContinuationAtBoundsEnabled, ‏ isAutomaticNestedPrefetchEnabled, ‏ DragGesturePickUpEnabled, ‏ isPointerInteropFilterDispatchingFixEnabled, ‏ isNestedScrollInteropPostFlingFixEnabled, ‏ isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • הוספנו הערה @CheckResult בפונקציות לאיתור ולבחירה של SemanticsNode כדי לאכוף את השימוש בערכים שמוחזרים. ‫(I6f86e, ‏ b/201652748)
  • שיפור הביצועים של תהליך לכידת התוכן (I3c7c0)
  • הוספנו את CompositionLocal שאפשר להשתמש בו כדי לשנות את המברשת של ההדגשה של מילוי מוצלח במילוי אוטומטי. (I52329)
  • הוספנו ממשק חדש שאפשר להשתמש בו כדי לבצע אינטרפולציה אוטומטית בין סוגים שונים, בהנחה שסוג אחד יודע איך להמיר מסוג אחר. הממשק הזה משמש בכמה סוגי קומפוזיציות כמו Brush (מברשת) ו-Shape (צורה), אבל אפשר להשתמש בו גם באופן חיצוני. (I58eab)
  • עכשיו Scrollable תומך טוב יותר באירועי גלילה דו-ממדיים של גלגל העכבר. השקנו API חדש לבדיקה שיעזור לכם לבדוק תרחישי שימוש ב-MouseInjectionScope. הוספנו גם עומס יתר חדש לשיטות גלילה ב-MouseInjectionScope ודגל לשליטה בהתנהגות החדשה שנקרא isMouseWheel1DAxisLockingEnabled (I136df)
  • הוספת DeviceConfigurationOverrides לסוג ולמצב המקלדת, לסוג ולמצב הניווט, למצב מסך המגע ולסוג מצב ממשק המשתמש (I282f0)
  • נוסף LineHeightStyle.Mode חדש בשם Tight. המצב הזה עוזר להחיל גובה שורה קטן יותר, גם אם יכול להיות שהוא יחתוך גליפים גבוהים יותר. (Id3849)
  • ל-BaselineShift יש עכשיו ערך לא מוגדר כדי למנוע חסימה BaselineShift, Hyphens, LineBreak, TextAlign ו-TextDirection כוללים עכשיו פונקציות עזר isSpecified, Hyphens, TextAlign, TextDecoration ו-TextDirection כוללים עכשיו שיטות של valueOf() וערכים שמאפשרות סריאליזציה/ביטול סריאליזציה יעילים. (I8d44c)
  • נוסף ממשק שיטות חדש getDisplayName כדי לאפשר שמות תצוגה מותאמים אישית למופעים של פרמטרים בתצוגה מקדימה. (I19bdf, b/241699422)
  • כשמשווים ערכי Dp עם Unspecified באמצעות less-than או greater-than, תמיד מוחזרת התוצאה false. השימוש ב-Dp.compareTo(Unspecified) תמיד מחזיר 0. הגדרת הדגל ComposeUiUnitFlags.isDpCompareToChanged כ-false תחזיר את Dp.compareTo() להתנהגות הקודמת שלו, שבה השוואה של Unspecified עם less-than ו-greater-than לא תמיד מחזירה false, וההתנהגות של compareTo() עם Unspecified זהה להתנהגות של Float.compareTo(). (Ifa88b, ‏ b/429221319)

תיקוני באגים

  • העברת ברירת המחדל של minSdk מ-API 21 ל-API 23 (Ibdfca, ‏ b/380448311, ‏ b/435705964, ‏ b/435705223)
  • פתרנו בעיה שמנעה את היצירה של AndroidComposeViews חדשים בזמן מעבר. (I2e23e, b/340894487, b/287484338)
  • תוקן באג בצבע כשמשתמשים בפריט גרפי וקטורי שניתן לשרטוט עם צבע אחד, והערך של fillColor הוא לא אטום לחלוטין ולא שקוף לחלוטין. ‫(I3b041, ‏ b/328677973)
  • תוקנה בעיה שבה סמלים שנטענו באמצעות painterResource עם צבעים ספציפיים לעיצוב לא עודכנו כשבוצעו שינויים בעיצוב. ‫(I85ea0, ‏ b/424416571)
  • הוספת סמנטיקה של onFillData ו-fillableData (I45d9e)
  • הקידוד של מצב ספציפי לפלטפורמה מופעל עכשיו תמיד ב-StateRestorationTester. כך התנהגות הבדיקה תהיה דומה לשחזור של מצב האפליקציה בפועל, כמו Parcelization ב-Android. ‫(I38211, ‏ b/408154192, ‏ b/382294247)
  • תוקנו קריסות מדי פעם כשמבקשים פוקוס. (57b31a11, b/431111149)

גרסה 1.9

גרסה 1.9.5

‫19 בנובמבר 2025

‫androidx.compose.ui:ui-*:1.9.5 מופץ. גרסה 1.9.5 מכילה את השמירות האלה.

גרסה 1.9.4

‫22 באוקטובר 2025

‫androidx.compose.ui:ui-*:1.9.4 מופץ. גרסה 1.9.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה הבעיה שבה תוכן טקסט מוטבע נעלם אם הוא נמצא בשורה האחרונה של טקסט עם סימן אליפסה, גם אם התוכן המוטבע לא נמצא באזור עם סימן האליפסה. ‫(I76aaf, ‏ b/441829208)
  • תוקנה בעיה שבה קריאות חוזרות (callback) של משנה onLayoutRectChanged לא תמיד נקראו כש-debounceMillis לא היה אפס. ‫(72aba47, ‏ b/445324854)

גרסה 1.9.3

‫8 באוקטובר 2025

‫androidx.compose.ui:ui-*:1.9.3 מופץ. גרסה 1.9.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג שגרם לכך ששינויים ב-onVisibilityChanged/onFirstVisible/onLayoutRectChanged לא קיבלו קריאות חוזרות אם לפריסה שהועברה היו יותר מ-170 צאצאים. (4f2fdd, ‏ b/445356774)

גרסה 1.9.2

‫24 בספטמבר 2025

‫androidx.compose.ui:ui-*:1.9.2 מופץ. גרסה 1.9.2 מכילה את השמירות האלה.

תיקוני באגים

  • Modifier.onVisibilityChanged() מופעלת עכשיו בצורה נכונה כשמנתקים צומת או משתמשים בו מחדש. (Ic5ce20)
  • ‫Modifier.onVisibilityChanged() ו-onLayoutRectChanged() מטפלים עכשיו בצורה נכונה בפריסות של הורה באמצעות placeWithLayer() כדי למקם ילדים. (Ia05ac9)
  • במקרים מיוחדים כמו הסרה של שכבה או של משנה שכבה, או עדכון של מאפייני שכבה, צריך להודיע על כך בצורה נכונה ב-Modifier.onVisibilityChanged() וב-onLayoutRectChanged(). (Ia05ac)

גרסה 1.9.1

‫10 בספטמבר 2025

‫androidx.compose.ui:ui-*:1.9.1 מופץ. גרסה 1.9.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג בצבע כשמשתמשים בפריט גרפי וקטורי שניתן לשרטוט עם צבע אחד, והערך של fillColor הוא לא אטום לחלוטין ולא שקוף לחלוטין. ‫(I3b041, ‏ b/328677973)

גרסה 1.9.0

‫13 באוגוסט 2025

‫androidx.compose.ui:ui-*:1.9.0 מופץ. גרסה 1.9.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.8.0

  • בפוסט הזה בבלוג מוסבר על שינויים חשובים בגרסה 1.9.0
  • בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.
  • שינוי שעלול לשבור תאימות: הצמתים של מקש הצירוף graphicsLayer מיישמים עכשיו את SemanticsModifierNode. הדבר עלול לגרום להוספה של SemanticsNodes חדשים לעץ הסמנטי, ולכן להוביל לכשלים בבדיקות שמניחות הנחות לגבי המבנה של עץ הסמנטי. לדוגמה, בדיקות שמשתמשות ב-onChild, ב-onParent, ב-onSibling ובשיטות דומות אחרות כדי ליצור טענות יכולות להיכשל אם מתווסף צומת חדש בין הצומת הנוכחי לצומת היעד. הדרך המומלצת לפתור את הבעיות האלה היא להוסיף testTag ישירות לצומת היעד. גישה נוספת היא להשתמש בכלי התאמה פחות מחמיר, כמו onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

גרסה ‎1.9.0-rc01

‫30 ביולי 2025

‫androidx.compose.ui:ui-*:1.9.0-rc01 מופץ. גרסה ‎1.9.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שסמלים שנטענו באמצעות painterResource עם צבעים ספציפיים לעיצוב לא עודכנו בשינויים בעיצוב המערכת. ‫(I85ea0, ‏ b/424416571)
  • תוקנו שגיאות ב-API‏ 21(Lollipop) וב-API‏ 28(Pie) שבהן שמות של שיטות גרפיות חשובות שונו במהלך האופטימיזציה. (Iebf99, ‏ b/425120571, ‏ b/420462749)
  • חשוב לוודא שמתבצעת קריאה חוזרת למשני onLayoutRectChanged שנוספו לאחרונה. ‫(l9aa91), (lb348a)
  • תוקנה בעיה שגרמה לביטול תוקף שגוי של מטמון היסט, וכתוצאה מכך לקריאה למשנים onLayoutRectChanged עם קואורדינטות שגויות (ibd4cd), (lddc57)
  • תיקון של פריסות מסובבות או מוטות שמקבלות קואורדינטות שגויות באמצעות משני onLayoutRectChanged (lddc57, ‏ b/426750475)

External Contribution

  • תוקנה בעיה שגרמה להיעלמות של פריטים ב-dragAndDropSource LazyList בזמן גלילה. תודה, ויקטור רנדינה! ‫(dc3bcd3, ‏ b/425894792)

גרסה ‎1.9.0-beta03

‫16 ביולי 2025

‫androidx.compose.ui:ui-*:1.9.0-beta03 מופץ. גרסה ‎1.9.0-beta03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה צללים פנימיים מטושטשים באופן אחיד לא זזו בצורה תקינה עם היסט.

גרסה ‎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 מכילה את השמירות האלה.

שינויי תוכנה שעלולים לגרום לכשלים

  • צמתי השינוי graphicsLayer מיישמים עכשיו את SemanticsModifierNode. הדבר עלול לגרום להוספה של SemanticsNodes חדשים לעץ הסמנטי, ולכן להוביל לכשלים בבדיקות שמניחות הנחות לגבי המבנה של עץ הסמנטי. לדוגמה, בדיקות שמשתמשות ב-onChild, ב-onParent, ב-onSibling ובשיטות דומות אחרות כדי ליצור טענות יכולות להיכשל אם מתווסף צומת חדש בין הצומת הנוכחי לצומת היעד. הדרך המומלצת לפתור את הבעיות האלה היא להוסיף testTag ישירות לצומת היעד. גישה נוספת היא להשתמש בכלי התאמה פחות מחמיר, כמו onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

שינויים ב-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)
  • שינוי החבילה של 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, שיוצרים תוצאה מורכבת בין שני שיידרים. מוסיפים גם ShaderBrush#transform כדי להגדיר מטריצת טרנספורמציה לשיידר. ‫(I2621a, b/160665122)

תיקוני באגים

  • תוקן באג ב-NestedScrollInteropConnection שגרם לכך ששיטות ההעברה היו בסדר הלא נכון ביחס לתצוגות. (I56ad4)
  • בעבר, תיבות דו-שיח שהוצגו במסך מלא לא הוצגו באזור מגרעת המסך. הבאג הזה תוקן, ועכשיו תיבות דו-שיח עם decorFitsSystemWindows = false ו-usePlatformDefaultWidth = false יכולות להשתמש באזור המגרעת במסך. (I9e975)
  • תוקן באג שגרם לכך שאינדיקטור המיקוד הירוק של TalkBack לא צויר אחרי שהוא הופעל בזמן שאפליקציית Compose פעלה ברקע. (Ifd12a)

גרסה ‎1.9.0-alpha03

‫20 במאי 2025

‫androidx.compose.ui:ui-*:1.9.0-alpha03 מופץ. גרסה ‎1.9.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הדגל ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled גורם לכך שאם אין שום דבר שאפשר להתמקד בו ב-ComposeView, המערכת מגדירה את המלבן לערך ריק. כך לא ניתן לבחור את התצוגה שרוצים להתמקד בה באמצעות חיפוש המיקוד. זה חשוב במיוחד כששיטת קלט (IME) כוללת אפשרות 'הבא', והיא מנסה להתמקד ב-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)
  • אי אפשר להשוות ישירות בין ערכי צבע של Compose ב-64 ביט לבין ערכי צבע של 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 בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.

שינויים ב-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)
  • עדכנו את ה-API של כלי ה-UI למכשירים כדי לכלול מכשירים חדשים יותר. (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, המערכת מגדירה את המלבן לערך ריק. כך לא ניתן לבחור את התצוגה שרוצים להתמקד בה באמצעות חיפוש המיקוד. זה חשוב במיוחד כששיטת קלט (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 של כלי ההלחנה כוללת תמיכה חדשה במילוי אוטומטי סמנטי. מוודאים שגרסאות ה-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. הוספנו API של requestFocus(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 מכילה את השמירות האלה.

תיקוני באגים

גרסה ‎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 לרישום של listener לשינויים בפריסה הגלובלית. (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)
  • הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחי 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 מכילה את השמירות האלה.

תכונות חדשות

בגרסה הזו, מילוי אוטומטי מוסתר מאחורי feature flag. אנחנו פועלים לשיפור הביצועים, ונשמח לקבל משוב מוקדם על ממשקי ה-API. אנחנו צופים שהממשקי API ישתנו לפני שהם יהפכו ליציבים, על סמך משוב שנקבל.

  • כדי להפעיל את המילוי האוטומטי, צריך להגדיר את ComposeUiFlags.isSemanticAutofillEnabled כ-true ב-onCreate ולהשתמש בגרסה האחרונה של Compose Snapshot.
  • הגרסה הזו של המילוי האוטומטי תומכת בשמירה ידנית של פרטי כניסה, באמצעות ההצעה לסיסמה חזקה ובאמצעות ניווט. הוא תומך גם במילוי כששדה שאפשר למלא אוטומטית מקבל מיקוד או כשמפעילים את המילוי האוטומטי דרך סרגל הכלים של הטקסט ברכיבי טקסט. הרכיב יודגש כדי לציין שההשלמה האוטומטית הסתיימה.

שינויים ב-API

  • שינוי הממשק של המילוי האוטומטי כך שיתאים למבנה expect/actual. (I22dce)
  • הוספנו את CompositionLocal שאפשר להשתמש בו כדי לשנות את הגוון של ההדגשה במילוי אוטומטי מוצלח. (I32092)
  • הוספנו את Modifier.onRectChanged API, שהוא API שמאפשר להירשם למיקום ולגודל של LayoutNode ביחס לשורש, לחלון או למסך. ה-API פותר הרבה תרחישי שימוש שהמשנה onGloballyPositioned הקיים פותר, אבל הוא עושה את זה עם הרבה פחות תקורה. ה-API כולל גם אמצעים לביטול כפילויות ולויסות נתונים (throttling) של הקריאה החוזרת בהתאם לדרישות של תרחיש השימוש. (Id28c7, ‏ b/372765423, ‏ b/372757007, ‏ b/372994338)
  • ההרחבה של מנהל המילוי האוטומטי כוללת ממשקי API של commit() ושל cancel() שעוזרים למשתמשים לשמור פרטי כניסה חדשים שהם מזינים. (I2da00)
  • הגרסה הזו כוללת ממשק AutofillManager חדש שאפשר להשתמש בו כדי לשפר את תהליך המילוי האוטומטי של המשתמשים, וגם דגל isSemanticAutofillEnabled להפעלה של הגרסה החדשה הזו של המילוי האוטומטי. (I9d484)
  • הוספנו את Modifier.onRectChanged API, שהוא API שמאפשר להירשם למיקום ולגודל של LayoutNode ביחס לשורש, לחלון או למסך. ה-API פותר הרבה תרחישי שימוש שהמשנה onGloballyPositioned הקיים פותר, אבל הוא עושה את זה עם הרבה פחות תקורה, וה-API כולל כלים לביטול הקפצה ולויסות נתונים של הקריאה החוזרת בהתאם לדרישות של תרחיש השימוש. (I3c8fa)
  • מוסיפים סוגי נתונים ומאפיינים סמנטיים כדי להרחיב את התמיכה במילוי אוטומטי. (I52c7d)
  • כל השיטות ב-builder‏ AnnotatedString כבר לא ניסיוניות (Ia89c8, ‏ b/261561823)

תיקוני באגים

  • תצוגות שמוטמעות בכלי הכתיבה יכולות עכשיו לקבל אירועים של חוגה אם הן במצב ממוקד (I4d53a, b/320510084)
  • תוקנה בעיה שבה סוגים שונים של משאבים לא עודכנו בשינויים בהגדרות (Ia9b99, ‏ b/352336694)
  • תוקנה בעיה שמנעה את הפעולה התקינה של TextField כשמשתמשים במקלדת היפנית POBox במכשירי Sony ישנים מסוימים. (Ia9b99, ‏ b/373743376)
  • תוקנה בעיה שגרמה לתיבות דו-שיח להופיע בתחתית המסך במקום במרכז (Ia2ec, b/373093006)
  • טירגוט 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' כדי להצמיד לגרסת בסיס יציבה. (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() יכול לגרום להתמקדות בתצוגה שמוגדרת כברירת מחדל.
  • תוקנה בעיה שגרמה למיקום של צמתים מנותקים ב-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() יכול לגרום להתמקדות בתצוגה שמוגדרת כברירת מחדל.
  • תוקנה הבעיה שבה נעשה שימוש בplaceOrder שגוי לביטול מראש, ולכן תוקן מקרה קצה שבו דילגו על מיקום של חיפוש מראש.

גרסה 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 או חדשה יותר. האכיפה הזו נועדה לתקן חוסר תאימות בהתנהגות בין ממשק המשתמש לבין השכבה הבסיסית בנוגע לשינויים ב-NestedScrollSource שקרו בשלב מוקדם במהלך 1.7.0-alpha01.

גרסה ‎1.7.0-beta07

‫7 באוגוסט 2024

‫androidx.compose.ui:ui-*:1.7.0-beta07 מופץ. גרסה ‎1.7.0-beta07 מכילה את השמירות האלה.

תיקוני באגים

  • פונקציות שקשורות להזנת טקסט SemanticsNodeInteraction performTextReplacement, performTextInput ו-performTextClearance יחזירו עכשיו שגיאות של טענות (assertion) כשהן מופעלות על TextFields לקריאה בלבד. (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 הוא עכשיו חלק מה-constructor‏ LinkAnnotation ומה-method‏ AnnotatedString.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 בטקסט. הסרנו את ה-methods מה-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)
  • ממשקי ה-API של GraphicsLayer outline עודכנו כך שישתמשו בפרמטרים מסוג 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 כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (תופעת לוואי) וגלגל העכבר והמקלדת (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 כבר לא יכול להיות ריק. אם רוצים להעביר רשימה ריקה של לוקאלים, צריך להשתמש ב-LocaleList.Empty. (Ic5bc4)

תיקוני באגים

  • מטפל בצורה חלקה בנתוני אירועים היסטוריים פגומים או לא תקינים (מתעלם מנתוני היסט לא תקינים).
  • תוקנה בעיה שגרמה לאירועי הצבעה לא צפויים כשמוסיפים באופן דינמי משנה של קלט הצבעה לפני משנה אחר של קלט הצבעה במהלך זרם פעיל של אירועי קלט הצבעה (לדוגמה, בין כניסה למצב ריחוף לבין יציאה ממצב ריחוף [עכבר/עט]).

גרסה ‎1.7.0-alpha06

‫3 באפריל 2024

‫androidx.compose.ui:ui-*:1.7.0-alpha06 מופץ. גרסה ‎1.7.0-alpha06 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו את ה-method‏ 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)
  • נוספו מזהי משאבים כדי לעזור בהסתרת תצוגות שמשמשות כפרטי הטמעה בתוך כלי ה-build (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) variant ו-BasicSecureTextField משתמשים עכשיו ב-KeyboardActionHandler במקום ב-KeyboardActions כדי לעבד פעולות שבוצעו באמצעות המקלדת הווירטואלית. (I58dda)

גרסה ‎1.7.0-alpha05

‫20 במרץ 2024

‫androidx.compose.ui:ui-*:1.7.0-alpha05 מופץ. גרסה ‎1.7.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • השקנו GraphicsLayerAPI חדש לתיעוד פקודות ציור ברשימת תצוגה, וגם מאפיינים נוספים שמשפיעים על העיבוד של רשימת התצוגה. הגבול הזה מאפשר לחלק סצנה מורכבת לחלקים קטנים יותר שאפשר לעדכן בנפרד בלי ליצור מחדש את כל הסצנה. אפשר לבצע שינויים ב-GraphicsLayer בלי להקליט מחדש את רשימת התצוגה. בניגוד ל-Modifier.graphicsLayer, ב-GraphicsLayer אפשר לעבד תוכן שניתן להרכבה במקומות אחרים, והוא שימושי בתרחישי שימוש של אנימציה שבהם התוכן אמור לעבור עיבוד בסצנות שונות.

שינויים ב-API

  • ‫GraphicsLayer.draw(Canvas) כבר לא API ציבורי. במקומה צריך להשתמש בפונקציית ההרחבה DrawScope.drawLayer(GraphicsLayer) כדי לצייר את השכבה. (I7a7c0)
  • פיצול של restrictedConstraints() לשתי שיטות: fitPrioritizingWidth() ו-fitPrioritizingHeight() (I6d7fd)
  • נוסף stub‏ HardwareCanvas לשימוש ב-Android L‏ (I1c3b5, ‏ b/288494724)
  • עדכון של 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() כדי לאפשר לצמתי modifier לקבל את View הנוכחי ב-Android בלי לקרוא את המיקום המקומי של הקומפוזיציה. (I40768)
  • ‫API חדש Path.reverse() לשינוי הכיוון של נתיב (I36348)
  • הוספנו את hintLocales ל-KeyboardOptions כדי לספק ל-TextFields את האפשרות להציע שיטות קלט בשפות מסוימות כדי להגדיר מראש שפה מועדפת.
  • הצגת המאפיין 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)
  • יצא משימוש העיטוף Modifier.inspectable. ה-API הזה ייצור יותר ביטולים של שינוי המחיר ממה שנדרש, ולכן השימוש בו לא מומלץ יותר. מומלץ למפתחים להטמיע את המתודה inspectableProperties() ב-ModifierNodeElement אם הם רוצים לחשוף מאפייני שינוי לכלי פיתוח. (Ib3236)
  • קונסטרוקטור חדש ל-PopupProperties שמאפשר שליטה מלאה בדגלים של WindowManager.LayoutParams. (Ibb33e, ‏ b/312485503)
  • השקנו את DelegatableNode.requireLayoutCoordinates() כדרך לקבל את Modifier.Node הנוכחי של LayoutCoordinates בלי שתצטרכו לבטל את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Ia8657)
  • השקנו את DelegatableNode.currentLayoutCoordinates כדרך לקבל את Modifier.Node הנוכחי של LayoutCoordinates בלי שתצטרכו לבטל את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Iaebaa)
  • ‫BasicTextField2 וממשקי API קשורים בחבילה androidx.compose.foundation.text2 מועברים אל androidx.compose.foundation.text. (I9f635)
  • הוספנו ApproachLayoutModifierNodeAPI חדש כדי לתמוך ביצירת לוגיקה מותאמת אישית של גישה בצומת Modifier מפורש. נוסף גם DeferredTargetAnimation API ניסיוני חדש לאנימציות שהיעד שלהן לא ידוע בזמן יצירת המופע. (I60745)
  • ממשקי API חדשים של Path לשאילתת הכיוון של נתיב ולחילוץ קווי מתאר מPath. (I63d04)
  • נוספו הפונקציות PathHitTest ו-Path.contains(Offset) כדי לבדוק אם Path מכיל נקודה ספציפית. (I3b218)
  • ‫TextLayoutResult חושף עכשיו את ה-method‏ 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)
  • הקונסטרוקטור 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 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנו אי-התאמות בשינוי גודל הגופן כשהגודל קטן מהגודל המינימלי שמוגדר בטבלה. במקרה כזה, אנחנו מבצעים אינטרפולציה בין קנה המידה הלינארי של פי 1 לבין הטבלה המוגדרת הנמוכה ביותר, כך שגודל הגופן גדל באופן מונוטוני ככל שקנה המידה גדל. (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 בלי לנתק את הצומת. כדי למנוע את זה, משתמשים ב-Layout Inspector של 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 unity. (I8adc7)
  • השם של onDragAndDropStart בפקטורי (factory) DragAndDropModifierNode שונה ל-acceptDragAndDropTransfer.התוכן acceptsDragAndDropTransfer נוסף לשינוי dragAndDropTarget כדי לאשר אותו מסשן של גרירה ושחרור. פונקציית ה-lambda הזו מחזירה DragAndDropTarget אם יש עניין בסשן של גרירה ושחרור. פונקציות למדה אחרות לעיבוד אירועי גרירה הוחלפו בפונקציה הזו. נוספה פונקציית factory ‏DragAndDropTarget לקבלת נתונים מסשנים של גרירה ושחרור (Iebf3a)
  • הוסר DragAndDropInfo כסוג. DragAndDropModifierNode.drag מקבל עכשיו פרמטרים עבור transferData, גודל הקישוט וקישוט הגרירה DrawScope lambda

    ל-DragAndDropTarget יש methods לאירועי גרירה ושחרור ספציפיים, במקום method מופשטת אחת

    הארגומנט onDragAndDropEvent בפונקציית הפקטורי (factory) של DragAndDropModifierNode שונה ל-onDragAndDropStart כדי להבהיר שהארגומנט DragAndDropTarget שצוין תקף רק לסשן מסוים של גרירה ושחרור

    הוסרה האפשרות DragAndDropEventType (I645b1)

  • השם של PlatformTextInputModifierNode.runTextInputSession שונה ל-establishTextInputSession. (I03cd0)

  • שיפור השמות של ממשקי ה-API של הצמתים שניתן לעבור ביניהם כדי שיהיו מובנים יותר. (Ia4474)

  • צריך להחליף את OriginalText ב-TextSubstitution. (Ifa5a8)

  • השם של PlatformTextInputModifierNode.textInputSession שונה ל-runTextInputSession. (Ie9c6b)

  • רכיבי הצאצא של SubcomposeLayout (ופריסות כמו LazyColumn שמבוססות עליו) שנשמרים לשימוש חוזר בעתיד נחשבים כרכיבים שהושבתו. הצגנו ממשק API חדש לבדיקות, assertIsDeactivated(), כדי לבדוק צמתים כאלה. שאר ממשקי ה-API לבדיקה יסננו כברירת מחדל צמתים שהושבתו. (I2ef84, ‏ b/187188981)

  • הוסרו FocusDirection.In ו-FocusDirection.Out. במקומם אפשר להשתמש ב-FocusDirection.Enter וב-FocusDirection.Exit (I2f660)

  • ממשקי ה-API של Material SwipeToReveal (לכרטיסים ולצ'יפים) מסתמכים עכשיו על API מבוסס-משבצות (כמומלץ על ידי Compose) במקום על מופעים מבוססי-מחלקות נתונים כדי ליצור את המשבצות האלה. זהו שינוי שעלול לגרום לבעיות, לכן מומלץ לעיין בהדגמה ובקוד לדוגמה כדי ללמוד איך להשתמש ב-API החדש. (Ia8943)

  • ה-constructor‏ FontStyle(int) הוצא משימוש. במקומו צריך להשתמש ב-FontStyle.Normal או ב-FontStyle.Italic. (I66610)

  • השם של הממשק FontScalable שונה ל-FontScaling (Ie804a)

תיקוני באגים

  • SoftwareKeyboardController.show() לא תציג יותר את המקלדת הווירטואלית אם לא מתמקדים בעורך טקסט. ‫(I2165a, ‏ b/301477279)
  • המערכת תתעלם עכשיו מאירועים של מקש חומרה למעלה עבור מקשים שלא התקבל לגביהם אירוע למטה באותו תצוגת כתיבה. ‫(Ib37b4, ‏ b/305518328)
  • הוספנו תמיכה ב-renderer של מעבר צבעים רדיאלי ב-ArcLine. (I4d5bb)
  • צריך להטמיע equals ו-hashcode עבור PageSize.Fixed. (Ie3ede, b/300134276)
  • תיקון בעיה בתאימות בינארית לשינוי של Window Inset ‏ (Iee695)
  • הסרת שכבת הליבה של Material עבור רכיב Chip/Button של Material3, כי המיקרו-בנצ'מרקים מראים ביצועים טובים יותר בלעדיה. (I55555)
  • הערך TestDispatchers שמועבר כ-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 לקריאת GoogleFont מ-XML. (If8f59)
  • הגדרת LoremIpsum PreviewParameterProvider ככיתה פתוחה. (I41bf5, ‏ b/266918816, ‏ b/300116360)

תיקוני באגים

  • ‫FontFamilyResolver משתמש עכשיו ב-Dispatchers.Main עבור קורוטינות לניהול מטמון. (Ie8dd9)
  • ‫AndroidViewBinding עכשיו מסיר באופן סינכרוני מופעים של Fragment שהוגדלו על ידי הכללת FragmentContainerView בפריסה כחלק מ-onRelease באמצעות commitNow (במקום commit שבו נעשה שימוש קודם), וכך מתקן בעיות בשיטה של עריכה בזמן אמת בהחלפת הקומפוזיציה בעקבות שינויים. (I58fbf)

גרסה ‎1.6.0-alpha07

‫4 באוקטובר 2023

‫androidx.compose.ui:ui-*:1.6.0-alpha07 מופץ. גרסה ‎1.6.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • השקנו את PlatformTextInputMethodTestOverride לכתיבת בדיקות לעורכי טקסט בהתאמה אישית. (Id159b)
  • נוספו מקשי הצירוף dragAndDropSource להפעלת סשנים של גרירה ושחרור, ומקשי הצירוף dragAndDropTarget לקבלת נתונים מסשנים של גרירה ושחרור. (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)
  • המהירויות של תנועות ההטלה ברכיבי View כמו ScrollView ו-RecyclerView מוגבלות ל-ViewConfiguration.ScaledMaximumFlingVelocity. ‫Compose כולל עכשיו גרסה משלו של 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 delegate, כדי למצוא את ה-Composition המקורי. אסור לקרוא לפונקציה הזו ישירות, והיא משמשת ליצירת ממשקי API ניסיוניים בזמן הריצה שאפשר למצוא מגרסאות עוטפות של רכיב ההלחנה, כמו מודול ממשק המשתמש. (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)

תיקוני באגים

  • הקריאה הראשונה של ה-callbackupdate של AndroidView תידחה עד שהתצוגה תצורף, במקום לפעול כשהקומפוזיציה שמציגה את AndroidView מוחלת. תוקנה באג שבו הקריאה החוזרת 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) ב-Compose.

‫includeFontPadding הוא מאפיין מדור קודם שקובע אם להוסיף מרווח פנימי נוסף מעל השורה הראשונה ומתחת לשורה האחרונה של הטקסט, כדי להשאיר מקום לתווים שעשויים לחרוג מעל או מתחת לקו הבסיס של הטקסט.

עדכון הגרסה הזו של Compose ישנה את אופן העיבוד של כל הטקסטים בממשק המשתמש שלכם. המערכת תסיר את הריווח הנוסף מעל השורה הראשונה ומתחת לשורה האחרונה של כל טקסט שמוצג.

השינויים צריכים להיות מינימליים, בהתאם לדרישות ממשק המשתמש ולמדדי הגופן שבהם אתם משתמשים. עם זאת, יכול להיות שתיתקלו בחסימות כמו: - בדיקות צילומי מסך לא תקינות. אם צריך, מתקנים את ממשק המשתמש ויוצרים מחדש את התמונות לדוגמה. ‫– הטקסט לא מיושר בצורה מדויקת. מסירים את כל השוליים השליליים בהתאמה אישית או מוסיפים שוליים אם צריך.

כדי להביע הסכמה לשימוש ב-includeFontPadding, צריך להשתמש ב-PlatformTextStyle לכל טקסט:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

אתם יכולים להגדיר את סגנונות Material כדי להפעיל את includeFontPadding לכל ההודעות. שימו לב ששמות הפרמטרים משתנים בין 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)
  • עדכנו את ה-API של DrawScope כדי להוסיף את האפשרות לטרגט מחדש את הרנדור לקנבס אחר עם צפיפות, כיוון פריסה וגודל חלופיים.
  • בוצע עדכון של DrawContext כדי לתמוך בהגדרת הצפיפות והכיוון של הפריסה, וגם כדי לאפשר הגדרה של אזור העריכה. (Ie1f9b, b/225408150)
  • נוסף Paragraph#fillBoundingBoxes לחישוב תיבות התוחמות של התווים. (If30ee)
  • נוסף סט של MultiPreviews נפוצים (Ia5a27)

תיקוני באגים

  • נוסף ממשק FocusTargetModifierNode שאפשר להשתמש בו כדי ליצור FocusTarget בהתאמה אישית. (I9790e)
  • השם של הפרמטרים fallback* ב-constructor‏ TextMeasurer השתנה ל-default*. (I940a5)
  • השם של SemanticsPropertyReceiver.performImeAction שונה לonImeAction ושל SemanticsActions.PerformImeAction לOnImeAction. (I8e841)
  • נוסף גלגל כדי להבדיל בין גלילה בעזרת העכבר לבין גרירה בגלילה מקוננת (במיוחד ב-NestedScrollConnection). (Ie57e4)
  • הוספנו את asComposePaint API כדי להחליף את toComposePaint כי האובייקט שמוחזר עוטף את android.graphics.Paint המקורי (I22b4c)
  • הוצאה משימוש של SemanticsProperties.imeAction והחלפה בפרמטר חדש ל-SemanticsActions.performImeAction. (I4a587)
  • הוספנו תמיכה בבחירה באמצעות העכבר. הבחירה באמצעות מגע תתרחב לפי מילה ותצטמצם לפי תו. (Ic0c6c, b/180639271)
  • ה-methods של 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)
  • תוקנה בעיה ברכיבי Dialog ו-Popup composables שיכולה לגרום לכך שגודל חלון הצאצא לא ישתנה כמצופה כשמשתמשים ב-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

תיקוני באגים

  • הוספנו את asComposePaint API כדי להחליף את toComposePaint כי האובייקט שמוחזר עוטף את 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)
  • השיטה של 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)
  • הקונסטרוקטור LineHeightStyle.Alignment(topRatio) הועבר ל-API יציב. ‫(I79c32, ‏ b/261565383)
  • ‫TextMeasurer וממשקי API קשורים כבר לא ניסיוניים. (I74647, b/261581753)
  • נוספה הפעולה הסמנטית PerformImeAction להפעלת פעולת ה-IME בצמתים של עורך הטקסט. (Ic606f, ‏ b/269633506)
  • ‫PlatformTextInput APIs כבר לא ניסיוניים ב-Android. (I668eb)
  • הערך של שם הפרמטר של Enum.valueOf השתנה (Ia9b89)
  • יותר חריגים שהופעלו מ-enum valueOf (I818fe)
  • השקנו PlatformTextInputAdapter API חדש ברמה נמוכה ליצירת הטמעות מותאמות אישית של הזנת טקסט, שמתקשרות ישירות עם ממשקי API של הפלטפורמה. (I58df4)
  • נוסף פרמטר BlendMode לשיטות DrawScope.drawText,‏ Paragraph.paint ו-MultiParagraph.paint כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508)
  • שינוי השם של Font.MaximumAsyncTimeout לFont.MaximumAsyncTimeoutMillis. שינוי שם בלבד. (I07af5)
  • ערכי DPI מעודכנים של @Preview מכשירי הפניה (Id6151, b/254528382)
  • מוסיפים פרמטרים של brush, alpha ל-BasicText כדי לאפשר אנימציה יעילה או הגדרה של מברשת טקסט.
  • הגדרת סוגי lambda ללא תיבות עבור 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. אפשר לעשות זאת באמצעות ממשקי ה-API‏ delegate ו-undelegate. לפני השינוי הזה, כל API מצומת ההעברה היה צריך להיות מועבר במפורש לצומת המועבר. אחרי השינוי הזה, הממשקים של הצמתים יוקצו באופן מרומז, אלא אם הם יוחלפו באופן מפורש על ידי DelegatingNode. (67352bc)

שינויים ב-API

  • הוספנו את NestedScrollModifierNode, NestedScroll Modifier.Node שאפשר להעביר אליו הרשאות. (I69513)
  • נוספו הפרמטרים onReset ו-onRelease לקומפוזבל AndroidViewBinding, בדומה לקומפוזבל AndroidView, והופעלת תמיכה בשימוש חוזר בתצוגה באמצעות 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. (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 שמקבל מדיניות נוספת של אמצעי ביניים לטיפול בלוגיקה של מדידה או פריסה במהלך אנימציות שמבוססות על חיזוי. (I017d3)
  • ה-API‏ 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‏ Lookahead הוחלף ב-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)
  • תוקנה רגרסיה שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי רכיב ה-Dialog composable ‏ (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

  • נוסף API חדש של PinnableContainer שמאפשר להצמיד פריטים לרשימה, כך שהם לא יוסרו כשהם יוצאים מהגבולות של המסך. לדוגמה, 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 ב-Surfaces. המאפיין הזה ישמש בשינוי מאוחר יותר שקובע את סדר המעבר בין רכיבים על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (I63379)
  • נוסף תפקיד נגישות חדש DropdownList. אפשר להשתמש בזה כדי לשכפל את ההתנהגות של TalkBack כשמתמקדים ב-android.widget.Spinner. (I177e5, ‏ b/236159001)
  • עכשיו אפשר להשתמש ב-PlatformTextStyle(emojiSupportMatch) כדי להשבית את העיבוד של תמיכת האמוג'י לפסקה אחת. (Ia7100, ‏ b/139326806)
  • בדיקות ממשק משתמש של Android Compose יפעילו עכשיו מעברים בפריסה לכל פריים כשמבצעים פריימים כדי להגיע למצב idle (למשל באמצעות 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

  • נוסף עומס יתר של פונקציה קומפוזבילית AndroidView, שמקבלת את הפרמטר onReset. הוא מאפשר לעשות שימוש חוזר במופעים של View כשצומת שלהם בקומפוזיציה מושלך ונעשה בו שימוש חוזר בצורה תואמת. האפשרות הזו שימושית במיוחד לLazyRows ולLazyColumns של צפיות. (I3f10d, ‏ b/230099236)
  • הוספנו PlatformTextInputAdapter API חדש ברמה נמוכה ליצירת הטמעות מותאמות אישית של הזנת טקסט, שמתקשרות ישירות עם ממשקי API של הפלטפורמה. (I58df4)

תיקוני באגים

  • הפעולה הסמנטית של BasicTextField's SetText תעדכן עכשיו את מאגר הטקסט באמצעות אותו נתיב קוד כמו עדכוני 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)
  • נוסף Modifier.Node.onReset() callback חדש שמאפשר לאפס חלק מהמצב המקומי כדי לטפל בצורה נכונה במקרה שבו נעשה שימוש חוזר ב-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 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף API חדש של PinnableContainer שמאפשר להצמיד פריטים לרשימה, כך שהם לא יוסרו כשהם יוצאים מהגבולות של המסך. לדוגמה, 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 ב-Surfaces. המאפיין הזה ישמש בשינוי מאוחר יותר שקובע את סדר המעבר בין רכיבים על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (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)
  • למחלקת הנתונים של כלי ממשק המשתמש 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)
  • ‫createFontFamilyResolver API יציב עכשיו. אפשר להשתמש בזה כדי לזהות חריגים שלא נתפסו במהלך טעינה אסינכרונית של גופנים. (Ibb481, ‏ b/261435386)
  • ‫Font.loadingStrategy API יציב עכשיו. (I5937c, b/261435386)
  • ‫GoogleFont API יציב עכשיו. (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.
  • עדכנו את מגירות הצד ואת הגיליונות כדי להשהות לחיצות בצורה נכונה במקרים שבהם תנועות יכולות להפוך לאירועי גלילה.
  • השם של CompositingStrategy.Always שונה ל-Offscreen כדי לציין שה-graphicsLayer תמיד יעבור עיבוד לתוך מאגר ביניים (I47dc1)
  • עכשיו אפשר להשתמש בפריסה עם יותר מדי משבצות תוכן בצורה יציבה (I10566, ‏ b/248294649)
  • נוספו ממשקי API חדשים ניסיוניים PerfettoTrace.record {} ו-PerfettoTraceRule כדי ללכוד עקבות של Perfetto (שנקראים גם עקבות מערכת) כחלק מבדיקה, כדי לבדוק את התנהגות הבדיקה והביצועים שלה. (I3ba16)
  • בבדיקות ממשק משתמש באמצעות כלל Compose, המשכים שהופסקו במהלך קריאות חוזרות (callbacks) של withFrameNanos לא יישלחו עד שכל הקריאות החוזרות של המסגרת יסיימו לפעול. ההתנהגות הזו זהה להתנהגות של כתיבת הודעה כשהיא פועלת כרגיל. עם זאת, בדיקות שמסתמכות על ההתנהגות הישנה עלולות להיכשל. השינוי הזה אמור להשפיע רק על קוד שמבצע קריאה ישירה ל-withFrameNanos או ל-withFrameMillis, וכולל לוגיקה מחוץ לקריאה החוזרת שמועברת לפונקציות האלה, שאולי צריך להעביר אותה לתוך הקריאות החוזרות. בדוגמאות אפשר לראות את השינויים בבדיקת האנימציה ב-CL הזה.
  • נוסף פרמטר אופציונלי 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 ו-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 כפונקציה של גודל הרכיב. ‫(If8c43,b/181387080)
  • הוספנו את CompositingStrategy כדי לקבוע מתי להשתמש בשכבת קומפוזיציה מחוץ למסך לצורך עיבוד של תוכן graphicsLayer. ההתנהגות שמוגדרת כברירת מחדל בבחירה אוטומטית נשמרת. המערכת משתמשת בשכבה אם מוחל אלפא או RenderEffect/Overscroll. האפשרות Always תמיד תציג מאגר זמני מחוץ למסך, ואילו האפשרות 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 יש עכשיו method‏ 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 כש-Activity שומר את המצב של Compose View. (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)
  • שיפרנו את התמיכה בשינוי הגודל והמיקום של החלונות.
  • תמיכה במיקוד עבור לחצני כיוון ומקלדת חומרה ב-LazyLists.
  • הגובה המקסימלי שנתמך בתיבות דו-שיח ובחלונות קופצים צומצם ל-8dp (שינוי שמשפיע על התנהגות של מערכות עיצוב מותאמות אישית מסוימות – הסבר בהערות לגרסה beta01)
  • הרבה שיפורים קלים ב-API שלא גורמים לשיבושים
  • תיקנו הרבה באגים ושיפרנו את הביצועים

גרסה ‎1.3.0-rc01

‫5 באוקטובר 2022

‫androidx.compose.ui:ui-*:1.3.0-rc01 מופץ. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף API חדש לניסויים, Hyphens, כדי לתמוך במקפים אוטומטיים בטקסט (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)

תיקוני באגים

  • ‫BackHandler API של AndroidX Activity פועל עכשיו בתוך קומפוזיציה של 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)
  • הפונקציות ליצירת גופנים מקבלות עכשיו רשימה של FontVariation.Setting להגדרת גופנים משתנים במכשירי O ומעלה. (I11a9d, b/143703328)
  • הוספנו API ‏FontVariation להגדרה ולשימוש בגופנים משתנים. ‫(I3c40c, ‏ b/143703328)
  • ה-constructor‏ LineHeightStyle.Alignment הוא עכשיו ציבורי (בשלב ניסוי) (I4bbbe, ‏ b/235876330)
  • המאפיין Paragraph הוא עכשיו expect|actual ומוגדר ל-Android ולמחשב. ‫(Id387e, ‏ b/239962983)
  • הממשק 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 תומכים עכשיו בתחביר in של Kotlin להפעלת הפונקציה 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. במקרה של הכלי Layout Inspector, השיפור בביצועים הוא בערך פי 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
    • שיפור ההתנהגות עם מקלדת פיזית או שלט לטלוויזיה
  • ממשקי API חדשים ל:

    • שוליים פנימיים של חלונות
    • פרימיטיבים מרכזיים לאנימציות אינסופיות של פריסות שמופעלות באמצעות מחוות
    • יכולות GraphicsLayer, כולל RenderEffect
  • תיקנו הרבה באגים ושיפרנו את הביצועים

גרסה ‎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. פונקציה שצריכה לטרגט כלי החלה אחר חייבת לספק במפורש את הערת הסמן של היעד עבור כלי ההחלה הרצוי. (I40804)
  • השקנו API חדש לניסויים, שלא תלוי בפלטפורמה: interface ComposeUiTest ו-fun runComposeUiTest(block: ComposeUiTest.() -> Unit), שאפשר להשתמש בהם כדי להריץ בדיקות של Compose UI בלי צורך ב-TestRule. כדי להריץ בדיקה בלי ComposeTestRule, מעבירים את הבדיקה כ-lambda אל runComposeUiTest, ומשתמשים במתודות ובחברים בהיקף המקבל ComposeUiTest, שהם אותם אלה שמופיעים ב-ComposeContentTestRule.

    המאפיינים interface AndroidComposeUiTest ו-fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) הספציפיים ל-Android מתווספים כדי לספק גישה לפעילות הבסיסית, בדומה ל-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 לא מאוגד, צריך להשתמש ב-constructor. ‫(Ie6be4, ‏ b/225669674)
  • הפעלה של יכולת פעולה הדדית של גלילה מקוננת בין Compose ל-View בכיוון Compose > View. כלומר, רכיב אב שכולל רכיבים אחרים יוכל לקבל דלתאות של גלילה מקוננת מתצוגת גלילה מקוננת. (If7949, ‏ b/174348612)
  • ‫New 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)
  • במנחים של פסקאות ושל פסקאות מרובות, הארגומנטים התלויי מיקום מסודרים מחדש כך שהם מופיעים לפני הארגומנטים האופציונליים. (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 יכול להיות שימושי בתרחישי שימוש שבהם רוצים ליהנות מהיתרונות של קריאה וכתיבה בטוחה לשרשור שמבוססת על snapshot, אבל רוצים לקרוא את הערך בלי לגרום להרכבה מחדש או למדידה מחדש מיותרות. (I9f365, b/214054486)
  • מאפיין התוסף consumeWindowInsets של ComposeView מאפשר למפתחים להשבית את השימוש ב-Android WindowInsets. כך כל ComposeViews בהיררכיה יכול להחיל WindowInsets בלי להפריע לאחרים. ‫(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 כשלב ראשון להוספת התכונה 'תצוגה מקדימה מרובה'. אפשר להשתמש בהערות כאלה כדי להוסיף הערות לשיטות Composable או למחלקות הערות אחרות, שאז ייחשבו כהערות שנוספו באופן עקיף באמצעות @Preview. (I12eff)

  • מכשירי הפניה נוספו לרשימת המכשירים בגרסת @Preview (I071c9)

תיקוני באגים

  • ממשקי API של גרפיקה וקטורית עודכנו כדי להשתמש בהערה הנכונה שאפשר להרכיב @VectorComposable במקום @UiComposable (I942bc)
  • הסרת crossinline מ-AnnotatedString.Builder.withStyle (If84d5)

External Contribution

  • compose-ui: נוספו המאפיינים ambientShadowColor ו-spotShadowColor ל-GraphicsLayerScope (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)
  • עדכון של האפשרות להגדיר ערך null בליבת המערכת וב-appcompat כך שיתאים ל-Tiramisu DP2 ‏ (I0cbb7)
  • המאפיין parentData מוצג עכשיו בממשק Measured (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

  • העדכון כולל שימוש בשגרות משנה (coroutines) של Kotlinx בגרסה 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, ולכן השימוש בהערות האלה ישירות צריך להיות נדיר . המקרים שבהם אי אפשר להסיק כוללים יצירה ושימוש ב-applier מותאם אישית, פונקציות קומפוזביליות מופשטות (כמו שיטות ממשק), שדות או משתנים גלובליים שהם ביטויי למבדה קומפוזביליים (משתנים מקומיים ופרמטרים נגזרים), או כשמשתמשים ב-ComposeNode או בפונקציות קומפוזביליות קשורות.

    במקרה של פונקציות מותאמות אישית, הפונקציות הניתנות להגדרה שמפעילות את ComposeNode או את ReusableComposeNode צריכות להוסיף הערה ComposableTarget לפונקציה ולכל סוגי הפרמטרים של פונקציית ה-lambda הניתנת להגדרה. עם זאת, מומלץ ליצור הערה עם התיוג ComposableTargetMarker ואז להשתמש בהערה המתויגת במקום להשתמש ישירות ב-ComposableTarget. אנוטציה קומפוזבילית שמסומנת ב-ComposableTargetMarker שווה ל-ComposbleTarget עם השם המוגדר במלואו של מחלקת המאפיינים כפרמטר של ממשק ההחלה. דוגמה לשימוש ב-ComposableTargetMarker מופיעה במאמר anroidx.compose.ui.UiComposable. (I38f11)

  • ‫Font(resId, ...) עכשיו מקבל loadingStrategy ב-API יציב. (Ief3d2)

  • ‫FontLoadingStrategy הוא עכשיו API יציב. (I1ee35, b/174162090)

  • תמיכה בטעינת גופנים אסינכרונית ב-Text (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 class RenderNode (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 מאפשר להגדיר את ההקשר הגלובלי של שגרת המשך (coroutine) שמשמש לטעינת גופנים אסינכרוניים. (I87fe8, ‏ b/174162090)

  • נוסף AndroidFont, API חדש ברמה נמוכה שמאפשר לספק סוגים חדשים של תיאורי משאבי גופנים ב-Android. לדוגמה, טעינת גופנים מקצה עורפי ספציפי לאפליקציה, איתור אופציונלי של גופנים שהותקנו מראש במכשיר או טעינת גופן ממקור שלא מסופק על ידי מפעלי הגופנים הנוכחיים.

  • הרחבנו את Font.ResourceLoaded API כדי לתמוך בטעינה אופציונלית ואסינכרונית של גופנים. לא מומלץ למפתחי אפליקציות להשתמש ישירות ב-API הזה. כדי להוסיף סוגים חדשים של גופנים, אפשר לעיין במאמר AndroidFont.

  • פונקציית ההרחבה Font.AndroidResourceLoader מאפשרת ליצור Font.ResourceLoader כשלא מדובר בהרכבה.

  • נוסף פרמטר loadingStrategy לגופנים מבוססי-משאבים, כדי לאפשר טעינה אסינכרונית כשגופן המשאב מפנה ל-XML של גופנים להורדה. (Ie5aea, ‏ b/174162090)

  • הקונסטרוקטור Typeface(FontFamily) הוצא משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, והתהליך הזה יכול להימשך עד 10 שניות לגופנים שאפשר להוריד. אם משתמשים בגופנים להורדה, יכול להיות שהשיחה תיחסם למשך 10 שניות. במקומה, צריך להשתמש ב-FontFamilyResolver.preload.

  • האפשרות fontResource(FontFamily): Typeface הוצאה משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, והתהליך הזה יכול להימשך עד 10 שניות לגופנים שאפשר להוריד. במקום זאת, אפשר להשתמש ב-FontFamilyResolver.preload (If8e7c,‏ b/174162090)

  • הקונסטרוקטור 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 נעשה שימוש בהרכב מקומי ל-FontFamily.Resolver
  • הגרסה של Chrome Desktop‏ 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 ליצירת מזהים קבועים בכלי Layout Inspector. (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)
  • תוקנה בעיה ב-RTL ב-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, גם אם הגדרתם גודל קטן יותר ללחצן. ההתנהגות הזו תואמת להתנהגות של רכיבי 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

  • נוסף BringIntoView API ניסיוני שמאפשר לשלוח בקשה להורים כדי שיגללו את המסך ויציגו פריט (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)
  • נוספה פונקציית עומס יתר (overload) ללא צאצאים עבור 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 ובמוצרים נוספים. (I8fe1f)

תיקוני באגים

  • ‫AndroidView מעביר עכשיו את LocalLifecycleOwner ואת LocalSavedStateRegistryOwner לתצוגה שלו דרך ViewTreeLifecycleOwner ו-ViewTreeSavedStateRegistryOwner. (I38f96, ‏ b/179708470)
  • תיקנו בעיה שבה לפעמים לא ניתן להשתמש בתכונה SwipeToDismissBox ב-WearOS כדי להחליק כדי לסגור את התיבה. (I9387e)
  • הזמן שמוגדר כברירת מחדל בין אירועי קלט מוזרקים השתנה מ-10 אלפיות השנייה ל-16 אלפיות השנייה. השינוי הזה עשוי להשפיע על תוצאות של בדיקות שמבצעות מחוות קלט, כמו החלקה ספציפית. (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 כך שיתאים ל-composed (I3a482, ‏ b/191017532)
  • הוספנו את performTouchInput וTouchInjectionScope כתחליף ל-performTouchInput וTouchInjectionScope, כדי לאפשר שימוש באמצעים אחרים (כמו עכבר).

    ל-TouchInjectionScope יש את אותן שיטות כמו ל-GestureScope, למעט movePointerTo ו-movePointerBy, ששמותיהן שונו ל-updatePointerTo ו-updatePointerBy. כל שאר השיטות זהות.

    ההתנהגות של TouchInjectionScope כמעט זהה לזו של GestureScope, עם שני הבדלים קטנים:

    1. כששולחים אירוע down בזמן שהסמנים הוזזו בלי לשלוח אירוע move (במילים אחרות, נעשה שימוש ב-updatePointerTo(), אבל לא ב-move(), ואז מופעל down()), ההטמעה הקודמת הייתה מקדמת את זמן האירוע ושולחת אירוע move לפני שליחת אירוע down. ההטמעה החדשה עדיין שולחת את האירוע move, אבל לא מקדמת את זמן האירוע בתרחיש הספציפי הזה.
    2. כששולחים אירוע up בזמן שהסמנים הוזזו בלי לשלוח אירוע move (בדומה למה שמתואר למעלה), ההטמעה הקודמת הייתה מקדמת את שעת האירוע ושולחת אירוע move לפני שליחת אירוע up. ההטמעה החדשה לא עושה את זה: המיקומים החדשים של מצביעי העכבר יבואו לידי ביטוי רק דרך אירוע ה-up.

    לבסוף, TouchInjectionScope מציגה שיטה חדשה currentPosition(pointerId: Int) לקבלת המיקום הנוכחי של הסמן הנתון. (If1191, ‏ b/190493367)

תיקוני באגים

  • מאפשרים לחיתוך להרחיב את גבולות יעד המגע מעבר לאזור החיתוך למטרות של יעד מגע מינימלי. ‫(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 עודכן כך שהוא תלוי ב-Kotlin 1.5.30. (I74545)

שינויים ב-API

  • נוסף Modifier.inspectable כדי לעטוף משנים אחרים. (I1909b, b/191017532)
  • הוספנו את BlurredEdgeTreatment API כדי לפשט את תרחישי השימוש בטשטוש ולשלב אותם בצורה יותר נפוצה עם דגלים של קליפים ו-TileModes. ברוב תרחישי השימוש, התוכן המטושטש מוצג מחוץ לגבולות התוכן המקורי, והאזורים שמחוץ לגבולות האלה מטושטשים בשחור שקוף, או שהתוכן נחתך לגבולות התוכן ודוגם את הקצה הקרוב ביותר לליבות הטשטוש שמתרחבות מעבר לגבולות התוכן. (I6b4b7, ‏ b/166927547)
  • הוספנו תמיכה ב-RenderEffect ב-Compose לשולחן העבודה. הוספנו את 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 הייתה אמורה להיות צומת עלה בשרשרת של Modifier, אבל בגלל זה אי אפשר היה להגדיר אותה במיכל שאפשר להרכיב (למשל, box) או להוסיף קישוטים נוספים מעל, כמו Modifier.paint().border(). הקריאה ל-drawContent אחרי ציור התוכן של האובייקט הנתון מסוג Painter על ידי Modifier.paint, מאפשרת לנו לשמור על עקביות טובה יותר בהתנהגות עם דפוס השינוי. (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 וב-AGP 7.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 שמאפשר לכם לצפות בתצוגה מקדימה של רכיבי Composables שמשתמשים בממשקי 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 בשלב הזה. קוד שמשתמש ב-API יכול להצהיר על קבועים פרטיים לפני שה-API עובר לייצוב. (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.

  • בדפוסי כתובות ה-URL האלה יכולים להיות תווים כלליים (**, * ו-?) כדי שכלל אחד יכלול כמה שיטות או מחלקות.

מה עושים הכללים?

  • שיטה עם הדגל H מציינת שזו שיטה 'פעילה' וצריך לקמפל אותה מראש.

  • אם ל-method יש את הדגל S, זה אומר שהיא נקראת בזמן ההפעלה, ולכן צריך לבצע קומפילציה מראש כדי להימנע מהעלות של קומפילציה ופרשנות של ה-method בזמן ההפעלה.

  • מתודה עם הדגל P היא מתודה שמופעלת אחרי ההפעלה.

  • אם מחלקה מסוימת מופיעה בקובץ הזה, המשמעות היא שהיא נמצאת בשימוש במהלך ההפעלה, ולכן צריך להקצות לה מראש מקום בזיכרון כדי להימנע מעלות הטעינה של המחלקה.

איך זה עובד?

  • ספריות יכולות להגדיר את הכללים האלה, שייארזו בפריטי מידע שנוצרו בתהליך של פיתוח (Artifact) מסוג AAR. כשבונים אפליקציה שכוללת את הארטיפקטים האלה, הכללים האלה משולבים יחד, והכללים המשולבים משמשים לבניית פרופיל ART בינארי קומפקטי שספציפי לאפליקציה. לאחר מכן, מערכת ART יכולה להשתמש בפרופיל הזה כשהאפליקציה מותקנת במכשירים כדי לבצע קומפילציה מראש של קבוצת משנה ספציפית של האפליקציה, וכך לשפר את הביצועים של האפליקציה, במיוחד בהפעלה הראשונה. שימו לב: הפעולה הזו לא תשפיע על אפליקציות שאפשר לבצע בהן ניפוי באגים.

גרסה ‎1.0.0-beta08

‫2 ביוני 2021

‫androidx.compose.ui:ui-*:1.0.0-beta08 מופץ. גרסה ‎1.0.0-beta08 מכילה את השמירות האלה.

שינויים ב-API

  • טיפוס ה-enum‏ NestedScrollSource מוחלף במחלקה מוטמעת. (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)
  • טיפוס ה-enum‏ KeyboardType מוחלף במחלקה מוטמעת. (I73045, ‏ b/187055290)
  • החלפת סוג הנתונים FocusState enum בממשק 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)
  • טיפוס ה-enum‏ FocusDirection מוחלף במחלקה מוטמעת. (Ib6d03, ‏ b/187055290, ‏ b/184086802)
  • הוספנו אפשרות להעביר את מצב SubcomposeLayout, שמאפשרת להכין מראש את התוכן למזהה משבצת נדרש. כך, המעבר הבא למדידה יהיה מהיר יותר, כי כשננסה להשתמש ב-subcompose עם מזהה המשבצת הנתון בפעם הבאה, לא יהיה צורך בהרכבה. ‫(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 כבר לא @RequiresOptIn (Iab690)
  • נוספו ממשקי 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)
  • נוספה פונקציית בנאי 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's tearDownRegistry() (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 שהוצאו משימוש. במקום המאפיין משתמשים בפונקציה למיקום ב-positionInParent ולגבולות ב-boundsInParent ‏ (I580ed,‏ b/169874631,‏ b/175142755)
  • החלפה של כינויי טיפוסים (typealiases) בסוגים הבסיסיים:
    • ‫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)
  • הוספת modifier ‏selectionGroup שמאפשר לסמן אוסף של רכיבי Tabs או RadioButtons למטרות נגישות (Ie5c29)
  • השדה defaultFactory עבור compositionLocalOf ו-staticCompositionLocalOf הוא עכשיו שדה חובה ולא שדה אופציונלי.

    השינוי הזה מסיר שגיאת סוג פוטנציאלית עבור סוגים שאי אפשר להגדיר כ-nullable, שלא סופקה להם הגדרת ברירת מחדל. בעבר, הפעולה הזו הייתה מספקת הפניה לערך null עבור סוג שלא ניתן להקצאה.

    בסוגים שניתן להגדיר כ-nullable, כדאי לספק את { null } כברירת המחדל של factory.

    אנחנו לא ממליצים להשתמש ב-locales עם סוגים שלא יכולים להיות null, אלא אם אפשר לספק ברירת מחדל הגיונית. אם לא קיים ערך ברירת מחדל הגיוני, פונקציית ה-lambda‏ defaultFactory צריכה להחזיר חריגה. עם זאת, אם מתרחשת חריגה, המשמעות היא שלצרכנים של המקומי תהיה תלות מרומזת באספקת המקומי, שלא נאכפת על ידי מערכת הטיפוס. (Ifbd2a)

  • הוסרו methods שהוצאו משימוש ממודולים של ממשק משתמש (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)

  • ההדרכה הועברה לחבילת הבסיס. ה-API‏ VelocirtTracker הועבר מ-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)

  • הוסרה התמיכה ב-CustomEvens מ-PointerInputModifier ‏ (I02707, ‏ b/175294473)

  • ‫SnapshotStateObserver כבר לא ניסיוני (Id2e6a)

  • נמחקו כמה ממשקי API שהוצאו משימוש בעבר (Ice5da, ‏ b/178633932)

  • המסננים longPressGestureFilter ו-doubleClickGestureFilter הוסרו. צריך להשתמש ב-Modifier.pointerInput עם פונקציות עזר, למשל detectTapGestures ‏ (I2fedf,‏ b/175294473)

  • הוסר ה-API‏ String.format בוצע שינוי בשימושים שונים בשיטות 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 local כדי להחליף את הממשק הקודם של 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. הוסרו פונקציות ה-Composable ‏emitView שהוצאו משימוש. (Ifb214)
  • הפונקציה Modifier.pointerInput מחייבת עכשיו שימוש במפתחות remember כדי לציין מתי שגרת המשך (coroutine) הזיהוי של קלט מצביע צריכה להתחיל מחדש עבור תלות חדשות. (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)
  • הוסרו ה-methods של פירוק והעתקה (copy()) מכמה מחלקות שבהן השימוש בהן היה נדיר. (I26702, ‏ b/178659281)
  • העברנו את Popup כדי שיהיה ספציפי לפלטפורמה. השם של 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 מקבלת עכשיו פונקציות למדא שמחזירות ערכי Float במקום ערכי Float ישירים. (If4a35, ‏ b/178657186)
  • נוספה סמנטיקה של EditableText כדי לסמן טקסט קלט שניתן לעריכה בשדה הטקסט לצורך נגישות, ונוספו שיטות בדיקה תואמות לבדיקת הסמנטיקה (I8e07a)
  • הפכנו את OwnerLayer/OwnerScope/OwnerSnapshotObserver ל-internal (I4ffaf, ‏ b/175103944)
  • הפונקציה toIntPx()‎ שונה ל-roundToPx()‎. (I9b7e4, b/173502290)
  • השם IntBounds שונה ל-IntRect וה-API שופר. (I1f6ff)
  • ה-API של Snapshot עודכן כדי להיות עקבי יותר עם הנחיות ה-API, וכדי להסתיר מחלקות הטמעה פנימיות מה-API הציבורי. (Id9e32)
  • נוספו פעולות סמנטיות של הרחבה וכיווץ. נוספו expand ו-halfExpand ב-ModalBottomSheetState (‏Ib5064)
  • המאפיין Modifier.dragGestureFilter יצא משימוש. במקומה, צריך להשתמש ב-method‏ 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. אם בעבר העברתם אובייקט מותאם אישית של שמירה, עכשיו אתם צריכים להשתמש בעומס יתר חדש של 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 סגורים ימשיכו את הרה-קומפוזיציה עד ששגרות המשך (coroutine) הצאצא של הקומפוזיציה יסתיימו. השם של הפונקציה 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)
  • הארטיפקט 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)
  • ה-API‏ 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 הציבורי
    • הוסרה שיטת העמסה (overload) של 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 עבר רפקטורינג כדי להשתמש בממשק במקום במחלקה קונקרטית. בנוסף, הממשק לא משתמש יותר בפרמטר מסוג.

    זהו שינוי פנימי שלא אמור להשפיע על התאימות של קוד המקור, אבל הוא שינוי בינארי שעלול לגרום לבעיות. (I3b922, b/169406779)

  • הסרה של הפונקציה StringBuilder.deleteAt שהוגדרה בטעות כציבורית (Id6ed9)

תיקוני באגים

  • רכיבי ComposeView שמוצבים בהיררכיות של תצוגות שהן צאצאים של קומפוזיציה אחרת, מארחים עכשיו קומפוזיציות צאצא של האבות הקדמונים שלהם (I92883)
  • בוצע עדכון ב-API של compose imageFromResource כדי לעשות שימוש חוזר במטמון של משאב 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

    • נוספו פונקציות factory שמתחילות באות רישית
    • הוצאנו משימוש פונקציות קודמות של factory עם אותיות קטנות בתחילת המילה
    • פונקציות חדשות של יצירת אובייקטים מחזירות את FontFamily במקום מחלקות משנה
    • הסתרת constructors של מחלקות משנה, כך שאפשר ליצור אותן רק באמצעות פונקציות factory.
    • השם של Font.asFontFamily שונה ל-Font.toFontFamily‏ (I42aa7)
  • הוספנו את ComposeContentTestRule, שמרחיב את ComposeTestRule ומגדיר את setContent, שהוסר מ-ComposeTestRule. נוספה שיטת יצירה createEmptyComposeRule() שמחזירה ComposeTestRule ולא מפעילה Activity בשבילכם. משתמשים בזה כשרוצים להפעיל את הפעילות במהלך הבדיקה, למשל באמצעות ActivityScenario.launch (I9d782, ‏ b/174472899)

  • הפונקציה animateAsState נקראת עכשיו animateFooAsState, כאשר Foo הוא סוג המשתנה שמונפש. לדוגמה: Float,‏ Dp,‏ Offset וכו' (Ie7e25)

  • הוספנו את הפרמטר content_description לתמונה ולסמל. הוא משמש כדי לספק תיאור לשירותי הנגישות (I2ac4c)

  • צריך להסיר את displaySize כי לא מומלץ להשתמש בו. בדרך כלל עדיף להשתמש בגודל של onRoot() או בגודל החלון לפחות. (I62db4)

  • הפונקציה OnSizeChanged דיווחה על הגודל של התוכן בפריסה. הוא מדווח עכשיו על הגודל במיקום שלו בשרשרת של שינוי המאפיינים. (I36b78, b/177562900)

  • ‫emit() API וכל העומסים העודפים שלו הוצאו משימוש ושמם שונה ל-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 במקום זאת. המשתמשים עדיין יכולים להחליט שהם לא צריכים את ההתנהגות של טעינה עצלה ולהשתמש ישירות במאפיינים כמו Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, ‏ b/170468083)

  • ‫factory method חדש items(count: Int) להיקף של LazyColumn/LazyRow/LazyVerticalGrid. הפונקציות items(items: List) ו-itemsIndexed(items: List) הן עכשיו פונקציות הרחבה, ולכן צריך לייבא אותן באופן ידני כשמשתמשים בהן. עומסי תוספים חדשים למערכים: items(items: Array) ו-itemsIndexed(Array) (I803fc, b/175562574)

  • במקום ImeAction.NoAction, צריך להשתמש ב-ImeAction.None

    • במקום ImeAction.Unspecified (Ie1bcc), צריך להשתמש ב-ImeAction.Default
  • שימוש ב-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)
  • שינינו את המהירות כך שתכלול רכיבים ופעולות מתמטיות. (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)

  • הוסר ממשק ה-API הציבורי Any.identityHashCode()‎ ‏ (I025d7)

  • הסרנו את ה-API ‏toStringAsFixed במקום להשתמש ישירות ב-String.format. (Iaba6b)

  • הוספת מתג ל-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)
  • שם המיקום שונה ל-DpOffset והוסרה הפונקציה getDistance()‎ (Ib2dfd)

  • הפונקציה fun 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)
  • ה-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 מחליף insertBottomUp() כדי לבנות עץ מלמטה למעלה, ו-insertTopDown() כדי לבנות את העץ מלמעלה למטה. (Icbdc2)

  • נוספו המאפיינים dismissOnBackPress ו-dismissOnClickOutside ל-AndroidDialogProperties. המאפיינים האלה מאפשרים להגדיר מתי יופעל ה-lambda של onDismissRequest של תיבת הדו-שיח. (If5e17)

  • נוסף painterResource API כדי לטפל בטעינה אטומה של אובייקטים של Painter מפורמטים של נכסי רסטר (כמו PNG) או מ-VectorDrawables. הצרכנים לא צריכים יותר לקבוע מראש את סוג הנכס, ויכולים לקרוא לשיטה הזו כדי לקבל אובייקט Painter לשימוש ברכיבי Image composable או בשינויים של Painter. ‫(I2c703, ‏ b/173818471)

  • נוספה הפונקציה Modifier.clearAndSetSemantics כדי לנקות את הסמנטיקה של צאצאים ולהגדיר סמנטיקה חדשה. (I277ca)

  • העברנו את ContentDrawScope למודול ui-graphics כדי שיהיה עם DrawScope. (Iee043, ‏ b/173832789)

  • הוספנו את PathEffect graphics 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 כתחליף ל-ui-tooling API, כדי להשתמש בהם לחילוץ פרטי קומפוזיציה. ממשקי ה-API האלה הם ציבוריים, אבל הם לא מיועדים לשימוש מחוץ ל-ui-tooling API, כי הם מספקים את המידע הגולמי ש-ui-tooling API מפרש (I31a9c)

  • בוצע שינוי מבנה ב-ShaderBrush כדי ליצור באופן עצלני מופע של Shader כשמידע על גודל סביבת הציור זמין. השימוש ב-Fill מאפשר להגדיר מעברי צבעים שממלאים את כל גבולות הציור של רכיב שאפשר להוסיף לו קומפוזיציה בזמן הקומפוזיציה, בלי להטמיע הטמעות מותאמות אישית של DrawModifier.

    הוצאנו משימוש ממשקי API של פונקציות ליצירת מעברי צבעים, ועברנו לשימוש בשיטות factory באובייקט 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)
  • השדות 'זמן פעולה' ו'מיקום' של PointerInputData לא יכולים להיות ריקים. (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, והחלפנו אותם במאפיינים חדשים ששם המחלקה שלהם מתחיל ב-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 ושל ה-methods שקשורים אליו ל-ImageBitmap. (Ia2d99)
  • נוסף פרמטר zIndex לפונקציה place()‎ של PlacementScope, כך שהפונקציה Modifier.zIndex()‎ פועלת עכשיו כ-LayoutModifier, וכל פריסה בהתאמה אישית יכולה להגדיר zIndex לצאצאים שלה ישירות בבלוק המיקום (I711f7,‏ b/171493718)
  • העברה של מאפייני סמנטיקה של foundation אל 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

    • הגדרת TextFieldValue.composition לקריאה בלבד
    • הוסרה חריגה שמופעלת עבור טווח בחירה לא תקין (I4a675, ‏ b/172239032)
  • תמיכה ב-TtsAnnotation למנוע המרת טקסט לדיבור. (I54cc6)

  • ממשקי API חדשים להפעלת אנימציות ב-coroutines‏ (Ied662)

תיקוני באגים

  • הפרמטר alignment של Box נקרא עכשיו contentAlignment. (I2c957)
  • השם של משני offsetPx שונה ל-offset. הם מקבלים עכשיו פרמטרים של lambda במקום State. (Ic3021, ‏ b/173594846)
  • נוסף הפרמטר resetInput ל-TextInputService#onStateUpdated ‏ (I3e8f5, ‏ b/172239032, ‏ b/171860947)
  • נוספה בדיקת lint לפרמטרים של Modifier בפונקציות Composable. בדיקת ה-lint הזו בודקת את השם, סוג ההחזרה, ערך ברירת המחדל והסדר של הפרמטר כדי לוודא שהם עקביים עם ההנחיות של Compose. ‫(If493b)
  • נוספה באופן זמני אפשרות להפעיל את TestAnimationClock באמצעות MonotonicFrameClock (I1403b, b/173402197)
  • נוסף רכיב wrapper של Android Typeface. אפשר לטעון גופן 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 של Compose UI

11 בנובמבר 2020

‫androidx.compose.ui:ui-*:1.0.0-alpha07 מופץ. גרסה ‎1.0.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף ScaleFactor inline class כדי לייצג גורמי קנה מידה לצירים האופקי והאנכי בנפרד, כדי לתמוך בתרחישי שימוש של שינוי קנה מידה לא אחיד.
    • נוספה השיטה computeScaleFactor אל ContentScale
    • נוסף ContentScale.FillBounds כדי לבצע שינוי גודל לא אחיד כדי למתוח את גבולות המקור כך שימלאו את היעד.
    • נוספו שיטות אופרטור לחישוב פרמטרים של ScaleFactor עם פרמטרים של Size.
    • (Ic96a6, b/172291582)
  • נוספו המפעלים BiasAlignment ו-BiasAbsoluteAlignment ליצירת Alignments. ‫(Iac836, ‏ b/169406772)
  • מאפשרים למפתח לנקות את המיקוד בכוח. (I90372)
  • תוקן באג שגרם לכך שהגובה לא נמשך לתצוגות בתוך רכיב Compose. (If7782)
  • נוצר onDrawBehind API בתוך 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)
  • הוסר פרמטר האטימות מהמשנה 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)
  • Introduce ui-test-junit4 module (Ib91f8)
  • השם של relativePaddingFrom שונה לpaddingFrom. נוסף משנה paddingFromBaseline כדי להקל על ציון מרחקים מגבולות הפריסה לקווי הבסיס של הטקסט. (I0440a, ‏ b/170633813)
  • השם של LaunchedTask שונה ל-LaunchedEffect כדי לשמור על עקביות עם ממשקי ה-API של SideEffect ו-DisposableEffect. כדי לעודד שימוש בשיטות מומלצות, אסור להפעיל את LaunchedEffect בלי פרמטרים של נושא. (Ifd3d4)
  • הוספנו את המשאב resources composable שמרכיב מחדש כשמתבצע עדכון של ההגדרה. ‫(I6387c, ‏ b/167352819)
  • עכשיו נדרש CoroutineContext ב-Recomposer בזמן הבנייה (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

  • הקומפוזיציה מוגדרת עכשיו כ-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)
  • נוספה אפשרות לציין פרטים של כלי הבדיקה במגדיר מורכב (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)
  • הפונקציה Box הפכה לפונקציה מוטמעת. ‫(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)
  • התאמה ניסיונית.התאמה של קלט להשהיית קלט של מצביע (Ia77d2)
  • נוספו פעולות נגישות של העתקה/הדבקה/גזירה (I6db4f)
  • הוסר constructor ציבורי ל-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() כדי לקבל קריאה חוזרת כשפריסת התוכן נמדדה מחדש והגודל השתנה, בהתאמה. (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 הוסרה. הרוחב מועבר עכשיו ישירות ל-Paragraph. (Ica712)

תיקוני באגים

  • עודכנו הרבה ממשקי API של גרפיקה
    • ממשקי ה-API של שינוי הגודל והסיבוב עודכנו כך שישתמשו בפרמטר Offset יחיד כדי לייצג את קואורדינטת נקודת המשען, במקום בפרמטרים נפרדים של מספרים עשרוניים לקואורדינטות x/y ב-DrawScope וב-DrawTransform
    • הוסרו השיטות Rect.expandToInclude ו-Rect.join
    • עדכנו את מסמכי התיעוד של Radius כדי לציין צורה אובלית בנוסף לצורה אליפטית
    • הוספנו תיעוד שמציין שאסור לקרוא ישירות לבונה הציבורי של מחלקת 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 שונתה והפכה לנכס במקום לפונקציה
    • העדכון של בנאי 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 עם שיטות טרנספורמציה בהיקף מוגבל, כדי לציין שהטרנספורמציה חלה רק בתוך הקריאה החוזרת ומוסרת אחרי שהקריאה החוזרת מופעלת
    • עדכנו את מסמכי העזרה בנושא 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 מחזירה הפרש, האם היא צריכה להחזיר את ההפרש או את הגודל?

    הוסרו גם methods שהוצאו משימוש במחלקה 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 בממשקי API של פריסה. ‫(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

  • remove callback to notify Owner when layoutnode bounds change. ‫(If654e, ‏ b/166106882)
  • הוספנו תמיכה בפרמטרים של filltype בנתיבים של גרפיקה וקטורית, כדי לתמוך בחיתוך של צורות בהתאם לכללי מילוי הנתיב evenOdd או NonZero. (I43dd2)
  • זמן הפעולה (Uptime) והמהירות (Velocity) הם עכשיו מחלקות מוטבעות (I48f4a)
  • המאפיין Duration הוא עכשיו מחלקה מוטבעת (I565eb)
  • הוספת קריאה חוזרת כדי להודיע לבעלים כשמשתנים הגבולות של layoutnode. (Ic40b3)
  • תוקנה בעיה שבה בנאי הפונקציה Rect עם Offset ורדיוס יצר את ה-Rect בסדר left, right, top, bottom במקום בסדר left, top, right, bottom.

    הוסרו שיטות נלוות שהוצאו משימוש ב-Rect לטובת פונקציות constructor.

    נוספו בדיקות לאימות שיטות ב-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. שימו לב: בעתיד לא תהיה תמיכה בהוספה ישירה של רכיבי View ו-ViewGroup, אלא אם הם רכיבי עלים בעץ ההרכב. במקרה כזה, אפשר להשתמש ב-AndroidView. (I29b1e, b/163871221)
  • התכונה FocusState2 הוצאה משימוש והוחלפה בתכונה FocusState (Ia8b79, ‏ b/160822876, ‏ b/160923332)
  • הוסרו עומסי יתר (overloads) של 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 פנימיים של Compose כדי לצמצם את התקורה של מעקב אחרי אובייקטים של מצב כמו 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 והוצאו משימוש פונקציות ה-constructor של 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)
  • נוספה תמיכה במפתח חומרה חלופי (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)
  • הוספנו API חדש של AndroidView והוצאנו משימוש את ה-API הקיים. (I5bcfd)
  • השיטה Modifier.plus הוצאה משימוש. במקומה צריך להשתמש ב-Modifier.then. השימוש במילה 'ואז' מעביר מסר חזק יותר לגבי הסדר, וגם אוסר על הקלדת Modifier.padding().background() + anotherModifier, מה ששובר את הרצף ומקשה על הקריאה (Iedd58, b/161529964)
  • הוספת מחלקות משנה של View [Abstract]ComposeView לאירוח תוכן Compose בהיררכיית תצוגות. (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)
    1. הסרה של הממשק OffsetBase שלא נמצא בשימוש
    2. התאמה בין המחלקות Offset ו-IntOffset כדי ליצור ממשק API עקבי
    3. משנים את השם של IntOffset.Origin ל-IntOffset.Zero כדי לשמור על עקביות עם Offset API
    4. העברנו את השיטה nativeCanvas מחוץ לממשק Canvas כדי לתמוך בצרכנים ביצירת מופעי Canvas משלהם
    5. נוצרת מחלקת stub בשם EmptyCanvas כדי לבצע refactoring של DrawScope כך שיהיה פרמטר שאינו null במקום lateinit, וכדי להבטיח שהשדה לא יהיה null
    6. שונה שם של סוגי ClipOp ל-Pascal Case
    7. השמות של סוגי ה-enum של FilterQuality שונו ל-Pascal Case
    8. השמות של סוגי ה-enum‏ StrokeJoin שונו ל-Pascal Case
    9. שמות הערכים של enum‏ PointMode שונו ל-Pascal Case
    10. שמות ה-enum של PaintingStyle שונו ל-Pascal Case
    11. שמות ה-enum של PathFillType שונו ל-Pascal Case
    12. השמות של ערכי ה-enum של StrokeCap שונו ל-Pascal Case
    13. הטמענו עדכון ב-DrawCache כך שלא נעשה יותר שימוש בפרמטרים של lateinit
    14. העדכון של DrawScope לא כולל יותר שימוש בהעברה עצלה (lazy delegation) לפרמטרים הפנימיים fillPaint ו-strokePaint
    15. בוצע עדכון של Image composable כדי להימנע משימוש ב-Box לצורך תקורה נמוכה יותר
    16. עודכן הסיווג Outline כך שיכלול הערות מסוג ‎ @Immutable
    17. עדכנו את PathNode כך שיכלול הערות @Immutable לכל הוראת נתיב
    18. בוצע עדכון של Vector subcomposition כדי להסיר בדיקות מיותרות של שוויון מותנה, כי הפונקציה compose כבר מטפלת בהן
    19. הוצאנו משימוש את שיטות ה-constructor הנלוות ל-Rect, ועברנו לשימוש ב-constructors של פונקציות
    20. עדכון של מחלקות Brush ושל פונקציות בונות עם ממשקי API‏ @Immutable ו-@Stable
    21. העדכון של סוג ה-enum‏ VertexMode ל-PascalCase
    22. השיטה selectPaint של DrawScope עודכנה כדי להחליף באופן מותנה את פרמטרים של קו המתאר בציור אם הם השתנו
    23. העדכון של Size כולל הוספה של API לפירוק מבנה, שינוי השם של UnspecifiedSize ל-Unspecified והסרה של מתודות שלא נמצאות בשימוש
  • עדכנו את השימוש ב-API של BlendMode ב-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)
  • שם ה-API ‏Material FilledTextField שונה ל-TextField, ושם ה-API ‏foundational TextField שונה ל-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)
  • הוספת FloatingToolbar לבחירת TextField. (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)
  • החל מגרסה 1.1.0, כדי להשתמש בממשק החלה צריך להשתמש בשיטה clear()‎ כדי להשמיד קומפוזיציות (Ibe697)
  • ה-API‏ 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 בתוך פונקציית @Composable אם היה (I5205a, b/158123804)

  • השם של Modifier.tag שונה ל-Modifier.layoutId, כדי למנוע בלבול עם Modifier.testTag. (I995f0)

  • המיקומים של קו היישור שמוחזרים מ-Placeable#get(AlignmentLine) כבר לא יכולים להיות null. אם שורת היישור שביקשתם חסרה, יוחזר הערך AlignmentLine.Unspecified. (I896c5, ‏ b/158134875)

  • נוסף פרמטר של משנה ל-AndroidView composable. (I48a88, ‏ b/158746303)

  • הפונקציה Semantics()‎ הוצאה משימוש. במקומה צריך להשתמש ב-Modifier.semantics()‎. (I72407, ‏ b/158841414)

  • הוספה של viewModel() composable שמאפשר ליצור או לקבל ViewModel שכבר נוצר, באופן דומה לאופן שבו הוא פועל ב-Activity או ב-Fragment ‏ (I5fdd1)

  • השימוש ב-IntPx הוחלף ב-Int. ‏ IntPxPosition הוחלף ב-IntOffset. הוחלף IntPxSize ב-IntSize. (Ib7b44)

  • כדי לאחד את מספר הכיתות שמשמשות לייצוג מידע על גודל, צריך להשתמש בכיתת הגודל במקום ב-PxSize. השימוש בשיטה הזו מאפשר ליהנות מהיתרונות של מחלקה מוטמעת כדי להשתמש בערך מסוג long כדי לארוז 2 ערכים מסוג float שמייצגים רוחב וגובה שמוצגים כערכים מסוג float. (Ic0191)

  • כדי לצמצם את מספר המחלקות שמשמשות לייצוג מידע על מיקום, מומלץ להשתמש במחלקה Offset במקום במחלקה PxPosition. השימוש ב-inline class מאפשר ליהנות מהיתרונות של 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 as removed. במקומה, צריך להשתמש ב-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)

  • עדכנו את Alignment API והוספנו תמיכה ביישור מוחלט (שלא משתקף אוטומטית בהקשר של כתיבה מימין לשמאל) (I38cd3)

  • בוצעו שינויים ב-DrawLayer modifiers API: השם של outlineShape שונה ל-shape, ערך ברירת המחדל שלו הוא RectangleShape והוא כבר לא יכול להיות null. השם של clipToOutline שונה ל-clip. האפשרות clipToBounds הוסרה כי היא זהה ל-clip == true עם RectangleShape (I7ef11,‏ b/155075735)

  • ממשקי API ברמה גבוהה יותר של Compose עודכנו כך שהם חושפים CanvasScope במקום Canvas. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם של 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 כדי שיהיה באותו מודול כמו Alignment API.
    • השם של FillMaxDimension שונה ל-Crop
    • השם של FillMinDimension שונה ל-Fit
    • שינינו את השם של האפשרות 'התאמה' ל'בתוך' כדי שיתאים יותר
    • הערכים המקבילים של 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)

  • הוחלף Modifier plus operator בפונקציות של תוסף factory ‏ (I225e4)

  • נוספו מאפייני translationX/Y כדי לתמוך בהזזה של רשימת הפקודות של הציור בשביל שכבה נתונה. האפשרות הזו שימושית להזזת תוכן בתגובה לאנימציות או לאירועי מגע. (I8641c)

  • הוספנו פרמטרים pivotX ו-pivotY לממשקי Layer API כדי לתמוך בסיבוב ושינוי גודל סביב נקודה מסוימת בשכבה (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. המאפיין 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)

  • נוסף Unset Color כדי לייצג ערך לא מוגדר בלי להוסיף תיבות ל-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, אבל עם VectorAsset במקום ImageAsset (I9af9a,‏ b/149030271)

  • שינינו את השם Image ל-ImageAsset כדי להבדיל טוב יותר בין נתוני התמונה לבין רכיב ה-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, שמועבר על ידי הקריאה החוזרת 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)

  • הוספת פרמטרים של שוליים פנימיים, גבול, צורה ורקע ל-Box (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 בתוך ViewGroups בלי ליצור קומפוזיציה חדשה. דוגמה אפשר לראות ב-ViewInteropDemo. (I9ab0b, ‏ b/160455080)
  • נוספו sortWith ו-removeRange ל-MutableVector (Icccf7)
  • הטמעת נקודות אחיזה לגרירת בחירה כדי לשנות את הבחירה ב-TextField. (I27032)
  • הוסר Shader inline class שעטף את NativeShader expect class. השם של NativeShader שונה ל-Shader. המחלקת Shader המוטמעת לא הוסיפה שום דבר בעל ערך לממשק ה-API והיא הייתה מחלקה מוטמעת, לכן צריך להשתמש ישירות במחלקה NativeShader. (I25e4d)
  • בוצע שינוי בקוד של PainterModifier כך שהוא לא מספק יותר קנה מידה על סמך האילוצים שצוינו והפרמטר ContentScale. הטמעות של Painter צריכות לשנות את קנה המידה של תוכן הציור שלהן בעצמן על סמך הגודל הנתון של DrawScope שהן מציירות לתוכו.

    תוקנה בעיה שבה מפת הסיביות של מטמון VectorPainter הייתה בגודל ברירת המחדל שלה במקום בגודל שצוין לציור.

    העדכון של ImagePainter מאפשר לשנות את קנה המידה של התוכן שלו במקום להסתמך על PainterModifier שיעשה זאת בשמו. (I6ba90)

  • הוספה של הפונקציה withFrameNanos ברמה העליונה לתזמון אנימציה (Ie34c5)

  • ההערה @Untracked הוצאה משימוש. החלפה עם ‎ @ComposableContract(tracked=false)‎ (Id211e)

  • השימוש ב-androidx.ui.foundation.TextFieldValue וב-androidx.ui.input.EditorValue הוצא משימוש. גם רכיבי ה-TextField,‏ FilledTextField ו-CoreTextField composable שמשתמשים בסוג הזה הוצאו משימוש. במקומו, אפשר להשתמש ב-androidx.ui.input.TextFieldValue (I4066d,‏ b/155211005)

  • תוקנה בעיה שבה שליחת קלט של מצביע גרמה לקריסה אם מסנני PointerInput הוסרו באמצעות 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. ביטויים שניתנים להרכבה בביטויי ארגומנטים שמוגדרים כברירת מחדל נרשמים עכשיו למינוי ומטופלים בצורה נכונה

    העבודה הזו כללה כמה אופטימיזציות: ‫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 7. הפונקציות restartableFunction ו-restartableFunctionN עודכנו כך שיכללו פרמטרים נוספים של זמן קומפילציה (I60756, b/143464846)

  • הוסרו משני LayoutAlign שהוצאו משימוש. (I10877)

  • הוסר RepaintBoundary לטובת DrawLayerModifier ‏ (I00aa4)

  • ללחצן, ל-FloatingActionButton ול-Clickable יש עכשיו פרמטר enabled נפרד. חלק מהפרמטרים של Button קיבלו שם חדש או שונו הסדר שלהם. (I54b5a)

  • החלפנו את ButtonStyle בפונקציות נפרדות והסרנו את העומס של טקסט (מחרוזת). כדאי לעיין בדוגמאות המעודכנות כדי לקבל מידע על השימוש. (If63ab, b/146478620, b/146482131)

  • שינויים ב-API של ambients שעלולים לגרום לכשלים. פרטים נוספים מופיעים ביומן ובמסמכי התיעוד של Ambient<T> (I4c7ee, b/143769776)

  • השתנה אופן הפעולה של ברירת המחדל 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)