Compose Foundation

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

מבנה

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

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

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

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

משוב

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

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

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

גרסה 1.13

גרסה ‎1.13.0-alpha03

‫9 בספטמבר 2026

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

שינויים ב-API

  • הוספנו תמיכה בציון הסגנון של חלקים נפרדים של קומפוזיציה מורכבת (כמו TextField או DatePicker) ישירות בפרמטר הסגנון של הקומפוזיציה. לדוגמה, אפשר ליצור קומפוזיציה שדומה ל-TextField, שמאפשרת להתאים אישית כל אחת מהתיבות של המעצב באמצעות סגנון, כך שאפשר לבטל את ההתאמה האישית ברמת הנושא או באתר הקריאה. (I43c0f)
  • הוצאו משימוש עומסי יתר של שדות טקסט ב-Material 2 שמקבלים פרמטרים של value, onValueChange. צריך לבצע מיגרציה ל-overload שמשתמש ב-TextFieldState כדי להעביר את המצב שלו. (I6b841, ‏ b/556234973)
  • ההערה @ExperimentalFoundationApi הוסרה מהסרטון undoState ב-TextFieldState. (I93a44)
  • מוסיפים אובייקטים של הגדרות ברירת מחדל לכל פריסת Lazy, שמכילים את ערכי ברירת המחדל שמשמשים בפונקציות @Composeable המתאימות. כרגע הוא מכיל רק את חלון ברירת המחדל של המטמון לכל פריסה. (I58633)
  • הדגל isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]s, כשהוא מופעל, גורם לפריסות של טעינה עצלה להשתמש בחלון מטמון שמשתמש בגודל הממוצע של פריטים גלויים כדי לבצע אחזור מראש לפני אזור התצוגה, עם חלון מינימלי של 10% מאזור התצוגה וחלון מקסימלי של 50% מאזור התצוגה. (I59212)
  • הוצאו משימוש LazyListPrefetchStrategy, LazyListPrefetchScope ו-LazyListPrefetchResultScope. צריך להגדיר את התנהגות האחזור מראש באמצעות LazyLayoutCacheWindow ב-LazyColumn או ב-LazyRow. LazyLayoutCacheWindow מספק מנגנון הצהרתי של שמירת נתונים במטמון שמבוסס על אזור התצוגה. המנגנון הזה מכין פריטים באופן אוטומטי לפני החלון הגלוי ושומר פריטים מאחורי החלון הגלוי, בלי צורך בפונקציות קריאה חוזרת מורכבות של תזמון אימפרטיבי. ה-API החדש פשוט יותר ודורש פחות שלבי הגדרה מאשר LazyListPrefetchStrategy. (I1fa2d)
  • הוספנו פונקציות הרחבה PolygonShape.transformed ו-PolygonShape.scaledToFit ב-Compose Foundation לשינוי והתאמה של צורות פוליגון. (I3f327)
  • במסגרת השינוי הזה, ה-API של Styles עובר רפקטורינג לשני חלקים נפרדים: Styles DSL והמשנים שמוגדרים על ידי ה-DSL. ההטמעה הקודמת שמבוססת על Style עדיין קיימת, אבל היא תוצא משימוש ותוסר. צריך להחליף את כל השימושים בו ב-API החדש שמבוסס על CommonStyle.
  • הרכיבים העיקריים שהוספנו:
    • ‫CustomStyle ו-CommonStyle: ממשקי בסיס ועוזרים למיזוג להצהרה על סגנונות שאפשר להרכיב.
    • ‫StyleResolver: פותרת מאפייני סגנון בקומפוזיציה וקושרת לצמתי פריסה באמצעות Modifier.styleResolver.
    • ‫Modifier scopes: Modifier.appearance,‏ Modifier.placement וגם Modifier.padding ו-Modifier.graphicsLayer דינמיים שמבוססים על קריאה חוזרת.
    • פרימיטיבים של נכס: stylePropertyOf, ‏ styleLocalOf.
    • סוגים שימושיים למאפייני סגנון: Breadth,‏ Fill ו-Shadows.
  • המשנים החדשים שימושיים ליישום מערכת עיצוב באמצעות Styles API, אבל הם לא נדרשים. יכול להיות שמערכת עיצוב תשתמש במאפיינים האלה או תספק מאפיינים משלה. (Ieb8cc, ‏ b/549921960)
  • הוסרה ההערה ExperimentalFoundationApi מממשקי API של TextFieldBuffer שעוקבים אחרי השינויים (I546a7)
  • הוספנו את MorphPolygonShape ב-Compose Foundation לאנימציות מורפינג בין צורות פוליגון, יחד עם ממירים של toPolygonShape() ל-RoundedCornerShape ושל toPolygonShape() ל-CutCornerShape. (Ic5a89)
  • הוספנו את PolygonShape ל-Compose Foundation כדי לעבד פוליגונים רגילים, פוליגונים בצורת כוכב ופוליגונים מעוגלים בהתאמה אישית עם החלקה של הפינות. (I0b99d)
  • הוצאנו משימוש עומסים של BasicTextField שמקבלים פרמטרים של value, onValueChange. צריך לבצע מיגרציה ל-BasicTextField overload שמשתמש ב-TextFieldState כדי להעלות את המצב שלו. (I636bf, b/552879150)
  • בדומה ל-BasicTextField(value, onValueChange), גם VisualTransformation הוצא משימוש כי הוא נחשף רק דרך הגרסה הזו של TextField. ההמרות הקיימות יועברו אל OutputTransformation. (I636bf, b/552879150)
  • הוצאנו משימוש את האפשרות לספק את LazyLayoutCacheWindow ו-LazyListPrefetchStrategy דרך LazyListState, ועכשיו צריך לספק את LazyLayoutCacheWindow לפונקציה קומפוזבילית. (I71f19)
  • הוסר Feature flag זמני ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled. (Ifff7f)
  • נוסף InputTransformation.maxLengthTrim כדי להגביל את אורך הטקסט על ידי חיתוך של תווים עודפים בקלט, נוסף InputTransformation.maxLengthReject כדי לדחות קלט שחורג מ-maxLength, והוצא משימוש InputTransformation.maxLength לטובת maxLengthTrim ו-maxLengthReject. (I8d4cd)

תיקוני באגים

  • ‫compileSdk for Compose libraries updated to 37.1. לשם כך צריך לעדכן את compileSdk באופן טרנזיטיבי בכל האפליקציות והספריות שמשתמשות ב-Compose. (I05b0f)
  • תוקנה בעיה שבה WindowInsetsRulers IME insets לא סומנו כאנימציה במהלך ניווט חזוי אחורה, ותוקנה בעיה שבה imePadding לא התעדכן כשעברו בין שדות טקסט. (Id4562, ‏ b/537386261, ‏ b/539686000)
  • הרכיבים SecureTextField ו-OutlinedSecureTextField (וגם העומסים העודפים של BasicSecureTextField שהוצאו משימוש) עודכנו כך שישתמשו ב-TextObfuscationMode.System כברירת המחדל של מצב ההסתרה במקום ב-TextObfuscationMode.RevealLastTyped. (I76c7e)

גרסה ‎1.13.0-alpha02

‫26 באוגוסט 2026

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

שינויים ב-API

  • ממשקי API של פריסת רשת מקודמים (Grid, GridScope, GridConfigurationScope, GridFlow, Fr, GridTrackSize, GridTrackSpec, Modifier.gridItem) לגרסה יציבה. (I43ac4, b/462550392)
  • נוספה מאפיין סמנטי חדש BackgroundColor ל-Modifier.background (I7eec3, b/518049030)
  • הסרנו את ההערה ExperimentalFlexBoxApi ושינינו את השם של מאפיינים מבוססי-פיקסל ב-FlexConfigScope עם הסיומת Px לשם הבהרה. (I5b24e, b/543092286)
  • שומרים רק פריטים במטמון כשלא נמצאים במעבר lookahead. נוסף הדגל isKeepAroundDuringLookaheadDisabled. כדי לחזור להתנהגות הקודמת, מגדירים את הדגל לערך false. (I110e9)
  • נוסף דגל הכתיבה isLazyLayoutItemAnimatorVisibleBoundsFixEnabled. כשההגדרה הזו מופעלת, הגבולות של אינדקס הפריטים הגלויים מחושבים לפני הפעלת אנימציות של מיקום ב-LazyList וב-LazyGrid. (I56150)
  • תיקון צריכה במעבר הראשוני ב-Draggable. כך מובטח שאם אירוע של לחיצה ממושכת נצרך במעבר הראשוני, הגרירה מתחילה מיד במעבר הראשי. השינוי הזה בהתנהגות מוגבל על ידי דגל התכונה ComposeFoundationFlags.isDraggableInitialPassConsumptionFixEnabled. (I6a77f, b/532946466)

גרסה ‎1.13.0-alpha01

‫12 באוגוסט 2026

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

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

  • בהמשך להודעה בגרסה הקודמת, ההטמעה של Modifier.onFocusedBoundsChanged הוסרה לחלוטין. השימוש במקש הצירוף הזה בלי תפעול (no-ops). כדאי לעבור לשימוש ב-FocusTargetModifierNode.getFocusedRect() כדי להריץ שאילתות על המידע הזה לפי הצורך. (Ia39db, ‏ b/220030968)

שינויים ב-API

  • הוצאנו משימוש את האפשרות לספק את LazyLayoutCacheWindow ו-LazyGridPrefetchStrategy דרך LazyGridState, ועכשיו צריך לספק את LazyLayoutCacheWindow לפונקציה קומפוזבילית. (I3f31e)
  • הסרת הדגל isSkipItemPlacementAnimationFixEnabled (I890f3, ‏ b/493183465)
  • הסרת הדגל isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7, b/506963276)
  • הדגל isCacheWindowVisibleItemCountCheckEnabled השתנה ל-isCacheWindowLookaheadCheckEnabled (I2ea06)
  • ‫TextFieldState שומרת עכשיו מידע על סגנון הטקסט ומשחזרת אותו. ‫AnnotatedString.Annotation.Saver עכשיו ציבורי כדי לאפשר שמירה ושחזור של אובייקטים מסוג AnnotatedString.Annotation. (I8b533, ‏ b/135556699)
  • הוספת חלון מטמון לפריסת רשת מדורגת עצלה. כדי לחזור להתנהגות הישנה של טעינה מראש, מגדירים את isUsingCacheWindowInStaggeredGrids כ-false. (I1c70d)
  • ‫FlexBox וממשקי ה-API הקשורים להגדרות שלו עברו לגרסה יציבה ולא מוגדרים יותר כניסיוניים. ‫(I209ed, ‏ b/475491619)
  • הוספנו הגדרה של maxItemsInEachLine ל-FlexBox כדי לאפשר הגבלת מספר הפריטים בכל שורה כשהאפשרות 'גלישת טקסט' מופעלת. (I2744b, ‏ b/475491619)
  • הוספת הערות לשיטות בסיס ריקות שניתנות לביטול ב-Compose באמצעות @EmptySuper כדי לציין שהטמעות של ביטול לא צריכות להפעיל את super. (Id407b)
  • העברנו את ממשקי ה-API של החשיפה והאנימציה של WindowInsetsהתוכן המקודם לגרסה יציבה. (I37441, ‏ b/537329254)
  • כשלוחצים על רכיבים שאפשר ללחוץ עליהם, אפקטים קוליים של אינטראקציה מופעלים עכשיו באופן אוטומטי ב-Android. (Ia72f8)
  • חלון המטמון ממלא עכשיו מחדש את החלון הקדמי אם מספר הפריטים הגלויים משתנה בלי שהמשתמש גלל. מגדירים את הדגל isCacheWindowVisibleItemCountCheckEnabled לערך false כדי להשבית את הבדיקה הזו ולחזור להתנהגות הקודמת. (I67b5a)
  • הנכס NestedScrollDispatcher.coroutineScope עודכן כך שיחזיר בבטחה את הערך CoroutineScope שבוטל כשהוא לא מצורף או מנותק. (I9b112, b/535290281)
  • השם של enableNonScrollCaching שונה לisNonScrollCachingEnabled (I7a54b, b/535290282)
  • הוספנו את @CheckResult ל-SemanticsNodeInteraction.isDisplayed() ול-isNotDisplayed() כדי לוודא שערכי ההחזרה שלהם מאומתים, וכך למנוע כשלים שקטים בבדיקות אם המפתחים משתמשים בהם בטעות במקום בממשקי API של טענות. (I1b447, ‏ b/508178494)
  • הפיכת המספר LazyLayoutCacheWindow ליציב (I2cda3)
  • הוספנו את הפרמטר bringIntoViewSpec לרכיב Horizontal ו-Vertical Pager כדי לאפשר שינוי של הטמעת ברירת המחדל של Pager. (Icdcbf, ‏ b/505052292)
  • תוקן באג בזיהוי מצב חוסר פעילות בתזמון של אחזור מראש של פריסה עצלה. בעבר, יכול להיות שמתזמן המשימות חשב בטעות שהוא במצב בלי פעילות כשפריים מתעכב באופן משמעותי, מה שעלול לגרום לבעיות בממשק (jank) כשגוללים. כדי לחזור להתנהגות הקודמת, מגדירים את דגל הכתיבה isLazyPrefetchSchedulerIdleTimeFixEnabled כ-false. (If0594, ‏ b/458024295)
  • הוספנו את coroutineScopeOrNull() ב-NestedScrollDispatcher, API חלופי לגישה להיקף של קורוטינת האב של ה-dispatcher. (I18c0f)
  • תוקנה בעיה של הזזת טקסט אופקי במהלך גלילה מעבר לקצה במסך הכתיבה. אפשר להשבית את התכונה דרך AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled. (Ica169, ‏ b/532079110, ‏ b/532081619)
  • הוספנו את הדגל isDraggableZeroDeltaConsumptionEnabled כדי לשלוט בהשקת התיקון הזה ב-Draggable. אירועי דלתא עם ערך אפס מעובדים עכשיו בצורה נכונה. (I50eb1, ‏ b/524163413)
  • כדי למנוע קריסות, בחירת הטקסט מוגבלת עכשיו בבטחה לאורך הטקסט במהלך עדכוני טקסט בו-זמניים. (I64fd7)
  • מעכשיו יש ל-androidx.benchmark מינוי ל-minSdk עם מכסת אחסון של 24GB. (Ic2a85)
  • הקישורים מטפלים עכשיו טוב יותר בקליקים כשהם משתרעים על כמה שורות. כדי לתמוך בזה, יעד המגע הוגדר כ-0. אם אתם לא רוצים שההתנהגות הזו תתרחש, אתם יכולים להשתמש בדגל ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabled כדי לשנות אותה. (Ide41b, ‏ b/361106057)
  • תוקנה חריגה בנפח נמוך בכתיבה לאובייקט של מצב שניתן לשינוי. (I48194, ‏ b/503110696)
  • הוספנו את האפשרות לצפייה ב-keys ב-SaveableStateHolder כדי לפשט את הניווט ואת ניהול המצב של היסטוריית הדפים, וכדי לבטל את הצורך במעקב חיצוני אחרי key. גישה דרך holder.keys; הסרה באמצעות removeState. (I9bbbb, ‏ b/398887924)
  • מסירה את פונקציית העזרה הניסיונית והמיושנת IndirectPointerEvent. (I05dee, ‏ b/499336763, ‏ b/501098299, ‏ b/501098376, ‏ b/513249467)
  • שיפור היציבות של LocalBringIntoViewSpec ב-Android. (Ibcb97)
  • הוספת דגל isMultiLaneCacheWindowEnabled (I3d997)
  • נוצר SelectionState API חדש, שיועבר אל SelectionContainer כדי לצפות בטקסט שנבחר ולעדכן את הבחירה באופן פרוגרמטי." אל androidx-main am: 929401883c am: c02871cac4 (I15bd4)
  • נוסף LocalTextFieldContentObserverRegistrationExecutor שמציע דרך להעביר את הרישום המרומז ContentObserver שמתרחש ב-TextField לשרשור ברקע. (Ib4fa6, ‏ b/505287297, ‏ b/509842675)
  • השם של TextObfuscationMode.Default שונה לSystem. ‫TextObfuscationMode.RevealLastTyped פועל עכשיו כביטול מוחלט ותמיד חושף את התו האחרון שהוקלד. ארגומנט ברירת המחדל של BasicSecureTextField עודכן ל-System. ‫(If26d3, ‏ b/425658491, ‏ b/453647378)

תיקוני באגים

  • תוקנה בעיה שבה גלילה מהירה ב-Compose שמוטמע בתוך מאגר גלילה של Android (כמו ScrollView או CoordinatorLayout) גרמה לפעמים לחישוב שגוי של המהירות. (I0f017)
  • תוקנה בעיה ב-FlexBox שבה מעבר המיקוד לא תאם לסדר החזותי של הפריטים כשמשתמשים בכיוונים הפוכים, בהעברה הפוכה או בסדר פריטים מותאם אישית. (I4cc61, b/521609263)
  • תוקנה בעיה שבה משנים סטנדרטיים של פריסת רכיבים כמו Modifier.fillMaxWidth() ו-Modifier.fillMaxHeight() לא השפיעו על פריטים בתוך FlexBox, אלא אם צוין גורם גדילה מפורש של flex. (Ib0ac3, ‏ b/515657458)
  • אופטימיזציה של אתחול ברמת הקובץ של foundation מאפיינים של מחלקת ערכים ברמה העליונה באמצעות פונקציות גט דינמיות. (I570d7)
  • אופטימיזציה של אתחול אובייקט משני של foundation-layout מחלקות ערכים (WindowInsetsSides וכו') באמצעות שימוש בשיטות גישה דינמיות. (I01c2b)
  • תוקנה בעיה שבה פריטים בתפריט ההקשר של בחירת טקסט בכתיבת אימייל הציגו מחרוזות לא עדכניות אחרי מעבר בין לוקאלים באפליקציה, כשפעולות הפעלה מחדש של פעילות הושבתו באמצעות android:configChanges. (Ic910b, ‏ b/515156417)
  • אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים compose:foundation (KeyModifiers, MarqueeAnimationMode, Source וכו') באמצעות פונקציות get דינמיות. (I78455)
  • תוקנו אנימציות של סגנונות כדי להבטיח שבמעבר אל ערך שמוגדר רק בתנאי באנימציה וממנו, הוא יטופל כאנימציה אל ערך ברירת המחדל של המאפיין וממנו. (I8e41d, ‏ b/527140078)
  • תוקנה בעיה ב-Grid שבה פריטים שמוצבים אוטומטית עם טווח גדול יותר מהמסלולים הזמינים והמפורשים בכיוון המוגבל, חורגים מגבולות הרשת כשמחילים רווחים. (I00ce0, ‏ b/506570362)
  • ניקוי פרטי ה-API (Ia8066)
  • תוקן באג ב-BasicTextField שגרם לכך שלא סופקו עדכונים של טקסט שחולץ ל-IME כשהתבקש. (I746fa, ‏ b/203549026, ‏ b/492363474)

גרסה 1.12

גרסה 1.12.1

‫9 בספטמבר 2026

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

גרסה 1.12.0

‫12 באוגוסט 2026

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

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

גרסה ‎1.12.0-rc01

‫29 ביולי 2026

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

גרסה ‎1.12.0-beta02

‫1 ביולי 2026

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

גרסה ‎1.12.0-beta01

‫17 ביוני 2026

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

שינויים ב-API

  • שינוי השם של פונקציית הבדיקה להפעלת אירועים של מצביעים עקיפים (I3ee35, ‏ b/509618414)
  • השם של TextObfuscationMode.Default שונה לSystem. ‫TextObfuscationMode.RevealLastTyped פועל עכשיו כביטול מוחלט ותמיד חושף את התו האחרון שהוקלד. ארגומנט ברירת המחדל של BasicSecureTextField עודכן ל-System. ‫(If26d3, ‏ b/425658491, ‏ b/453647378)
  • הפונקציות getSpanStyles ו-getParagraphStyles עודכנו כך שהן מקבלות TextRange במקום אינדקסים נפרדים של התחלה וסיום. הבדיקה של הגבולות בשאילתות סגנון הוחלשה כדי שלא יוצגו יותר חריגות, ונמנעו קריסות כשמבצעים שאילתות לגבי מאפיינים של TrackedRanges לא תקינים. (I62a9a, b/514404697)
  • נוספה התכונה 'אזורים עם שמות' לפריסת הרשת. מפתחים יכולים עכשיו להגדיר אזורים סמנטיים באמצעות GridConfigurationScope.area() ולהציב בהם פריטים באמצעות העומס העודף החדש Modifier.gridItem(area), וכך להפריד בין כוונות סמנטיות לבין קואורדינטות פיזיות. (Id9303, ‏ b/487503921)
  • נוספו אופרטורים ופונקציות של שילוב הגדרות עבור FlexBoxConfig ו-FlexConfig כדי לאפשר מיזוג ושינוי של הגדרות פריסה. (Icfdd8, ‏ b/475491619)
  • נוספו הפונקציות RevealState.drag(), SwipeToRevealDragScope ונחשפה הפונקציה flingBehavior המותאמת אישית ב-SwipeToReveal כדי לאפשר שליטה תוכנתית בתנועות החלקה, בהיסטים ובאנימציות של התייצבות. ‫(Ibfe56, ‏ b/484185090)

תיקוני באגים

  • תוקנה בעיה שבה יכול להיות שסרגל הכלים לבחירת טקסט לא מעדכן את המיקום או הפריטים שלו. (Ib2566)

External Contribution

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

גרסה ‎1.12.0-alpha03

‫19 במאי 2026

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

שינויים ב-API

  • ב-Style API הניסיוני, הוספנו תמיכה ביצירת סוגי סגנונות מותאמים אישית שיכולים לכלול היקפי סגנון מותאמים אישית. כך אפשר להגדיר תת-קבוצה של המאפיינים שניתנים להגדרה על ידי סגנון (למשל, להסיר לחלוטין את שכבת הגרפיקה או מאפייני הטקסט), וגם להרחיב את היקף ההגדרה באופן עצמאי מסגנונות אחרים (למשל, לתמוך רק בתחביר playing { } ב-MediaPlayer שאפשר להרכיב). השינוי הזה פוגע בתאימות בינארית ובתאימות למקור. השינוי העיקרי שגורם לאי-תאימות למקור הוא שפונקציות העזר ב-StyleScope עברו להיות פונקציות הרחבה (לדוגמה, fun contentProperty(all: Dp) היא עכשיו פונקציית הרחבה). כדי שהקוד שקורא לשיטות האלה יקומפל בצורה תקינה, צריך לייבא את פונקציות התוסף הנדרשות או לייבא את כל הסמלים מ-androidx.compose.foundation.styles. (I1ef27, b/493676648).
  • הטמעות של ScrollIndicatorState מחזירות עכשיו בצורה נכונה את היסט הגלילה מההתחלה החזותית עבור פריסות הפוכות, וכך מבטיחות הצגה חזותית נכונה של האינדיקטורים. (Ia3fae, b/503604996)
  • נוסף דגל isClearNestedScrollCoroutineScopeFixEnabled כדי לשלוט בתיקון. (Ibd394, ‏ b/505343254)

External Contribution

  • הפעלנו גלילה אוטומטית כשגוררים בחירת טקסט מעבר לאזור התצוגה ב-SelectionContainer. ‫(Ibcb08, ‏ b/424433794)

גרסה ‎1.12.0-alpha02

‫6 במאי 2026

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

גרסה ‎1.12.0-alpha01

‫22 באפריל 2026

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

שינויים ב-API

  • נוסף דגל חדש isBasicTextFieldHeighInLinesOptimizationEnabled כדי לאפשר אופטימיזציה בחישוב הגובה של שדה טקסט במספר השורות המינימלי/מקסימלי. היא אמורה להיות מופעלת כברירת מחדל. אם אתם מוצאים בעיות בפריסת שדה הטקסט והשבתת הדגל הזה פותרת את הבעיה, עליכם לדווח על באג לצוות Compose כדי שיבדוק את העניין. (Idffae, ‏ b/486871837, ‏ b/487546327)
  • תיקון הבחירה של textfield בזמן עריכת טקסט באמצעות תנועה. (I6fd98, ‏ b/490509264)
  • הוספנו תמיכה ב-colorFilter ל-StyleScope ב-Compose Foundation. (I553a0)
  • textMotion נוסף לרשימה StyleScope. (Id8523, ‏ b/482301609)
  • מוסיף עוד KeyboardType אפשרויות להשלמת קבוצת האפשרויות הנתמכות במקלדת ב-Android, כולל תאריך, שעה, תאריך ושעה, מספר עשרוני עם סימן ועוד. (I3713e, ‏ b/202353328)
  • הסרת דגל isNestedDraggablesTouchConflictFixEnabled (I79e52, ‏ b/485966180)
  • הסרת דגל isDelayPressesUsingGestureConsumptionEnabled (I533dd, ‏ b/485966702)
  • הסרת הסימון isBringIntoViewRltBouncyBehaviorInPagerFixEnabled כי הוא הופץ בגרסה יציבה. ‫(I73fb2, ‏ b/485967682)
  • הסרת הסימון isCacheWindowRefillFixEnabled כי הוא הופץ בגרסה יציבה. (Ic7505, ‏ b/485967875)
  • הסרה של ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled (I1f76c, ‏ b/485966320, ‏ b/477836055)
  • נוספו עומסים יתרים ל-contentPadding ול-externalPadding ב-StyleScope שמקבלים PaddingValues. ‫(I3a6ce, ‏ b/493154098)
  • השתנה VelocityTracker לשימוש בהטמעה שסופקה על ידי Android Framework (ניתן להגדרה באמצעות AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, ‏ b/359962905)

תיקוני באגים

  • השתנה אופן המעקב אחרי אנימציות ומאפיינים כדי למנוע חפיפה בין אנימציות לאותו מאפיין. (I4921f)
  • תוקן הבאג שגורם לקריסה של תפריט ההקשר כשTextField(או טקסט שאפשר לבחור) נמצא בתיבת דו-שיח. ‫(I21461, ‏ b/441759435)
  • עדכון של Compose compileSdk ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. ‫(Id45cd, ‏ b/413674743)
  • תוקנה בעיה בפריסת Grid שבה המיקוד במקלדת והמעבר בין רכיבי הנגישות התבססו על סדר הקומפוזיציה של הפריטים ולא על סדר המיקום החזותי בצורת Z. (I122a8, b/494096503)
  • תוקן באג שגרם לסרגל הכלים לבחירת טקסט להיעלם באופן שגוי כשהידיות של ההתחלה והסוף היו מיושרות אופקית (למשל, כשבוחרים טקסט בכמה שורות שמסתיים בשורה ריקה). ‫(I391d2, ‏ b/497724722)
  • תוקנה בעיה ב-FlexBox שבה פריטים לא הצטמצמו בצורה נכונה כשהם חרגו מגבולות המאגר. (Ia741d, ‏ b/480797591)
  • תיקון באג שגורם לכך ש-foregroundColor לא נפסל בצורה נכונה. ‫(I74abe, ‏ b/493245886)
  • תוקנה בעיה שבה מרווחי שוליים לא עדכניים במקרים שבהם ה-listener של מרווחי השוליים של Compose מנותק ומחובר מחדש. (I1e905, ‏ b/491346046, ‏ b/486084139)
  • כשמשתמש מעביר את הסמן מחוץ לאזור שאפשר לגלול בו, הסמן עובר לאזור הגלוי. ‫(If694c, ‏ b/266094055)

גרסה 1.11

גרסה 1.11.4

‫1 ביולי 2026

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

גרסה 1.11.3

‫17 ביוני 2026

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

גרסה 1.11.2

‫19 במאי 2026

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

גרסה 1.11.1

‫6 במאי 2026

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

תיקוני באגים

  • תוקנה בעיה ב-FlexBox שבה פריטים לא הצטמצמו בצורה נכונה כשהם חרגו מגבולות המאגר. (Ia741d, ‏ b/480797591)

גרסה 1.11.0

‫22 באפריל 2026

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

גרסה ‎1.11.0-rc01

‫8 באפריל 2026

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

שינויים ב-API

  • תיקון הבחירה של textfield בזמן עריכת טקסט באמצעות תנועה. (I2ba33, ‏ b/490509264)

גרסה ‎1.11.0-beta02

‫25 במרץ 2026

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

שינויים ב-API

  • נוספה ההגדרה isReverseLayoutNestedScrollConnectionInPagerFixEnabled כדי לשלוט בהשקת התיקון הזה. (I07404, ‏ b/399800244)
  • השקנו את isSkipItemPlacementAnimationFixEnabled כדי לשלוט בהשקת התכונה הזו. (Id665d, b/455884472, b/352584409, b/410487464, b/372509998)
  • MinMax(min: Dp, max: Fr) נוסף לרשימה GridTrackSize. כך מפתחים יכולים להגדיר במפורש את הגבולות המינימליים של טראק גמיש. השימוש ב-MinMax(0.dp, 1.fr) מאפשר לעקוף בהצלחה שאילתות מדידה פנימיות, כך שאפשר להציב בבטחה רכיבי SubcomposeLayout כמו LazyColumn ו-LazyRow בתוך רצועות גמישות של רשת בלי שהדפדפן יקרוס. (Ieb8c2, b/483822148)

תיקוני באגים

  • תוקנה באג ב-FlexBox שגרם לפריטים להתכווץ בצורה שגויה כשהם הגיעו לגודל המינימלי שלהם. הפריטים משתפים עכשיו בצורה נכונה את המקום שפונה לאחר הקטנת נפח האחסון עם פריטים אחרים באותו רמה. בנוסף, FlexBox כבר לא יגביל באופן מלאכותי את הפריטים בציר הראשי. אם הפריטים לא יכולים להתכווץ מספיק כדי להתאים למאגר, הם יוצגו עכשיו בציר הראשי גם אם הם חורגים מהגבולות שלו. משתמשים ב-Modifier.clipToBounds() אם רוצים לחתוך את התמונה. (Ief751, ‏ b/480797591)
  • איך מונעים מ-Keep Around לגשת לאינדקסים לא חוקיים. ‫(I19121, ‏ b/485626636)
  • תוקנה בעיה ב-Grid שבה פערים בין שורות או עמודות שנוצרו באופן מרומז לא נכללו בחישוב הגודל הכולל של מאגר התאים, מה שגרם לחיתוך התוכן. (Ib9df8, ‏ b/480372415)
  • ‫Clipboard ו-ClipboardManager מבקשים עכשיו את שירות המערכת בהפעלת ה-method הראשונה (If0016, ‏ b/487947860)
  • תוקנה בעיה ב-Row עם Arrangement.spacedBy ב-RTL, שבה פריטים שחורגים מהגבולות גורמים לפריסה ולריווח שגויים. (I44e53, b/476006478)

גרסה ‎1.11.0-beta01

‫11 במרץ 2026

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

שינויים ב-API

  • בוצעה אופטימיזציה לחישובים של הגודל הפנימי המינימלי של BasicTextField. אם תרצו להשבית את ההגדרות האלה, תוכלו לעשות זאת דרך ComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled. (I70ade)
  • הוספנו את rememberUpdatedStyleState שהוא חלק מ-Style API הניסיוני. צריך להשתמש ב-rememberUpdated כשיוצרים מופעים של StyleState כשפרמטרים של הרכיב שאפשר להרכיב (כמו enabled) מועתקים למצב הסגנון (Idf7ff, b/485510967)
  • שינוי השם של המאפיינים 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)
  • נוספה constraints ל-GridConfigurationScope כדי לאפשר הגדרה של רכיבי grid על סמך הגודל הזמין. (I80a41, ‏ b/481205205, ‏ b/481205205)
  • שפת התצורה FlexBox DSL משתמשת עכשיו בפונקציות (למשל, grow(1f)) במקום במאפיינים (למשל, grow = 1f) להגדרה בתוך FlexBoxConfig ו-Modifier.flex. (I8dbae, b/475491619)

תיקוני באגים

  • תוקן באג שבו OutputTransformation גורם להוספת תווים כפולים בחלק משיטות הקלט. (I9fdc0)
  • נוספה תמיכה בתנועות החלקה מהירה לגלילה באמצעות משטח המגע (I55f8a, b/479285849)
  • הוספת נקודות השוואה ל-Style API הניסיוני (I67437)

External Contribution

  • מוסיפים מאפיין InputTextSuggestionState כדי לזהות את המצבים השונים שבהם יכול להיות קלט תעתיק כשהצעות להחלפת טקסט זמינות. בנוסף, נוסף TextCompositionRange כדי לעקוב אחרי טווח ההרכבה של הטקסט הנוכחי בתעתיק; ערך null מציין שאין הרכבה במקום. (I7a67f, ‏ b/476472318)
  • נוספה עומס יתר חדש ל-BasicTooltipBox שמאפשר להגדיר את propagateMinConstraints, בדומה לפרמטר של Box עם אותו שם. כך אפשר להעביר את האילוצים המינימליים ישירות לצאצאים של BasicTooltipBox, בלי ש-BasicTooltipBox ירחיב אותם. תודה, Steven Schoen! (Ib145f, ‏ b/467532639, ‏ b/301605744)

גרסה ‎1.11.0-alpha06

‫25 בפברואר 2026

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

שינויים ב-API

  • הוספנו API ניסיוני לעיצוב, שמאפשר להתאים אישית פונקציות הניתנות להגדרה באופן עקבי. ה-API הזה נמצא בפיתוח פעיל, ויכול להיות שיעבור שינויים משמעותיים לפני שיהפוך ליציב. פרטים על השימוש ב-API הזה מופיעים במסמכי העזרה שכלולים. (I7fed2, b/455788242)

תיקוני באגים

  • ‫Modifier.combinedClickable נכתב מחדש כדי לא להשתמש בקלט של מצביע השהיה כאופטימיזציה. התכונה הזו מופעלת באמצעות הדגל שאפשר להשבית אם נתקלים בבאג בהטמעה החדשה – ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)

בעיות מוכרות

  • השינוי Modifier.combinedClickable גורם לרגרסיה בהתנהגות של לחיצה ארוכה, שיכולה לגרום ללחיצות עמוקות להפעיל לחיצות ארוכות חוזרות במכשירים מסוימים. נפתור את הבעיה הזו במהדורה הבאה. עד אז, אפשר להגדיר את ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=false כדי למנוע את הבעיה.

גרסה ‎1.11.0-alpha05

‫11 בפברואר 2026

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

שינויים ב-API

  • הוספנו את isNestedDraggablesTouchConflictFixEnabled כדי לפתור בעיות שקשורות למיזוג אינטראקטיבי של רכיבים שניתנים לגרירה. נשתמש יותר בגרירה אנכית מאשר בגרירה אופקית, כי מבחינת חוויית המשתמש, יש יותר חופש ואי ודאות כשמשתמש מבצע תנועה אנכית לעומת תנועה אופקית. (I273c7, ‏ b/252334353, ‏ b/269627294, ‏ b/363198504, ‏ b/442390269, ‏ b/419580124)
  • הוספת תמיכה במחוות במשטח המגע והמרה מאירועי קלט במשטח המגע לעכבר. בעקבות השינוי הזה, אירועי מצביע של משטח מגע ששולטים בסמן כמו בטאבלטים או במחשבים ניידים, ידווחו בדרך כלל כסמני עכבר. גם תנועות של הזזה ושינוי גודל ידווחו עם מידע נוסף שזמין בשינויים של אירועי המצביע, עם הערכים החדשים PointerEventType.Pan ו-PointerEventType.Scale שמציינים שהערכים האלה יוגדרו (Id071a, ‏ b/315527861, ‏ b/459831570)
  • הכרת isDelayPressesUsingGestureConsumptionEnabled. כשהדגל הזה מופעל, קונטיינרים עם תנועת גרירה יפעילו את הלחיצה באיחור. השינוי הזה כולל שינוי בהתנהגות של מאגרי תגים שמבוססים על Modifier.draggable, שלא הייתה בהם השהיה של לחיצה בעבר. (I53f24, ‏ b/203141462)
  • הוסר הדגל isDetectTapGesturesImmediateCoroutineDispatchEnabled והוצא משימוש הדגל DetectTapGesturesEnableNewDispatchingBehavior (I9bba3)

תיקוני באגים

  • תוקנה בעיה ב-IndexOutOfBoundsException ב-BasicTextField שקרתה כשמשתמשים ב-OutputTransformation ומנסים למחוק טקסט. (I20ee1)
  • התנהגות GridTrackSize.Auto השתנתה. הוא מתאים עכשיו את הגודל של קטעי המוזיקה מ-min-content עד max-content. (Ifa22e, ‏ b/477748472)

External Contribution

  • הוספת תמיכה במקשי תנועה NumPad (I1ff12)

גרסה ‎1.11.0-alpha04

‫28 בינואר 2026

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

שינויים ב-API

  • תוקן באג שגרם לכך שהערך של AnchoredDraggableState[targetValue] היה שגוי בתרחישים מסוימים עם כמה עוגנים באותו אופסט. כשמגיעים לעוגן עם אותו היסט כמו של עוגן אחר, הפונקציה targetValue מחזירה באופן שגוי את העוגן האחרון עם ההיסט הזה. הפונקציה מחזירה עכשיו את currentValue כשהיא מוגדרת להיסט של currentValue. (I66a7a, b/476365336)
  • השקנו את FlexBox, מערכת פריסה שניתנת להגדרה והיא קבוצת-על של Row,‏ Column,‏ FlowRow ו-FlowColumn. הוא תומך בתכונות כמו flex-grow, ‏ flex-shrink, גלישה בהתאמה אישית, שינוי כיוון ושליטה מפורטת ביישור באמצעות FlexBoxConfig ו-Modifier.flex. (I44780)
  • השקנו את Grid, פריסה חדשה של דו-ממד שלא מתבצעת באופן עצלני, בהשראת CSS Grid. הגרסה הראשונית הזו מאפשרת להגדיר מבני רשת מפורשים עם גדלים שונים של רכיבים, כולל Fixed, Percentage, Flex ואפשרויות מבוססות-תוכן באמצעות הבלוק config. הלוגיקה הבסיסית של הפריסה תומכת במיקום פריטים מפורש בתוך הרשת באמצעות Modifier.gridItem(). כל ממשקי ה-API שקשורים ל-Grid הם ניסיוניים בשלב הזה, וצריך להצטרף אליהם באמצעות @OptIn(ExperimentalGridApi::class). נשמח לקבל מכם משוב על הפריסה החדשה הזו. (I04907, ‏ b/462550392)

גרסה ‎1.11.0-alpha03

‫14 בינואר 2026

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

תיקוני באגים

  • תיקון של דליפת זיכרון ב-LazyStaggeredGrid כשמשתמשים בו בתוך LookaheadScope I286ad

גרסה ‎1.11.0-alpha02

‫17 בדצמבר 2025

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

שינויים ב-API

  • ממשקי ה-API של MultiModalInjectionScope יציבים עכשיו. הם כוללים את performKeyInput ואת performRotaryScrollInput, ואת ממשקי ה-API הבסיסיים שלהם למפתחות ולסיבוב מפתחות. ההערה של הניסוי הוסרה. ‫(Ie8bbc, ‏ b/261561237)
  • הוסר הדגל isNonSuspendingPointerInputInClickableEnabled. (I6a168, b/455591971)

גרסה ‎1.11.0-alpha01

‫3 בדצמבר 2025

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

שינויים ב-API

  • הוספנו את Modifier.scrollIndicator כדי לאפשר הוספה של אינדיקטורים מותאמים אישית לגלילה בקונטיינרים שאפשר לגלול בהם. ScrollIndicatorFactory מאפשר ליצור אינדיקטורים של גלילה על ידי הגדרת המראה וההתנהגות שלהם. (I89322)
  • בוצעה הסרה של ComposeFoundationFlags.isTextFieldDpadNavigationEnabled. ההתנהגות החדשה מופעלת עכשיו בכל זמן. (I3f034)
  • הוספנו את isCacheWindowRefillFixEnabled כדי לשלוט בהשקה של התיקון למילוי מחדש של חלון המטמון. (I4e52b, ‏ b/454439658)
  • בוצעה הסרה של ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabled. ההתנהגות החדשה מופעלת עכשיו בכל זמן. (I7cbd4)
  • המאפיין Modifier.onFirstVisible() הוצא משימוש כי ההתנהגות שלו מטעה והוא לא תמיד פועל בהתאם לחוזה שמוצהר בשם. לדוגמה, אם מוסיפים אותה לפריט של LazyColumn, המערכת תקרא לפונקציית הקריאה החוזרת הזו בכל פעם שהפריט הזה יהפוך לגלוי אחרי גלילה. זה לא מה שמשתמשים במאפיין הזה עם השם הזה אולי ציפו לו. מומלץ להשתמש ב-Modifier.onVisibilityChanged() ולעקוב באופן ידני אחרי הנראות של הפריסה בהתאם לדרישות של תרחיש השימוש הספציפי. (Ia7095, b/447601783)
  • הוספנו את MeasuredSizeAwareModifierNode, שנדרש כשצריך קריאה חוזרת של onRemeasured(). במקום להשתמש ב-LayoutAwareModifierNode כללי יותר כשלא צריך קריאות חוזרות אחרות, צריך להשתמש בממשק הזה ישירות. (If6fb0)
  • נוסף visible Modifier שאפשר להשתמש בו כדי לדלג על ציור התוכן של Composable בלי להשפיע על המקום שהוא תופס. ‫(Ia6871, ‏ b/158837937)

גרסה 1.10

גרסה 1.10.6

‫25 במרץ 2026

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

תיקוני באגים

  • ההגדרה ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled מושבתת כברירת מחדל כדי לטפל בבעיות יציבות. (I73960, ‏ b/482223006, ‏ b/488433633)

גרסה 1.10.5

‫11 במרץ 2026

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

תיקוני באגים

  • תוקנה IndexOutOfBoundsException ב-BasicTextField כשמשתמשים ב-OutputTransformation ומוחקים טקסט. (I20ee1)

גרסה 1.10.4

‫25 בפברואר 2026

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

תיקוני באגים

  • תוקנה באג רגרסיה שבו שימוש במגדיר יישור מהיקף אחר (למשל, ColumnScope.align בתוך Row) הוביל למיקום שגוי. (6888f2b, ‏ b/477639546)

גרסה 1.10.3

‫11 בפברואר 2026

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

גרסה 1.10.2

‫28 בינואר 2026

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

תיקוני באגים

  • תוקן קריסה שהתרחשה כשחוזרים ממסך עם בחירת טקסט פעילה. (I9f540, b/444482508)

גרסה 1.10.1

‫14 בינואר 2026

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

תיקוני באגים

  • תוקן קריסה שמתרחשת כשבחירת טקסט מתרחבת ממופע Text אחד למופע אחר שמיושר אופקית. I351311, b/439758956

גרסה 1.10.0

‫3 בדצמבר 2025

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

גרסה ‎1.10.0-rc01

‫19 בנובמבר 2025

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

תיקוני באגים

גרסה ‎1.10.0-beta02

‫5 בנובמבר 2025

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

גרסה ‎1.10.0-beta01

‫22 באוקטובר 2025

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

שינויים ב-API

  • כל ממשקי ה-API של מגע עקיף עודכנו כך שישתמשו בשם indirect pointer APIs כדי להתאים לממשקי ה-API של קלט מצביע. (I238ce, b/451607214)
  • הערה לגבי PagerState.currentPageOffsetFraction עם @FrequentlyChangingValue. (Idfaab)

תיקוני באגים

  • תוקנה התנהגות של marquee בכיווני פריסה מימין לשמאל. (Ib8be3)

גרסה ‎1.10.0-alpha05

‫8 באוקטובר 2025

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

שינויים ב-API

  • PaddingValues תומכות עכשיו בפעולות חיבור וחיסור כדי לפשט חישובים נפוצים של ריווח פנימי. (I327e1, b/244468479)

תיקוני באגים

  • ההגדרה ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled מופעלת כברירת מחדל. זהו תהליך אופטימיזציה של הביצועים, שמאפשר לנו לחלק את העבודה שאנחנו צריכים לבצע במהלך הטעינה מראש בצורה טובה יותר. לדוגמה, אנחנו יכולים לבצע את ההרכבה רק לחלקים של הפריט הבא ב-LazyColumn במהלך פריים אחד של ממשק המשתמש, ואז להמשיך להרכיב את שאר החלקים בפריים הבא. (I4c7fe)

גרסה ‎1.10.0-alpha04

‫24 בספטמבר 2025

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

שינויים ב-API

  • הטמעה של ScrollIndicatorState נוספה בשביל PagerState. (I113b7)
  • הטמעה של ScrollIndicatorState נוספה בשביל LazyStaggeredGridState. (I1028e)
  • הטמעה של ScrollIndicatorState נוספה בשביל LazyGridState. (I9e50c)
  • הטמעה של ScrollIndicatorState נוספה בשביל LazyListState. (I5ee29)
  • הטמעה של ScrollIndicatorState נוספה בשביל ScrollState. (I27f66)
  • הוספת נכס scrollIndicatorState בממשק ScrollableState (Idca93)
  • הוסר הדגל isWindowInsetsModifierLocalNodeImplementationEnabled (I15e8f, ‏ b/440964232)
  • הוספנו את משנה scrollableArea() שאפשר להשתמש בו כדי להגדיר את הרכיב כרכיב שאפשר לגלול בו. המשנה הזה מאפשר לחתוך את התוכן לגבולות שלו ולטפל באופן אוטומטי בכיוון הגלילה של התוכן על סמך ההגדרה Orientation, ‏ RTL והדגל reverseScrolling. (I9471b, ‏ b/316559454)

גרסה ‎1.10.0-alpha03

‫10 בספטמבר 2025

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

שינויים ב-API

  • הסרת ComposeFoundationFlags.isNonComposedClickableEnabled (I0dfc0, b/406228525)
  • העברת פונקציות של מפעל ליצירת מופעים של FillableData לאובייקט נלווה. במקום להתקשר אל FillableData(value), אפשר להשתמש בשיטות החדשות של יצירת אובייקטים: FillableData.createFrom(value). (I2e200, b/441719650)
  • הוספנו BeyondBoundsLayoutModifierNode צומת חדש של Modifier כדי לבצע פריסה מעבר לגבולות לחיפוש המיקוד. (I39be1, b/416133658)
  • סומן ScrollState.value כנכס @FrequentlyChangingValue. (I4723d)
  • הוספנו את LazyLayoutKeyIndexMap ופקטורי (factory) להטמעה של ברירת מחדל. (I4fd0c, b/415038029)

תיקוני באגים

  • העמודה והשורה מעבירות עכשיו בצורה נכונה את המידה בפועל של הפריט אל Modifier.align, וכך נפתרה בעיה שבה הטמעה מותאמת אישית של Modifier.align קיבלה ערך שגוי של 0. (I8194f, ‏ b/439716351)

גרסה ‎1.10.0-alpha02

‫27 באוגוסט 2025

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

שינויים ב-API

  • הוסר הדגל isFlingContinuationAtBoundsEnabled. (I6b84f)
  • הוסר הדגל isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled. (I62380)
  • הוסר הדגל isOnScrollChangedCallbackEnabled. (I667dc)
  • הוסר הדגל isAutomaticNestedPrefetchEnabled. (I4f416)
  • הוסר הדגל DragGesturePickUpEnabled. (Ib8500)
  • הוספת ScrollIndicatorState API לייצוג מצב סרגל הגלילה (I5e229)

תיקוני באגים

  • תוקן באג שגרם לכך שהשימוש ב-Modifier.anchoredDraggable לא הפעיל את confirmValueChange. (Iff7cc)

גרסה ‎1.10.0-alpha01

‫13 באוגוסט 2025

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

שינויים ב-API

  • מעדכנים את אסטרטגיית השליפה מראש (prefetch) של רכיב ה-Pager כך שישתמש בחלון מטמון במקום בפריט אחד שמוגדר כברירת מחדל בכיוון הגלילה. עכשיו, אחזור מראש ראשוני מופעל כברירת מחדל ב-Pager, והאחזור מראש יתבסס על גודל החלון ששווה לאזור תצוגה אחד. כלומר, המערכת תנסה למלא אזור תצוגה שלם עם פריטים שאוחזרו מראש. גם הפריטים יישמרו למשך זמן ארוך יותר. (I4d45e, ‏ b/292136289)
  • הוספנו את הדגל ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled כדי לאפשר השבתה של אופטימיזציה של הביצועים WindowInsets אם ההטמעה החדשה גורמת לשינוי בהתנהגות. (I8e912)
  • ‫SnapFlingBehavior מאפשר עכשיו למפרטי אנימציה של הצמדה לחרוג מהגבולות במהלך ההצמדה. ההגדרה הזו מאפשרת למשל להשתמש במפרט של קפיץ קופצני בתור snapAnimationSpec כדי ליצור אנימציית קפיצה. המערכת ממשיכה להתעלם מערכים שחורגים מהמגבלה כשמבצעים גישה עם מפרט ההצמדה. (I373c2)
  • אם לוחצים על העכבר או על לוח המגע ב-ComposeView, המיקוד יוסר אוטומטית אם הלחיצה לא מתבצעת בגבולות הצומת הממוקד. כתוצאה מכך, חוויית המשתמש היא 'הקשה להסרת ההדגשה', שהיא צפויה יותר מההתנהגות הנוכחית כשמשתמשים במכשירי קלט של מצביעים. אפשר לבטל את ההסכמה להתנהגות הזו באמצעות API חדש של AbstractComposeView.isClearFocusOnPointerDownEnabled. ‫(I6322b, ‏ b/282963174)
  • עכשיו Scrollable תומך טוב יותר באירועי גלילה דו-ממדיים של גלגל העכבר. השקנו API חדש לבדיקה שיעזור לכם לבדוק תרחישי שימוש ב-MouseInjectionScope. הוספנו גם עומס יתר חדש לשיטות גלילה ב-MouseInjectionScope ודגל לשליטה בהתנהגות החדשה שנקרא isMouseWheel1DAxisLockingEnabled (I136df)
  • בוצע עדכון של DragGestureNode כדי להשתמש בקלט של מצביע גולמי במקום בהשהיה של קלט המצביע לצורך אופטימיזציה. השינויים נוספים מאחורי הדגל isNonSuspendingPointerInputInDraggableEnabled (I0fa4b)
  • הוספנו הערות לכמה ממשקי API של AnchoredDraggable באמצעות @FrequentlyChangingValue. הערכים offset,‏ requireOffset ו-progress משתנים לעיתים קרובות, ולכן לא מומלץ לקרוא אותם בהקשר של יצירה. במקום זאת, אפשר לגשת לערכים האלה משלבי הפריסה והציור, מהאפקטים או מחוץ לקומפוזיציה. (I05539)
  • הוסרו הדגלים isOnScrollChangedCallbackEnabled, ‏ isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, ‏ isFlingContinuationAtBoundsEnabled, ‏ isAutomaticNestedPrefetchEnabled, ‏ DragGesturePickUpEnabled, ‏ isPointerInteropFilterDispatchingFixEnabled, ‏ isNestedScrollInteropPostFlingFixEnabled, ‏ isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • הוספנו את CompositionLocal שאפשר להשתמש בו כדי לשנות את המברשת של ההדגשה של מילוי מוצלח ב'מילוי אוטומטי'. (I52329)
  • נוספה אפשרות להתאמה אישית של מלבן המיקוד ב-FocusProperties. עכשיו אפשר להגדיר אזור מיקוד מותאם אישית במקום להשתמש בתיבת התוחמת של הרכיב שאפשר להתמקד בו כברירת מחדל. המערכת משתמשת במידע הזה כדי להעביר את המיקוד בין רכיבים וכדי להפעיל את הלוגיקה של שמירה בתצוגה של מאגרי תוכן שאפשר לגלול בהם. (Id6555, ‏ b/368378073)
  • נוסף LineHeightStyle.Mode חדש בשם Tight. המצב הזה עוזר להקפיד על גובה שורה קטן יותר, גם אם יכול להיות שחלק מהגליפים הגבוהים ייחתכו. (Id3849)
  • הוספנו ממשק חדש שניתן לאינטרפולציה, שמאפשר אינטרפולציה אוטומטית בין סוגים שונים, בהנחה שסוג אחד יודע איך להמיר מסוג אחר. הממשק הזה משמש בכמה סוגי קומפוזיציות כמו Brush (מברשת) ו-Shape (צורה), אבל אפשר להשתמש בו גם באופן חיצוני. (I58eab)
  • הוספה של אירועי קלט עקיפים ודרך לציין את ציר הקואורדינטות שמשמש לגלילה. (I58e7c)
  • נוסף WindowInsets.cutoutPath API חדש כדי לקבל את הנתיב של מגרעת במסך (Ib90b1, ‏ b/279636456)
  • הסימון isWindowInsetsDefaultPassThroughEnabled הוסר, וברירת המחדל של WindowInsets היא לא צריכה, כך ש-Views צאצאים יכולים לקבל WindowInsets כברירת מחדל. (I888e0, ‏ b/412469666)

תיקוני באגים

  • צריך להשבית את isNonSuspendingPointerInputInDraggableEnabled באופן זמני. (Ia41c4)
  • העברת ברירת המחדל של minSdk מ-API 21 ל-API 23 (Ibdfca, ‏ b/380448311, ‏ b/435705964, ‏ b/435705223)
  • עדכנו את מאמרי התיעוד של DraggableAnchors' minPosition/maxPosition כדי לציין שממשקי ה-API האלה צריכים להחזיר Float.NaN בהתאם לממשקי API אחרים של DraggableAnchors. (I0460a)
  • תוקן באג שגרם לקריסה של DraggableAnchors#closestAnchor אם העוגנים היו ריקים (I4e646)
  • שיפורים בביצועים של DraggableAnchors (If4065, ‏ I0460a)
  • TextFieldState.edit { } כבר לא מוחק את היסטוריית הביטול. במקום זאת, היא יוצרת רשומה עצמאית לביטול הפעולה. אם רוצים שההתנהגות הרצויה תהיה ניקוי של מחסנית הביטול אחרי קריאה ל-edit, צריך להשתמש ב-TextFieldState.undoState.clearHistory(). (I12c14)
  • הוספנו תמיכה בלחיצה כפולה לבחירת מילה בעומס יתר של SelectionContainer ו-BasicTextField(value, onValueChange). (Ibb06a)
  • תיקון באג קל כדי להפוך את AutoboxingStateValuePropertyDetector לתואם ל-K1 ול-K2 (Ie81c1)
  • בקשות requestRectangleOnScreen שנוצרות על ידי AndroidViews מועברות עכשיו בצורה תקינה ל-Compose. כך, תצוגות כמו EditText נשארות על המסך כשמבצעים איתן אינטראקציה. (Ibbf4c)
  • הפונקציות Column ו-Row מעבירות עכשיו בצורה נכונה את הגודל בפועל של הפריט אל Alignment.Vertical.align ו-Alignment.Horizontal.align, וכך נפתרה בעיה שבה הטמעות של יישור מותאם אישית קיבלו ערך שגוי של 0. ‫(I3e460, ‏ b/349722072)

גרסה 1.9

גרסה 1.9.5

‫19 בנובמבר 2025

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

גרסה 1.9.4

‫22 באוקטובר 2025

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

גרסה 1.9.3

‫8 באוקטובר 2025

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

גרסה 1.9.2

‫24 בספטמבר 2025

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

גרסה 1.9.1

‫10 בספטמבר 2025

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

תיקוני באגים

  • תוקנה קריסה שקורית כשמשתמשים ב-LazyLayoutCacheWindow ב-LazyLists (c39f5f3)

גרסה 1.9.0

‫13 באוגוסט 2025

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

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

  • בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות של Compose lint בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.
  • שינוי שעלול לגרום לכשלים: עומסי יתר של clickable,‏ combinedClickable,‏ selectable,‏ toggleable ו-triStateToggleable ללא פרמטר של אינדיקציה תומכים עכשיו רק במופעים של IndicationNodeFactory שסופקו באמצעות LocalIndication. השינוי הזה יחול כשקומפילציה מחדש של השימוש במאפיינים האלה תתבצע באמצעות הגרסה הזו של Compose. השינוי לא משפיע על תלות בינארית או על תלות מעבר. אם אתם מספקים ל-LocalIndication הטמעה של אינדיקציה שהוצאה משימוש, ומשתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במעבדים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל באופן זמני את השינוי הזה בהתנהגות, וכך לשדרג את Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש ב-IndicationNodeFactory. אפשר גם להשתמש בעומסים העודפים עם פרמטר חיווי מפורש – העומסים העודפים האלה ימשיכו לתמוך במופעים שאינם IndicationNodeFactory של חיווי, למרות שלא מומלץ לעשות זאת מסיבות שקשורות לביצועים. (I6bcdc, b/316914333)
  • הוספנו את isFlingCancellationWithNestedScrollFixEnabled כדי לפתור בעיה בהפצה של תנועת הדיפדוף בגלילה מקוננת. ב-CL הזה אנחנו משחזרים את התנהגות ההמשכיות של ההטלה שהוסרה ב-I9326a. גם אם הילד או הילדה יוסרו מהקומפוזיציה, עדיין נבטל את אנימציית ההשלכה. (I467f4, ‏ b/405910180, ‏ b/419049142, ‏ b/416784125)
  • מוסיפים מחדש את השימוש ב-scrollAnimationSpec ב-ContentInViewNode. ההתנהגות הזו הוסרה במהלך הוצאת scrollAnimationSpec משימוש, מה שגרם לשיבוש בתרחישי השימוש. ‫(I1436a, ‏ b/403301605)
  • מיוצב LazyLayout. ‫(If5db4), ‏ LazyLayoutPrefetchState ושיטת התזמון שלו schedulePrecomposition ו-schedulePrecompositionAndPremeasure. ‫(I4362f, b/252853717) ו-LazyLayoutItemProvider (Icce09,b/261565751)
  • מתן הרשאה לכתיבה להפעיל את ViewTreeObserver.OnScrollChanged. ההתנהגות הזו מוצגת באמצעות הדגל isOnScrollChangedCallbackEnabled. השקנו גם פונקציית הרחבה של DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • השקת Modifier.scrollable2D, Scrollable2DState וממשקי API נלווים ליצירת מצב. הוספנו גם פונקציות נפוצות להרחבת הגלילה. ‫(Ic61c8, ‏ b/214410040)
  • PrefetchScheduler והתאמה אישית הוצאו משימוש לטובת הטמעה פנימית שמבצעת את כל העבודה באופן אוטומטי. (I3a9a6, b/420551535)
  • TextFieldState.edit { } כבר לא מוחק את היסטוריית הביטול. במקום זאת, היא יוצרת רשומה עצמאית לביטול הפעולה. אם רוצים שההתנהגות הרצויה תהיה ניקוי של מחסנית הביטול אחרי קריאה לעריכה, צריך להשתמש ב-TextFieldState.undoState.clearHistory(). (I12c14)
  • תפריט ההקשר וסרגל הכלים לבחירה תומכים עכשיו בפריטים חכמים (בחירה חכמה)
  • נוסף טקסט עם סגנון OutputTransformation כדי לאפשר עיצוב של הפלט של TextField באמצעות העמסת היתר state.
  • ‫TextField: תפריט הקשר של התמיכה (תפריט לחיצה ימנית).
  • אם מעתיקים טקסט מכמה רכיבי Text composable ב-SelectionContainer, עכשיו יתווסף תו של מעבר שורה (‎\n) בין הטקסט שמגיע מרכיבי Text composable הנפרדים. (I25332, b/285036739)
  • הוספנו API ליצירת רשימות תבליטים מותאמות אישית דרך AnnotatedString (I1d066, ‏ b/383269496, ‏ b/139326648)
  • העומס העודף state של BasicTextField יגרום לכך שהסמן יישאר בתצוגה כשגודלו ישתנה. (I0eb41, b/406187741)
  • שינוי שעלול לשבור את התאימות לאחור: הצמתים של משני המאפיינים background ו-border מטמיעים עכשיו את SemanticsModifierNode. הדבר עלול להוביל להוספה של SemanticsNodes חדשים לעץ הסמנטי, ולכן לגרום לכשלים בבדיקות שמניחות הנחות לגבי המבנה של עץ הסמנטי. לדוגמה, בדיקות שמשתמשות ב-onChild, ב-onParent, ב-onSibling ובשיטות דומות אחרות כדי ליצור הצהרות יכולות להיכשל אם מתווסף צומת חדש בין הצומת הנוכחי לצומת היעד. הדרך המומלצת לפתור את הבעיות האלה היא להוסיף testTag ישירות לצומת היעד. גישה אחרת היא להשתמש בכלי התאמה פחות מחמיר, כמו onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

גרסה ‎1.9.0-rc01

‫30 ביולי 2025

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

תיקוני באגים

  • TextFieldState.edit { } כבר לא מוחק את היסטוריית הביטול. במקום זאת, היא יוצרת רשומה עצמאית לביטול הפעולה. אם רוצים שההתנהגות הרצויה תהיה ניקוי של מחסנית הביטול אחרי קריאה ל-edit, צריך להשתמש ב-TextFieldState.undoState.clearHistory(). (I12c14)

גרסה ‎1.9.0-beta03

‫16 ביולי 2025

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

תיקוני באגים

  • תוקן באג רגרסיה שגרם לשיבוש בהתנהגות של כותרות קבועות ברשתות עצלות כשמספקים תוכן כותרת ריק. (e3e3400)

גרסה ‎1.9.0-beta02

‫2 ביולי 2025

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

תכונות חדשות

  • תמיכה בפריטים חכמים בתפריט ההקשר ובסרגל הכלים לבחירה.

שינויים ב-API

  • תוקן באג שבו מקלדות חומרה מסוימות או שלטים של טלוויזיות לא מצליחים להזיז את הסמן ב-TextFields החדש באמצעות מקשי החיצים, ובמקום זאת מעבירים את המיקוד לרכיב אחר. נוספה האפשרות ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled כדי להשבית את התיקון הזה באופן זמני אם הוא גורם להתנהגות לא רצויה באופן בלתי הפיך. (Ie1922)

תיקוני באגים

  • תוקנה בעיה שבה כותרות קבועות לא נשארו קבועות אם היה פריט מוצמד. (I9198d, ‏ b/385006133)
  • ‫TextObfuscationMode.RevealLastTyped פועל עכשיו לפי הגדרת המערכת TEXT_SHOW_PASSWORD. ‏(I41c0c)
  • תוקן באג שגרם לכך שסמל BasicTextField הציג בטעות את האזהרה 'הדבקה מלוח העריכה' כשסרגל הכלים של הטקסט נפתח בפעם הראשונה. (I5fda2)

גרסה ‎1.9.0-beta01

‫18 ביוני 2025

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

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

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

שינויים ב-API

  • שינוי השם של Modifier.addTextContextMenuComponents לappendTextContextMenuComponents. (I4c43f)
  • הוסרו הפונקציות AnnotatedOutputTransformation והועברו הפונקציות addStyle אל TextFieldBuffer. עדיין אפשר להתקשר אל addStyle רק מ-OutputTransformation. ‫(I9930a, ‏ b/417991824)
  • הקוד של Clickable נכתב מחדש כדי לא להשתמש ב-suspend pointer input כאופטימיזציה. התכונה הזו מופעלת באמצעות flag – אפשר להשבית אותה אם נתקלים בבאג בהטמעה החדשה – ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65)
  • הוספנו את isFlingCancellationWithNestedScrollFixEnabled כדי לפתור בעיה בהפצה של תנועת גלילה מהירה בגלילה מקוננת. ב-CL הזה אנחנו משחזרים את התנהגות ההמשכיות של ההעברה שהוסרה ב-aosp/3260391. גם אם הילד או הילדה יוסרו מהקומפוזיציה, עדיין נבטל את אנימציית ההשלכה. (I467f4, ‏ b/405910180, ‏ b/419049142, ‏ b/416784125)
  • ‫WindowInsetsRulers: rulersIgnoringVisibility השתנה למקסימום. הפונקציה getDisplayCutoutBounds() שונתה כך שהיא פונקציית הרחבה של PlacementScope. הערך של WindowInsetsAnimationProperties השתנה ל-WindowInsetsAnimation והערך של getAnimationProperties() השתנה ל-getAnimation(). (I3816f)
  • הקוד InsetsRulers הועבר לקוד משותף עם השם WindowInsetsRulers. פישטנו את ה-API כך שכל התוספים הם WindowInsetsRulers. מאפייני אנימציה שלא קשורים לסרגלים חולצו למחלקה AnimationProperties. אפשר להשתמש ב-WindowInsetsRulers.innermostOf() כדי למזג כמה WindowInsetsRulers. ‫(I2f0c6, ‏ b/415012444)

תיקוני באגים

  • להוסיף מחדש את השימוש ב-scrollAnimationSpec ב-ContentInViewNode. ההתנהגות הוסרה במהלך הוצאת scrollAnimationSpec משימוש, מה שגרם לשיבוש בתרחישי השימוש. (I1436a, ‏ b/403301605)

גרסה ‎1.9.0-alpha04

‫4 ביוני 2025

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

שינויים ב-API

  • PrefetchScheduler וההתאמה האישית הוצאו משימוש לטובת הטמעה פנימית שמבצעת את כל העבודה באופן אוטומטי. (I3a9a6, b/420551535)
  • העדכון של Scrollable2DState כולל שימוש בהיסט בשיטה canScroll במקום בזווית. ‫(I28694, ‏ b/417268474)
  • הטקסט addAnnotation ב-AnnotatedOutputTransformation הוחלף בטקסט addStyle. ‫(I91c6f, ‏ b/417991824)
  • מיוצב LazyLayout. (If5db4)
  • בוצע ייצוב של בנאי ריק עבור LazyLayoutPrefetchState ושיטת התזמון שלו schedulePrecomposition ו-schedulePrecompositionAndPremeasure. (I4362f, ‏ b/252853717)
  • הוספנו את ProcessTextKey ב-Android, שמשמש לפריטים בתפריט ההקשר שנוספו לפעולות של כוונת PROCESS_TEXT. (If0ac4)
  • הפיכת ממשקי API של תפריט ההקשר לציבוריים. הוספנו את Modifier.addTextContextMenuComponents ו-Modifier.filterTextContextMenuComponents כדי להוסיף ולהסיר פריטים בתפריט ההקשר. בנוסף, הפכנו את ממשקי ה-API הבסיסיים הבאים לציבוריים, כדי שתוכלו ליצור תפריט הקשר בהתאמה אישית:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • הפיכת LazyLayoutItemProvider ליציב (Icce09, ‏ b/261565751)
  • הוספנו תכונות חכמות לבחירה ב-Android שאפשר להפעיל או להשבית דרך ComposeFoundationFlags.isSmartSelectionEnabled. הוא גם חשף compositionLocal סטטי LocalTextClassifierCoroutineContext שאפשר להשתמש בו כדי לציין את CoroutineContext שבו מופעלת משימת TextClassification. (I1dbaa, b/139321320)

גרסה ‎1.9.0-alpha03

‫20 במאי 2025

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

שינויים ב-API

  • נוסף AnnotatedOutputTransformation שמאפשר להוסיף הערות ל-TextField לפני העיבוד. (Ibc6f0, b/389978748)
  • הוספנו את LazyLayoutMeasurePolicy ושיפרנו את היציבות של LazyLayoutMeasureScope. (I8c5df, ‏ b/252853717)
  • ‫BasicSecureTextField מעבירה עכשיו את ScrollState של BasicTextField הפנימי שלה. (I6e576)
  • הוספנו את משני ה-Modifier.onFirstVisible ו-Modifier.onVisibilityChanged, שהם משנים ברמה גבוהה שמבוססים על Modifier.onLayoutRectChanged. המשנים האלה נוצרו במיוחד כדי לטפל בהרבה דרישות נפוצות של אפליקציות, כמו רישום חשיפות, הפעלה אוטומטית של סרטונים וכו'. הם נוצרו תוך התחשבות בביצועים, כך שאפשר להשתמש בהם בתרחישים קריטיים שמבוססים על רשימות בלי לסכן את ביצועי הגלילה. בנוסף לממשקי ה-API של שינוי המחירים, הוספנו עוד ממשקי API RelativeLayoutBounds כדי לתמוך בתרחישי השימוש האלה, וכדי להקל על מפתחים ליצור בקלות שינויים מותאמים אישית דומים שמתאימים בדיוק לתרחיש השימוש שלהם. (I759b8)
  • הוספנו עומס יתר של detectDragGestures שכולל שליטה בשיפוע המגע ובנעילת הכיוון. ‫(Iadb0d)
  • השקת Modifier.scrollable2D, Scrollable2DState וממשקי API נלווים ליצירת מצב. הוספנו גם פונקציות נפוצות להרחבת הגלילה. ‫(Ic61c8, ‏ b/214410040)
  • אי אפשר להשוות ישירות בין ערכי צבע של Compose ב-64 ביט לבין ערכי צבע של Android ColorLongs כי מזהי מרחבי הצבעים לא מסודרים בחלק ממרחבי הצבעים. כדי להמיר בין מרחבי צבעים של Android, נוספו שני ממשקי API חדשים: toColorLong() ו-fromColorLong(). (I36899)

תיקוני באגים

  • כשמעתיקים טקסט מכמה רכיבי Text composable ב-SelectionContainer, עכשיו מתווסף מפריד שורות \n בין הטקסט שמגיע מרכיבי Text composable הנפרדים. (I25332, b/285036739)

גרסה ‎1.9.0-alpha02

‫7 במאי 2025

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

שינויים ב-API

  • תוקן האופן שבו שינויים בקלט של מצביע נוספים ל-VelocityTracker ב-DragGestureNode. אפשר לשלוט בזה באמצעות הדגל החדש isOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, ‏ b/292556787, ‏ b/236451818)
  • הפיכת await[Vertical/Horizontal]PointerSlopOrCancellation לציבורי (I6968b, b/298903681)
  • ערך ברירת המחדל של AbstractComposeView.consumeWindowInsets הוא עכשיו false. WindowInsets יותאם אוטומטית לגודל ולמיקום של הילד כשהוא מוגדר כ-False, כך שאין יותר צורך להגדיר אותו כ-True כברירת מחדל. העדכון הזה פותר את הבעיה שבה תצוגות צאצא לא קיבלו עדכונים של WindowInsets כברירת מחדל. מפתחים יכולים לבטל את ההסכמה לעדכון על ידי שינוי הערך של ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled ל-true, או עדיף, על ידי הגדרת הערך של AbstractComposeView.consumeWindowInsets ל-true בכל המקרים של תצוגת Compose. (I6fa0a, b/411868840)

External Contribution

  • תוקנה קריסה של רכיב Pager עם ערכים גדולים במיוחד של beyondViewportPageCount (Idb2db)

גרסה ‎1.9.0-alpha01

‫23 באפריל 2025

‫androidx.compose.foundation:foundation-*: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. כדי להריץ בדיקות של Compose lint בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.

  • שינוי שעלול לגרום לכשלים: עומסי יתר של clickable,‏ combinedClickable,‏ selectable,‏ toggleable ו-triStateToggleable ללא פרמטר של אינדיקציה תומכים עכשיו רק במופעים של IndicationNodeFactory שסופקו באמצעות LocalIndication. השינוי הזה יחול כשקומפילציה מחדש של השימוש במאפיינים האלה תתבצע באמצעות הגרסה הזו של Compose. השינוי לא משפיע על תלות בינארית או על תלות מעבר. אם אתם מספקים ל-LocalIndication הטמעה של אינדיקציה שהוצאה משימוש, ומשתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במעבדים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל באופן זמני את השינוי הזה בהתנהגות, וכך לשדרג את Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש ב-IndicationNodeFactory. אפשר גם להשתמש בעומסים העודפים עם פרמטר חיווי מפורש – העומסים העודפים האלה ימשיכו לתמוך במופעים של חיווי שאינם IndicationNodeFactory, למרות שלא מומלץ לעשות זאת מסיבות שקשורות לביצועים. (I6bcdc, b/316914333)

שינויים ב-API

  • הוספנו API ליצירת רשימות תבליטים מותאמות אישית דרך AnnotatedString (I1d066, ‏ b/383269496, ‏ b/139326648)
  • מתן הרשאה לכתיבה להפעיל את ViewTreeObserver.OnScrollChanged. ההתנהגות הזו מוצגת באמצעות הדגל isOnScrollChangedCallbackEnabled. השקנו גם פונקציית הרחבה של DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
  • הוספנו תמיכה בבדיקת lint ל-TextFieldState כדי לוודא שהוא נשמר בתוך ההודעה. במקומה, כדאי להשתמש ב-rememberTextFieldState. (I53d74)
  • הוספנו תמיכה בבדיקת lint עבור FocusRequester כדי לוודא שהוא נשמר בתוך ההודעה (I6bf91)
  • נוספה תמיכה בבדיקת lint עבור BringIntoViewRequester כדי לוודא שהוא נשמר בתוך ההודעה. (Ibfba6)
  • הוספנו היקפי חשיפה לקריאות של schedulePrefetch בשיטות של רשתות ורשימות כדי להתאים ליכולות של LazyListPrefetchState לספק מידע על גודל ואינדקס. (Iad80c)
  • שינוי שעלול לגרום לכשלים: עומסי יתר של clickable,‏ combinedClickable,‏ selectable,‏ toggleable ו-triStateToggleable ללא פרמטר של אינדיקציה תומכים עכשיו רק במופעים של IndicationNodeFactory שסופקו באמצעות LocalIndication. השינוי הזה יחול כשקומפילציה מחדש של השימוש במאפיינים האלה תתבצע באמצעות הגרסה הזו של Compose. השינוי לא משפיע על תלות בינארית או על תלות מעבר. אם אתם מספקים ל-LocalIndication הטמעה של אינדיקציה שהוצאה משימוש, ומשתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במעבדים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל באופן זמני את השינוי הזה בהתנהגות, וכך לשדרג את Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש ב-IndicationNodeFactory. אפשר גם להשתמש בעומסים העודפים עם פרמטר חיווי מפורש – העומסים העודפים האלה ימשיכו לתמוך במופעים שאינם IndicationNodeFactory של חיווי, למרות שלא מומלץ לעשות זאת מסיבות שקשורות לביצועים. (I6bcdc, b/316914333)
  • הוספנו דגל לשליטה בהתנהגות האוטומטית של שליפה מראש (prefetch) של רכיבים מוטמעים: isAutomaticNestedPrefetchEnabled (I8d448)
  • מגדירים עומס יתר ל-LazyGridState ול-rememberLazyGridState שמקבל LazyLayoutCacheWindow. (I51151)
  • מוסיף סרגלים להזחות בחלון. הוספת DerivedRuler כדי לאפשר חישוב של סרגל מסרגל אחר. משנה את PlacmentScope כדי להטמיע את הצפיפות. (I658bc, ‏ b/359260964)
  • נוספה פונקציית יצירה (factory function) עם אפס ארגומנטים WindowInsets() כדי ליצור בקלות WindowInsets ריק. ‫(I65f62, ‏ b/395311689)
  • נוסף PaddingValues.Zero לPaddingValues ריק. ‫(If193e, ‏ b/386255688)

תיקוני באגים

  • העומס העודף state של BasicTextField יגרום לכך שהסמן יישאר בתצוגה כשגודלו ישתנה. (I0eb41, b/406187741)
  • ממשקי ה-API של onVisibleItemsUpdated ב-LazyListPrefetchStrategy וב-LazyGridPrefetchStrategy עודכנו כדי לספק מידע על המצב הראשוני. (If2cfa)

גרסה 1.8

גרסה 1.8.3

‫18 ביוני 2025

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

גרסה 1.8.2

‫20 במאי 2025

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

תיקוני באגים

  • הוספנו תיקון שמונע את החישוב של מספר הפריטים לטעינה בחיפוש ממוקד, כדי שלא תתבצע חלוקה באפס. הבדיקה הופעלה על כל הפריסות שמשתמשות ב-LazyLayoutBeyondBoundsState. (8e6dc8)

גרסה 1.8.1

‫7 במאי 2025

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

תיקוני באגים

  • תוקן באג ב-BasicText וב-TextAutoSize שבו שימוש ב-TextOverflow.Ellipsize היה גורם לטקסט קטן יותר מהאופטימלי. ‫(I1e1d8, b/396582066)
  • תוקן באג ב-BasicTextField שגרם לקריסות שונות כש-TextFieldDecorator דילג על הקריאה ל-innerTextField. ‪(I2638c), b/308398612
  • תוקן באג ב-TextField שגרם לסרגל הכלים של הטקסט ולנקודות האחיזה של הבחירה להיעלם לחלוטין כשמופע TextFieldState השתנה. ‫(I8068a), b/390477786
  • תוקן באג ב-BasicText שגרם לכך ששינוי האילוץ של רוחב מינימלי לא עדכן את מיקום הטקסט כש-textAlign הוגדר לערך שאינו ברירת המחדל. (I77a96), b/406305552

גרסה 1.8.0

‫23 באפריל 2025

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

גרסה ‎1.8.0-rc03

‫9 באפריל 2025

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

גרסה ‎1.8.0-rc02

‫26 במרץ 2025

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

גרסה ‎1.8.0-rc01

‫12 במרץ 2025

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

גרסה ‎1.8.0-beta03

‫26 בפברואר 2025

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

תיקוני באגים

  • נוסף מאפיין סמנטי חדש InputText שמתעד את הערך של שדה טקסט לפני החלת טרנספורמציה של הפלט. (Iae46a, ‏ b/395911609, ‏ b/176949051)
  • הוסרו עומסי יתר (overloads) של AutoSize שהוצאו משימוש. מומלץ להשתמש בממשקי ה-API של TextAutoSize שמבצעים את אותה הפונקציה. (I2c90f)
  • תוקנה בעיה במטמון של TextAutoSize שבה מעבר שני לפריסה עם אותם אילוצים יכול היה לגרום לשימוש בגודל הגופן השני הכי גדול במקום בגודל הגופן הכי גדול. (Id367f)

גרסה ‎1.8.0-beta02

‫12 בפברואר 2025

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

תיקוני באגים

  • תוקנה בעיה שבה הטמעות של גלילה מעבר לקצה באמצעות LayoutModifierNode לא פעלו בצורה תקינה בתוך מאגרי תגים של גלילה.

גרסה ‎1.8.0-beta01

‫29 בינואר 2025

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

שינויים ב-API

  • SemanticsNodeInteraction.semanticsId() הוסר. במקומה צריך להשתמש במדיניות SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • לשכתב את requestAutofill API כך שיהיה מחוץ למנהל המילוי האוטומטי. (Id1929)
  • המאפיינים ContextualFlowRow ו-ContextualFlowColumn סומנו כמאפיינים שהוצאו משימוש. הרכיב הניסיוני הזה הוצג בגרסה 1.7, והוא עדיין לא עבר ייצוב. ההטמעה שלו נחשבת ללא רצויה. בעתיד, יכול להיות שנספק רכיב שיפתור את תרחישי השימוש שהרכיב הזה נועד לפתור.
    • ל-FlowRow ול-FlowColumn יש עומסים ניסיוניים שהוצגו בגרסה 1.7 וכוללים פרמטר overflow. השימוש בפרמטר הזה הוצא משימוש, ואפשר להשתמש במקומו בעומסים העודפים בלי הפרמטר הזה. התנהגות ברירת המחדל של העומסים העודפים האלה היא Clip (חיתוך), כמו שהייתה מאז ההשקה.
    • אפשר לבצע הרבה מקרים לדוגמה של ContextualFlowRow באמצעות FlowRow, אבל אנחנו מודעים לכך שזה לא נכון באופן כללי. אפשר להטמיע את ContextualFlowRow באופן מלא במרחב המשתמש, ואפשר לנסות להעתיק את ההטמעה שלו ולהתאים אותה לפי הצורך. בעתיד, אנחנו מקווים לפתור את תרחישי השימוש האלה בדרך אחרת. (Ibafec)

תיקוני באגים

  • תיקון פריסת טקסט עם שלוש נקודות, שלפעמים מתורגמות בצורה שגויה במהלך אנימציות. מידע נוסף זמין בכתובת b/389707025 (Ie55b1, b/389707025)
  • תוקן באג ב-BasicText עם TextAutoSize ו-maxLines שמוגדרים ל-1. (Ic0450, ‏ b/376834366)
  • הגובה המינימלי של הטקסט מובנה עכשיו בהתאם לפרמטר minLines. המשמעות היא שהגובה המינימלי של הנכסים המובנים שדווח לא יהיה קטן מהגובה שנדרש כדי לעמוד בדרישות הפרמטר minLines (I225f9, b/388299762)

גרסה ‎1.8.0-alpha08

‫15 בינואר 2025

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

שינויים ב-API

  • ‫AutoSize: שונה השם מ-AutoSize ל-TextAutoSize ופורסמו ממשקי API שמאפשרים ליצור הטמעות מותאמות אישית של TextAutoSize. דוגמה להטמעה של גודל טקסט אוטומטי מותאם אישית מופיעה במאמר TextAutoSizeSample. (I85756)
  • העברנו את דגל התכונה DetectTapGesturesEnableNewDispatchingBehavior אל ComposeFoundationFlags ושינינו את השם שלו ל-isDetectTapGesturesImmediateCoroutineDispatchEnabled. הדגל הישן הוצא משימוש ועכשיו הוא יוקצה ל-ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled במקום זאת. (I62932)

תיקוני באגים

  • מופעלת DetectTapGesturesEnableNewDispatchingBehavior כברירת מחדל. ממשקי ה-API של TapGestureDetector משתמשים עכשיו בהתנהגות החדשה של שליחת אירועים (שליחה מיידית) כברירת מחדל. ‫(I9f2bc, ‏ b/369648479)
  • בוצע תיקון של משני requiredWidth/Height/Size כדי לטפל בגדלים פנימיים בצורה נכונה. (Ie3d7d, b/368113212)

External Contribution

  • הפכו את BasicTooltip לנפוץ ב-Foundation ואת BasicTooltip/Tooltip ב-Material3. (Ifc2e6)
  • נוסף ממשק חדש ללוח ההעתקה וקומפוזיציה מקומית בשבילו. (I80809)

גרסה ‎1.8.0-alpha07

‫11 בדצמבר 2024

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

שינויים ב-API

  • הוסר הדגל ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled שעזר לבטל את ההסרה של graphicsLayer פנימי מ-BasicText. אם השתמשתם בדגל הזה, אתם מוזמנים לשלוח דוח על באג ולציין את הסיבות. בנוסף, אפשר פשוט להעביר את Modifier.graphicsLayer() לשיחות BasicText כדי לקבל את אותה התנהגות כמו קודם. (Id9f90)
  • נוספה הטמעה של ברירת מחדל ל-stickyHeader DSL חדש. (I68986)
  • המאפיין LocalAutofillHighlightColor composition local use הוא מסוג Color. (I0e05b)
  • השם של OverscrollEffect#withoutDrawing שונה לOverscrollEffect#withoutVisualEffect. (I1a154)

תיקוני באגים

  • תיקון נוסף לבעיה בחישוב היעד של AnchoredDraggable, שבה הוא יכול היה להתמקם בנקודת עיגון שגויה בהחלקות מסוימות. (I23b87, ‏ b/367660226)

External Contribution

  • הוספת BringIntoViewResponderModifierNode לממשק המשתמש, שמספק דרך חדשה להטמעה של הפונקציונליות Bring Into View (הצגה בתצוגה) ומאפשר הטמעה ברמת הפלטפורמה (Ia6dd8)
  • אנחנו משנים מעט את האופן שבו הסמן מצויר. אפשר להשתמש ב-LocalCursorBlinkEnabled כדי להשבית את ציור הסמן בבדיקות. (I4c697)

גרסה ‎1.8.0-alpha06

‫13 בנובמבר 2024

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

שינויים ב-API

  • מוסיפים את התאמת stylusHoverIcon. (Iff20a, ‏ b/331289114)
  • הוצא משימוש AnchoredDraggableState של confirmValueChange. במקום להטיל וטו על שינויים במצב, עוגנים אסורים לא צריכים להיות בקבוצת העוגנים הפעילים, וצריך להשתמש ב-OverscrollEffect כדי לציין שהפעולה המבוקשת לא זמינה. (Ia717f)
  • השינוי של מנהל המילוי האוטומטי לממשק. ‫(I84914, ‏ b/376080755)
  • נוספו ממשקי API‏ OverscrollEffect#withoutDrawing ו-OverscrollEffect#withoutEventHandling – ממשקי ה-API האלה יוצרים מופע עטוף של אפקט הגלילה העודפת שאינו מצייר או מטפל באירועים בהתאמה, מה שמאפשר עיבוד של גלילה עודפת ברכיב נפרד מהרכיב ששולח אירועים. לדוגמה, אפשר להשבית את הציור של גלילה מעבר לקצה בתוך רשימה עצלה, ואז לצייר את גלילה מעבר לקצה בנפרד בחלק העליון או במקום אחר. (Idbb3d, ‏ b/266550551, ‏ b/204650733, ‏ b/255554340, ‏ b/229537244)
  • הוספת תמיכה במילוי אוטומטי בסרגל הכלים של הטקסט. (Ie6a4c)
  • הפונקציות OverscrollConfiguration ו-LocalOverscrollConfiguration הוצאו משימוש, והפונקציה rememberPlatformOverscrollFactory נוספה כדי ליצור מופע של יישום ברירת המחדל של גלילה מעבר לקצה או להתאים אישית פרמטרים שלו. כדי להשבית את הגלילה העודפת, במקום LocalOverscrollConfiguration provides null, משתמשים ב-LocalOverscrollFactory provides null. כדי לשנות את צבע הזוהר או את הריווח הפנימי, במקום LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) משתמשים ב-LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, ‏ b/255554340, ‏ b/234451516)
  • המאפיין effectModifier ב-OverscrollEffect שונה ל-node: DelegatableNode, בהתאם לממשקי API אחרים. (Ic0b46, ‏ b/255554340)
  • הוסר ה-API הניסיוני GlobalAssertions. השימוש המיועד בו היה הפעלת בדיקות נגישות, אבל במקום זאת אפשר להשתמש ב-enableAccessibilityChecks(). (I59322)

גרסה ‎1.8.0-alpha05

‫30 באוקטובר 2024

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

תכונות חדשות

  • תמיכה בשינוי גודל הטקסט באופן אוטומטי. מעבירים מופע AutoSize (לדוגמה, AutoSize.StepBased) לרכיב הטקסט המועדף (כמו BasicText) ורואים את גודל הטקסט משתנה בהתאם למקום הפנוי. ‫(Ice7e0, ‏ b/139320827)
  • מוסיף את ממשקי ה-API‏ OverscrollFactory ו-LocalOverscrollFactory כדי לאפשר הגדרה של גלילה מעבר לקצה בתוך היררכיה. כברירת מחדל, המערכת משתמשת בערך שצוין באמצעות LocalOverscrollFactory כדי ליצור OverscrollEffect. כדי ליצור ולשמור אפקט מהמפעל הנוכחי, משתמשים ב-rememberOverscrollEffect(). (I51ca4, b/255554340)

שינויים ב-API

  • הוספנו את CompositionLocal שאפשר להשתמש בו כדי לשנות את הגוון של ההדגשה במילוי אוטומטי. (I32092)
  • הוסר ScrollableDefaults.overscrollEffect – במקומו צריך להשתמש ב-rememberOverscrollEffect. הפעולה הזו תיצור מופע של ההטמעה הנוכחית של גלילה מעבר לקצה, שסופקה עם LocalOverscrollFactory. (I1651a, b/255554340),(b/234451516)
  • הגרסה הזו כוללת ממשק AutofillManager חדש שאפשר להשתמש בו כדי לשפר את תהליך המילוי האוטומטי של המשתמשים, וגם דגל isSemanticAutofillEnabled להפעלה של הגרסה החדשה הזו של המילוי האוטומטי. (I9d484)
  • הסרה של CombinedClickableNode. ה-API הניסיוני הזה נחשף באופן זמני כדי לאפשר עבודה על ביצועים, אבל הוא כבר לא נחוץ. במקום זאת, צריך להשתמש ישירות ב-Modifier.combinedClickable כמו בממשקי API אחרים של שינוי. (I4b658)
  • הוספנו עומסים יתרים ל-horizontalScroll,‏ verticalScroll,‏ LazyColumn,‏ LazyRow,‏ LazyHorizontalGrid,‏ LazyVerticalGrid,‏ LazyHorizontalStaggeredGrid,‏ LazyVerticalStaggeredGrid,‏ HorizontalPager ו-VerticalPager עם תמיכה בציון OverscrollEffect בהתאמה אישית. הערך OverscrollEffect שצוין יקבל אירועים ויוצג בגבולות של הרכיבים האלה. שימו לב שאין תמיכה בציור של אותו OverscrollEffect פעמיים – לכן אי אפשר לצייר את אותו OverscrollEffect שסופק לאחד מהרכיבים האלה בנפרד באמצעות Modifier.overscroll. בעתיד נסביר בנפרד על תרחיש השימוש של ציור הגלילה העודפת מחוץ לגבולות של הרכיבים האלה. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)

גרסה ‎1.8.0-alpha04

‫16 באוקטובר 2024

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

שינויים ב-API

  • הוספנו קריאות חוזרות (callback) של DelegatableNode#onDensityChange ו-DelegatableNode#onLayoutDirectionChange כדי לאפשר עדכון של מצב הצומת כשהוא משתנה. (I04f3e, ‏ b/340662451)
  • הפונקציה Paragraph ו-ParagraphIntrinsics מקבלת עכשיו רשימה של כל ההערות שנוספו ל-AnnotatedString. בעבר היא קיבלה רק רשימה של SpanStyles. (I12f80)
  • הוספנו את PointerInputModifierNode#touchBoundsExpansion, שאפשר להשתמש בו כדי להגדיל את גבולות המגע של משנה קלט של מצביע יחיד. (Iccf02, b/335339283)

תיקוני באגים

  • תוקן באג שגרם לכך שערכי הסף של המיקום שהועברו אל AnchoredDraggableDefaults.flingBehavior לא נלקחו בחשבון בצורה נכונה בתרחישים מסוימים. (Ifdf0d, ‏ b/367660226)
  • הוספנו תיקון לבעיה שבה רכיבים עם אפשרות גלילה מוטמעים מוסרים מעץ הצמתים במהלך גלילה מהירה. עכשיו הצמתים האלה יבטלו את ההעברה וישלחו בצורה תקינה את האירוע onPostFling עם המהירות שנותרה. אנחנו משיקים גם את האפשרות להשתמש בדגל NewNestedScrollFlingDispatchingEnabled כדי לשלוט בהתנהגות במקרה של רגרסיות. הדגל יוסר לפני השקת הבטא. (I05c37, ‏ b/371168883)
  • תוקן באג שגרם לכך ש-OverscrollEffects שהועבר אל Modifier.anchoredDraggable קיבל דלתאות דו-ממדיות במקום דלתאות חד-ממדיות. (Ie52c0)

גרסה ‎1.8.0-alpha03

‫2 באוקטובר 2024

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

שינויים ב-API

  • עדכון גרסת Kotlin ל-1.9‏ (I1a14c)
  • הוסף דגל DraggableAddDownEventFixEnabled (I848d5)
  • הוספנו תפקיד סמנטי חדש בשם Carousel (קרוסלה) כדי לחקות את התנהגות הרשימה ברכיבי Pager בשירותי נגישות. (Id354b, ‏ b/354109776, ‏ b/239672673)
  • הוסר משנה ה-modifier המרומז graphicsLayer מהפונקציה הניתנת להרכבה BasicText. נוסף הדגל הניסיוני ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled כדי לאפשר חזרה להתנהגות הקודמת. (Ie478d)
  • נוספה האפשרות Modifier.recalculateWindowInsets() כדי לאפשר לילדים בהיררכיה להשתמש ב-insetsPadding גם אם ההורים הגדירו אותם בלי consumeWindowInsets(). (I7f9e4)

תיקוני באגים

  • הטמיעו את המחווה 'הרמה' ב-detectDragGestures, ברכיבים שניתן לגרור וברכיבים שניתן לגלול. עכשיו, אם רכיב שניתן לגרור מפסיק להגיב לתנועה, הרכיב ההורה יכול להרים אותו. כך אפשר לטפל במחוות בצורה רציפה ומשולבת יותר. (Ic88fe)
  • עדכון אופן הפעולה של ביטול ההטלה בתכנים שניתן לגלול בהם. עכשיו, אם רכיב עם אפשרות גלילה מופעל בתנועת החלקה ומגיע לגבולות, הוא יעביר את מהירות ההחלקה לרכיב הבא בשרשרת במקום להמשיך את ההחלקה. (I9326a)

גרסה ‎1.8.0-alpha02

‫18 בספטמבר 2024

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

שינויים ב-API

  • ‫TextOverflow.StartEllipsis ו-TextOverflow.MiddleEllipsis זמינים עכשיו, ואפשר להשתמש בהם כדי למקם שלוש נקודות בתחילת השורה או באמצע השורה של הטקסט בשורה אחת (I38913,‏ b/185418980)

גרסה ‎1.8.0-alpha01

‫4 בספטמבר 2024

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

גרסה 1.7

גרסה 1.7.8

‫12 בפברואר 2025

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

תיקוני באגים

  • תוקנה קריסה ב-BasicTextField עם טרנספורמציה של קלט כשמחליפים חלק מהטקסט שהודבק. (I73702)

גרסה 1.7.7

‫29 בינואר 2025

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

תיקוני באגים

  • תוקנה קריסה של IndexOutOfBound עם הערת קישור. (Ic96d2)
  • תוקנה בעיה של קומפוזיציה אינסופית בכמה מקרים קיצוניים עם קישורים. (I04a03)

באגים מוכרים

  • זוהה באג שעלול לגרום לטקסט לעבור לשורה חדשה באופן לא צפוי בתרחישים נדירים ב-Android API ברמה 35. אי אפשר לתקן את הבעיה בגרסה 1.7, ולכן היא תתוקן בגרסה 1.8. (b/391378120)

גרסה 1.7.6

‫11 בדצמבר 2024

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

תיקוני באגים

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

גרסה 1.7.5

‫30 באוקטובר 2024

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

תיקוני באגים

  • מוודאים שפריטים מוצמדים לא מורכבים פעמיים באזור הריווח הפנימי של התוכן. (Ic6224)

גרסה 1.7.4

‫16 באוקטובר 2024

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

תיקוני באגים

  • תוקן באג שגרם לקריסה נדירה בשדות טקסט. (I475c6, ‏ b/313010266)
  • הוסר ReusableContentHost ברמה הבסיסית של פריטים בפריסה של Lazy. זו הייתה סיבה אפשרית לקריסות מסוג measure called on a deactivated node (הפעלת מדידה בצומת שהושבת). (Id6e60)

גרסה 1.7.3

‫2 באוקטובר 2024

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

תיקוני באגים

  • תוקן דליפת זיכרון ב-BasicText כש-minLines מוגדר לערך שאינו ברירת המחדל.

גרסה 1.7.2

‫18 בספטמבר 2024

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

תיקוני באגים

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

גרסה 1.7.1

‫10 בספטמבר 2024

  • לא בוצעו שינויים בפריטי מידע של Android. ‫-desktop ארטיפקטים הוסרו ו--jvmStubs ו--linuxx64Stubs ארטיפקטים נוספו. אף אחד מהיעדים האלה לא מיועד לשימוש, הם משמשים כ-placeholder כדי לתמוך במאמצי Jetbrains Compose.

גרסה 1.7.0

‫4 בספטמבר 2024

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

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

  • הביצועים של Modifier.clickable, ‏ Modifier.focusable, ‏ Modifier.indication, ‏ Modifier.scrollable ו-Modifier.draggable השתפרו באופן משמעותי. במסגרת המאמץ הזה, בוצעו השינויים הבאים ב-API, בנוסף לשינויים פנימיים
    • נוסף API חדש של אינדיקציות, IndicationNodeFactory. התוצאה היא הטמעות של אינדיקציות עם ביצועים טובים יותר בהשוואה ל-API הקודם (שכבר יצא משימוש) rememberUpdatedInstance. מידע על העברה זמין בכתובת developer.android.com.
    • הפונקציה clickable / combinedClickable / selectable / toggleable מקבלת עכשיו פרמטר MutableInteractionSource שניתן להגדיר כ-nullable. אם הערך הוא null, והאינדיקציה שסופקה היא IndicationNodeFactory, אפשר ליצור את האינדיקציה רק כשצריך, מה שמשפר את הביצועים. אם אתם לא משתמשים ב-hoisting וב-MutableInteractionSource, מומלץ להעביר null במקום להעביר remember { MutableInteractionSource() }.
    • האפשרות Indication#rememberUpdatedInstance הוצאה משימוש. הוא גורם לירידה משמעותית בביצועים שאי אפשר להימנע ממנה, ומונע אופטימיזציות אחרות. במקום זאת, צריך להשתמש ב-IndicationNodeFactory API החדש.
  • BasicTextField השימוש ב-TextFieldState יציב עכשיו, ואנחנו ממליצים לכל האתרים שמשתמשים ב-BasicTextField(value, onValueChange) להתחיל לעבור ל-BasicTextField(TextFieldState).
  • התכונה ClickableText הוצאה משימוש. כדי להוסיף לטקסט קישורים שאפשר ללחוץ עליהם, משתמשים ב-BasicText עם ההערה החדשה LinkAnnotation ב-AnnotatedString. ‫LinkAnnotation מאפשר עיצוב בהתאמה אישית על סמך מצב הקישור (למשל, מודגש, הצבת הסמן מעל).
  • חדש: ContextualFlowRow ו-Enhanced FlowRow/Column עם MaxLines ו-Overflow. אנחנו שמחים להודיע על שיפורים בתכונות הניסיוניות FlowRow ו-FlowColumn, שכוללות עכשיו תמיכה ב-maxLines ובגלישה מעבר למסך, וגם על השקת התכונות ContextualFlowRow ו-ContextualFlowColumn. העדכון הזה נועד לספק רכיבים אופטימליים לביצועים, כאשר ContextualFlow* מתאים למספר גדול של פריטים שמשתמשים בהגדרת maxLines קטנה ובלחצנים דינמיים של 'עוד' +N, ו-FlowRow ו-FlowColumn מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow או ב-FlowColumn, שבה כל הפריטים מורכבים בלי קשר להתאמה שלהם למקסימום של הציר הניצב, צריך להגדיר את הגלישה ל-FlowRowOverflow.Visible או ל-FlowColumnOverflow.Visible במהלך האתחול. כדאי לנסות את ContextualFlowRowSample וFlowRowSample כדי לראות דוגמאות לשימוש בתכונות החדשות האלה. (Ib9135, ‏ b/293577082)
  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyColumn וב-LazyRow. בעבר היה אפשר להוסיף את המשנה Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי המאפיין הזה והשקנו שינוי מאפיין חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לתמוך בכל שלושת סוגי האנימציה: הופעה (fade in), היעלמות (fade out) ושינוי סדר. ‫(I2d7f7, ‏ b/150812265)
  • הטמענו תמיכה ניסיונית בצילומי מסך ארוכים במאגרי גלילה של Compose באמצעות Android API רשמי (ScrollCaptureCallback).
  • מקורות NestedScroll Drag and Fling מוחלפים במקורות UserInput ו-SideEffect כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (Side Effect) וגלגל העכבר והמקלדת (UserInput).
  • LazyLayout עכשיו אפשר לסמן בקשות לאחזור מראש כדחופות, כלומר אנחנו צופים שיהיה צורך בפריט הזה בפריים הבא ורוצים להתעלם מהתקציב של הפריים כדי לוודא שנעשה יותר עבודה מראש (Id513f)
  • תמיכה בתכונת הכתיבה הידנית בסטיילוס במכשירים אחרי Android U. (I002e4)
  • ממשקי API שונים הועברו לגרסה יציבה
    • החלפת חלונות, הצמדה, שוליים פנימיים של חלונות

גרסה ‎1.7.0-rc01

‫21 באוגוסט 2024

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

תיקוני באגים

  • תוקנה רגרסיה שגרמה לקריסה כשאלמנט כלשהו נמצא במיקוד בתוך אלמנט אב שניתן להעברה למיקוד (או שניתן ללחיצה) ומושבת. (b/317561689)

גרסה ‎1.7.0-beta07

‫7 באוגוסט 2024

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

תיקוני באגים

  • פונקציות שקשורות לקלט טקסט SemanticsNodeInteraction performTextReplacement, performTextInput ו-performTextClearance יחזירו עכשיו שגיאות של טענות (assertion) כשהן מופעלות על TextFields לקריאה בלבד. (I4ae8f)
  • תוקנה בעיה ויזואלית בהיפר-קישורים. (I23311)
  • תוקנה הבעיה שבה המקש לשינוי contentReceiver לא פעל עם חלק משיטות הקלט (IME).
  • יצירת מהירות: מניעת הפצה של ערכי NaN ב-Compose UI וב-Foundation.

גרסה ‎1.7.0-beta06

‫24 ביולי 2024

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

גרסה ‎1.7.0-beta05

‫10 ביולי 2024

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

תיקוני באגים

  • תוקנה בעיה שקשורה לטיפול בערכי Nan ב-SnapFlingBehavior וב-Pager.

גרסה ‎1.7.0-beta04

‫26 ביוני 2024

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

תיקוני באגים

  • תיקון באג שגורם לקריסות כשמודדים שורות טקסט גדולות מאוד (למשל, 10,000 תווים) (8157ab)
  • תוקנה בעיה במדידה של טקסט גדול מאוד שגרמה לקריסה בגרסה החדשה של BasicTextField (6b7575)
  • החזרת שינוי בהתנהגות במדידת שורות/עמודות שגורם לשיבוש בשימוש בטקסט בתרחישים מסוימים (69e8ba)

גרסה ‎1.7.0-beta03

‫12 ביוני 2024

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

גרסה ‎1.7.0-beta02

‫29 במאי 2024

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

שינויים ב-API

  • נוסף API ניסיוני להגדרת התנהגות של אחזור מראש של LazyGrids בדומה ל-API הניסיוני הקיים של LazyLists. זה כולל תמיכה באחזור מראש של פריטים ב-LazyGrids במבנה היררכי. בדומה ל-LazyListPrefetchStrategy, ברירת המחדל של ההטמעה היא שליפה מראש של 2 הפריטים הראשונים שמוטמעים בתוך כל רשת, אבל אפשר להגדיר את זה באמצעות ממשקי ה-API החדשים LazyGridPrefetchStrategy(nestedPrefetchItemCount) ו-LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • השם של SemanticsProperties.Editable השתנה ל-IsEditable והשינויים SemanticsPropertyReceiver.editable הפכו לערך isEditable. המאפיין הוא עכשיו בוליאני ותמיד מצוין על ידי שדות טקסט. (I8acd8)
  • הועברו basicMarquee ערכי ברירת מחדל לאובייקט MarqueeDefaults. (I12ff6)
  • השם של הפרמטר basicMarquee delayMillis שונה ל-repeatDelayMillis. (I12ff6)
  • עדכון API לעיצוב הקישורים: הועבר TextLinkStyles אל TextStyle והוסר TextDefaults מ-material ‏ (I5477b)

תיקוני באגים

  • שם השדה LayoutCoordinates.introducesFrameOfReference שונה ל-LayoutCoordinates.introducesMotionFrameOfReference כדי לשקף טוב יותר את המטרה שלו. שם הפונקציה שקשורה לחישוב הקואורדינטות שונה בהתאם לדגל הזה. (I3a330)
  • הוסר הערך 'ברירת מחדל' מהמאפיינים של MarqueeDefaults. (I1d8a0)
  • הוסר המאפיין 'מאמר ראשי' מנכסי MarqueeDefaults. (Iad4f4)
  • הסרנו את TextLinkStyles מהכיתה TextStyle. במקום זאת, TextLinkStyles הוא חלק מהבונה LinkAnntation ומהשיטה AnnotatedString.fromHtml (I90b2b)
  • תוקן באג שגרם לכך שהרכיב Pager נסגר כשמבצעים תנועת החלקה לכיוון גבול בזמן שהוא כבר נמצא בגבול. (I9f373, b/339171222)
  • ב-BTF2 יש עכשיו תנועות נכונות של בחירה באמצעות העכבר. (Ibe8c6)

External Contribution

  • שליחה מחדש של 'שיפור הדיוק של חישוב הזמן של יצירת הודעה או מדידה על ידי התבססות על סוג התוכן באחזור מראש' (Iea622)
  • שיפור הדיוק של חישוב הזמן של יצירה/מדידה על ידי התבססות על סוג התוכן בטעינה מראש (Ibccb1)
  • הגדרת מקשי הצירופים WindowInsetsPadding כזמינים מתוך קבוצת מקורות משותפת (I070b2)

גרסה ‎1.7.0-beta01

‫14 במאי 2024

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

שינויים ב-API

  • המאפיין KeyboardOptions.shouldShowKeyboardOnFocus נוסף מחדש כמאפיין מוסתר שיצא משימוש, כדי לשמור על תאימות בינארית. (I15cfe)
  • ‫Modifier.anchoredDraggable עכשיו מתבצעת היפוך של דלתאות גרירה כברירת מחדל לרכיבים עם כיוון אופקי כשמשתמשים בהם בפריסה מימין לשמאל. (I3c6d9)
  • המוצר AnnotatedString.hasEqualsAnnotations נקרא עכשיו hasEqualAnnotations. (I685c0)
  • עדכנו את ה-API כדי לקבל קישורים עם עיצוב Material בטקסט. הסרנו את השיטות מה-TextDefaults ליצירת LinkAnnotations עם עיצובים וניתוח HTML עם קישורים מעוצבים. במקום זאת, הוספנו מחלקה TextLinkStyles שמאפשרת לעצב את הקישורים כפרמטר ל-Text composable. (I31b93)
  • החלפנו את onDragStarted ואת onDragStopped בקריאות חוזרות (callback) שלא גורמות להשהיה. (I59de8)

תיקוני באגים

  • תוקן באג שגרם לקריסה של Pager כשהערך של contentPadding היה גדול מהמגבלות הנכנסות. הכלי Pager מאלץ עכשיו ערכים שליליים שמוחזרים מ-PageSize להיות 0. (Iba5d8, b/314008560)

גרסה ‎1.7.0-alpha08

‫1 במאי 2024

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

תכונות חדשות

  • הוספנו תפריט הקשר בלחיצה ימנית ל-BasicTextField ול-SelectionContainer עם פריטים לפעולות גזירה, העתקה, הדבקה ובחירת הכול. (If8c93, Ia2b49, I6f268)

שינויים ב-API

  • LazyLayout עכשיו אפשר לסמן בקשות לאחזור מראש כדחופות, כלומר אנחנו צופים שיהיה צורך בפריט הזה בפריים הבא ורוצים להתעלם מהתקציב של הפריים כדי לוודא שנעשה יותר עבודה מראש (Id513f)
  • השם של isPositionedByParentWithDirectManipulation שונה לintroducesFrameOfReference. שימו לב שההשפעה שלה הפוכה עכשיו, כלומר, כברירת מחדל, רוב LayoutCoordinates יוצרים מסגרת התייחסות, ורק כשהם ממוקמים תחת מניפולציה ישירה, המאפיין יהיה false. כדי לשלוח שאילתה לגבי מיקום רק עם אלה שמציגים מסגרת התייחסות, משתמשים ב-positionInLocalFrameOfReference(...). או positionInLocalLookaheadFrameOfReference מ-LookaheadScope. (Ifc5f7)
  • השם של onClicked שונה ל-onClick בתוך LinkInteractionListener (Iaa35c)
  • שינוי פעולת ה-lambda עבור getScrollViewportLength בהתאם למשוב של מועצת ה-API. (Ibc74a)
  • שינינו את השם של ממשקי ה-API להעברת הרשאות לכתב יד באמצעות עט סטיילוס. (Ica45f, ‏ b/327271923)
  • שינוי השם של TextInclusionStrategy.isInside לisIncluded. צריך להגדיר את סוג ההחזרה של Paragraph/MultiParagraph#getRangeForRect() כלא ניתן לאיפוס. (I51f26)

תיקוני באגים

  • הוספנו את האפשרות 'בחירת הכול' לכל התפריטים ההקשריים של הטקסט ב-SelectionContainer. (Ib750e, ‏ b/240143283)
  • תוקנה בעיה בצילום מסך ארוך של מאגרי תגים עם גלילה באמצעות reverseScrolling=true. (I7c59c)
  • תוקנה בעיה שבה currentValue של AnchoredDraggableState השתנה כשמתקרבים לגבולות המדינה. (Iea30b, ‏ b/333846848)

External Contribution

  • שינינו את השם של PrefetchExecutor -> PrefetchScheduler כדי לשקף טוב יותר את האחריות שלו. (Ib9154)
  • נוספה תמיכה באחזור מראש של פריטים ב-LazyLists מקוננים (למשל LazyColumn שמבצע רינדור של LazyRows מקונן). השינוי הזה צפוי לצמצם את הירידה בקצב הפריימים במהלך גלילה ב-LazyLists האלה. ההטמעה מתבצעת כברירת מחדל על ידי אחזור מראש של 2 הפריטים המקוננים הראשונים, אבל אפשר לשלוט בהתנהגות הזו באמצעות ממשקי ה-API החדשים LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) ו-LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

גרסה ‎1.7.0-alpha07

‫17 באפריל 2024

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

תכונות חדשות

  • הוספנו אובייקט TextDefaults שמכיל שיטות ליצירת LinkAnnotation ולניתוח מחרוזת עם תגי HTML שמחילות MaterialTheme על הקישורים. (I98532, ‏ b/139312671)
  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyVerticalGrid וב-LazyHorizontalGrid. בעבר הייתה אפשרות להוסיף את המגביל Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי המאפיין הזה והשקנו שינוי מאפיין חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לתמוך בכל שלושת סוגי האנימציה: הופעה (fade in), היעלמות (fade out) ושינוי סדר. (Ib7d12, b/330510929)
  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyVerticalStaggeredGrid וב-LazyHorizontalStaggeredGrid. בעבר היה אפשר להוסיף את המשנה Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי המאפיין הזה והשקנו שינוי מאפיין חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לתמוך בכל שלושת סוגי האנימציה: הופעה (fade in), היעלמות (fade out) ושינוי סדר. (I69bc9, b/330511290)

שינויים ב-API

  • כולל את ContextMenuColors ואת LocalContextMenuTheme ProvidableCompositionLocal המשויך. אפשר לשנות את הצבעים של תפריט ההקשר בתיבות טקסט ובטקסט שאפשר לבחור בו על ידי ציון המיקום של הקומפוזיציה. (Ifa154)
  • נוספה אפשרות עיצוב של מצב לחיצה לקישורי טקסט, בנוסף לעיצוב רגיל, עיצוב במצב ריחוף ועיצוב במצב מיקוד. (I5f864, ‏ b/139312671)
  • הוספנו את ViewConfiguration.HandwritingGestureLineMargin לתנועות של כתב יד. תמיכה בתנועת כתיבה ידנית ב-BasicTextField. ‫(Ie6e13, ‏ b/325660505)
  • הסרנו את DelegatableNode.scrollIntoView מגרסה 1.7 כי לא היה לנו זמן לסיים את הייצוב של שאר משטח ה-API שקשור אליו. הפונקציה הזו תתווסף מחדש בגרסה 1.8 (I6cf61, ‏ b/333421581, ‏ b/332900232)
  • כשמבצעים שאילתה על קואורדינטות של פריסה, אפשר להשתמש עכשיו בארגומנט excludeDirectManipulationOffset כדי להחריג את ההיסט שמוגדר על ידי פריסות אב שמיקמו את רכיבי הצאצא שלהן באמצעות Placeable.PlacementScope.withDirectManipulationPlacement. באופן דומה, רכיב Layout שמשנה את המיקום של רכיבי הצאצא שלו לעיתים קרובות עשוי למקם אותם עכשיו באמצעות withDirectManipulationPlacement (כמו Scroll, שמוטמע כברירת מחדל). השיפור הזה עוזר ליצור אנימציות אינטואיטיביות יותר שמבוססות על approachLayout, כי עכשיו אפשר להבחין בין האנימציה של ההזזה לבין האנימציה של ההחלה כשמחליטים להנפיש את הגישה. (I60ec7)
  • תציג את requestScrollToItem ב-LazyStaggeredGrid. בכל מעבר מדידה, הלקוח יכול עכשיו לבטל את ההסכמה לשמירת האינדקס על סמך המפתח על ידי קריאה ל-requestScrollToItem. העדכון הזה לא משנה את ההתנהגות הקיימת בשום צורה, אלא אם מתבצעת קריאה אל requestScrollToItem. (I63983)
  • הצגת requestScrollToPage ב-Pager. בכל מעבר מדידה, הלקוח יכול עכשיו לבטל את ההסכמה לשמירת האינדקס על סמך המפתח על ידי קריאה ל-requestScrollToPage. העדכון הזה לא משנה את ההתנהגות הקיימת בשום צורה, אלא אם מתבצעת קריאה אל requestScrollToPage. (Ic4213)
  • השקנו את requestScrollToItem ב-LazyGrids. בכל מעבר מדידה, הלקוח יכול עכשיו לבטל את ההסכמה לשמירת האינדקס על סמך המפתח על ידי קריאה ל-requestScrollToItem. העדכון הזה לא משנה את ההתנהגות הקיימת בשום צורה, אלא אם מתבצעת קריאה אל requestScrollToItem. (I0a7a0)
  • ‫ClickableText מסומן כהוצאה משימוש. כדי להוסיף קישורים לטקסט, יוצרים AnnotatedString עם LinkAnnotation שמתאים לקישור ומעבירים את AnnotatedString הזה ל-Text composable ‏ (I34d4b, ‏ b/323346994)
  • האפשרות UrlAnnotation יצאה משימוש. במקומה צריך להשתמש ב-LinkAnnotation.Url. אם משתמשים בערכת נושא של Material, צריך להשתמש באובייקט TextDefaults כדי ליצור את ההערה עם ערכת הנושא של Material (I8d180, b/323346545)
  • השם של String.parseAsHtml שונה ל-AnnotatedString.Companion.fromHtml (I43dcd)
  • נוספו ארגומנטים של סגנון (linkStyle, ‏focusedLinkStyle, ‏hoveredLinkStyle) ומאזין לאינטראקציה עם קישור לשיטה parseAsHtml. כשמנתחים את המחרוזת עם תגי HTML באמצעות תגי <a>, השיטה יוצרת תג LinkAnnotation.Url לכל תג כזה ומעבירה את אובייקטי הסגנון ואת מאזין האינטראקציות עם הקישור לכל הערה. (I7c977)
  • הפקודה LinkAnnotation מקבלת עכשיו את הארגומנטים של העיצוב מבוסס-המצב ואת LinkInteractionListener. כדי להוסיף היפר-קישור, צריך להוסיף את ההערה הזו ל-AnnotatedString. אפשר להגדיר את ההגדרה החזותית של קישורים כשהם במצב מודגש או כשמעבירים מעליהם את העכבר באמצעות העברת הערכים focusedState או hoveredState או שניהם. (I81ce4, b/139312671)
  • הסרנו את דגל התכונה לצילומי מסך ארוכים. (I28648, ‏ b/329128246)
  • מעכשיו, LazyColumn יעבד כותרות קבועות בצורה נכונה בצילומי מסך ארוכים. (I8d239, ‏ b/329296635)
  • ייצבנו את רוב ממשקי ה-API הניסיוניים שנותרו, שהוצגו עם הגרסה החדשה של BasicTextField. (I714e2)
  • נוסף הפרמטר textObfuscationCharacter ל-BasicSecureTextField שקובע באיזה תו להשתמש בזמן ההסתרה של התוכן. (I0588b)
  • מקורות NestedScroll Drag and Fling מוחלפים ב-UserInput וב-SideEffect כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (תופעת לוואי) וגלגל העכבר והמקלדת (UserInput). (I40579)
  • הוספנו את LocalBringIntoViewSpec, התנהגות גלילה שמתמקדת ברכיבים ותלויה בפלטפורמה, שמוחלת בשכבת ה-modifier של Scrollable. ‫(I27aa5, b/317453911)
  • בוצעה הסרה של TextFieldCharSequence. ‫TextFieldBuffer.originalValues מוחלף ב-TextFieldBuffer.originalText וב-TextFieldBuffer.originalSelection. (I2c7d6)
  • השדה ImeOptions.hintLocales כבר לא יכול להכיל ערך null. אם רוצים להעביר רשימה ריקה של לוקאלים, צריך להשתמש ב-LocaleList.Empty. (Ic5bc4)
  • השם של getOffsetFractionForPage שונה לgetOffsetDistanceInPages. (Ia05e2)

תיקוני באגים

  • כשמצטרפים InputTransformations עם next, המערכת ממזגת עכשיו את KeyboardOptions שלהם בצורה תקינה לפי אפשרויות נפרדות, באמצעות השיטה החדשה KeyboardOptions.merge. ‫(Ie5304, ‏ b/295951492)
  • ‫AnchoredDraggableState targetValue כבר לא מתייחס יותר לספי מיקום. עכשיו יש לו סף משתמע של 50%, כלומר targetValue משתנה בנקודת האמצע בין שתי נקודות עיגון. (I82c2c)

External Contribution

  • שינוי השם של 2 ממשקי API לגלילה (I56a75)

גרסה ‎1.7.0-alpha06

‫3 באפריל 2024

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

תכונות חדשות

  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyColumn וב-LazyRow. בעבר היה אפשר להוסיף את המשנה Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי המאפיין הזה והשקנו שינוי מאפיין חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לתמוך בכל שלושת סוגי האנימציה: הופעה (fade in), היעלמות (fade out) ושינוי סדר. ‫(I2d7f7, ‏ b/150812265)
  • לקוחות של LazyColumn/LazyRow יכולים עכשיו לבטל את ההסכמה לשמירת אינדקס על סמך המפתח למעבר הקרוב למדידה, על ידי קריאה ל-LazyListState.requestToScroll שלא גורמת להשעיה. ‫(I98036, ‏ b/209652366)
  • הוספנו את ה-method‏ parseAsHtml למחרוזות עם סגנון: היא מאפשרת להמיר מחרוזת שמסומנת בתגי HTML ל-AnnotatedString. הערה: לא כל התגים נתמכים. לדוגמה, אי אפשר להציג עדיין רשימות עם תבליטים. (I84d3d)
  • הוספנו תמיכה ניסיונית בצילומי מסך ארוכים במאגרי גלילה של Compose באמצעות ה-API הרשמי של Android ‏ (ScrollCaptureCallback). התכונה הזו ניסיונית ויכול להיות שהיא לא תטפל כרגע בכל המקרים בצורה נכונה. לכן, בשלב הזה היא מושבתת כברירת מחדל. כדי להצטרף, מגדירים את הדגל ComposeFeatureFlag_LongScreenshotsEnabled לערך true. הדגל הזה יוסר לפני גרסת בטא 1.7. (I2b055, ‏ b/329296471)
  • הוספנו API חדש של GraphicsLayer כדי לספק גמישות רבה יותר במיקום ובהצגה של מופעי GraphicsLayer, ולתמוך בתכונות של הצגה מובנית בלי צורך בתיאום עם הטמעות של Composable כדי לציין מופעים של משני GraphicsLayer.

שינויים ב-API

  • לכל הפרמטרים KeyboardOptions יש עכשיו ערך לא מוגדר כברירת מחדל. נוספה שיטת KeyboardOptions.merge.
  • שם המאפיין KeyboardOptions.autoCorrect שונה ל-autoCorrectEnabled, והוא הוגדר כמאפיין שאפשר להגדיר בו ערך ריק (null), שמציין שלא צוין ערך. (Ia8ba0, ‏ b/295951492)
  • השם של outOfBoundsPageCount שונה לbeyondViewportPageCount. (I129c6)
  • הערך fun ClipEntry.getMetadata() השתנה ל-val ClipEntry.clipMetadata. (I50155)
  • בוצעה הסרה של TextFieldState.valueAsFlow(). עדיף להשתמש ב-snapshotFlow { state.text } או ב-snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • ארגנו מחדש את הפרמטרים InputTransformation.transformInput. הוסר originalValue: TextFieldCharSequence. במקום זאת, הערך הזה מועבר עכשיו עם אותו שם בTextFieldBuffer. הוסר גם הפרמטר valueWithChanges: TextFieldBuffer. ‫TextFieldBuffer הוא עכשיו היקף המקבל בפונקציה. (I919cc)
  • ‫BasicTextField(state) variant ו-BasicSecureTextField משתמשים עכשיו ב-KeyboardActionHandler במקום ב-KeyboardActions כדי לעבד פעולות שבוצעו באמצעות המקלדת הווירטואלית. (I58dda)
  • ממשקי API להעברת כתיבה ידנית בסטיילוס כדי לתמוך בכתיבה ידנית בסטיילוס בשדות קלט טקסט 'מזויפים'. ‫(I9c09c, ‏ b/327271923)
  • השם של KeyboardOptions.shouldShowKeyboardOnFocus שונה לshowKeyboardOnFocus. (Ib4b7a, ‏ b/295951492)
  • הפרמטר hintMediaTypes הוסר מ-Modifier.contentReceiver. כבר עודדנו מפתחים לבדוק את סוג המדיה של TransferableContent שהתקבל, כי יכול להיות שהוא לא תואם ל-hintMediaTypes שהוגדר. (I82f99)
  • שינינו את הסדר של הפרמטרים של BasicSecureTextField. הפרמטרים keyboardType ו-imeAction הוסרו לטובת המחלקה המלאה KeyboardOptions, תוך שמירה על אותן הגדרות ברירת מחדל שמתאימות ל-BasicSecureTextField. הוסר גם הפרמטר scrollState. (Ibbfa9)
  • הסוג של TextFieldState.text השתנה מ-TextFieldCharSequence ל-CharSequence. לכן, הוספנו את TextFieldState.selection: TextRange ו-TextFieldState.composition: TextRange? כדי לקרוא את הערכים של הבחירה והקומפוזיציה הנוכחיות ישירות מאובייקט המצב.
  • בוצעה הסרה של TextFieldState.forEachTextValue. (Idb2a2)
  • הפונקציות ClipboardManager.getClipMetadata ו-ClipboardManager.hasClip הוסרו. אפשר להשתמש ב-clipEntry.getMetadata() כדי לקרוא את המטא-נתונים של רשומת הקליפ הנוכחית. כדאי גם לבדוק את התוצאה של ClipboardManager.getClip אם היא null או לא, כדי להבין אם יש כרגע פריט בלוח. (I50498)
  • ‫ClipboardManager.setClip מקבל עכשיו ערך null כדי לאפשר ניקוי של לוח העריכה. (I7d2e9)
  • ‫ReceiveContentListener מומר לממשק פונקציות. בנוסף, הוסר עומס יתר של Modifier.receiveContent שמקבל למדה, כי ReceiveContentListener הוא עכשיו ממשק פונקציה.
  • השם של Modifier.receiveContent השתנה לModifier.contentReceiver. (I1e6af)
  • השם של TransferableContent.consumeEach שונה לTransferableContent.consume. (I1e462)
  • ‫rememberTextFieldState עבר לשלב של API יציב. (I37999)

תיקוני באגים

  • תוקן באג שגרם לכך שהווריאציה BasicTextField(state) לא פעלה עם מקלדות CJK(מבוססות קומפוזיציה). (I54425)
  • תוקן באג שבו Modifier.dragAndDropTarget() יכול היה להפנות לנתונים ישנים בתרחישים מסוימים עם שימוש חוזר ב-Modifier.Node. (I05bb1)
  • ביטלנו שינוי שבוצע לאחרונה בחוזה, שבו קריאות AnchoredDraggableState#anchoredDrag היו נסגרות בסוף פעולת anchoredDrag. (I95715)

גרסה ‎1.7.0-alpha05

‫20 במרץ 2024

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

שינויים ב-API

  • הוסרה התכונה הניסיונית LocalTextLinkStyle composition local לעיצוב היפר-קישורים. (Iebfa7)
  • הוסרה החלפה ניסיונית של BasicText עם הארגומנט onLinkClicked. בעתיד נשיק API חלופי לתמיכה בהיפר-קישורים. (I107d5)
  • הוסרו מאפיינים ו-methods שקשורים לנקודות קוד (Codepoints) בקטע TextFieldState ובקטע TextFieldBuffer. הסרנו גם את הסיומות inChars מממשקי ה-API שנותרו שקשורים לבחירה ולחיבור. (Ief7ce)
  • הערך של AnchoredDraggablecurrentValue יתעדכן עכשיו כשעוברים דרך נקודת עיגון. משתמשים ב-settledValue כדי לקבל את הסמנטיקה הקודמת של currentValue, ומתעדכנים רק כשמגיעים לעוגן. ההתקדמות מוצגת עכשיו כפונקציה (שדורשת נקודת התחלה ונקודת יעד) במקום כמאפיין. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • ‫BasicTextField(state), ‏ TextFieldState, ‏ InputTransformation, ‏ OutputTransformation, ‏ TextFieldLineLimits, ‏ TextFieldDecorator עברו לשלב היציב. (I9582b)
  • הוספנו את InterceptPlatformTextInput כדי לעזור לכתוב בדיקות ברמה נמוכה שקשורות ל-IME, ותרחישי שימוש אחרים ברמה נמוכה שקשורים ל-IME. האפשרות PlatformTextInputTestOverride הוצאה משימוש. (I862ed, ‏ b/322680547)
  • פיצול של restrictedConstraints() לשתי שיטות: fitPrioritizingWidth() ו-fitPrioritizingHeight() (I6d7fd)

External Contribution

  • נוספו 2 ממשקי API חדשים isLastScrollForward/isLastScrollBackward כדי לבדוק את כיוון הגלילה של פעולת הגלילה האחרונה, ולהחזיר false אם עדיין לא בוצעה פעולת גלילה. (I63a0e)

גרסה ‎1.7.0-alpha04

6 במרץ 2024

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

שינויים ב-API

  • תמיכה בתכונת כתב היד באמצעות סטיילוס במכשירים עם Android U ואילך. (I002e4)
  • הוספנו את hintLocales אל KeyboardOptions כדי לספק ל-TextFields את האפשרות להציע ל-IME לוקאלים ספציפיים כדי להגדיר מראש שפה מועדפת. (Id18c2)
  • הוסרו העומסים העודפים הניסיוניים BasicTextField2 ו-BasicSecureTextField שקיבלו פרמטרים של value: String ו-onValueChange: () -> String. (I568b4)
  • מוסיפים פונקציה אופציונלית applySemantics ל-InputTransformation כדי להשפיע על הסמנטיקה של BasicTextField2 שאליה היא מוחלת. (I74a2f, ‏ b/170648072)
  • ב-CL הזה אנחנו מוסיפים את הפעולה הסמנטית GetScrollViewportLength כדי שנוכל להעביר מידע על הרכיבים שמוצגים בגלילה ב-Compose למערכת הנגישות. ב-CL הזה מיושם גם השימוש במאפיין הזה ברשימות הניתנות לגלילה של Foundation. (Ic5fa2)
  • השם של BasicTextField2 השתנה לBasicTextField. (Ie5713)
  • ‫FocusRequester.createRefs יציב עכשיו (I4d92c, ‏ b/261436820)
  • הוספנו את DelegatableNode.scrollIntoView() כדי לאפשר לצמתי שינוי לבצע בקשות scrollIntoView ישירות. ‫(I2b3b7, ‏ b/299939840)
  • הוספנו את DelegatableNode.requireView() כדי לאפשר לצמתי modifier לקבל את View הנוכחי ב-Android בלי לקרוא את המיקום המקומי של הקומפוזיציה. (I40768)
  • הוספנו מידע על פריסה לפי הקשר ב-Contextual Flow Row Scope וב-Contextual Flow Column Scope, כולל אינדקס שורות, מיקום ומגבלות על הרוחב והגובה המקסימליים כדי שהרכיב יישאר במיקום שצוין. פריטים שחורגים מהרוחב או מהגובה המקסימליים עשויים לעבור לשורה הבאה או להיות מושמטים, בהתאם להגדרות הגלישה. (Id13f8, b/292114798)

תיקוני באגים

  • תוקן באג שגרם לקריסה בתנאים מסוימים, כשמפעילים או משביתים את המאפיינים enabled או readOnly של TextField. (Iae17b)

גרסה ‎1.7.0-alpha03

‫21 בפברואר 2024

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

שינויים ב-API

  • השקנו את DelegatableNode.requireLayoutCoordinates() כדרך לקבל את Modifier.Node הנוכחי של LayoutCoordinates בלי שתצטרכו לבטל את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Ia8657)
  • השקנו את DelegatableNode.currentLayoutCoordinates כדרך לקבל את Modifier.Node הנוכחי של LayoutCoordinates בלי שתצטרכו לבטל את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Iaebaa)
  • אופטימיזציות של הביצועים ב-DraggableAnchors שמשמשות את AnchoredDraggable. (I89cff)
  • ‫BasicTextField2 וממשקי API קשורים בחבילה androidx.compose.foundation.text2 מועברים אל androidx.compose.foundation.text. (I9f635)
  • הפרמטר BasicTextField2 לא מקבל יותר את הפרמטר CodepointTransformation. אפשר להשתמש ב-BasicSecureTextField או ב-OutputTransformation. (Id34ff)
  • נוספה שיטה להשוואה רק בין ההערות של שני AnnotatedStrings. (I32659)
  • חדש: ContextualFlowRow וFlowRow/Column משופרים עם MaxLines וOverflow. אנחנו שמחים להודיע על שיפורים בתכונות הניסיוניות FlowRow ו-FlowColumn, שכוללות עכשיו תמיכה בmaxLines ובגלישה מעבר למסך, וגם על השקת התכונות ContextualFlowRow ו-ContextualFlowColumn. העדכון הזה נועד לספק רכיבים עם ביצועים אופטימליים. הרכיב ContextualFlow* מתאים למספר גדול של פריטים שמשתמשים בהגדרת maxLines קטנה ובמספר דינמי של לחצנים מסוג 'עוד' (‎+N). הרכיבים FlowRow ו-FlowColumn מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow או ב-FlowColumn, שבה כל הפריטים מורכבים בלי קשר להתאמה למקסימום של הציר הניצב, צריך להגדיר את overflow ל-FlowRowOverflow.Visible או ל-FlowColumnOverflow.Visible במהלך האתחול. כדאי לנסות את ContextualFlowRowSample וFlowRowSample כדי לראות דוגמאות לשימוש בתכונות החדשות האלה. (Ib9135, ‏ b/293577082)

תיקוני באגים

  • האנימציה של הסמן לא מבקשת יותר פריימים בין מצבי ההפעלה וההשבתה. (Ia2253)
  • KeyboardOptions' deprecated copy constructors will now correctly copy all properties. (If12de)

גרסה ‎1.7.0-alpha02

‫7 בפברואר 2024

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

שינויים ב-API

  • הגרסאות HorizontalPager, VerticalPager וגם PagerState הועברו לגרסה יציבה. (I67660, ‏ b/316966909)
  • נוסף LocalTextLinkStyle composition local שמאפשר לשנות את הסגנון של הקישורים בטקסט באפליקציה. אם אתם משתמשים בערכת נושא משלכם באפליקציה, אתם צריכים להגדיר את ה-composition local הזה בהתאם לערכת הנושא שלכם. כשמשתמשים בעיצוב Material, צבע הקישור מוגדר כברירת מחדל לצבע הראשי של Material. (I7eb10)
  • הוספנו את receiveContent modifier שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack Compose.
  • ‫receiveContent משתלב עם BasicTextField2 כדי לקבל תוכן עשיר שמסופק על ידי המקלדת הווירטואלית או באמצעות פעולת הדבקה מלוח העתקה. (I81b72)
  • במסגרת השינוי הזה, אנחנו מחליפים את SnapFlingBehavior ב-TargetedFlingBehavior ברכיב pager כדי לאפשר תרחישי שימוש נוספים ולספק גמישות רבה יותר. (I762ea)
  • בשינוי הזה אנחנו הופכים את ממשקי ה-API של Snapping ליציבים. בנוסף, אנחנו מנקים חלק מקוד הבדיקה ומוסיפים עוד דוגמאות ל-Snapping. (Id8da9)
  • הוספנו את TargetedFlingBehavior, FlingBehavior שמאפשר להפיץ מידע על מצב האנימציה הפעילה ועל היעד שלה למיקום הגלילה. (I6a207)

תיקוני באגים

  • ‫BasicTextField2 שומר עכשיו את הסמן בתצוגה בזמן ההקלדה, אם הוא יצא מהתצוגה בגלל גלילה או בגלל קלט. (Ieb856, ‏ b/237190748)

External Contribution

  • נוסף API ניסיוני להגדרת התנהגות טעינה מראש של LazyLists. (I022a4)

גרסה ‎1.7.0-alpha01

‫24 בינואר 2024

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

תכונות חדשות

  • נוסף Indication API חדש, IndicationNodeFactory. התוצאה היא הטמעות של Indication עם ביצועים טובים יותר בהשוואה ל-API הקודם (שכבר יצא משימוש) של rememberUpdatedInstance. מידע על העברה זמין בכתובת developer.android.com.
  • הפרמטר clickable / combinedClickable / selectable / toggleable מקבל עכשיו פרמטר MutableInteractionSource שניתן להגדיר כ-nullable. אם הערך הוא null, והערך שסופק Indication הוא IndicationNodeFactory, אפשר ליצור את Indication רק כשצריך, מה שמשפר את הביצועים. אם אתם לא משתמשים ב-MutableInteractionSource, מומלץ להעביר null.

שינויים ב-API

  • השינוי הזה, שהוצג בגרסה DecayAnimation של AnchoredDraggable, מוסיף פרמטר decayAnimationSpec ל-AnchoredDraggable ומאפשר להשתמש באנימציית דעיכה כשמגיעים לאחד העוגנים. השינוי כולל גם שינוי השם של animationSpec הקיים ל-snapAnimationSpec כדי לעזור להבין את תרחיש השימוש של כל מפרט.
  • ‫BasicTextField2 זמין לשימוש ניסיוני. היא צריכה להיות דומה ל-BasicTextField מבחינת התכונות, וההתנהגות שלה צריכה להיות מוכנה לשימוש בסביבת ייצור. עם זאת, ה-API עדיין ניסיוני בשלב הזה. לפני הייצוב, השם ישתנה ל-BasicTextField והוא יועבר לאותה חבילה.
  • השקנו את הטיוטה הראשונה של OutputTransformation API ל-BasicTextField2. ה-API הזה מחליף את רוב תרחישי השימוש ב-VisualTransformation בגרסה הישנה של BasicTextField. עם זאת, הוא עדיין לא הושלם, ויש דברים שלא יפעלו כמו שצריך. נשמח לקבל משוב על השימושיות של ה-API בתרחישי השימוש שלכם. (aosp/2708848)
  • השקנו את LinkAnnotation שמאפשר להוסיף קישורים ורכיבים שאפשר ללחוץ עליהם לטקסט. התכונה 'קישורים' עדיין לא הושלמה, וצפויים שינויים נוספים ב-API.
  • הוספנו את receiveContent modifier שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack Compose.
  • ‫receiveContent משתלב עם BasicTextField2 כדי לקבל תוכן עשיר שמסופק על ידי המקלדת הווירטואלית, או באמצעות הדבקה מהלוח.
  • ‫KeyboardOptions.shouldShowKeyboardOnFocus מאפשרת להשבית את התנהגות ברירת המחדל של BasicTextField של בקשת מקלדת וירטואלית במיקוד.
  • הפונקציות TextInputService ו-LocalTextInputService הוצאו משימוש. במקום זאת, אפשר להשתמש ב-PlatformTextInputModifierNode כדי לבצע שילוב ישירות עם ממשקי ה-API של IME בפלטפורמה. (aosp/2862698)
  • האפשרות Indication#rememberUpdatedInstance הוצאה משימוש. הוא גורם לירידה משמעותית בביצועים שאי אפשר להימנע ממנה, ומונע אופטימיזציות אחרות. במקום זאת, צריך להשתמש ב-IndicationNodeFactory API החדש.

תיקוני באגים

  • ‫BasicTextField יבצע עכשיו אימות מראש של מבחר קטן של מיפויים של היסטים כשמעבירים את VisualTransformation. כך אפשר לזהות שגיאות נפוצות בקידוד שמובילות לחריגים שלא ניתן לשחזר בשלבים מאוחרים יותר של המדידה או של מעבר הציור. השגיאות האלה מוצגות במהלך ההרכבה, ולכן יש סיכוי גבוה יותר שהמפתחים יראו אותן במהלך הפיתוח, וכך יוכלו למנוע קריסות בסביבת הייצור. (I0fd42)
  • ‫VisualTransformation לא יקפיץ הודעת שגיאה אם מחזירים אינדקס לא תקין לאינדקס לא תקין (b/316401857 )

גרסה 1.6

גרסה 1.6.8

‫12 ביוני 2024

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

גרסה 1.6.7

‫1 במאי 2024

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

גרסה 1.6.6

‫17 באפריל 2024

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

תיקוני באגים

  • תוקן באג שגרם לקריסה בתנאים מסוימים, כשמפעילים או משביתים את המאפיינים enabled או readOnly של TextField. (Iae17b)

גרסה 1.6.5

‫3 באפריל 2024

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

תיקוני באגים

  • הוספנו יומני ניפוי באגים לבאגים שקשה לשחזר בשורה או בעמודה: (b/300280216 ו-b/297974033)

גרסה 1.6.4

‫20 במרץ 2024

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

תיקוני באגים

  • תנועת בחירה של לחיצה ארוכה ואז גרירה שיוצאת מגבולות הפריסה של הטקסט בפריים הראשון של הגרירה כבר לא גורמת לקריסה. (Icdf90, ‏ b/325307463)

גרסה 1.6.3

6 במרץ 2024

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

גרסה 1.6.2

‫21 בפברואר 2024

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

תיקוני באגים

  • פתרון בעיות שקשורות לאיפוס לא תקין של AnimateContentSize. (I07051)
  • נפתרה בעיה שגרמה לשמירת intrinsicHeight של טקסט במטמון יתר בנסיבות מסוימות. (3cd398, b/217910352)

גרסה 1.6.1

‫7 בפברואר 2024

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

תיקוני באגים

  • תיקון של מדד רשת מדורגת כשמגללים מעבר למגבלה. (bffc39)
  • הוספת בדיקה של פריסה עם מאפיינים גדולים. (e74af5)
  • תיקון המיקום של פריטים בגודל 0 בתחילת הרשת המדורגת. (785f94)
  • הפעלת הקריאה החוזרת onRelease באותו סדר כמו onForgotten. (31ce3b)

גרסה 1.6.0

‫24 בינואר 2024

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

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

  • נוסף משנה (Modifier) חדש Modifier.anchoredDraggable שמאפשר לגרור ולהנפיש בין קבוצה מוגדרת מראש של עוגנים. המשנה הזה נועד להחליף את Modifier.swipeable. במדריך להעברת נתונים מוסבר איך להשתמש בכלי הזה ואיך להעביר נתונים מ-Modifier.swipeable.
  • נוספה פונקציונליות של גרירה ושחרור בין אפליקציות ורכיבים. כדאי לעיין במאמרים בנושא DragAndDropTarget, Modifier.dragAndDropSource ובממשקי API אחרים כדי להתחיל
  • ‫Modifier.draggable2D הוא משנה חדש שמאפשר תמיכה קלה בגרירה דו-ממדית. לדוגמה
  • הוספנו את AndroidExternalSurface ו-AndroidEmbeddedExternalSurface כדי להקל על הוספת רכיבים מבוססי-משטח ב-Compose
  • שינויים ושיפורים שונים ב-API ב-Pager וב-snapFlingBehaviour
  • ממשקי API שונים של מיקוד, טקסט ושיבוץ הועברו לממשקי API יציבים

גרסה ‎1.6.0-rc01

‫10 בינואר 2024

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

שינויים ב-API

  • הוסר בנאי התוסף DragAndDropTarget(). יוצרים מופע חדש באמצעות object: DragAndDropTarget {}. (I32318)

גרסה ‎1.6.0-beta03

‫13 בדצמבר 2023

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

תיקוני באגים

  • תוקן קראש שהשפיע על טקסט גדול מאוד שנמדד עם אילוצים אינסופיים. (I1a7df, ‏ b/312294386)
  • ‫PlatformImeOptions היא עכשיו מחלקה קונקרטית במקום ממשק. (If40a4)

גרסה ‎1.6.0-beta02

‫29 בנובמבר 2023

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

תיקוני באגים

  • תיקון של בעיה שבה canScroll לא מתעדכן אחרי גלילה שכוללת רק שינוי פריסה. (I60a86)
  • תיקון ל-Modifier.animateItemPlacement() ול-LookaheadScope אחרי גלילות קטנות. (I3a2b7)

גרסה ‎1.6.0-beta01

‫15 בנובמבר 2023

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

שינויים ב-API

  • המשנה DragAndDropTarget מקבל עכשיו את DragAndDropTarget באופן מפורש, ויש לו ביטוי למדה כדי להצטרף לסשן של גרירה ושחרור. עכשיו יש שתי פונקציות ליצירת אובייקט DragAndDropModifierNode. אחד לקבלת העברות ואחד להעברת נתונים (I69481)
  • העדכון של maximumFlingVelocity מיוצג כ-Float. עדכנו את התיעוד כדי להבהיר את נושא maximumFlingVelocity unity. (I8adc7)
  • השם של onDragAndDropStart במפעל DragAndDropModifierNode שונה ל-acceptDragAndDropTransfer.

    המשתמש acceptsDragAndDropTransfer נוסף ל-dragAndDropTarget Modifier כדי לאשר את ההעברה באמצעות גרירה ושחרור. פונקציית ה-lambda הזו מחזירה ערך מתאים DragAndDropTarget אם יש עניין בסשן של גרירה ושחרור. הפונקציה הזו מחליפה פונקציות למבדה אחרות לעיבוד אירועי גרירה.

    נוספה פונקציית יצירה DragAndDropTarget לקבלת נתונים מסשנים של גרירה ושחרור (Iebf3a)

  • חשיפת startDragImmediately ב-AnchoredDraggable מאפשרת לזהות תנועות גרירה כשמשתמשים בה. כדאי להגדיר את הפרמטר הזה כשהווידג'ט מונפש לעוגן יעד. לדוגמה ‫(Ie6d13, ‏ b/285139987)

  • ‫Foundation Tooltip APIs זמינים עכשיו בגרסה @ExperimentalFoundationApi (I30b0b)

  • הוסר DragAndDropInfo כסוג. DragAndDropModifierNode.drag מקבל עכשיו פרמטרים עבור transferData, גודל הקישוט וגרירת הקישוט DrawScope lambda

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

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

    הוסרה DragAndDropEventType (I645b1)

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

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

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

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

  • הפרמטר clippingEnabled של Modifier.magnifier נקרא עכשיו clip.

  • הפרמטר magnifierCenter של Modifier.magnifier הופך לפרמטר שאפשר להגדיר כ-nullable, תוך שמירה על התנהגות ברירת המחדל. (I6aa66)

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

תיקוני באגים

  • צריך להטמיע equals ו-hashcode עבור PageSize.Fixed. (Ie3ede, b/300134276)
  • תוקן באג שגרם לכך שהפריסה BasicText לא הצטמצמה כשminWidth השתנה וminWidth היה קטן מאילוצי המידה הראשוניים maxWidth (Idb19c)
  • הוספנו תמיכה ב-Renderer ל-Sweep Gradient ב-ArcLine. (I4d5bb)
  • תיקון בעיה בתאימות בינארית לשינוי של Window Inset‏ (Iee695)
  • הסרנו את שכבת הליבה של Material עבור רכיב Chip/Button של Material3, כי המיקרו-בנצ'מרקים מראים ביצועים טובים יותר בלעדיה. (I55555)

גרסה ‎1.6.0-alpha08

‫18 באוקטובר 2023

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

תכונות חדשות

  • ‫Modifier.draggable2D הוא משנה חדש שמאפשר תמיכה קלה בגרירה דו-ממדית. דוגמה (Id95f5, b/214412658)

שינויים ב-API

  • השם של פונקציית ה-lambda‏ onDrawDragShadow ב-Modifier.dragAndDrawSource שונה ל-drawDragDecoration, והשם של פרמטר הגודל ב-DragAndDropInfo שונה ל-dragDecorationSize. (Id0e30, ‏ b/303904810)
  • הפרמטר decorationBox של BasicTextField2 נקרא עכשיו decorator. הסוג שלו משתנה גם לממשק מקביל וכיפי TextFieldDecorator. (I23c1c)

תיקוני באגים

  • שיפרנו את התיעוד בנושא BasicTextField בנוגע לדרישות של onValueChange. (I90fc9, ‏ b/160257648)

גרסה ‎1.6.0-alpha07

‫4 באוקטובר 2023

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

שינויים ב-API

  • השקנו את PlatformTextInputMethodTestOverride לכתיבת בדיקות לעורכי טקסט בהתאמה אישית. (Id159b)
  • השם של GraphicsSurface שונה ל-AndroidExternalSurface (I11680)
  • נוסף DisableNonLinearFontScalingInCompose דגל זמני להשבתת שינוי גודל הגופן הלא ליניארי. אם אתם צריכים זמן לנקות את הבחנים, אתם יכולים להגדיר DisableNonLinearFontScalingInCompose = true בבחנים. הדגל הזה יוסר ב-Compose 1.6.0-beta01. (Ic9486)
  • נוספו אוספים של ColorList ושל ColorSet שלא נכללים בהקצאות. (I744bd)
  • השינוי הזה מסיר את shortSnapVelocityThreshold שהפך לפרט הטמעה של ההטמעות של SnapLayoutInfoProvider. (I65f6d)
  • נוספו dragAndDropSource Modifier להפעלת סשנים של גרירה ושחרור, ו-dragAndDropTarget Modifier לקבלת נתונים מסשנים של גרירה ושחרור (Ib7828, b/286038936)
  • עדכון המסמכים של SnapPositionInLayout ושיטת המיקום. הוספת מרווחי תוכן לשיטת המיקום ב-SnapPositionInLayout. (Id7938, b/300116110)
  • הוספנו את UndoState ל-TextFieldState, שמאפשר לבטל או לבצע מחדש את השינויים שהמשתמש ביצע. (Icc024)

תיקוני באגים

  • תוקנה הבעיה שבה basicMarquee לא מונפש אחרי שינוי המהירות. (Id2e77, b/297974036)

גרסה ‎1.6.0-alpha06

‫20 בספטמבר 2023

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

תכונות חדשות

  • עטיפות חדשות שאפשר להרכיב ל-SurfaceView, ל-TextureView: GraphicsSurface() ול-EmbeddedGraphicsSurface(). זהו API ניסיוני, והוא כפוף לשינויים ולתיקונים. (I9ddb2)
  • ‫Modifier.magnifier() הוא עכשיו API יציב. השינוי הזה כולל את ההסרה של MagnifierStyle לטובת פרמטרים מוטמעים בתוך משנה המיקום עצמו. (I83bec, ‏ b/298381260, ‏ b/262367109, ‏ b/261438887)

שינויים ב-API

  • המאפיינים updateCurrentPage ו-updateTargetPage נוספו בגרסה ScrollScope. אלה המאפיינים האחרונים שנדרשים כדי לאפשר התאמה אישית של אנימציית גלילה ב-PagerState.scroll. (I9cad5, ‏ b/267744105, ‏ b/243786897)
  • הסרת הצפיפות מהמכשיר SnapFlingBehavior. בכל ההטמעות של SnapLayoutInfoProvider כבר יש דרך לגשת לצפיפות, ולכן אפשר להסיר את היקף המקלט, מה שיוביל להטמעה פחות מורכבת של SnapFlingBehavior וגם של SnapLayoutInfoProviders. (I153c3)
  • עוד משנים סומנו כיציבים. (I56af1, ‏ b/298046462)
  • SnapStepSize הוסר מהרשימה SnapLayoutInfoProvider. החישוב צריך להתבצע באמצעות פרטי הפריסה ולספק אותו באמצעות הגישה או ההיסטים של ההצמדה. (If320c)

שינויים בהתנהגות

  • התכונה 'יצירת אימייל' משתמשת עכשיו בסקאלת גופנים לא לינארית כדי לשפר את הקריאות והנגישות. כשקנה המידה של הגופן גדול מ-100% בהגדרות המערכת, גודל הטקסט הקטן יגדל באופן רגיל, אבל גודל הטקסט שכבר גדול יגדל רק קצת. בנוסף, גובה השורה שמוגדר ב-SP יותאם באופן אוטומטי כדי לשמור על יחס פרופורציונלי לגובה המיועד של 100%. מידע נוסף זמין במאמר בנושא שיטות מומלצות לשינוי גודל הגופן. (I11518)

תיקוני באגים

  • להסיר את השימוש ב-rememberSaveable להצגת הסברים קצרים. (Icc131, b/299500338)

גרסה ‎1.6.0-alpha05

‫6 בספטמבר 2023

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

שינויים ב-API

  • מוסיפים עומסים יתרים ל-BasicSecureTextField שמקבלים ערך קבוע וקריאה חוזרת לשינוי הערך הזה, בדיוק כמו ה-API הנוכחי של BasicTextField. (Ia4882)
  • מוסיפים Modifier.preferKeepClear() כדי לסמן את הפעילות כניתנת להרכבה, כדי להימנע מחלונות צפים ב-API 33 ומעלה. ‫(Ib51d5, ‏ b/297260115)
  • המהירויות של תנועות ההטלה ברכיבי התצוגה כמו ScrollView ו-RecyclerView מוגבלות ל-ViewConfiguration.ScaledMaximumFlingVelocity. ‫Compose כולל עכשיו גרסה משלו של maximumFlingVelocity, שחלה עכשיו על Draggable. (Ibf974)
  • הוסרו עומסי יתר (overloads) של Pager ו-PagerState שהוצאו משימוש. (Iea07e)
  • הוספנו את BasicTooltipBox ל-compose.foundation ועדכנו את PlainTooltipBox ואת RichTooltipBox כדי להשתמש ב-TooltipBox עם רכיבי PlainTooltip ו-RichTooltip חדשים. (I79e1d)

גרסה ‎1.6.0-alpha04

‫23 באוגוסט 2023

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

שינויים ב-API

  • הוספנו ממשק ReusableComposition לניהול מחזור החיים של רכיבי משנה ולשימוש חוזר בהם. (I812d1, ‏ b/252846775)
  • גרסה Modifier.focusGroup קודמה לגרסה יציבה של ממשקי API. (I7ffa3)
  • מוסיפים עומסים יתרים ל-BasicTextField2 שמקבלים ערך קבוע וקריאה חוזרת לשינוי הערך הזה, בדיוק כמו ה-API הנוכחי של BasicTextField. (I3f2b8)
  • ‫GridItemSpan::currentLineSpan הוא עכשיו API יציב. (Icc29c)
  • ‫Canvas שמקבל contentDescription הוא עכשיו API יציב. (Ib3d29)
  • הוספנו את המאפיין viewportSize ב-ScrollState. המאפיין הזה מאפשר לדעת את הגודל viewPort של הרכיב שמשתמש ב-ScrollState אחרי המדידה. (I8b85a, b/283102682)
  • תוקנה בעיה שבה האחזור המקדים ב-Pager לא תאם להתנהגות ב-Views. (I93352, ‏ b/289088847)
  • הגרסה Modifier.consumeWindowInsets(PaddingValues) יציבה עכשיו.
    • ה-API‏ Deprecated Modifier.consumedWindowInsets הוסר. במקומה צריך להשתמש במדיניות Modifier.consumeWindowInsets. (Id72bb)

גרסה ‎1.6.0-alpha03

‫9 באוגוסט 2023

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

שינויים ב-API

  • נוספה עומס יתר של LazyLayout, הוא מקבל למדה של LazyLayoutItemProvider, ולא אובייקט רגיל כמו קודם. העומס הקודם הוצא משימוש. (I42a5a)
  • הוספנו תמיכה בהגדרה של privateImeOptions (Idb772)

תיקוני באגים

  • תוקנה בעיה שבה שדות טקסט הציגו מקלדת ואפשרו עריכה כש-readOnly היה true. בנוסף, תוקנה בעיה שגרמה לכך שהמקלדת לא הוצגה כשreadOnly השתנה מ-true ל-false בזמן שהיה מיקוד. (I34a19, b/246909589)

גרסה ‎1.6.0-alpha02

26 ביולי 2023

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

שינויים ב-API

  • הוספנו את PagerLayoutInfo עם מידע שנאסף אחרי שהבדיקה עברה בהצלחה ב-Pager. הוספנו גם את PageInfo, מידע על דף יחיד שנמדד ב-Pager. ‫(Iad003, b/283098900)
  • הוספת הערות כדי לציין אילו קלומפוזבלים מותרים (I51109)
  • הוספנו את SemanticsNodeInteraction.requestFocus כדרך נוחה יותר לבקש התמקדות בבדיקות. (Ie8722)
  • עיצוב מחדש מלא של PlatformTextInput* API. (I6c93a, ‏ b/274661182, ‏ b/267235947, ‏ b/277380808)
  • התכונות SoftwareKeyboardController ו-LocalSoftwareKeyboardController כבר לא ניסיוניות. LocalSoftwareKeyboardController הוא עכשיו גם CompositionLocal. (I4c364)
  • ‫Modifier.transformable מספק עכשיו את הפרמטר canPan pan delta כדי לעזור לקבוע את כיוון הפנורמה ולאפשר או לא לאפשר אותה. (I692aa, ‏ b/266829800)
  • העדכון של התאמת המחיר consumeWindowInsets מרחיב את מחלקת העל AbstractComposeView (Iacd74, ‏ b/269479941)

גרסה ‎1.6.0-alpha01

‫21 ביוני 2023

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

תכונות חדשות

  • הוספנו AnchoredDraggable API חדש ב-Foundation. אפשר להשתמש בו כדי לבנות רכיבים שאפשר לגרור בין מצבים נפרדים, כמו גיליונות תחתונים של חלונות קופצים. ה-API הזה מחליף את Swipeable API של Material. (I4a2ed)

שינויים ב-API

  • תמיכה ב-InputConnection#requestCursorUpdates (I0c69b)
  • הוספנו את scrollAnimationSpec כדי לאפשר הגדרות אנימציה בהתאמה אישית. הגרסה עודכנה מ-BringIntoViewCalculator ל-BringIntoViewScroller. (Idb741)
  • הוספת ResourceResolutionException type כדי לעטוף throwables שמופעלים כשמנסים לטעון נכסי bitmap עם תיאור של נתיב הנכס שלא נטען. (I19f44, b/230166331, b/278424788)
  • נוספו מאפיינים ופעולות סמנטיים לתמיכה בתרגום טקסט. (I4a6bc)
  • הוספנו BringIntoViewCalculator API שאפשר להשתמש בו כדי להתאים אישית את האופן שבו רכיבים כמו Scrollable מגיבים לבקשות bringIntoView. השתנה העומס של scrollable כך שיקבל אופציונלית מופע של BringIntoViewCalculator. (Iaf5af)

תיקוני באגים

  • הוספנו בדיקת lint כדי להזהיר אם יוצרים MutableInteractionSource בקומפוזיציה בלי לזכור אותו, בדומה לבדיקות ה-lint ליצירת מצב שניתן לשינוי או Animatable. (I5daae)
  • הוספנו תמיכה בבחירה באמצעות העכבר. הבחירה באמצעות מגע תתרחב לפי מילה ותצטמצם לפי תו. (Ic0c6c, b/180639271)
  • נוסף ממשק FocusTargetModifierNode שאפשר להשתמש בו כדי ליצור FocusTarget בהתאמה אישית. (I9790e)

גירסה 1.5

גרסה 1.5.4

‫18 באוקטובר 2023

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

גרסה 1.5.3

‫4 באוקטובר 2023

‫androidx.compose.foundation:foundation-*:1.5.3 מופץ. אין שינויים בגרסה הזו.

גרסה 1.5.2

‫27 בספטמבר 2023

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

תיקוני באגים

  • תוקן באג בטקסט שגרם לקריסות בנסיבות מסוימות כשסמנטיקה בוטלה.

גירסה 1.5.1

‫6 בספטמבר 2023

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

תיקוני באגים

  • תוקנה בעיה שבה שדות טקסט הציגו מקלדת ואפשרו עריכה כש-readOnly היה true. בנוסף, תוקנה בעיה שגרמה לכך שהמקלדת לא הוצגה כשreadOnly השתנה מ-true ל-false בזמן שהיה מיקוד. (I34a19, b/246909589)

גרסה 1.5.0

‫9 באוגוסט 2023

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

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

  • הרבה משנים בסיסיים, כולל Modifier.clickable,Modifier.draggable, Modifier.scrollable, משנה פריסה ועוד, הועברו אל Modifier.Node API, וכך צומצם העומס על הקומפוזיציה הראשונית.
  • שיפורים ביציבות של מכשירי פייג'ר. טופלו באגים רבים.
  • הפרמטרים של pageCount נמצאים עכשיו ב-PagerState ולא ב-Pager עצמו

גרסה ‎1.5.0-rc01

26 ביולי 2023

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

תיקוני באגים

  • אפשר לבצע בדיקה אופציונלית כדי לקבל המלצה להעביר mutableStateOf() קריאות לסוגים המקבילים והמיוחדים שלהן עבור פרימיטיבים. מזהה ה-lint הוא AutoboxingStateCreation. בעבר, הבדיקה הזו הופעלה כברירת מחדל בכל הפרויקטים. כדי לראות את האזהרה הזו בעורך של Android Studio ובפלט של lint בפרויקט, צריך לשנות את רמת החומרה שלה מ'מידע' ל'אזהרה' (או לרמה גבוהה יותר) על ידי הצהרה על warning "AutoboxingStateCreation" בתוך ההגדרה build.gradle או build.gradle.kts של המודול, כמו שמוצג (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

גרסה ‎1.5.0-beta03

‫28 ביוני 2023

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

גרסה ‎1.5.0-beta02

‫7 ביוני 2023

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

גרסה ‎1.5.0-beta01

‫24 במאי 2023

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

שינויים ב-API

  • מטמיעים את PlatformDataProvider כדי לספק נתונים של דופק וצעדים יומיים. ממשק SensorGateway מוסר מה-API הציבורי. (I55b84)

תיקוני באגים

  • הפחתת הקצאות במהלך מדידות של רשימות, רשתות וכו' (Iaf9e2)
  • הקצאות מופחתות כשמחילים תמונות מצב (I65c09)
  • הוסרו הקצאות מאנימציות של קפיץ (Ie9431)
  • ההקצאה הוסרה מ-TextLayout (I0fd11)
  • הוסרו הקצאות מרובות במעקב אחר מהירות המצביע (I26bae)

גרסה ‎1.5.0-alpha04

‫10 במאי 2023

‫androidx.compose.foundation:foundation:1.5.0-alpha04 וגם androidx.compose.foundation:foundation-layout:1.5.0-alpha04 מופצים. גרסה ‎1.5.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את הפונקציה TextStyle.merge(...) שעברה אופטימיזציה עם רשימת פרמטרים מלאה. (Iad234, b/246961787)
  • הצגת SnapLayoutInfoProvider שאפשר להשתמש בו עם LazyGridState. (I92134, b/269237141, b/260914964)
  • המאפיין הניסיוני Modifier.animateItemPlacement() נוסף להיקף הפריט של רשתות מדורגות עם טעינה עצלה. אפשר להחיל אותו על הפריטים כדי להשיג את האנימציות של שינוי המיקום או הסידור מחדש של האוטומציה. (I4b62d, b/257034719)
  • קידום GridCells.FixedSize לגרסה יציבה. ‫FixedSize מגדיר LazyGrid שבו כל תא מקבל גודל מדויק בציר הניצב, והשטח שנותר מחולק לפי סידור הציר הניצב. (I8542f)
  • הוספנו את היקף המקבל PagerScope עבור Pager ופונקציית כלי עזר לחישוב היסט נתון של דף. (If2577)
  • הצגת snapPositionalThreshold כשיוצרים התנהגות של הצמדה בהטלה. הפרמטר הזה מאפשר לציין סף מיקום להצמדה קצרה ב-Pager. (If8f7f)
  • הטקסט SnapLayoutInfoProvider.calculateSnappingOffsetBounds הוחלף בטקסט calculateSnappingOffset. בשיטה החדשה אנחנו פשוט מבקשים את ההיסט הבא שאליו צריך להצמיד את המיקום. את החישוב של הגבולות צריך לבצע ברמת ההטמעה, כי הוא עשוי להיות שונה בהתאם לאופן שבו רוצים שההצמדה תתבצע. (I923a4)
  • ממשקי ה-API של LazyStaggeredGrid עברו לסטטוס יציב. (I633a5)
  • הסרת pageCount מהחשבון Horizontal/VerticalPager. צריך לספק את הנתונים האלה כשיוצרים את המצב. התפקידים PagerState ו-rememberPagerState עודכנו כדי לאפשר קבלת pageCount. ‫(Ieb52d, ‏ b/266965072)
  • הסרת pageCount מהחשבון Horizontal/VerticalPager. צריך לספק את הנתונים האלה כשיוצרים את המצב. התפקידים PagerState ו-rememberPagerState עודכנו כדי לאפשר קבלת pageCount. (Ifa3cb, ‏ b/266965072)
  • הוספת shortSnapVelocityThreshold ל-SnapFlingBehavior של Pager. (I7379e, ‏ b/275579012)
  • הוספה של FlowRowScope ושל FlowColumnScope. (I54fe2)

תיקוני באגים

  • שיחות לקבלת סמנטיקה בטקסט כשיש אילוצים minWidth ו-minHeight כבר לא קורסות. (Ibd072)
  • תוקנה רגרסיה שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי הרכיב הניתן להרכבה Dialog. (I82551, ‏ b/262140644)

גרסה ‎1.5.0-alpha03

‫19 באפריל 2023

‫androidx.compose.foundation:foundation:1.5.0-alpha03 וגם androidx.compose.foundation:foundation-layout:1.5.0-alpha03 מופצים. גרסה ‎1.5.0-alpha03 מכילה את השמירות האלה.

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

אם אתם רואים שינויים בטקסט שעבר רינדור, אתם יכולים לבצע ניפוי באגים על ידי הגדרת NewTextRendering1_5 = false כדי לאשר את ההבדל בהתנהגות. הגדרת הערך הזה תגרום להרכבה מחדש. אם אתם מבחינים בהבדלים בהתנהגות, אתם מוזמנים לדווח על באגים.

דגל הניפוי באגים יוסר לפני ההשקה של גרסת 1.5 beta01.(Iada23, ‏ b/246960758)

שינויים ב-API

  • הוספת FlowColumn/FlowRow בתוך השורה. (Idab37)

גרסה ‎1.5.0-alpha02

‫5 באפריל 2023

‫androidx.compose.foundation:foundation:1.5.0-alpha02 וגם androidx.compose.foundation:foundation-layout:1.5.0-alpha02 מופצים. גרסה ‎1.5.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו תמיכה בתאים בגודל קבוע ב-LazyGrid ובסידור שלהם באמצעות פריסה של ציר ניצב. (I83ed9, ‏ b/235121277, ‏ b/267942510)
  • הוספנו תמיכה בנתיבים בגודל קבוע ב-LazyStaggeredGrid ובסידור שלהם באמצעות פריסה של ציר ניצב. (I7d519)
  • אפשר עכשיו לפתוח UrlAnnotation ב-AnnotatedString באמצעות שירותי נגישות כמו TalkBack. (If4d82, ‏ b/253292081)
  • נוספה הפעולה הסמנטית InsertTextAtCursor לשדות טקסט. (I11ed5)
  • פעולות בדיקה שקשורות לטקסט (למשל performTextInput) יבקשו עכשיו להתמקד ישירות, באמצעות פעולת הסמנטיקה, במקום ללחוץ על השדה. (I6ed05)
  • הוספנו תמיכה בפריסה או ברווחים בין צירים באמצעות verticalArrangement ב-FlowRow ו-horizontalArrangement ב-FlowColumn. אנחנו גם מסירים את הרמה העליונה verticalAlignment ו-horizontalAlignment ב-FlowRow/FlowColumn. מפתחים יכולים להשתמש במקום זאת ב-Modifier.align. כך מצמצמים את הבלבול בין מוסכמות מתן השמות של verticalAlignment ושל verticalArrangement. (I87b60, ‏ b/268365538)

גרסה ‎1.5.0-alpha01

‫22 במרץ 2023

‫androidx.compose.foundation:foundation:1.5.0-alpha01 וגם androidx.compose.foundation:foundation-layout:1.5.0-alpha01 מופצים. גרסה ‎1.5.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הטקסט ו-BasicText עוברים רפקטורינג כדי להשתמש במערכת החדשה של שינוי מאפיינים. במקרים רבים, התוצאה היא שיפור משמעותי בביצועים. לא אמורים להיות שינויים גלויים. (If1d17, b/246961435)
  • נוספה הפעולה הסמנטית PerformImeAction להפעלת פעולת ה-IME בצמתים של עורך הטקסט. (Ic606f, ‏ b/269633506)

תיקוני באגים

  • עדכון פנימי של Modifier.hoverable. המשנה hoverable יוצג בכלי הבדיקה רק אם הוא מופעל. (I82103)

גרסה 1.4

גרסה 1.4.3

‫3 במאי 2023

‫androidx.compose.foundation:foundation:1.4.3 ו-androidx.compose.foundation:foundation-layout:1.4.3 יוצאים ללא שינויים (רק שינוי במספר הגרסה).

גרסה 1.4.2

‫19 באפריל 2023

‫androidx.compose.foundation:foundation:1.4.2 וגם androidx.compose.foundation:foundation-layout:1.4.2 מופצים. גרסה 1.4.2 מכילה את השמירות האלה.

גרסה 1.4.1

‫5 באפריל 2023

‫androidx.compose.foundation:foundation:1.4.1 וגם androidx.compose.foundation:foundation-layout:1.4.1 מופצים. גרסה 1.4.1 מכילה את השמירות האלה.

גרסה 1.4.0

‫22 במרץ 2023

‫androidx.compose.foundation:foundation:1.4.0 וגם androidx.compose.foundation:foundation-layout:1.4.0 מופצים. גרסה 1.4.0 מכילה את השמירות האלה.

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

  • נוסף שילוב של תאימות לאמוג'י ב-Text וב-TextField, וגם בפסקה ברמה הנמוכה יותר. ההגדרה הזו מופעלת כברירת מחדל כשמגדירים את emojicompat.
  • אפשר להגדיר את EmojiCompat בטקסט ספציפי באמצעות PlatformParagraphStyle.
  • נוספה תמיכה ברווחים מלאים בין שורות ל-LazyStaggeredGrid(I28252)
  • הוספה של onHover ניסיוני אל ClickableText (I6938f)
  • הוספנו עומסים חדשים לניסוי בפונקציה runComposeUiTest ולפונקציות create*ComposeRule שמקבלות פרמטרים מסוג CoroutineContext. ההקשר ישמש להרכבת הבדיקה ולכל קריאות LaunchedEffect ו-rememberCoroutineScope() בהרכבה. (I10614, ‏ b/265177763)
  • התגים FlowRow ו-FlowColumn זמינים עכשיו בתור @ExperimentalFoundationApi, ומאפשרים פריסה גמישה יותר של רכיבים שמבוססת על שורות ועמודות. הרכיבים יועברו לשורה חדשה אם לא יהיה מספיק מקום בציר הראשי. (I3a7b2)
  • האפשרות Modifier.basicMarquee() זמינה כניסיונית להצגת תוכן עם אפקט של כותרת רצה. (I2df44, b/139321650)

גרסה ‎1.4.0-rc01

‫8 במרץ 2023

‫androidx.compose.foundation:foundation:1.4.0-rc01 וגם androidx.compose.foundation:foundation-layout:1.4.0-rc01 מופצים. גרסה ‎1.4.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • השקנו PlatformTextInputAdapter API חדש ברמה נמוכה לבניית הטמעות מותאמות אישית של הזנת טקסט, שמתקשרות ישירות עם ממשקי API של הפלטפורמה. (I58df4)
  • הוספת תמיכה בפריסה הפוכה ל-LazyStaggeredGrid. (I3ef4a)

תיקוני באגים

  • הפעולה הסמנטית של BasicTextField's SetText תעדכן עכשיו את מאגר הטקסט באמצעות אותו נתיב קוד כמו עדכוני IME ופונקציות הבדיקה (לדוגמה, performTextReplacement).
  • פונקציות בדיקת הטקסט performTextClearance, performTextReplacement ו-performTextSelection משתמשות עכשיו ב-SemanticsActions. (I0807d, b/269633168, b/269624358)

גרסה ‎1.4.0-beta02

‫22 בפברואר 2023

‫androidx.compose.foundation:foundation:1.4.0-beta02 וגם androidx.compose.foundation:foundation-layout:1.4.0-beta02 מופצים. גרסה ‎1.4.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף Modifier.Node.onReset() callback חדש שמאפשר לאפס חלק מהמצב המקומי כדי לטפל בצורה נכונה במקרה שבו נעשה שימוש חוזר ב-Layout (למשל כפריט של LazyColumn). בוצע תיקון ב-FocusTargetModifierNode כדי לאפס את מצב המיקוד בצורה נכונה. ‫(I65495, ‏ b/265201972)
  • נוסף פרמטר BlendMode לשיטות DrawScope.drawText,‏ Paragraph.paint ו-MultiParagraph.paint כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508)
  • הסרנו את modifierElementOf() API. במקום זאת, צריך להשתמש ב-ModifierNodeElement. (Ie6d21)

תיקוני באגים

  • אי אפשר יותר לבחור חלק מדמות באמצעות שינוי הגודל של נקודות האחיזה של הבחירה. (Idedd1)
  • תיקון קריסה כשמקישים על Ctrl+Backspace בשדה ריק TextField (I0427f, b/244185537)

גרסה ‎1.4.0-beta01

‫8 בפברואר 2023

‫androidx.compose.foundation:foundation:1.4.0-beta01 וגם androidx.compose.foundation:foundation-layout:1.4.0-beta01 מופצים. גרסה ‎1.4.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • מאז גרסה 1.3, נוספה שילוב תאימות לאמוג'י ל-Text ול-TextField, וגם לפסקה ברמה נמוכה יותר. ההגדרה הזו מופעלת כברירת מחדל כשמגדירים את emojicompat.
  • אפשר להגדיר את EmojiCompat בטקסט ספציפי באמצעות PlatformParagraphStyle.

שינויים ב-API

  • נוספה הטמעה נפוצה של PinnableContainer API שמשמש בכל LazyLayouts כדי לשמור פריטים שיוצאים מהקומפוזיציה, אבל עדיין צריכים להיות פעילים. (If45a4)
  • השם של PinnableContainer.PinnedHandle.unpin() שונה לrelease() (I4667a)

External Contribution

  • נוסף מאפיין mainAxisItemSpacing אל LazyListLayoutInfo, אל LazyGridLayoutInfo ואל LazyStaggeredGridItemInfo (I52fad)

גרסה ‎1.4.0-alpha05

‫25 בינואר 2023

‫androidx.compose.foundation:foundation:1.4.0-alpha05 וגם androidx.compose.foundation:foundation-layout:1.4.0-alpha05 מופצים. גרסה ‎1.4.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • נוספה תמיכה בטווח מלא של שורות ל-LazyStaggeredGrid (I28252)
  • הוספה של onHover ניסיוני אל ClickableText (I6938f)
  • הוספנו עומסים חדשים לניסוי בפונקציה runComposeUiTest ולפונקציות create*ComposeRule שמקבלות פרמטרים מסוג CoroutineContext. ההקשר ישמש להרכבת הבדיקה ולכל קריאות LaunchedEffect ו-rememberCoroutineScope() בהרכבה. (I10614, ‏ b/265177763)

שינויים ב-API

  • מיזוג של ממשקי ה-API של OverscrollEffect לפני ואחרי לתוך פונקציות משולבות של 'מעצב' applyToScroll ו-applyToFling. בדוגמאות המעודכנות במסמכי התיעוד אפשר לראות איך מטמיעים אפקט של גלילה מעבר לקצה באמצעות מבנה ה-API החדש. (I8a9c4, b/255554340)
  • מידע נוסף על סוגים/מאפיין המציין אם ערך יכול להיות ריק (nullability) של פונקציות מוטמעות/מוסתרות שהוצאו משימוש (I24f91)
  • ממשקי ה-API‏ LineBreak ו-Hyphens ב-TextStyle עברו לשלב היציבות. (Ic1e1d)

תיקוני באגים

  • הסמן בשדות טקסט ימשיך להבהב גם כשהאנימציות מושבתות. (I95e70, ‏ b/265177763)
  • האמוג'י Modifier.basicMarquee מונפש עכשיו גם כשהאנימציות מושבתות בהגדרות המערכת. (I23389, ‏ b/262298306, ‏ b/265177763)

External Contribution

  • השיטות notifyFocusedRect ב-TextInputSession וב-TextInputService לא הוצאו שוב משימוש. (I23a04, b/262648050)

גרסה ‎1.4.0-alpha04

‫11 בינואר 2023

‫androidx.compose.foundation:foundation:1.4.0-alpha04 וגם androidx.compose.foundation:foundation-layout:1.4.0-alpha04 מופצים. גרסה ‎1.4.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • התגים FlowRow ו-FlowColumn זמינים עכשיו כ-@ExperimentalFoundationApi, ומאפשרים פריסה גמישה יותר של רכיבים שמבוססת על שורות ועמודות. הרכיבים יועברו לשורה חדשה אם לא יהיה מספיק מקום בציר הראשי. (I3a7b2)
  • האפשרות Modifier.basicMarquee() זמינה כניסיונית להצגת תוכן עם אפקט של כותרת נעה. (I2df44, b/139321650)

שינויים ב-API

  • התכונה FocusRequesterModifier הוצאה משימוש לטובת FocusRequesterNode (I7f4d7, ‏ b/247708726, ‏ b/255352203, ‏ b/253043481, ‏ b/247716483, ‏ b/254529934, ‏ b/251840112, ‏ b/251859987, ‏ b/257141589)
  • הקונסטרוקטור AndroidFont עם variationSettings הוא עכשיו API יציב, ואפשר להשתמש בו כדי ליצור סוגים חדשים של מתארי גופנים. (I5adcc, ‏ b/261565807)
  • הוספנו את PinnableContainer api שמופץ על ידי רשימות עצלניות באמצעות קומפוזיציה מקומית שמאפשרת להצמיד את הפריט הנוכחי. כלומר, הפריט לא יוסר כשהוא לא יוצג יותר במסך. לדוגמה, Modifier.focusable() יצמיד את הפריט הנוכחי שבמיקוד באמצעות המנגנון הזה. (Ib8881, ‏ b/259274257, ‏ b/195049010)
  • שכתבנו את האופן שבו רכיבים עם אפשרות גלילה מגיבים ל-bringIntoViewRequesters ורכיבים שאפשר להתמקד בהם, כדי לדמות טוב יותר את המורכבות של הפעולות האלה ולטפל ביותר מקרים חריגים. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • הוספנו עוד פונקציות שהוצאו משימוש ומוסתרות, עם אפשרות להחזרת ערך null (Ibf7b0)
  • נוספה התכונה הניסיונית TextMotion ל-TextStyle כדי להגדיר אם הטקסט יהיה Static(default) או מונפש. משתמשים ב-TextMotion.Animated אם הטקסט הולך להיות מותאם, מתורגם או מסובב באמצעות אנימציה. (I24dd7)
  • הוספת TextFieldFocusModifier כדי לתקן את התנהגות הניווט במיקוד בפלטפורמת Android (I00303)
  • הארגומנט maxSize: IntSize ב-drawText הוחלף ב-size: Size כדי להתאים לפונקציות אחרות של DrawScope. כברירת המחדל, size מוגדר כ-Size.Unspecified, ולא אמור לשנות את פעולת ברירת המחדל הקודמת. (Icd27d)

תיקוני באגים

  • שינויים בפיזיקה של ההצמדה ב-SnapFlingBehaviour כדי ליצור תחושה טבעית יותר.

בעיה ידועה

  • כשמעדכנים מ-androidx.compose.foundation:1.4.0-alpha03 ל-androidx.compose.foundation:1.4.0-alpha04, יכול להיות שתיתקלו בשגיאה java.lang.NoSuchFieldError. כאן דווחה הבעיה במקור. תיקון נשלח, והוא יהיה זמין בעדכון הבא של כלי הכתיבה. כפתרון עקיף, אפשר לעדכן את הספריות androidx.compose.material ו-androidx.compose.material3 לגרסה האחרונה(1.1.0-alpha04) או לשנמך את androidx.compose.foundation לגרסה 1.4.0-alpha03.

גרסה ‎1.4.0-alpha03

‫7 בדצמבר 2022

‫androidx.compose.foundation:foundation:1.4.0-alpha03 וגם androidx.compose.foundation:foundation-layout:1.4.0-alpha03 מופצים. גרסה ‎1.4.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • בבדיקות של ממשק משתמש באמצעות כלל Compose, המשכים שהופעלו מחדש במהלך קריאות חוזרות (callbacks) של withFrameNanos לא יישלחו עד שכל הקריאות החוזרות של הפריים יסיימו לפעול. ההתנהגות הזו זהה להתנהגות של כתיבת הודעה כשהיא פועלת כרגיל. עם זאת, בדיקות שמסתמכות על ההתנהגות הישנה עלולות להיכשל. השינוי הזה אמור להשפיע רק על קוד שמבצע קריאה ישירה ל-withFrameNanos או ל-withFrameMillis, וכולל לוגיקה מחוץ לקריאה החוזרת שמועברת לפונקציות האלה, שאולי צריך להעביר אותה לתוך הקריאות החוזרות. בדוגמה הזו אפשר לראות את השינויים בבדיקת האנימציה.
  • נוסף פרמטר אופציונלי onPerformTraversals: (Long) -> Unit ל-constructor ולפונקציית factory של TestMonotonicFrameClock כדי להריץ קוד אחרי הקריאות החוזרות (callbacks) של withFrameNanos אבל לפני חידוש שגרות המשנה (coroutines) של המתקשרים. (Idb413, ‏ b/254115946, ‏ b/222093277, ‏ b/255802670)
  • הוספנו פעולות נגישות בדף: PageUp, PageDown, PageLeft, PageRight. הערה: האפשרויות האלה זמינות רק מגרסת API 29. (Ida4ab)
  • הצגת HorizontalPager ו-VerticalPager, דרך להצגת קומפוזיציות באופן שדומה ל-Pager. הוספנו את PagerState כדי לשלוט במכשירי הביפר וגם כדי לשאול על המצב הנוכחי של הביפר. הוספנו את PageSize, דרך לשלוט בגודל הדף של רכיב Pager. אפשר להשתמש בזה כדי ליצור רכיב Pager שדומה לקרוסלה. הוספנו את PagerSnapDistance, דרך לשלוט באופן הפעולה של ההצמדה בהתנהגות ההטלה של Pager. (I01120)
  • הוספנו עומס יתר ב-SnapFlingBehavior.performFling כדי לעזור להבין איפה התנועה תסתיים. (I569f6)
  • בוצעה הסרה של OverscrollEffect#isEnabled. במקום לזכור ולהגדיר את הדגל הזה, פשוט אל תשלחו אירועים לאפקט הגלילה מעבר לקצה במקרים שבהם אתם לא רוצים שהגלילה מעבר לקצה תוצג (לדוגמה, אם ScrollableState#canScrollForward/backward מחזירה false). (I1a4b0, ‏ b/255554340, ‏ b/255557085)
  • נוספו ScrollableState#canScrollForward ו-ScrollableState#canScrollBackward כדי לבדוק אם יש מקום לגלול ב-ScrollableState לכל אחד מהכיוונים (אם הוא במינימום או במקסימום של הטווח שלו). ברירת המחדל היא true לצורך תאימות לדורות קודמים עם הטמעות קיימות של ScrollableState. הצרכנים יכולים להשתמש בזה כדי להראות למשתמש שיש עוד מקום לגלול, ואפשר להשתמש בזה גם כדי להימנע משליחת דלתא ל-ScrollableStates שאין להם מקום לגלול בכיוון מסוים, כדי לצמצם עבודה מיותרת. (Idf1a0, ‏ b/255557085)
  • נוסף Modifier API לשליחת שאילתות לגבי פרטי גלילה של רכיבי צאצא. (I2ba9d, ‏ b/203141462)
  • המאפיין הזה משמש ב-Clickable כדי להשהות נכון אינטראקציות של לחיצה, במקרים שבהם תנועות יכולות להפוך לאירועי גלילה.
  • תוקן באג שגרם לכך ש-Clickables לא עיכב את האדוות בצורה נכונה, כשנעשה בו שימוש בתוך Scrollable ViewGroup.
  • עדכנו את המגירות ואת הגיליונות כדי להשהות את הלחיצות בצורה נכונה במקרים שבהם תנועות יכולות להפוך לאירועי גלילה.
  • עדכון השם של snapStepSize כך שיהיה עקבי עם שיטות אחרות ב-SnapLayoutInfoProvider. (Ife67c)
  • הוספה של EmojiCompat אל Compose (‏Ibf6f9, ‏b/139326806)
  • שינינו את השם של consumedWindowInsets() ל-consumeWindowInsets() ושל withConsumedWindowInsets() ל-onConsumedWindowInsetsChanged(), והפכנו את ה-Modifiers לציבוריים. (Ie44e1)

תיקוני באגים

  • תוקנה קריסה עם Modifier.animateItemPlacement() ורשתות Lazy. הבעיה התרחשה בתנאים מסוימים, כשהספירה של הפריטים החדשים הייתה קטנה מהספירה הקודמת. ‫(I0bcac, ‏ b/253195989)

גרסה ‎1.4.0-alpha02

‫9 בנובמבר 2022

‫androidx.compose.foundation:foundation:1.4.0-alpha02 וגם androidx.compose.foundation:foundation-layout:1.4.0-alpha02 מופצים. גרסה ‎1.4.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • ‫awaitFirstDown ו-waitForUpOrCancellation מקבלים עכשיו PointerEventPass כדי לאפשר גמישות רבה יותר. ‫(I7579a, ‏ b/212091796)
  • החזרה של beyondBoundCount API מ-Lazy* APIs (I12197)
  • הוספנו פרמטר לממשקי API של Lazy כדי ליצור פריטים ולהציב אותם מחוץ לאזור התצוגה (I69e89, ‏ b/172029355)
  • הוספנו את הפרמטר minLines ל-BasicText ול-BasicTextField. הוא מאפשר להגדיר את הגובה המינימלי של רכיבי ה-Composable האלה במונחים של מספר שורות (I24294, ‏ b/122476634)

גרסה ‎1.4.0-alpha01

24 באוקטובר 2022

‫androidx.compose.foundation:foundation:1.4.0-alpha01 וגם androidx.compose.foundation:foundation-layout:1.4.0-alpha01 מופצים. גרסה ‎1.4.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה שיטה חדשה, awaitEachGesture(), לגלאי תנועות. היא פועלת באופן דומה ל-forEachGesture(), אבל הלולאה מעל תנועות הידיים פועלת כולה בתוך AwaitPointerEventScope, כך שלא יכול להיות אובדן של אירועים בין איטרציות.
  • הוצאנו משימוש את forEachGesture() לטובת awaitEachGesture() כי הוא מאפשר למנוע אובדן של אירועים בין מחוות. (Iffc3f, ‏ b/251260206)
  • נוספו WindowInsets.imeAnimationSource ו-WindowInsets.imeAnimationTarget כדי לקבוע את התקדמות האנימציה ולדעת איפה ה-IME יהיה אחרי שהאנימציה תסתיים. (I356f1, b/217770337)

גרסה 1.3

גרסה 1.3.1

‫9 בנובמבר 2022

‫androidx.compose.foundation:foundation:1.3.1 וגם androidx.compose.foundation:foundation-layout:1.3.1 מופצים. גרסה 1.3.1 מכילה את השמירות האלה.

תיקוני באגים

  • פתרון בעיית ביצועים ב-BeyondBoundsLayout (aosp/2255266)
  • ‫ContentInViewModifier לא יקרא קואורדינטות של פריסה אלא אם הוא מצורף (aosp/2241316)

גרסה 1.3.0

24 באוקטובר 2022

‫androidx.compose.foundation:foundation:1.3.0 וגם androidx.compose.foundation:foundation-layout:1.3.0 מופצים. גרסה 1.3.0 מכילה את השמירות האלה.

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

  • השקנו גרסאות ניסיוניות של LazyVerticalStaggeredGrid ושל LazyHorizontalStaggeredGrid.
  • ‫SnapFlingBehavior, ‏ rememberSnapFlingBehavior וממשקי API תואמים אחרים נוספו כניסיוניים.
  • ‫Modifier.clickable,‏ Modifier.toggleable וגם Modifier.selectable מציגים עכשיו אדוות אם לוחצים עליהם באמצעות המקלדת או כפתורי החיצים (D-pad) בשלט רחוק.

גרסה ‎1.3.0-rc01

‫5 באוקטובר 2022

‫androidx.compose.foundation:foundation:1.3.0-rc01 וגם androidx.compose.foundation:foundation-layout:1.3.0-rc01 מופצים. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את lowVelocityAnimationSpec שמשמש את שלב הגישה כשאין מספיק מהירות להאטה. (Iaeb27)
  • נוסף API ניסיוני חדש של מקפים כדי לתמוך בהוספת מקפים אוטומטית בטקסט (Iaa869)

גרסה ‎1.3.0-beta03

‫21 בספטמבר 2022

‫androidx.compose.foundation:foundation:1.3.0-beta03 וגם androidx.compose.foundation:foundation-layout:1.3.0-beta03 מופצים. גרסה ‎1.3.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת אפשרויות להתאמה אישית של מעברי שורה בטקסט. (I86907)
  • BringIntoViewResponderעכשיו אפשר לקבל את הגבולות העדכניים ביותר של בקשה בזמן העיבוד שלה. (If86a5, b/241591211)
  • הוספת תמיכה במרווחים בין פריטים לגרסה הניסיונית Staggered Grid (I10b82)
  • הוספת תוכן פנימי לניסוי Staggered Grid (I342ea)
  • הוחלף הארגומנט size:IntSize בארגומנט constraints: Constraints בשיטה TextMeasurer.measure כדי לתמוך באילוצי רוחב מינימליים. (I37530, b/242707525)
  • נוספה האפשרות Modifier.withConsumedWindowInsets() לצריכה WindowInsets לשימוש מחוץ ל-windowInsetsPadding.
  • הוספנו את MutableWindowInsets כדי לאפשר שינוי קל של WindowInsets בלי ליצור מחדש את הקומפוזיציה. (I7fd28, ‏ b/237019262, ‏ b/243119659)

גרסה ‎1.3.0-beta02

‫7 בספטמבר 2022

‫androidx.compose.foundation:foundation:1.3.0-beta02 וגם androidx.compose.foundation:foundation-layout:1.3.0-beta02 מופצים. גרסה ‎1.3.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • הגרסה הראשונית של StaggeredGrid הניסיוני (Ia48be)
  • השמות של FocusDirection.In ו-FocusDirection.Out שונו ל-FocusDirection.Enter ו-FocusDirection.Exit (Ia4262, ‏ b/183746982)
  • הוספנו עומס יתר של rememberSnapFlingBehavior שמאפשר להפעיל במהירות את ההצמדה ב-LazyLists. (Ifb48a)
  • הוחלפה הפונקציה snapFlingBehavior factory במחלקה SnapFlingBehavior קונקרטית. שיטות SnapLayoutInfoProvider מוגבלות ל-Density כדי להקל על משתמשי ה-API לבצע המרות של Dp<->Px. (I54a11)
  • מעדכנים את LazyLayoutMeasureScope.measure כדי להחזיר רשימה של מיקומים שניתן להציב בהם מודעות, תוך הדגשת חוסר השינוי הרצוי של הערך המוחזר. (I48b7c)
  • הוספנו את SnapLayoutInfoProvider שמקבל LazyListState כדי ליצור מופע של SnapLayoutInfoProvider שאפשר להשתמש בו כדי להפעיל snap FlingBehavior עבור LazyLists. (I2dd10)

תיקוני באגים

  • שינוי מבנה הקוד של AwaitPointerEventScope#awaitLongPressOrCancellation כך שיתאים לפונקציות אחרות של await ‏ (I646e6)

גרסה ‎1.3.0-beta01

‫24 באוגוסט 2022

‫androidx.compose.foundation:foundation:1.3.0-beta01 וגם androidx.compose.foundation:foundation-layout:1.3.0-beta01 מופצים. גרסה ‎1.3.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הוסר pointerPosition מ-OverscrollEffect – אפקטים שמתייחסים למיקום הסמן יכולים להשתמש ב-Modifier.pointerInput { } ב-effectModifier כדי לקבל את המיקום הנוכחי של הסמן במקום זאת. (I9f606, ‏ b/241239306)
  • הוספנו את AwaitPointerEventScope#awaitLongPressOrCancellation כאבן בניין נוספת לזיהוי מחוות מורכבות יותר (I04374, b/181577176)
  • הוספנו את lazyListSnapLayoutInfoProvider כדי לאפשר הצמדה ב-Lazy Lists. (I3ecdf)
  • הוספנו את SnapFlingBehavior, התנהגות של תנועת הצלפה שמאפשרת הצמדה של רשימות. צריך לספק מופע של SnapLayoutInfoProvider עם מידע על פריסת החלונות. (Ie754c)

גרסה ‎1.3.0-alpha03

‫10 באוגוסט 2022

‫androidx.compose.foundation:foundation:1.3.0-alpha03 וגם androidx.compose.foundation:foundation-layout:1.3.0-alpha03 מופצים. גרסה ‎1.3.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הספרייה Resource Fonts תומכת עכשיו בהגדרת וריאציות של גופנים (API 26 ואילך). (I900dd, ‏ b/143703328)
  • תמיכה בגופנים משתנים ב-DeviceFontFamilyNameFont (Ic1279, ‏ b/143703328)
  • הוסרה הערה ניסיונית מ-PlatformTextStyle ומ-LineHeightStyle. (I64bef)
  • בשדות טקסט, המערכת תציג עכשיו חריגים מפורטים יותר כשהערך OffsetMapping שסופק על ידי VisualTransformation מחזיר אינדקסים לא תקינים. (Ie73f9, b/229378536)
  • הוספנו ממשקי API ניסיוניים לשיתוף הלוגיקה של ספק הפריטים בין פריסות Lazy. (Ic891c)
  • ScrollableDefaults.reverseDirection() כבר לא ניסיוני. (Iba646)
  • המאפיין SemanticsModifier.id הוצא משימוש והועבר למזהה הסמנטי LayoutInfo.semanticsId. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() כבר לא ניסיוני. (I2c290)
  • התכונה Modifier.clipScrollableContainer() כבר לא ניסיונית. (Ia2b44)
  • הוצאה משימוש של TextInputService.show|hideSoftwareKeyboard. במקומה, צריך להשתמש ב-SoftwareKeyboardController בקוד האפליקציה וב-TextInputSession בקוד לניהול IME. (I14e4c, ‏ b/183448615)

גרסה ‎1.3.0-alpha02

‫27 ביולי 2022

‫androidx.compose.foundation:foundation:1.3.0-alpha02 וגם androidx.compose.foundation:foundation-layout:1.3.0-alpha02 מופצים. גרסה ‎1.3.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה פונקציית ההרחבה drawText ב-DrawScope כדי לספק דרך לצייר טקסט עם כמה סגנונות ברכיבים ובאמצעי שינוי שפועלים ב-DrawScope כמו Canvas ו-drawBehind. ‫(I16a62, b/190787898)

תיקוני באגים

  • המקלדת הווירטואלית תוסתר עכשיו כששדה טקסט מושבת בזמן שהוא מודגש. ‫(I6e3e4, b/237308379)
  • כשמוסיפים אירועים מסוג InputEventChange ל-Velocity Tracker, המערכת תתייחס עכשיו לשינויים במקום למיקומים. כך מובטח שמהירות התנועה תחושב בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (Icea9d,‏ b/216582726,‏ b/223440806,‏ b/227709803)
  • כשאלמנט שאפשר לגלול בו מכיל אלמנט צאצא ממוקד, הוא יגלול עכשיו בצורה נכונה כדי שהאלמנט הצאצא הממוקד יישאר בתצוגה כשהגודל שלו קטן, גם אם הגודל מונפש. (I80867, b/230756508, b/220119990)
  • תוקן קראש שקורה כשTextField מתרוקן ומתמלא מחדש בזמן שהבחירה פעילה. (I1235b, ‏ b/208655565, ‏ b/214253689)

גרסה ‎1.3.0-alpha01

29 ביוני 2022

‫androidx.compose.foundation:foundation:1.3.0-alpha01 וגם androidx.compose.foundation:foundation-layout:1.3.0-alpha01 מופצים. גרסה ‎1.3.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את סוג ההערה UrlAnnotation ואת השיטות שמשויכות אליו כדי לתמוך בקישורי TalkBack ב-AnnotatedString. (I1c754, b/231495122)

תיקוני באגים

  • BasicTextField cursorBrush יכול להיות שעכשיו תהיה אנימציה בלי להפעיל מחדש את הטיימר של הסמן. ‫(I812e6, ‏ b/236383522)

גרסה 1.2

גרסה 1.2.1

‫10 באוגוסט 2022

‫androidx.compose.foundation:foundation:1.2.1 וגם androidx.compose.foundation:foundation-layout:1.2.1 מופצים. גרסה 1.2.1 מכילה את השמירות האלה.

גרסה 1.2.0

‫27 ביולי 2022

‫androidx.compose.foundation:foundation:1.2.0 וגם androidx.compose.foundation:foundation-layout:1.2.0 מופצים. גרסה 1.2.0 מכילה את השמירות האלה.

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

  • המדדים LazyVerticalGrid וLazyHorizontalGrid יציבים עכשיו.
  • עכשיו אפשר לציין סוג תוכן לפריטים ברשימות ובטבלאות Lazy. כך הרכיבים יוכלו לעשות שימוש חוזר באלמנטים בצורה יעילה יותר.
  • לרשימות ולרשתות עצלות יש עכשיו פרמטר userScrollEnabled שמאפשר להשבית את הגלילה באמצעות תנועות של המשתמש.
  • נוסף API חדש בשלב ניסוי בשם LazyLayout. זהו ה-API שבו אנחנו משתמשים באופן פנימי כדי להפעיל רשימות ורשתות עצלות.
  • ‫OverscrollEffect API הושק כניסוי. אפשר גם להגדיר אפקטים מותאמים אישית של גלילה מעבר לקצה, וגם להוסיף אפקט פלטפורמה רגיל למאגרי גלילה מותאמים אישית.
  • הוספנו ממשקי API של יכולת פעולה הדדית לגלילה מקוננת כדי לאפשר יכולת פעולה הדדית בין תצוגות ורכיבי גלילה של Compose.
  • הוספנו גלילה בעכבר ובמשטח מגע לכל מאגרי הגלילה.

גרסה ‎1.2.0-rc03

29 ביוני 2022

‫androidx.compose.foundation:foundation:1.2.0-rc03 וגם androidx.compose.foundation:foundation-layout:1.2.0-rc03 מופצים. גרסה ‎1.2.0-rc03 מכילה את השמירות האלה.

  • לא בוצעו שינויים מאז גרסה 1.2.0-rc02.

גרסה ‎1.2.0-rc02

‫22 ביוני 2022

‫androidx.compose.foundation:foundation:1.2.0-rc02 וגם androidx.compose.foundation:foundation-layout:1.2.0-rc02 מופצים. גרסה ‎1.2.0-rc02 מכילה את השמירות האלה.

גרסה ‎1.2.0-rc01

‫15 ביוני 2022

‫androidx.compose.foundation:foundation:1.2.0-rc01 וגם androidx.compose.foundation:foundation-layout:1.2.0-rc01 מופצים. גרסה ‎1.2.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו OverscrollEffect ניסיוני כדי לאפשר אפקטים מותאמים אישית של גלילה מעבר לקצה, בנוסף לעומסים העודפים של Modifier.scrollable שמקבלים אותו.
  • החבילה Experimental LocalOverScrollConfiguration הועברה מ-foundation.gesture לחבילת הבסיס ושמה שונה ל-LocalOverscrollConfiguration (If19fb, ‏ b/204650733)
  • ממשקים בספריות של Compose נוצרים עכשיו באמצעות שיטות ממשק שמוגדרות כברירת מחדל ב-jdk8 ‏ (I5bcf1)
  • הוספנו API ניסיוני checkScrollableContainerConstraints() שמאפשר לבדוק שלא מוסיפים מאגדים עם אפשרות גלילה בתוך מאגדים אחרים. אתם יכולים להשתמש בו כשאתם יוצרים פריסות משלכם עם גלילה באמצעות LazyLayout. (Id6fab, ‏ b/233352497)
  • הוסר מהחבילה androidx.compose.foundation.lazy הפריט LazyVerticalGrid שהוצא משימוש. ה-API היציב החדש נמצא בכתובת androidx.compose.foundation.lazy.grid (I73c76, b/225192009)

גרסה ‎1.2.0-beta03

‫1 ביוני 2022

‫androidx.compose.foundation:foundation:1.2.0-beta03 וגם androidx.compose.foundation:foundation-layout:1.2.0-beta03 מופצים. גרסה ‎1.2.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו הניסויים החדשים IntervalList ו-MutableIntervalList. היא מאפשרת לייצג רשימה מסוימת של ערכים באמצעות כמה מרווחים. המאפיין הזה שימושי כשרוצים להגדיר dsl משלכם שדומה ל-dsl שמשמש את LazyColumn, שבו אפשר להגדיר פריטים ברשימה באמצעות כמה קריאות item/items. (I2d05e, b/228580728)

תיקוני באגים

  • הוספנו הבהרה למסמכי התיעוד של WindowInsets.ime כדי לציין ש-ime insets מדווחים החל מ-API 23, אבל רק animated ב-30 ומעלה. (Ia7fc0, ‏ b/230756508)
  • לחיצה על מקש המחיקה קדימה כשהסמן נמצא בסוף שדה טקסט לא תגרום יותר לקריסה.
  • הארגומנטים של הקונסטרוקטור של DeleteSurroundingTextCommand ושל DeleteSurroundingTextInCodePointsCommand לא יכולים להיות שליליים. (Ica8e6, b/199919707)

גרסה ‎1.2.0-beta02

‫18 במאי 2022

‫androidx.compose.foundation:foundation:1.2.0-beta02 וגם androidx.compose.foundation:foundation-layout:1.2.0-beta02 מופצים. גרסה ‎1.2.0-beta02 מכילה את השמירות האלה.

  • בעבר, אם הייתם מורידים רזולוציה של גופן שלא משנה את גודל הפריסה של הטקסט או של TextField, המערכת לא הייתה מציירת מחדש את הגופן, ולכן הוא היה מוצג בצורה לא עדכנית. תיקון הבאג הזה מבטיח שפריסת הטקסט תמיד תפעיל ציור מחדש (b/229727404). (I1d49e, b/229727404)

גרסה ‎1.2.0-beta01

‫11 במאי 2022

‫androidx.compose.foundation:foundation:1.2.0-beta01 וגם androidx.compose.foundation:foundation-layout:1.2.0-beta01 מופצים. גרסה ‎1.2.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • זו גרסת הבטא הראשונה של 1.2!

שינויים ב-API

  • נוספה התכונה הניסיונית BeyondBoundsInterval שאפשר להשתמש בה בהטמעות מותאמות אישית של LazyList כשפריטים מוצגים מחוץ לגבולות הנראים (Ifabfb, ‏ b/184670295)
  • השם של LineHeightBehavior השתנה לLineHeightStyle
  • השם של LineVerticalAlignment השתנה לLineHeightStyle.Alignment
  • השם של LineHeightTrim השתנה לשם LineHeightStyle.Trim
  • הערכים של בנאי ברירת המחדל מ-LineHeightStyle הוסרו (I582bf, ‏ b/181155707)
  • נוספו ערכי ברירת מחדל לחברים האופציונליים בממשק LazyLayoutItemProvider. (Iba8a0)
  • ב-LazyLayoutItemProvider api, במקום פונקציית factory שמחזירה את lambda הקומפוזבילית לפי אינדקס, יש עכשיו פונקציה קומפוזבילית פשוטה יותר Item שמקבלת את האינדקס. (Id2196)
  • השם של LazyLayoutItemsProvider שונה ל-LazyLayoutItemProvider ‏ (I0638c)
  • השם של LazyLayoutItemsProvider.itemsCount השתנה לשם itemCount (מזהה: Id409c)
  • הוספנו את האפשרות 'מברשת' ל-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)

  • נוסף משנה imeNestedScroll() ניסיוני כדי שמפתחים יוכלו לשלוט ב-IME באמצעות גלילה. (I60759)

תיקוני באגים

  • תוקנה רגרסיה שגרמה לכך ששדות טקסט לא הסתירו את המקלדת כשהם הוסרו מהחיבור בזמן שהם היו ממוקדים. (I7a410, ‏ b/230536793, ‏ b/225541817)
  • תמיכה בשלוש נקודות כשגובה מוגבל ואין מקום לכל שורות הטקסט (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView תמיד תושעה עד שהבקשה תושלם או עד שהיא תופרע על ידי בקשה חדשה יותר שלא חופפת לה. בקשות חופפות יוכנסו לתור. (I43e7f, b/216790855)
  • BringIntoViewRequester.bringIntoViewמעכשיו, אם יש חפיפה מלאה בין מלבנים, המערכת תתייחס רק לבקשה של המלבן הגדול יותר. (I34be7, ‏ b/216790855, ‏ b/184760918)
  • מופעל כברירת מחדל includeFontPadding. אפשר להשבית את includeFontPadding באמצעות המאפיין TextStyle.platformTextStyle. בעתיד הקרוב נשנה את התנהגות ברירת המחדל, אבל עד אז השינוי הזה מאפשר לנו לשלב טוב יותר שיפורים בגובה השורה (aosp/2058653) ולפתור בעיות של TextField חיתוך. (I01423, ‏ b/171394808)
  • הארגון Modifier.bringIntoViewRequester לא משתמש יותר ב-onGloballyPositioned. (I630f5)

External Contribution

  • ‫MouseInjectionScope.scroll(delta = someDelta) עכשיו הפוך ב-Android אם גוללים אנכית (אם someDelta חיובי, הגלילה תהיה כלפי מטה) (Ifb697, ‏ b/224992993)

גרסה ‎1.2.0-alpha08

‫20 באפריל 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha08 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha08 מופצים. גרסה ‎1.2.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • הצגת כל המשקלים הזמינים לגופני מערכת ב-Android כשמשתמשים ב-FontFamily.SansSerif. במקרים כאלה, המערכת תשתמש באופן פנימי בשמות של גופנים חלופיים כמו sans-serif-medium ב-API 21-28. זהו שינוי בהתנהגות, כי בעבר רק משקלים 400 ו-700 נתמכו ב-API 21-28. (I380fe, ‏ b/156048036, ‏ b/226441992)
  • הפרמטר Constraints מתקבל עכשיו ב-Paragraph וב-MultiParagraph. העברת הערך Constraints.maxHeight לא משפיעה על הפעולה כרגע, אבל בעתיד היא תאפשר לבצע חישובים מסוימים, כמו הצגת קטע חסר בהתאם לגובה. (I6afee, b/168720622)
  • ‫SubcomposeSlotReusePolicy.getSlotsToRetain() מקבל עכשיו מחלקה מותאמת אישית שדומה ל-MutableSet, שלא מאפשרת להוסיף אליה פריטים חדשים. (Icd314)
  • השימוש החלקי (הורדה או מיקום) הוצא משימוש ב-PointerInputChange. אפשר להשתמש ב-consume() כדי להחיל את השינוי באופן מלא. אפשר להשתמש ב-isConsumed כדי לבדוק אם מישהו אחר כבר השתמש בשינוי.
  • הפונקציה PointerInputChange::copy() יוצרת עכשיו תמיד עותק שטחי. המשמעות היא שעותקים של PointerInputChange יתפסו נפח אחסון רק אחרי שאחד מהעותקים יתפוס נפח אחסון. אם רוצים ליצור PointerInputChange לא מאוגד, צריך להשתמש ב-constructor. ‫(Ie6be4, ‏ b/225669674)
  • השקנו LazyLayoutAPI חדש לניסויים. כך תוכלו ליצור רכיבים משלכם כמו LazyColumn של LazyVerticalGrid. שימו לב שממשק ה-API נמצא בשלבים הראשונים שלו, ויכול להיות שהוא ישתנה בגרסאות עתידיות. (Iba2bc, b/166591700)
  • הפרמטר AndroidFont מקבל עכשיו את typefaceLoader כפרמטר של בנאי. (I2c971)
  • החלונית הנלווית של WindowInsets מציגה עכשיו את הנראות (אם היא מופיעה במסך, בלי קשר לחיתוך עם החלון) ואת הגודל שלה אם היא זמינה במכשיר אבל לא פעילה כרגע. ‫(I65182, ‏ b/217770337)

גרסה ‎1.2.0-alpha07

‫6 באפריל 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha07 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha07 מופצים. גרסה ‎1.2.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף PinnableParent API שמאפשר לרכיבים צאצאים של פריסות עצלות למנוע את הסרת הפריטים שנוצרו כרגע (Ibbdd0, ‏ b/184670295)
  • ל-LazyListLayoutInfo ול-LazyGridLayoutInfo יש עכשיו שדות beforeContentPadding ו-afterContentPadding (I3b628, ‏ b/200920410)
  • הוספנו את KeyboardType.Decimal כחלופה ל-Keyboard.Number כדי לכלול במיוחד מפריד עשרוני ב-IME. ‫(Iec4c8, ‏ b/209835363)
  • הוספת מתאר גופן חדש Font(DeviceFontFamilyName) כדי לחפש גופנים שהותקנו במערכת במהלך שרשראות של חלופות לגופנים. ‫(I30468, ‏ b/219754572)
  • ‫PointerEventType.Scroll ו-PointerEvent.scrollDelta הם עכשיו ממשקי API יציבים (I574c5, ‏ b/225669674)
  • נוספה הגדרת תאימות זמנית ל-includeFontPadding ב-TextStyle/ParagraphStyle. includeFontPadding. אפשר לשנות אותה באמצעות TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). זו אפשרות הגדרה זמנית להפעלת ההעברה, והיא תוסר בהמשך. (If47be, b/171394808)
  • בוצע עדכון של FontFamily.Resolver כדי לשלב את הגדרת הנגישות של טקסט מודגש בכל המערכת (I6c1e7)
  • מאפיין התוסף consumeWindowInsets של ComposeView מאפשר למפתחים להשבית את השימוש ב-Android WindowInsets. כך כל ComposeViews בהיררכיה יכול להחיל WindowInsets בלי להפריע אחד לשני. ‫(I0ef08, ‏ b/220943142)

גרסה ‎1.2.0-alpha06

‫23 במרץ 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha06 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha06 מופצים. גרסה ‎1.2.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה פעולה סמנטית של RequestFocus לבקשה להתמקדות ביעד שניתן להתמקדות. (I17b71)
  • השירות FocusOrder מוזג עכשיו עם FocusProperties, ול-focusProperties() יש עכשיו את כל היכולות של focusOrder(). הוצאנו משימוש את FocusOrder ואת focusOrder(). המחרוזת focusOrder() שמקבלת focusRequester צריכה להיות מוחלפת בצירוף של משנה focusRequester() עם focusProperties(). כך אפשר להפריד טוב יותר בין הדאגות של המשנים. (I601b7)
  • הוספנו את WindowInsets.asPaddingValues(Density) כדי לאפשר למפתחים לבצע את ההמרה בלי להיכנס למצב כתיבה. (I94c35)
  • עדכון של ניתוח התוכן של נכסי וקטורים שניתנים לציור כדי לתמוך בשיקוף אוטומטי, במטרה להפוך את התוכן של VectorPainter אם כיוון הפריסה הנוכחי הוא מימין לשמאל. (I79cd9, b/185760237)

תיקוני באגים

  • Modifier.verticalScroll()Modifier.horizontalScroll()Modifier.scrollable()אם משנים את הגודל של אזור הגלילה ורכיב ה-Composable שהמיקוד עליו היה גלוי קודם, עכשיו הגלילה תתבצע כך שהרכיב יישאר גלוי.
  • שדות טקסט יישארו מעל המקלדת כשהם במצב ממוקד והמקלדת מוצגת, כשהם נמצאים בתוך רכיב שניתן לגלילה ולא נטען באופן עצלני, ומצב הקלט הרך הוא ADJUST_RESIZE. (I4a485, ‏ b/190539358, ‏ b/192043120, ‏ b/216842427)

גרסה ‎1.2.0-alpha05

9 במרץ 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha05 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha05 מופצים. גרסה ‎1.2.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • הבעיות ב-LazyVerticalGrid וב-LazyHorizontalGrid נפתרו. (I307c0)
  • השדה LazyGridItemInfo.Unknown הוחלף בשדות נפרדים LazyGridItemInfo.UnknownRow ו-LazyGridItemInfo.UnknownColumn (I56d51)
  • ‫LazyVerticalGrid/LazyHorizontalGrid וכל ממשקי ה-API שקשורים אליהם הועברו לחבילת המשנה .grid. צריך לעדכן את הייבוא מ-androidx.compose.foundation.lazy ל-androidx.compose.foundation.lazy.grid. ‫(I2d446, ‏ b/219942574)
  • ההגדרה 'טקסט: includeFontPadding' מושבתת עכשיו כברירת מחדל. בעיות החיתוך כתוצאה משימוש ב-includeFontPadding=false מטופלות, ולא אמור להתרחש חיתוך של סקריפטים ארוכים. ‫(I31c84, ‏ b/171394808)
  • המאפיין parentData מוצג עכשיו בממשק Measured (I3313f)
  • הוספנו את התכונה הניסיונית Modifier.onFocusedBoundsChanged כדי לאפשר צפייה בגבולות של רכיבים שניתן להתמקד בהם. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • נוסף LazyHorizontalGrid. (I61ae7, b/191238807)
  • הוספנו LazyVerticalGrid API חדש להגדרת גדלים של צירים חוצים (I17723)
  • נוסף משנה FocusGroup ‏ (I64bc0, ‏ b/213508274, ‏ b/184670295)

תיקוני באגים

  • ‫WindowInsets.toString() יוצגו עכשיו הערכים הנכונים. (I1585d)

External Contribution

  • העדכון כולל שימוש בשגרות משנה (coroutines) של Kotlinx בגרסה 1.6.0‏ (I3366d)

גרסה ‎1.2.0-alpha04

23 בפברואר 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha04 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha04 מופצים. גרסה ‎1.2.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • BringIntoViewResponders כבר לא נדרשים להעביר בקשות באופן ידני למשיבים ברמת ההורה, אלא נדרשים להחזיר מיד את המלבן שהם רוצים שההורה שלהם יציג. (I8e66a)
  • תמיכה בטעינה אסינכרונית של גופנים ב-Text (I77057, ‏ b/214587005)
  • מעכשיו יש תמיכה ב-LazyVerticalGrid ב-line breaking לפני פריטים עם span שלא מתאים לשורה הנוכחית. ‫(I05c40, ‏ b/207462103)
  • השם של excludeFromSystemGestures שונה ל-systemGesturesExclusion (I19526)
  • ‫LazyVerticalGrid תומך עכשיו ב-reverseLayout. ‫(I6d7d7, ‏ b/215572963, ‏ b/211753558)
  • הוספת שיטת WindowInsets.only() כדי לאפשר למפתחים לכלול רק מאפיינים מ-WindowInsets. (I14c94, ‏ b/217768486)
  • נוספו הפונקציות ComposableTarget, ComposableTargetMarker ו-ComposableOpenTarget שמאפשרות דיווח בזמן קומפילציה על מצב שבו פונקציה הניתנת להגדרה מופעלת בטירגוט של פונקציית החלה שהיא לא נועדה להשתמש בה.

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

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

תיקוני באגים

  • עכשיו אפשר להעביר היסטים שליליים של גלילה אל LazyGridState.scrollToItem() ואל LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • תמיכה בטעינת גופנים אסינכרונית עבור TextField. (Icc4bf, ‏ b/214587005)

גרסה ‎1.2.0-alpha03

‫9 בפברואר 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha03 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha03 מופצים. גרסה ‎1.2.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • השיטות notifyFocusedRect ב-TextInputSession וב-TextInputService יצאו משימוש ולא יופעלו. במקום זאת, אתם צריכים להשתמש ב-BringIntoViewRequester. (Ia4302, ‏ b/192043120, ‏ b/216842427, ‏ b/178211874)
  • הפעלנו אנימציות לפריטים של רשתות עצלות באמצעות Modifier.animateItemPlacement().‏ (Ib6621, ‏ b/211753218)
  • מעכשיו, BringIntoViewRequester מעביר בקשות אל תצוגת Android של האפליקציה המארחת. (Ia7a51)
  • האפליקציה FontFamilyResolver זמינה עכשיו דרך LocalFontFamilyResolver.current
    • נוספו createFontFamilyResolver(context) ו-createFontFamilyResolver(context, coroutineScope) כדי ליצור רכיבי FontResolver חדשים מחוץ לשימוש ב-Compose.
    • הפרמטרים Paragraph ו-MultiParagraph מקבלים עכשיו FontFamily.Resolver
    • התג TextLayoutResult.layoutInput.fontFamilyResolver מכיל עכשיו את המפענח שמשמש לפריסה הזו. התג TextLayoutResult.layoutInput.resourceLoader הוצא משימוש כי הוא כבר לא בשימוש. (Id5a45, ‏ 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)
  • מעכשיו אפשר לציין את סוג התוכן של הפריטים בפונקציות LazyVerticalGrid - item/items ב-LazyGridScope, כי הן מקבלות פרמטר כזה. המידע הזה עוזר ללוגיקה של שימוש חוזר בהרכב הפריט לפעול בצורה יעילה יותר, ולהשתמש מחדש בתוכן רק בין פריטים מאותו סוג. ‫(I7b355, ‏ b/215372836)
  • למאפיינים LazyListLayoutInfo ו-LazyGridLayoutInfo נוספו מאפיינים חדשים: viewportSize, ‏ orientation, ‏ reverseLayout (Ifc8ed, ‏ b/200920410)
  • עכשיו אפשר לציין את סוג התוכן של הפריטים בפונקציות LazyColumn/LazyRow – item/items ב-LazyListScope. הפונקציות האלה מקבלות עכשיו פרמטר כזה. המידע הזה עוזר ללוגיקה של שימוש חוזר בהרכב הפריט לפעול בצורה יעילה יותר, ולהשתמש מחדש בתוכן רק בין פריטים מאותו סוג. (I26506)
  • הקונסטרוקטור SubcomposeLayoutState שמקבל maxSlotsToRetainForReuse הוצא משימוש. במקום זאת, יש קונסטרוקטור חדש שמקבל SubcomposeSlotReusePolicy – ממשק חדש שמאפשר שליטה פרטנית יותר על המשבצות שצריך לשמור לשימוש חוזר בעתיד. (I52c4d)
  • מוסיף משנים (Modifiers) ל-WindowInsets, גם למרווח פנימי וגם לשינוי גודל. כך חלק מהתוכן יכול להיכנס לאזור המושקע, אבל התוכן העיקרי יישאר מחוץ לאזור המושקע. לדוגמה, אפשר להשתמש ב-windowInsetsPadding כדי להוסיף ריווח לאזור התוכן, וכך להימנע מאזורים שעשויים להיות מכוסים באופן מלא או חלקי. (Id0395, ‏ b/213942085)

תיקוני באגים

  • כששדות טקסט נמצאים בפוקוס והמקלדת מוצגת, הם יישארו מעל המקלדת אם מצב ההזנה הרכה הוא ADJUST_PAN. (I8eaeb, ‏ b/190539358, ‏ b/192043120)
  • ב-Desktop נעשה שימוש בהרכבה מקומית עבור FontFamily.Resolver
    • הגרסה למחשב של FontLoader הוצאה משימוש
    • מפעל חדש createFontFamilyResolver במחשב (I6bbbb, ‏ b/174162090)
  • סוג הקלט של המקלדת הווירטואלית לא מהבהב יותר כשמעבירים את המיקוד בין שדות טקסט. (I1bf50, b/187746439)
  • בשדות טקסט כבר לא צריך להקיש על מקש החזרה כדי להזיז את נקודת האחיזה של הסמן. (Ideb4b, ‏ b/205726883)
  • התנהגות הזכוכית המגדלת לבחירת טקסט שופרה כדי להתאים לזכוכית המגדלת של הפלטפורמה. ‫(Idd918, ‏ b/206833278)

גרסה ‎1.2.0-alpha02

‫26 בינואר 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha02 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha02 מופצים. גרסה ‎1.2.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף NonRestartableComposable לשיטות שהן עומס יתר של שיטות קיימות ללא לוגיקה מורכבת. הפעולה הזו מצמצמת את הבדיקות של הממויזציה (equals) שנוצרות על ידי הקומפיילר לכל הפרמטרים שחוזרים על עצמם בפונקציה הפנימית שמופעלת. (I90490)
  • נוספו excludeFromSystemGesture משנים לגישה קלה אל setSystemGestureExclusionRects של Android ‏ (I46f07)

תיקוני באגים

  • התנהגות הזכוכית המגדלת לבחירת טקסט שופרה כדי להתאים לזכוכית המגדלת של הפלטפורמה. (Idd918, b/206833278)
  • ‫LazyColumn, ‏ LazyRow, ‏ Modifier.verticalScroll ומאגרי תגים אחרים שמשתמשים ב-Modifier.scrollable תומכים עכשיו בגלילה באמצעות גלגל העכבר. ‫(I2b5e1, ‏ b/198214718)

גרסה ‎1.2.0-alpha01

‫12 בינואר 2022

‫androidx.compose.foundation:foundation:1.2.0-alpha01 וגם androidx.compose.foundation:foundation-layout:1.2.0-alpha01 מופצים. גרסה ‎1.2.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הפרמטר החדש userScrollEnabled נוסף ל-LazyColumn, ל-LazyRow ול-LazyVerticalGrid כדי לאפשר למשתמשים להשבית באופן זמני או קבוע את הגלילה שהמשתמש יזם באמצעות מחוות מגע או פעולות נגישות. עדיין תהיה אפשרות לגלול באופן פרוגרמטי באמצעות השיטות במצב. ‫(I7eae9, ‏ b/201150093)
  • הוספת קריאה חוזרת (callback) של onSizeChanged לשינוי של הגדלת המסך. (I6879f)
  • ווידג'ט הזכוכית המגדלת מוצג עכשיו כשגוררים את נקודות האחיזה של הבחירה ב-SelectionContainer. (I30b38, b/139320979)

תיקוני באגים

  • תוקנה הבעיה שבה נקודת האחיזה של הסמן TextField לא מוסתרת כשמגללים אותה מחוץ לתצוגה. (I14552, b/208883748)

עדכונים של יחסי תלות

  • עכשיו תלוי ב-Kotlin 1.6.10.

גרסה 1.1

גרסה 1.1.1

23 בפברואר 2022

‫androidx.compose.foundation:foundation:1.1.1 וגם androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0 וגם androidx.compose.foundation:foundation-layout:1.1.0 מופצים. גרסה 1.1.0 מכילה את השמירות האלה.

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

  • תמיכה יציבה באפקט הגלילה מעבר לקצה ב-Android 12
  • שיפורים בגודל של יעד מגע
  • שימו לב: ב-Compose 1.0, רכיבי Material ירחיבו את שטח הפריסה שלהם כדי לעמוד בהנחיות הנגישות של Material בנוגע לגודל יעד המגע. לדוגמה, יעד המגע של לחצן יתרחב לגודל מינימלי של 48x48dp, גם אם הגדרתם גודל קטן יותר ללחצן. ההתנהגות הזו של Compose Material זהה להתנהגות של רכיבי Material Design, כך שאם משלבים Views ו-Compose, ההתנהגות תהיה עקבית. השינוי הזה גם מבטיח שכשתשתמשו ברכיבי Compose Material כדי ליצור את ממשק המשתמש, תעמדו בדרישות המינימליות לנגישות של יעדי מגע.
  • תמיכה יציבה בפס ניווט
  • העברה של מספר ממשקי API שהיו ניסיוניים בעבר למצב יציב
  • תמיכה בגרסאות חדשות יותר של Kotlin

גרסה ‎1.1.0-rc03

‫26 בינואר 2022

‫androidx.compose.foundation:foundation:1.1.0-rc03 וגם androidx.compose.foundation:foundation-layout:1.1.0-rc03 מופצים. גרסה ‎1.1.0-rc03 מכילה את השמירות האלה.

תיקוני באגים

  • עדכון לתמיכה ב-Compose Material 1.1.0-rc03

גרסה ‎1.1.0-rc01

15 בדצמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-rc01 וגם androidx.compose.foundation:foundation-layout:1.1.0-rc01 מופצים. גרסה ‎1.1.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • עכשיו אפשר להעביר היסטים שליליים של גלילה אל LazyListState.scrollToItem() ואל LazyListState.animateScrollToItem(). (Iceb90, ‏ b/184252837)
  • תוקן באג שגרם לפעולות גלילה של נגישות להיעלם (I7cbfb)

גרסה ‎1.1.0-beta04

1 בדצמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-beta04 וגם androidx.compose.foundation:foundation-layout:1.1.0-beta04 מופצים. גרסה ‎1.1.0-beta04 מכילה את השמירות האלה.

תכונות חדשות

  • העדכון בוצע כדי שתהיה תאימות ל-Kotlin 1.6.0

שינויים ב-API

  • בוצע ניקוי של אפשרות ה-null ב-androidx.core.view(I7078a, b/204917439)
  • נוספו ממשקי API ניסיוניים שמאפשרים להשתמש ב-PointerInputchange כשלם או לבדוק אם נעשה בו שימוש או לא. (I2e59d)
  • הצגת ווידג'ט של זכוכית מגדלת כשגוררים את הסמן או את נקודות האחיזה לבחירה בתוך שדות טקסט. (I5391e, ‏ b/203781358)

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שנקודות האחיזה של הטקסט לא זזו כשחלו שינויים במיקום של IME. (I25f2e)

גרסה ‎1.1.0-beta03

17 בנובמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-beta03 וגם androidx.compose.foundation:foundation-layout:1.1.0-beta03 מופצים. גרסה ‎1.1.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה תמיכה בפריסות אופקיות ל-LazyVerticalGrid. (I7e2fa, ‏ b/176758183)
  • נוספה יכולת ניסיונית להנפשת מיקומי פריטים ברשימות Lazy. יש משנה חדש שזמין ב-LazyItemScope שנקרא Modifier.animateItemPlacement(). דוגמה לשימוש:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • כשמספקים מפתח באמצעות LazyListScope.item או LazyListScope.items, משתמשים במאפיין הזה כדי להפעיל אנימציות של שינוי סדר הפריטים. בנוסף לשינוי הסדר של הפריטים, גם שינויים אחרים במיקום שנגרמים מאירועים כמו שינויים בסידור או ביישור ילוו באנימציה. (I59e7b, ‏ b/150812265)

גרסה ‎1.1.0-beta02

‫3 בנובמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-beta02 וגם androidx.compose.foundation:foundation-layout:1.1.0-beta02 מופצים. גרסה ‎1.1.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • מעכשיו, האפקט של גלי האדווה וסימנים אחרים יתעכבו רק אם הם נמצאים בתוך מאגר Modifier.scrollable(), ולא תמיד יתעכבו כשמתרחש אירוע של ירידה. (Ibefe0, b/203141462)
  • נוסף BringIntoView API ניסיוני שמאפשר לשלוח בקשה לרכיבי parent כדי לגלול ולהציג פריט (Ib918d, ‏ b/195353459)

External Contribution

  • נוסף בתאריך Modifier.pointerHoverIcon (I95f01)

גרסה ‎1.1.0-beta01

‫27 באוקטובר 2021

‫androidx.compose.foundation:foundation:1.1.0-beta01 וגם androidx.compose.foundation:foundation-layout:1.1.0-beta01 מופצים. גרסה ‎1.1.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • נוסף BringIntoView API ניסיוני שמאפשר לשלוח בקשה לרכיבי parent כדי לגלול ולהציג פריט (Ib918d, ‏ b/195353459)

גרסה ‎1.1.0-alpha06

‫13 באוקטובר 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha06 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha06 מופצים. גרסה ‎1.1.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה פונקציית עומס יתר ללא צאצאים עבור Layout, עם יעילות משופרת (Ib0d9a)
  • הפונקציה SemanticsNodeInteraction.performSemanticsAction מחזירה עכשיו את SemanticsNodeInteraction שעליו הופעלה הפונקציה. (I9e5db)
  • נוסף performScrollToNode(matcher: SemanticsMatcher) שגורם לגלילה של מאגר תוכן שניתן לגלילה אל התוכן שתואם לשיטת ההתאמה שצוינה. (Ic1cb8)

גרסה ‎1.1.0-alpha05

‫29 בספטמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha05 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha05 מופצים. גרסה ‎1.1.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

תיקוני באגים

  • תוקנה תמיכה בנגישות לרכיבים שניתן לגלול בהם (גם כאלה שנטענים באופן עצלני וגם כאלה שלא) בהקשר של גלילה (I6cdb0)

גרסה ‎1.1.0-alpha04

‫15 בספטמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha04 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha04 מופצים. גרסה ‎1.1.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוצאו משימוש performGesture ו-GestureScope, שהוחלפו ב-performTouchInput וב-TouchInjectionScope. (Ia5f3f, ‏ b/190493367)
  • נוסף touchBoundsInRoot אל SemanticsNode שכולל את הגודל המינימלי של יעד מגע, כדי שמפתחים יוכלו לוודא שיעדי מגע עומדים בדרישות המינימליות של הנגישות. (I2e14b, ‏ b/197751214)

תיקוני באגים

  • נוספה תמיכה בגלילה מעבר לקצה במכשירי Android 12. (Iccf3c, ‏ b/171682480)

גרסה ‎1.1.0-alpha03

‫1 בספטמבר 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha03 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha03 מופצים. גרסה ‎1.1.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • ‫Compose 1.1.0-alpha03 עודכן כך שיסתמך על Kotlin 1.5.30. (I74545)

שינויים ב-API

  • נוסף אפקט זוהר לגלילה. נוסף API חדש לניסוי OverScrollConfiguration שמאפשר להגדיר את האפקט החזותי של גלילה מעבר לקצה. כדי להשבית את אפקט הגלילה מעבר לקצה, צריך לספק ערך null. (I0c304, ‏ b/171682480)
  • ל-AwaitPointerEventScope יש עכשיו את הפונקציות withTimeout()‎ ו-withTimeoutOrNull()‎ (I507f0, ‏ b/179239764, ‏ b/182397793)
  • נוספה שיטת בדיקה לקבלת הגבולות של האזור שנחתך. (I6b28e)
  • הוספנו גודל מינימלי של יעד מגע ל-ViewConfiguration לשימוש בסמנטיקה ובקלט של מצביע, כדי להבטיח נגישות. (Ie861c)

גרסה ‎1.1.0-alpha02

‫18 באוגוסט 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha02 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha02 מופצים. גרסה ‎1.1.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו גרסאות DpSize ל-Modifier.size ול-requiredSize (I3fc7e, ‏ b/194219828)

גרסה ‎1.1.0-alpha01

‫4 באוגוסט 2021

‫androidx.compose.foundation:foundation:1.1.0-alpha01 וגם androidx.compose.foundation:foundation-layout:1.1.0-alpha01 מופצים. גרסה ‎1.1.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • עודכנה השיטה DrawScope#drawImage שצורכת מקור ומלבנים של יעד כדי לצרוך פרמטר אופציונלי של FilterQuality. האפשרות הזו שימושית ליצירת פיקסל ארט שנועד להיות מפוקסל כשמגדילים אותו, כדי ליצור אמנות שמבוססת על פיקסלים. בוצע עדכון של BitmapPainter + Image composable כך שיכלול גם פרמטר אופציונלי של FilterQuality (Ie4fb0, b/180311607)
  • עכשיו, כשלוחצים על הכפתור "הקודם", הבחירה ב-TextField מתבטלת, כמו ב-EditText ב-Android. ‫(I3ca16, ‏ b/174173645)
  • מוסיפים את האפשרות 'הוספת ידית לשינוי גודל הסמן'. (I07a82, b/173016579)

תיקוני באגים

  • הגלילה באמצעות פעולות סמנטיות ברשימות עצלות וברכיבי גלילה רגילים מונפשת עכשיו (Id9066, ‏ b/190742024)

External Contribution

  • LazyVerticalGrid תומך עכשיו בפרמטרים של סידור אופקי ואנכי. (If9c92)

גירסה 1.0

גרסה 1.0.5

‫3 בנובמבר 2021

‫androidx.compose.foundation:foundation:1.0.5 וגם androidx.compose.foundation:foundation-layout:1.0.5 מופצים. גרסה 1.0.5 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה קריסה במעקב אחר מופעים של derivedStateOf. (aosp/1792247)

גרסה 1.0.4

‫13 באוקטובר 2021

‫androidx.compose.foundation:foundation:1.0.4 וגם androidx.compose.foundation:foundation-layout:1.0.4 מופצים. גרסה 1.0.4 מכילה את השמירות האלה.

עדכונים של יחסי תלות

  • העדכון בוצע כדי להסתמך על Kotlin 1.5.31

גרסה 1.0.3

‫29 בספטמבר 2021

‫androidx.compose.foundation:foundation:1.0.3 וגם androidx.compose.foundation:foundation-layout:1.0.3 מופצים. גרסה 1.0.3 מכילה את השמירות האלה.

עדכונים של יחסי תלות

  • העדכון בוצע כדי להסתמך על Kotlin 1.5.30

גרסה 1.0.2

‫1 בספטמבר 2021

‫androidx.compose.foundation:foundation:1.0.2 וגם androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1 וגם androidx.compose.foundation:foundation-layout:1.0.1 מופצים. גרסה 1.0.1 מכילה את השמירות האלה.

עדכונים של יחסי תלות

  • העדכון כולל תלות ב-Kotlin 1.5.21.

גרסה 1.0.0

28 ביולי 2021

‫androidx.compose.foundation:foundation:1.0.0 וגם androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02 וגם androidx.compose.foundation:foundation-layout:1.0.0-rc02 מופצים. גרסה ‎1.0.0-rc02 מכילה את השמירות האלה.

  • עודכן עיבוד הגבולות של צורות גנריות כדי לפתור בעיות בנתיבים שהוגדרו עם מידות קבועות. (aosp/1748871, ‏ b/191817116)

גרסה ‎1.0.0-rc01

‫1 ביולי 2021

‫androidx.compose.foundation:foundation:1.0.0-rc01 וגם androidx.compose.foundation:foundation-layout:1.0.0-rc01 מופצים. גרסה ‎1.0.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • ‫Canvas תומך עכשיו בפרמטר contentDescription לצורך נגישות. (Ib547c)

תיקוני באגים

  • השבתה של לחצן, כרטיס, תיבות סימון או Modifier.clickable(enabled=false) באופן כללי תמנע מקליקים להגיע לרכיב ההורה. ‫(Ic2c3b, ‏ b/183908811)

גרסה ‎1.0.0-beta09

‫16 ביוני 2021

‫androidx.compose.foundation:foundation:1.0.0-beta09 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta09 מופצים. גרסה ‎1.0.0-beta09 מכילה את השמירות האלה.

שינויים ב-API

  • בוצעה הסרה של ManualFrameClock. אם אתם צריכים לשלוט באנימציות, השתמשו במקום זאת ב-composeTestRule.mainClock. (I3c3e8, b/189951065)
  • שינוי enum Role ו-LiveRegionMode למחלקות מוטבעות עם בנאי פרטי (Id1890)
  • המאפיין KeyboardCapitalization מומר למחלקה מוטבעת. (Id5a1c)
  • המאפיין TextOverflow משתנה למחלקה מוטבעת. (I433af)

תיקוני באגים

  • מעכשיו, כשמציינים את המפתחות הייחודיים לפריטים ב-LazyColumn או ב-LazyRow, מיקום הגלילה יישמר על סמך המפתח. כלומר, אם מוסיפים או מסירים פריטים לפני הפריט הנוכחי שגלוי, הפריט עם המפתח הנתון יישאר הפריט הראשון שגלוי. (Id263f, b/184257857)
  • הקבועים העיקריים הם @ExperimentalComposeUiApi בשלב הזה. קוד שנעשה בו שימוש יכול להצהיר על קבועים פרטיים לפני הייצוב. (Ia5d48)
  • הוספנו את IdlingStrategy ל-AndroidComposeTestRule שאפשר להשתמש בו במסגרות בדיקה כדי להתקין מנגנון חלופי להמתנה או להשגת מצב מנוחה. כדאי להשתמש ב-AndroidComposeTestRule.setIdlingStrategyFactory() לפני תחילת הבדיקה כדי להתקין שיטת בידינג משלכם. (I608fa)

נוספו כללי פרופיל

בגרסה הזו נוספו כללי פרופיל למודולים הבאים של כתיבת הודעות (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

מהם כללי פרופיל?

  • כללי הפרופיל של ספרייה מצוינים בקובץ טקסט baseline-prof.txt שנמצא בספרייה src/main או בספרייה מקבילה. בכל שורה בקובץ מצוין כלל, ובמקרה הזה כלל הוא תבנית להתאמה לשיטות או למחלקות בספרייה. התחביר של הכללים האלה הוא קבוצת-על של פורמט הפרופיל של ART שקריא לאנשים, שמשמש כשמשתמשים ב-adb shell profman --dump-classes-and-methods .... הכללים האלה מופיעים באחת משתי צורות, כדי לטרגט שיטות או מחלקות.

  • כלל של method ייראה כך:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • כלל כיתה יכלול את התבנית הבאה:

    <CLASS_DESCRIPTOR>
    
  • כאן <FLAGS> הוא אחד או יותר מהתווים H, S ו-P כדי לציין אם לסמן את השיטה הזו כ'פופולרית', 'הפעלה' או 'אחרי הפעלה'.

  • ‫<CLASS_DESCRIPTOR> הוא המתאר של המחלקה שאליה משתייכת המתודה המטורגטת. לדוגמה, למחלקה androidx.compose.runtime.SlotTable יהיה דסקריפטור של Landroidx/compose/runtime/SlotTable;.

  • ‫<METHOD_SIGNATURE> הוא החתימה של ה-method, והוא כולל את השם, סוגי הפרמטרים וסוגי הערכים המוחזרים של ה-method. לדוגמה, לשיטה fun isPlaced(): Boolean ב-LayoutNode יש חתימה isPlaced()Z.

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

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

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

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

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

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

איך זה עובד?

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

גרסה ‎1.0.0-beta08

‫2 ביוני 2021

‫androidx.compose.foundation:foundation:1.0.0-beta08 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta08 מופצים. גרסה ‎1.0.0-beta08 מכילה את השמירות האלה.

שינויים ב-API

  • ה-enum‏ NestedScrollSource מוחלף במחלקה מוטמעת. (Ie321b, b/187055290)
  • בוצע רפקטורינג של השימוש בסוגי enum כדי להשתמש במחלקות מוטבעות, כדי למנוע בעיות בשימוש במשפטי when מקיפים כשמוסיפים ערכים חדשים של enum. (I2b5eb)
  • נוסף פסק זמן להקשה לרכיבים שאפשר ללחוץ עליהם או להפעיל/להשבית אותם, כדי למנוע הצגת אפקט אדווה במהלך גלילה או גרירה (Ia2704,‏ b/168524931)
  • המאפיינים הסמנטיים ContentDescription ו-Text הם כבר לא ערכים יחידים אלא רשימות. כך אפשר למזג אותם כמו שהם במקום לשרשר אותם. בנוסף, סיפקנו ממשקי API טובים יותר לבדיקה כדי להשתמש בשינויים האלה (Ica6bf,‏ b/184825850)
  • הפונקציה Modifier.focusModifier() הוצאה משימוש והוחלפה בפונקציה Modifier.focusTarget() (I6c860)
  • ה-enum‏ KeyboardType מוחלף במחלקה מוטבעת. (I73045, ‏ b/187055290)
  • החלפת סוג הנתונים FocusState enum בממשק FocusState (Iccc1a, b/187055290)
  • ה-enum‏ ImeAction מוחלף במחלקה מוטמעת. (I18be5, ‏ b/187055290)
  • הפונקציות AnnotatedString.withAnnotation הן עכשיו ExperimentalTextApi במקום ExperimentalComposeApi. (I0cd0a)
    • הבונה של TextUnit עם TextUnitType הוא עכשיו ExperimentalTextApi במקום ExperimentalComposeApi.
  • הערך של PaddingValues הוא עכשיו @Stable ולא @Immutable (I88c50)

תיקוני באגים

  • תוקנו קריסות של לחיצה ארוכה על אזור ריק בטקסט לא ריק. (I33ab5, b/187437299)
  • הצגת סרגל הכלים אחרי בחירת הכול (I495d9, b/185919613)
  • תוקנה בעיה שבה קונטיינרים עם אפשרות גלילה חותכים את הרכיבים שלהם בציר הניצב. הבאג היה ניתן לשחזור בקלות אם השתמשתם ב-LazyRow עם פריטי Card. עכשיו הצל לא ייחתך. (Icb635, ‏ b/186318448)
  • תוקנה בעיה שבה גלים או אינדיקציות אחרות נתקעים לפעמים בלחיצה ארוכה כשמשתמשים ב-Modifier.combinedClickable ‏ (I2298c, ‏ b/186223077)
  • החל מגרסה detectDragGesures, ‏ detectVerticalGestures ו-detectHorizontalGestures, שינוי המיקום יתבצע באופן אוטומטי, ואין צורך להפעיל את הפונקציה change.consumePositionChange בקריאות החוזרות (callbacks) של onDrag ‏(I42fc4, ‏ b/185096350, ‏ b/187320697)
  • ‫Modifier.onGloballyPositioned() השתנה כך שידווח על הקואורדינטות של המשנה הזה בשרשרת המשנים, ולא על הקואורדינטות של הפריסה אחרי החלת כל המשנים. המשמעות היא שעכשיו סדר השינויים משפיע על הקואורדינטות שידווחו. ‫(Ieb67d, ‏ b/177926591)

גרסה ‎1.0.0-beta07

‫18 במאי 2021

‫androidx.compose.foundation:foundation:1.0.0-beta07 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta07 מופצים. גרסה ‎1.0.0-beta07 מכילה את השמירות האלה.

שינויים ב-API

  • הוצגה לוגיקה של אחזור מראש של הפריט הבא שגלוי ב-LazyColumn/Row ‏ (I8a4bc, ‏ b/184940225)
  • נוספה ידית לבחירת קליפים (Iff80d, ‏ b/183408447)

תיקוני באגים

  • הקומפוננטות LazyColumn/Row ישמרו עכשיו עד 2 פריטים שהיו גלויים בעבר כפעילים (לא יבוטלו) גם אחרי שהם כבר לא גלויים. כך הרכיב יכול לעשות שימוש חוזר בתתי-הקומפוזיציות הפעילות כשצריך ליצור פריט חדש, מה שמשפר את ביצועי הגלילה. (Ie5555)
  • מסירים את paintBackground. (I38660)
  • ציור הרקע של הבחירה באמצעות DrawScope. (I73c61, ‏ b/186674472)
  • תוקנה רגרסיה בגרסה beta06 שהשפיעה על Row/Column באמצעות סידורים של spacedBy כדי לפרוס ילדים משוקללים. (Ifaf8c, ‏ b/187326588)

גרסה ‎1.0.0-beta06

‫5 במאי 2021

‫androidx.compose.foundation:foundation:1.0.0-beta06 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta06 מופצים. גרסה ‎1.0.0-beta06 מכילה את השמירות האלה.

שינויים ב-API

  • פתרון התנגשות עם תנועת ניווט (I1145e)
  • נוספו ממשקי API של נגישות CollectionInfo ו-CollectionItemInfo שמאפשרים לסמן אוסף ופריטים בו לשירותי נגישות (Id54ef, ‏ b/180479017)
  • נוספה האפשרות SemanticsActions.ScrollToIndex לגלול ברשימה עם פריטים ממוספרים לפריט עם מספר מסוים, ונוספה האפשרות SemanticsProperties.IndexForKey לקבל את המספר של פריט ברשימה עם פריטים שמוגדרים כמפתחות. שתי הפעולות מיושמות על ידי LazyList.
    • נוספו הפונקציות SemanticsNodeInteraction.performScrollToIndex שגורמת לגלילה ברשימה עד לאינדקס שצוין, ו-SemanticsNodeInteraction.performScrollToKey שגורמת לגלילה ברשימה עד לפריט עם המפתח שצוין. (I4fe63, ‏ b/178483889, ‏ b/161584524)
  • תמיכה בשמירה של AnnotatedString ב-TextFieldValue.Saver. נוספו פונקציות כלי עזר addTtsAnnotation ו-withAnnotation ל-AnnotatedString.Builder ‏ (I8cbdc, ‏b/178446304)
  • נוספו ערכי ברירת מחדל של פרמטר 0.dp ל-PaddingValues(horizontal, vertical) (I05571, b/181336792)

תיקוני באגים

  • הילדים של Row ו-Column עם weight(fill = false) כבר לא גורמים לאב למלא את כל המרחב הזמין של הציר הראשי. (Ied94d, ‏ b/186012444, ‏ b/184355105)

גרסה ‎1.0.0-beta05

21 באפריל 2021

‫androidx.compose.foundation:foundation:1.0.0-beta05 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta05 מופצים. גרסה ‎1.0.0-beta05 מכילה את השמירות האלה.

שינויים ב-API

  • הממשק FlingBehavior מסומן עכשיו כ-‎ @Stable. כל ההטמעות צריכות להיות בהתאם לחוזה @Stable. (I93354, ‏ b/184830577)

תיקוני באגים

  • תוקנו פעולות הגלילה של הנגישות ב-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.foundation:foundation:1.0.0-beta04 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta04 מופצים. גרסה ‎1.0.0-beta04 מכילה את השמירות האלה.

שינויים ב-API

  • שינוי השם של hideSoftwareKeyboard ו-showSoftwareKeyboard ב-SoftwareKeyboardController ל-hide() ו-show() בהתאמה.
    • הוספת ממשק מלא של CompositionLocal ל-LocalSoftwareKeyboardController, שמאפשר להגדיר אותו (שימושי במיוחד בבדיקות) (I579a6)
  • השירות TextOverflow.Visible מושק. (Ic8f89)
  • הסרנו מקרים ציבוריים של RowScope, ‏ ColumnScope, ‏ BoxScope, ‏ BoxWithConstraintsScope. (I4e83e, ‏ b/181869067)

תיקוני באגים

  • תוקנה הבעיה שבה פריטים מסוג LazyColumn/LazyRow שהיו בקצוות מוקמו בצורה שגויה אחרי העברה מהירה (Ie4d13, b/183877420)
  • לפני השינוי הזה, אפשר היה לדלג על פונקציות מקומיות שניתנות להגדרה על סמך הפרמטרים שלהן. אחרי השינוי הזה, לא תהיה יותר דילוג על פונקציות מקומיות שניתנות להרכבה. השינוי הזה נעשה כי מקובל וצפוי שפונקציות מקומיות יקבלו פרמטרים מההורה שלהן, והדילוג עליהן הוא מקור נפוץ לבאגים.

    לסיכום, נסתכל על הדוגמה הבאה:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    לפני השינוי הזה, הפונקציה ShowCount הייתה תמיד מדלגת, גם אחרי שהפרמטר count עודכן. זה כבר לא המצב. (I5648a)

גרסה ‎1.0.0-beta03

‫24 במרץ 2021

‫androidx.compose.foundation:foundation:1.0.0-beta03 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta03 מופצים. גרסה ‎1.0.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • האפשרות DefaultMonotonicFrameClock הוצאה משימוש. התקשרות אל withFrameNanos או Recomposer.runRecomposeAndApplyChanges ללא MonotonicFrameClock תגרום עכשיו לשגיאה IllegalStateException. (I4eb0d)

תיקוני באגים

  • ‫FlingBehavior.performFling() נקראת עכשיו גם כשהמהירות היא 0 (I0b6e5, ‏ b/181237123)

גרסה ‎1.0.0-beta02

10 במרץ 2021

‫androidx.compose.foundation:foundation:1.0.0-beta02 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta02 מופצים. גרסה ‎1.0.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו כמה אופטימיזציות קטנות ללוגיקה של מדידת LazyColumn ‏ (Ic6889)
  • נוסף ממשק API חדש של LocalSoftwareKeyboardController composition local כדי להחליף את הממשק הקודם SoftwareKeyboardController ב-TextField. ‫(I5951e, ‏ b/168778053)
  • נוסף ממשק API חדש של LocalSoftwareKeyboardController composition local כדי להחליף את הממשק הקודם SoftwareKeyboardController ב-TextField. (I84472, ‏ b/168778053)

תיקוני באגים

  • החלת הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, ‏ b/174531520)

גרסה ‎1.0.0-beta01

24 בפברואר 2021

‫androidx.compose.foundation:foundation:1.0.0-beta01 וגם androidx.compose.foundation:foundation-layout:1.0.0-beta01 מופצים. גרסה ‎1.0.0-beta01 מכילה את השמירות האלה.

זו הגרסה הראשונה של Compose 1.0.0 Beta.

שינויים ב-API

  • הקראה החוזרת (callback) מסוג onStart נוספה אל detectDragGestures (I67269, ‏ b/179995594)
  • השימוש בשינויים לשינוי גודל לפי מאפיינים מובנים כבר לא נחשב לניסיוני. (I15744)
  • הוסרו הצהרות dp ‏ (I798d2)
  • הוסר קריאה חוזרת (callback) של SoftwareKeyboardController מכל שדות הטקסט, והיא תוחלף בקרוב על ידי API חדש. (Iae869, b/168778053)
  • השם של 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)
  • הוסרו שיטות LayoutCoordinates שהוצאו משימוש. במקום המאפיין משתמשים בפונקציה למיקום בפריט האב ולגבולות בפריט האב (I580ed,‏ b/169874631,‏ b/175142755)
  • נוצר TextInputSession חדש לסשנים של קלט מרכיבי טקסט ברמה נמוכה, כמו CoreTextField. (I8817f, b/177662148)
  • הקומפוננטה Placeable חושפת עכשיו את המאפיין measuredSize, שמייצג את הגודל שהפריסה של רכיב הצאצא מדדה בפועל. יכול להיות שהגודל הזה לא תואם למגבלות המדידה. (Ib2729, ‏ b/172560206, ‏ b/172338608)
  • הוספת משנה selectionGroup שמאפשר לסמן אוסף של כרטיסיות או לחצני בחירה למטרות נגישות (Ie5c29)
  • הוספת LazyListState.animateScrollToItem

    השיטה הזו מבצעת גלילה חלקה לפריט ספציפי ברשימה. (I4bfd7)

  • השם של ScrollableState.smoothScrollBy() שונה ל-animateScrollBy() השם של LazyListState.snapToItemIndex() שונה ל-scrollToItem() השם של ScrollState.smoothScrollTo() שונה ל-animateScrollTo() (I35ded)

  • הפונקציה Modifier.zoomable הוחלפה בפונקציה Modifier.transformable. הפונקציות smoothPanBy ו-smoothRotationBy נוספו כפונקציונליות. (Ifc32b, ‏ b/175294473)

  • השדה defaultFactory עבור compositionLocalOf ו-staticCompositionLocalOf הוא עכשיו שדה חובה ולא שדה אופציונלי.

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

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

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

  • הערך של Indication#createIndication() השתנה מ-Indication#rememberUpdatedIndication(InteractionState) ל-InteractionState, והפרמטר הוסר מ-IndicationInstance#drawIndication(). ה-IndicationInstance צריך להיות אחראי רק על ציור אפקטים חזותיים, ולא על הפעלת אנימציות או כתיבת מצב בתגובה לשינויים ב-InteractionState. האנימציות והפעולות האלה צריכות להתרחש בתוך rememberUpdatedIndication(). הפרמטר indication ב-Modifier.indication השתנה גם הוא לפרמטר חובה. (Ic1764, ‏ b/152525426)

  • הפעולות בטקסט בודקות עכשיו את המיקוד באופן אוטומטי (I13777, ‏ b/179648629)

  • הוסרה runBlockingWithManualClock (I15cdc, ‏ b/179664814)

  • מיקום הגלילה ב-Modifier.verticalScroll()/horizontalScroll() מיוצג עכשיו באמצעות Ints (I81298)

  • החבילות של השיטות smoothScrollBy ו-scrollBy השתנו ל-androidx.compose.foundation.gestures.* (I3f7c1, ‏ b/175294473)

  • השם של FlingConfig שונה ל-FlingBehavior, ועכשיו אפשר להתאים אישית את האנימציה של ההשהיה במקום להשתמש ב-Decays מוגדרים מראש. (I02b86, b/175294473)

  • שם המאפיין 'מידות' שונה. השמות של המאפיינים Modifier.width/height/size שונו ל-requiredWidth/requiredHeight/requiredSize. השמות של המאפיינים Modifier.preferredWidth/preferredHeight/preferredSize שונו ל-width/height/size. (I5b414)

  • השם של defaultMinSizeConstraints שונה ל-defaultMinSize. (I4eaae)

  • המסנן Modifier.tapGestureFilter הוסר. במקומה, צריך להשתמש ב-method‏ Modifier.pointerInput { detectTapGestures(...) }. (I266ed, ‏ b/175294473)

  • הוסר מהמערכת של קלט באמצעות הצבעה שימוש חלקי. הדרך המומלצת לתאם צריכה חלקית היא Modifier.nestedScroll. (Ie9c9b)

  • ההדרכה הועברה לחבילת הבסיס. ה-API‏ VelocirtTracker הועבר מ-ui.gesture אל ui.input.pointer. (Iff4a8, ‏ b/175294473)

  • הוסרו המחלקות AnimationClockObservable ומחלקות המשנה שלה. התכונה AnimatedFloat הוסרה. (Icde52, b/177457083)

  • הפונקציות drawerState.open()‎ ו-drawerState.close()‎ מושהות עכשיו. כדי לקבל את ההיקף של הקומפוזיציה ולהפעיל אותן, משתמשים ב-rememberCoroutineScope()‎ ‏ (I16f60,‏ b/175294473)

  • השם Providers השתנה ל-CompositionLocalProvider

    • הקונסטרוקטור Composition לא מקבל יותר פרמטר מפתח, והוא הוצא משימוש.
    • הפונקציה currentCompositeKeyHash הפכה לנכס ברמה העליונה שאפשר להגדיר, במקום פונקציה ברמה העליונה שאפשר להגדיר.
    • המחלקות CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
    • הפונקציה ComposableLambda הפכה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
    • הפכנו את ComposableLambdaN לממשק במקום למחלקה קונקרטית, והוא כבר לא כולל פרמטרים של סוג.
    • הפונקציה snapshotFlow הועברה למרחב השמות androidx.compose.runtime
    • שיטת המיזוג של SnapshotMutationPolicy כבר לא ניסיונית
    • הפונקציה @TestOnly clearRoots ברמה העליונה הוסרה. היא כבר לא נחוצה.
    • הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
    • הפונקציה Composer.collectKeySourceInformation הוסרה. היא כבר לא נחוצה.
    • השיטות isJoinedKey,‏ joinedKeyLeft ו-joinedKeyRight הוסרו. הם כבר לא נחוצים.
    • ממשקי API שונים ברמה העליונה הועברו ואורגנו מחדש בקבצים שונים. בגלל הסמנטיקה של מחלקת הקבצים ב-Kotlin, תהיה בעיה בתאימות הבינארית אבל לא בתאימות המקורית, ולכן לא אמורה להיות בעיה לרוב המשתמשים.
    • (I99b7d, b/177245490)
  • בוצע שינוי ב-Modifier.scrollable. עכשיו נעשה שימוש בממשק עם אפשרות גלילה במקום במחלקה ScrollableController‏ (I4f5a5, ‏ b/174485541, ‏ b/175294473)

  • הפונקציה Modifier.draggable מקבלת עכשיו DraggableState במקום פונקציית למדה פשוטה. אפשר ליצור מצב באמצעות rememberDraggableState { delta -> } כדי לקבל את אותה התנהגות כמו קודם (Ica70f, ‏ b/175294473)

  • נוספו משני הגודל requiredWidth(IntrinsicSize) ו-requiredHeight(IntrinsicSize) כדי להגדיר גודל נדרש לגדלים טבעיים. (I0a6b4)

  • הוסר emptyContent() שהוצא משימוש. במקומה צריך להשתמש במדיניות {}. (Idb33f, ‏ b/179432510)

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

תיקוני באגים

  • נוסף ממשק API חדש של LocalSoftwareKeyboardController composition local כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. ‫(I658b6, b/168778053)

גרסה ‎1.0.0-alpha12

‫10 בפברואר 2021

‫androidx.compose.foundation:foundation:1.0.0-alpha12 וגם androidx.compose.foundation:foundation-layout:1.0.0-alpha12 מופצים. גרסה ‎1.0.0-alpha12 מכילה את השמירות האלה.

שינויים ב-API

  • הפונקציה Modifier.pointerInput מחייבת עכשיו שימוש במפתחות remember כדי לציין מתי שגרת המשך (coroutine) הזיהוי של קלט מצביע צריכה להתחיל מחדש עבור תלות חדשות. (I849cd)
  • עדכון בדיקה: הפונקציה hasText() תבדוק את הטקסט בשדה הטקסט, כולל טקסט של קלט, תווית, רמז או placeholder (Iab803)
  • נוסף PaddingValues.Absolute ואפשר להשתמש בו בממשקי API שמקבלים PaddingValues. (Ia5f30)
  • השיטה onImeActionPerformed הוצאה משימוש. במקומה צריך להשתמש ב-KeyboardActions (If0bbd, b/179071523)
  • כדי להתאים טוב יותר את מוסכמות מתן השמות ל-ImageBitmap ול-ImageVector, השם של ImagePainter שונה ל-BitmapPainter כדי ליצור הקבלה ל-VectorPainter. ‫(Iba381, ‏ b/174565889)
  • ממשקי API טובים יותר לבדיקת מחרוזת משנה, עם מחרוזת משנה כארגומנט (Icbe78)
  • נוסף רכיב של הקשר קורוטינה InfiniteAnimationPolicy שיחול על אנימציות אינסופיות. כברירת מחדל, לא מותקנת מדיניות, אלא אם מריצים בדיקות עם ComposeTestRule. ‫(I50ec4, ‏ b/151940543)
  • הפונקציות Animatable.snapTo ו-Animatable.stop הן עכשיו פונקציות השעיה (If4288)
  • הפונקציה ComponentActivity.setContent הועברה אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
  • הוסרו ה-methods של copy()‎ ו-destructuring מכמה מחלקות שבהן נעשה בהם שימוש לעיתים רחוקות. (I26702, ‏ b/178659281)
  • נוספה תמיכה במפתחות מותאמים אישית עבור LazyColumn/LazyRow. כך אנחנו יכולים לטפל בצורה חכמה יותר בסידור מחדש של פריטים. לכן, המצב ששמרתם בבלוקים remember {}‎ יזוז יחד עם הפריט כשתסדרו מחדש את הרכיבים או כשתסירו את הפריט מהאמצע.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • הפונקציה Indication#createInstance שונתה ל-@Composable, והפונקציה LocalIndication שונתה כך שתכיל Indication, ולא () -> Indication. (I5eeea, ‏ b/157150564)

  • ‫Constraints.enforce הוחלף ב-Constraints.constrain. (I8b8ea)

  • הפונקציה loadFontResource הוצאה משימוש. צריך להשתמש ב-fontResource במקום ב-imageResource,‏ loadImageResource,‏ vectorResource ו-loadVectorResource שהוצאו משימוש. במקומו, צריך להשתמש ב-painterResource. (I6b809)

  • מסיבות שקשורות לביצועים, הסמנטיקה של ScrollAxisRange מקבלת עכשיו ביטויי למדה שמחזירים ערכי Float במקום ערכי Float ישירים. (If4a35, ‏ b/178657186)

  • נוספה סמנטיקה של EditableText כדי לסמן טקסט קלט שניתן לעריכה בשדה הטקסט לצורך נגישות, ונוספו שיטות בדיקה תואמות כדי לבדוק את הסמנטיקה (I8e07a)

  • המשנה Modifier.clickable לא תומך יותר בקליק כפול ובלחיצה ארוכה. כדי להשיג את הפונקציונליות הזו, משתמשים ב-Modifier.combinedClickable. (Iafad1)

  • הפונקציה toIntPx() שונה ל-roundToPx(). ‏(I9b7e4, ‏ b/173502290)

  • השם של IntBounds שונה ל-IntRect וה-API שופר. (I1f6ff)

  • המאפיין Modifier.dragGestureFilter הוצא משימוש. במקומה, צריך להשתמש ב-method‏ Modifier.pointerInput { detectDragGestures (...)}. אפשר גם להשתמש ב-Modifier.draggable לגרירה בציר אחד (I0ba93,‏ b/175294473)

  • שונה השם של Ambients כדי להתאים לשינוי השם של Ambient -> CompositionLocal. בעבר, השם של Ambients היה AmbientFoo, ועכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)

  • הבחירה הועברה לבסיס. (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)

  • זמן ההפעלה באנימציה מאוחד עכשיו למיליארדית השנייה (If776a)

  • ההערה @ComposableContract הוצאה משימוש, ועכשיו יש שלוש הערות ספציפיות יותר.

    @ComposableContract(restartable = false) הפך ל-@NonRestartableComposable @ComposableContract(readonly = true) הפך ל-@ReadOnlyComposable @ComposableContract(preventCapture = true) הפך ל-@DisallowComposableCalls @ComposableContract(tracked = true) הוסר. (I60a9d)

  • הוצאנו משימוש את כלי השירות emptyContent() ו-(@Composable () -> Unit).orEmpty() כי הם כבר לא משפיעים לטובה על הביצועים או על הערך (I0484d)

  • עכשיו אפשר לסגור את כלי ההלחנה מחדש. רכיבי recomposition סגורים ימשיכו לבצע recomposition עד שקורוטינות הצאצא של ה-composition יושלמו. השם של הפונקציה Recomposer.shutDown שונה ל-cancel כדי ליצור ניגוד לפונקציה close. (Ib6d76)

  • ממשקי API שקשורים ל-LazyVerticalGrid מסומנים כניסיוניים (Ia53e3, ‏ b/178519862)

  • הפונקציה rememberSavedInstanceState() קיבלה את השם rememberSaveable() והועברה לחבילה androidx.compose.runtime.saveable. ‫(I1366e, ‏ b/177338004)

  • השם של RestorableStateHolder שונה ל-SaveableStateHolder והוא הועבר לחבילה androidx.compose.runtime.saveable. השם של ה-method הפנימי RestorableStateProvider השתנה ל-SaveableStateProvider. הסוג הגנרי הוסר, כך שאפשר להעביר Any כמפתח. אין יותר צורך בהערה ניסיונית. (I0902e, ‏ b/174598702)

  • הפונקציות Saver, ‏ listSaver(), ‏ mapSaver(), ‏ autoSaver הועברו מ-androidx.compose.runtime.savedinstancestate אל androidx.compose.runtime.saveable (I77fe6)

  • הארטיפקט 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)

  • השמות של הפרמטרים ב-RounderCornerShape, ‏ CutCornerShape ו-CornerBasedShape שונו מ-left/right (ימין/שמאל) ל-start/end (התחלה/סיום) כדי לתמוך בשיקוף האוטומטי של הצורה בכיוון מימין לשמאל. הוספנו את הצורות AbsoluteRounderCornerShape ו-AbsoluteCutCornerShape למקרים שבהם לא רוצים שיקוף אוטומטי. ‫(I61040, ‏ b/152756983)

  • המאפיין canDrag הוסר מהמשנה Modifier.scrollable. (Id66e7, b/175294473)

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

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

  • המסנן Modifier.scaleGestureFilter הוסר. במקומו, צריך להשתמש ב-Modifier.zoomable. לחלופין, אפשר להשתמש ב-Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, ‏ b/175294473)

  • הוצאנו משימוש את AnimatedValue/Float. במקומו צריך להשתמש ב-Animatable. (I71345, ‏ b/177457083)

    • הוסרו CoreText ו-CoreTextField מ-API ציבורי
    • הוסר עומס יתר של SelectionContainer שיצא משימוש (I99c19)
  • הסרה של פונקציות גלילה שהוצאו משימוש ולא מושהות בהמשך לשינויים מהגרסה הקודמת, פונקציות הגלילה שלא מושהות הוסרו לגמרי. צריך להמיר לפונקציות השהיה עם אותם שמות. אפשר לקבל היקף של שגרת המשך (coroutine) באמצעות rememberCoroutineScope().‏ (I3d39c, ‏ b/178169563)

  • ה-API‏ androidx.compose.foundation.layout.ConstraintLayout הוצא משימוש לטובת androidx.constraintlayout.compose.ConstraintLayout. תצטרכו להוסיף תלות ב-androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

  • ה-API‏ tapGestureFilter, ‏ doubleTapGestureFilter, ‏ longPressGestureFilter ו-pressIndicaitonGestureFilter הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.clickable או ב-Modifier.pointerInput עם הפונקציה detectTapGestures. (I6baf9, b/175294473)

  • בוצעה הסרה של 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)

גרסה ‎1.0.0-alpha11

‫28 בינואר 2021

‫androidx.compose.foundation:foundation:1.0.0-alpha11 וגם androidx.compose.foundation:foundation-layout:1.0.0-alpha11 מופצים. גרסה ‎1.0.0-alpha11 מכילה את השמירות האלה.

שינויים ב-API

  • הוצאה משימוש של scrollBy שלא מושהה, הסרה של scrollTo שלא מושהה

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

  • הוצאה משימוש של smoothScrollBy שאינה פונקציית השהיה מעכשיו מומלץ להשתמש בפונקציות השהיה כדי לשלוט בגלילה ולחכות שהגלילה תסתיים. כחלק מהמעבר הזה, אנחנו מוציאים משימוש את הגרסאות של הפונקציות האלה שלא כוללות השהיה. (I12880)

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

  • הפרמטר החדש שנוסף ל-BasicTextField נקרא decorationBox. הוא מאפשר להוסיף קישוטים כמו סמלים, placeholder, תווית וכדומה לשדה הטקסט ולהגדיל את אזור היעד של ההקשה. (I16996)

  • הפרמטר canDrag הוסר מה-Modifier.draggable ‏ (Ic4bec, ‏ b/175294473)

  • הפונקציה AnimatedFloat.fling שמקבלת FlingConfig הוסרה. במקומה צריך להשתמש ב-suspend Animatable.animateDecay. (I4659b, ‏ b/177457083)

  • הוסר data class מהכיתות הבאות:

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • אפשר ליצור עכשיו רכיבים מסוג clickable, ‏ toggleable ו-selectable מחוץ לרכיב composition ‏ (I0a130, ‏ b/172938345, ‏ b/175294473)

  • התכונות ScrollableColumn ו-ScrollableRow הוצאו משימוש. השימוש ב-ScrollableColumn פחות יעיל בהשוואה ל-LazyColumn כשמציגים תוכן ארוך שניתן לגלילה, כי ב-LazyColumn אפשר להגדיר, למדוד ולצייר רק את הרכיבים הגלויים. כדי למנוע מהמשתמשים להשתמש בדרך לא יעילה, החלטנו להוציא משימוש את ScrollableColumn ו-ScrollableRow ולעודד שימוש ב-LazyColumn וב-LazyRow במקום זאת. המשתמשים עדיין יכולים להחליט שהם לא צריכים את ההתנהגות של Lazy ולשנות את המאפיינים ישירות כך: 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)

  • הוסר AbsoluteArrangement שהוצא משימוש. (Iffa96, ‏ b/177641870)

  • הפרמטר propagateMinConstraints נוסף ל-Box כדי לציין אם אילוצי המינימום הנכנסים צריכים לעבור לתוכן של ה-Box או לא. ברירת המחדל היא false. (I0125b, ‏ b/152613457)

תיקוני באגים

  • הפונקציות onCommit,‏ onDispose ו-onActive הוצאו משימוש לטובת ממשקי ה-API‏ SideEffect ו-DisposableEffect‏ (If760e)
  • הקומפוזיציה WithConstraints עברה שינוי, נקראת עכשיו BoxWithConstraints והועברה אל foundation.layout. (I9420b, b/173387208)
  • שינויים בפונקציות של 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)

  • הצפיפות היא עכשיו היקף המקלט לממשקי סידור. (I18aad)

  • ‫TextFieldValue מקבל AnnotatedString. עם זאת, זהו שינוי שמתבצע רק ב-API, ועדיין לא הוטמעה האפשרות לעריכת טקסט עם כמה סגנונות.

    • הוסר initial מפרמטרים של בנאי EditingBuffer. (I326d5)
  • הפונקציות invalidate ו-compositionReference() הוצאו משימוש, ועכשיו משתמשים בפונקציות currentRecomposeScope ו-rememberCompositionReference בהתאמה. (I583a8)

  • המחרוזת AnnotatedString השתנתה כך שהיא נגזרת מ-kotlin.CharSequence. לכן, הפונקציות length ו-subSequence הן עכשיו פונקציות מופע, והפונקציות של התוסף הוסרו. (Iaf429)

  • המשך והזמן שהמערכת פעלה יוחלפו באלפיות שנייה ארוכות, ובשלב הזה תוסר התלות של קלט מצביע במחלקות האלה. (Ia33b2, ‏ b/175142755, ‏ b/177420019)

  • חשוב לזכור: 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)

  • שם המאפיין TransformedText.transformedText שונה ל-TransformedText.text

    • ‫TransformedText הוא כבר לא מחלקת נתונים (Ie672a)
  • הכיתות הבאות הן כבר לא כיתות נתונים:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • ‫TextLayoutInput (Iaff99)
  • הוסרו שיטות ניסיוניות של monotonicFrameAnimationClockOf ‏ (Ib753f, ‏ b/170708374)

  • הוצאנו משימוש שיטות של קואורדינטות גלובליות ויצרנו שיטות חדשות של קואורדינטות מבוססות חלון. (Iee284)

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

    • במקום ImeAction.Unspecified (Ie1bcc), צריך להשתמש ב-ImeAction.Default
  • הפונקציה FocusRequester.createRefs מסומנת עכשיו כניסיונית כי יכול להיות שהיא תשתנה. (I2d898, b/177000821)

  • השם של SemanticsPropertyReceiver.hidden שונה ל-invisibleToUser והוא סומן כ-@ExperimentalComposeUiApi. השם של AccessibilityRangeInfo שונה ל-ProgressBarRangeInfo. השם של stateDescriptionRange שונה ל-progressBarRangeInfo. השם של AccessibilityScrollState השתנה ל-ScrollAxisRange. השם של horizontalAccessibilityScrollState השתנה ל-horizontalScrollAxisRange. השם של verticalAccessibilityScrollState השתנה ל-verticalScrollAxisRange. (Id3148)

  • הפכנו את VisualTransformation לממשק פונקציונלי (I3bba4)

  • שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)

  • הוסר PointerInputData ובוצע שינוי ב-PointerInputChange כדי להעביר אליו את כל השדות של PointerInputData. הפכנו את PointerInputEvent ואת PointerInputEventData לפנימיים כי הם לא בשימוש בממשקי API ציבוריים. ‫(Ifff97, ‏ b/175142755)

  • השם של TextInputService.onStateUpdated שונה ל-updateState (Id4853)

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

גרסה ‎1.0.0-alpha10

‫13 בינואר 2021

‫androidx.compose.foundation:foundation:1.0.0-alpha10 וגם androidx.compose.foundation:foundation-layout:1.0.0-alpha10 מופצים. גרסה ‎1.0.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • המחלקות ImeOptions ו-KeyboardOptions הן כבר לא מחלקות נתונים (I3c898, ‏ b/168684531)
  • שינויים ב-VisualTransformation API
    • השם של OffsetMap שונה ל-OffsetMapping
    • השם של OffsetMapping.identityOffsetMap השתנה ל-OffsetMapping.Identity
    • ה-PasswordTransformation כבר לא מסווג כנתונים
    • העברנו את OffsetMapping לקובץ משלו
    • (I0bdf3)
  • שינויים ב-EditOperations API
    • שינוי השם של EditOperation ל-EditCommand
    • הוספנו סיומת פקודה להטמעות קונקרטיות של EditOperation
    • ‫EditCommand's כבר לא מסווגות כ-data classes
    • השם של הפונקציה EditOperation.process השתנה ל-applyTo
    • השם של InputEventListener שונה ל-InputEventCallback
    • (I0a366)
  • שינינו את Velocity כך שיכלול חלקי רכיבים ופעולות מתמטיות. (Ib0447)
  • השם @ExperimentalTesting שונה ל-@ExperimentalTestApi כדי לשמור על עקביות עם הערות דומות של ממשקי API ניסיוניים (Ia4502, ‏ b/171464963)
  • נוספה שיטה ניסיונית של stickyHeader ל-LazyColumn/LazyRow (I0a81d)
  • שינוי השם של Color.useOrElse()‎ ל-Color.takeOrElse()‎ ‏(Ifdcf5)
  • הוצא משימוש TestUiDispatcher. במקום זאת, אפשר להשתמש ב-Dispatchers.Main ‏ (Ic171f,‏ b/175385255)
  • הוספת מתג ל-foundation Strings.kt ‏ (I4a5b7, ‏ b/172366489)
  • העברנו את nativeClass למודול ui והגדרנו אותו כפנימי. השימוש ב-nativeClass עודכן בהטמעות של equals כדי להשתמש ב-'is MyClass' במקום זאת. (I4f734)
  • הרכיבים FlowRow ו-FlowColumn הוצאו משימוש. במקום זאת, צריך להשתמש בפריסה בהתאמה אישית. (I09027)
  • הפונקציות Modifier.focus()‎ ו-Modifier.focusRequester()‎ הוצאו משימוש. במקומו צריך להשתמש ב-Modifier.focusModifier()‎ וב-Modifier.focusReference()‎. (I75a48, ‏ b/175160751, ‏ b/175160532, ‏ b/175077829)
  • הוספנו את SelectionRegistrar.notifySelectableChange כדי להודיע ל-SelectionManager על עדכונים ב-Selectable. (I6ff30, ‏ b/173215242)
  • התפקיד של fun Dp.isFinite() שונה לval Dp.isFinite (I50e00)
  • השם של Constraints#satisfiedBy השתנה ל-isSatisfiedBy. (I9cf5c)
  • נוספו הפונקציות isSpecified,‏ isUnspecified ו-useOrElse למחלקות מוטבעות עם קבוע Unspecified. (I93f7b, ‏ b/174310811)

תיקוני באגים

  • ‫API חדש מבוסס-קוריטינות Animatable שמבטיח הדרה הדדית בין האנימציות שלו. ‫New DecayAnimationSpec to support multi-dimensional decay animation (I820f2, b/168014930)
  • נוספה תמיכה בשדות טקסט מושבתים ולקריאה בלבד (I35279, ‏ b/171040474, ‏ b/166478534)
  • הפונקציה animate() הוחלפה בפונקציה animateAsState(), שמחזירה State<T> במקום T. כך אפשר לשפר את הביצועים, כי אפשר לצמצם את היקף הביטול למקום שבו נקרא ערך המצב. (Ib179e)
  • מוסיפים את Semantics role API ומוסיפים Role כפרמטר ל-SemanticsModifier שאפשר ללחוץ עליו, לבחור אותו ולהפעיל או להשבית אותו. בוצע שינוי ב-Modifier.progressSemantics כדי שגם Slider יוכל להשתמש בו. (I216cd)
  • עכשיו אפשר לגשת ל-keyEvent המקורי דרך keyEvent.nativeKeyEvent ‏ (I87c57, ‏ b/173086397)

גרסה ‎1.0.0-alpha09

‫16 בדצמבר 2020

‫androidx.compose.foundation:foundation:1.0.0-alpha09 וגם androidx.compose.foundation:foundation-layout:1.0.0-alpha09 מופצים. גרסה ‎1.0.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת ממשק עם אפשרות גלילה

    כך אפשר להתייחס ל-ScrollState ול-LazyListState כאל סוג משותף, ולאפשר הטמעה של גלילה בהתאמה אישית בשני הסוגים.

    בנוסף, הפונקציה smoothScrollBy מועברת לפונקציית תוסף ב-Scrollable, כדי לנצל את הפונקציונליות הזו. (I2153b)

  • נוסף LazyVerticalGrid. ‫(I17267, ‏ b/162213211)

  • הוצאה משימוש של LazyColumnFor, ‏ LazyRowFor, ‏ LazyColumnForIndexed ו-LazyRowForIndexed. במקום זאת, צריך להשתמש ב-LazyColumn וב-LazyRow‏ (I5b48c)

  • לגבי השעיה של ממשקי API לקלט של מצביע, השם של HandlePointerInputScope שונה ל-AwaitPointerEventScope והשם של handlePointerInput() שונה ל-awaitPointerEventScope(). (Idf0a1, ‏ b/175142755)

  • הוספנו את LazyListState.layoutInfo שחושף את רשימת הגדלים וההיסטים של הפריטים שמוצגים כרגע (If8678, ‏ b/170472532)

  • הוסרה ההערה ExperimentalPointerInput ‏ (Ia7a24)

  • הוספנו תמיכה ב-InteractionState עבור TextFields. (I61d91)

  • הוספת פרמטר reverseLayout ל-LazyColumn/Row. כשמגדירים את הפרמטר הזה כ-true, הפריטים יורכבו מלמטה למעלה, וכשמגדירים אותו כ-LazyListState.firstVisibleItemIndex == 0, הפריט הראשון ימוקם בתחתית. (I552ae, b/166589935)

  • נוסף פרמטר verticalArrangement ל-LazyColumn. נוסף פרמטר horizontalArrangement ל-LazyRow. הסידור מאפשר לנו להוסיף רווח בין הפריטים ולציין את הסידור שלהם כשאין לנו מספיק פריטים כדי למלא את הגודל המינימלי. (Icf79a, ‏ b/170394300)

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

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

תיקוני באגים

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

    הוצאנו משימוש ממשקי API של פונקציות ליצירת שיפועים, ועברנו לשימוש במתודות ליצירת אובייקטים (factory methods) באובייקט Gradient. (I511fc, ‏ b/173066799)

  • המאפיין Modifier.focusObserver הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.onFocusChanged או ב-Modifier.onFocusEvent ‏ (I30f17,‏ b/168511863,‏ b/168511484)

  • ה-API של מילוי אוטומטי הוא עכשיו API ניסיוני ונדרשת הסכמה לשימוש בו (I0a1ec)

  • הוספת הצהרות על פירוק מבנה כדי ליצור מופעים של FocusRequester ‏ (I35d84, ‏ b/174817008)

  • השם של accessibilityLabel השתנה ל-contentDescription. השם של accessibilityValue השתנה ל-stateDescription. (I250f2)

  • הוספנו כמה פונקציות חדשות ב-SelectionRegistrar ושינינו את השם של onPositionChange ל-notifyPositionChange. (Ifbaf7)

  • AndroidOwner made internal (Ibcad0, b/170296980)

  • פונקציה חדשה infiniteRepeatable ליצירת InfiniteRepeatableSpec‏ (I668e5)

  • הממשק של Applier השתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.

    השם של ה-method‏ insert() השתנה ל-insertTopDown().

    נוספה שיטה חדשה, insertBottomUp().

    ממשק החלה מוסיף צמתים לעץ שהוא עורך באמצעות insertTopDown() או insertBottomUp(), בהתאם למה שמניב ביצועים טובים יותר.

    יעיל יותר לבנות חלק מהעצים, כמו LayoutNode ו-View, מלמטה למעלה ולא מלמעלה למטה. לפני השינוי הזה, היה צריך להשתמש במערך של תוספים כדי להטמיע בנייה מלמטה למעלה, והיה צריך להעתיק את המערך לכל כלי שנדרשה בו בנייה מלמטה למעלה כדי לשפר את הביצועים. בעקבות השינוי הזה, Applier מחליף את insertBottomUp() כדי ליצור עץ מלמטה למעלה, ו- insertTopDown() מחליף את כדי ליצור עץ מלמעלה למטה. (Icbdc2)

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

  • נוספה פונקציית פקטורי (factory) buildAnnotatedString כדי ליצור AnnotatedString. הפונקציה annotatedString builder הוצאה משימוש. (Idfe0b)

גרסה ‎1.0.0-alpha08

‫2 בדצמבר 2020

‫androidx.compose.foundation:foundation:1.0.0-alpha08 וגם androidx.compose.foundation:foundation-layout:1.0.0-alpha08 מופצים. גרסה ‎1.0.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • הפרמטר maxLines הוסר מהרשימה CoreTextField. אם רוצים להגביל את הגובה של שדה הטקסט לפי מספר השורות, משתמשים במקום זאת בערך BasicTextField. (Iec002)
  • שינינו את השיטות await*TouchSlop() כך שלא יזהו את הצבעה למטה, ושינינו את השם שלהן ל-*OrCancellation. הוסר גם הצורך בפרמטר orientationLock. (Ie96e1)
  • נוספה בדיקת Lint לשמות ולמיקום של פרמטרים של lambda שניתנים להרכבה, כדי לבדוק את העקביות עם ההנחיות של Compose. בנוסף, העברנו חלק מממשקי ה-API באמצעות children כשם של פונקציית ה-lambda האחרונה שלהם אל content, בהתאם לבדיקת ה-lint ולהנחיות. (Iec48e)
  • ‫foundation:foundation-text APIs הועברו אל foundation:foundation. מבנה החבילה נשאר ללא שינוי (Id3eb2)
  • גלאי חדש של תנועות מגע מרובות, כולל כלים לזיהוי סיבוב, שינוי מרחק התצוגה והזזה. (Ic459d)
  • גלאי חדש של תנועת גרירה שמשעה את API של קלט מצביע, כולל נעילת כיוון. (Icef25)
  • שינינו את השם של VectorAsset ל-ImageVector העברנו את VectorAsset ל-Builder ושינינו את השם שלו כדי שיהיה מחלקה פנימית של ImageVector בהתאם להנחיות של מועצת ה-API. הוספנו typealias של VectorAssetBuilder כדי לקשר אל ImageVector.Builder לצורך תאימות. (Icfdc8)
  • שינינו את השם של ImageAsset ושל ה-methods שקשורים אליו ל-ImageBitmap. (Ia2d99)
  • העברנו מאפיינים של סמנטיקה של רכיבים בסיסיים אל ui ‏ (I6f05c)
  • הוספנו ממשקי API של גלילה שמבוססים על קורוטינות:

    הוספנו את LazyListState.snapToItem ואת LazyListState.smoothScrollBy, וגם ממשקי API ברמה נמוכה יותר לשליטה בגלילה. ממשקי ה-API האלה מספקים ממשק השהיה לשליטה בגלילה שמחכה עד שהגלילה מסתיימת לפני שהיא חוזרת. (Ie5642)

  • נוסף פרמטר singeLine ל-BasicTextField, ל-TextField ול-OutlinedTextField. כדי להגדיר את שדה הטקסט כשורה אחת שאפשר לגלול בה אופקית, מגדירים את הפרמטר הזה לערך true. ‫(I57004, ‏ b/168187755)

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

  • המאפיין Modifier.focusable נוסף ל-foundation. המאפיין הזה מאפשר להוסיף התנהגות של רכיב שאפשר להתמקד בו, עם סמנטיקה ונגישות נכונות. (I41eb9, ‏ b/152525426, ‏ b/162865824)

  • הוסרו ממשקי API שהוצאו משימוש בעבר: הוסר Border, צריך להשתמש במקומו ב-BorderStroke. הפונקציה Modifier.drawBorder הוסרה. במקומה צריך להשתמש בפונקציה Modifier.border. המאפיין Modifier.gravity הוסר. במקומו צריך להשתמש במאפיין Modifier.align. המקבץ הוסר, צריך להשתמש בתיבה במקום זאת (I32c2b, ‏ b/172470874)

  • השם AbsoluteArrangement שונה ל-Arrangement.Absolute. (If26f2)

תיקוני באגים

  • העברנו את ממשקי 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)
  • ‫<T> הוסר מההצהרה SubcomposeLayout. עכשיו אפשר להשתמש בו בלי לציין סוג. (Ib60c8)
  • השדות 'זמן פעולה' ו'מיקום' של PointerInputData לא יכולים להיות ריקים. (Id468a)
  • ‫MaterialTheme מגדיר עכשיו את הצבעים הנכונים של נקודות האחיזה לבחירה ושל הרקע של הבחירה. באפליקציות שאינן Material, אפשר להשתמש ב-AmbientTextSelectionColors באופן ידני כדי להתאים אישית את הצבעים שמשמשים לבחירה. (I1e6f4, ‏ b/139320372, ‏ b/139320907)
  • הפרמטר alignment של Box נקרא עכשיו contentAlignment. (I2c957)
  • השם של משני offsetPx שונה ל-offset. עכשיו הם מקבלים פרמטרים של lambda במקום State. (Ic3021, ‏ b/173594846)
  • נוסף WindowManager.isWindowFocused כדי לבדוק אם חלון המארח נמצא במוקד ההתעניינות, ו-WindowFocusObserver שמספק קריאה חוזרת (callback) של onWindowFocusChanged. (I53b2a, ‏ b/170932874)
  • נוסף הפרמטר resetInput ל-TextInputService#onStateUpdated ‏ (I3e8f5, ‏ b/172239032, ‏ b/171860947)
  • ‫TextFieldValue API עודכן
    • made TextFieldValue.composition readonly
    • removed exception thrown for invalid selection range (I4a675, b/172239032)
  • הוצאנו משימוש את המאפיינים מסוג Ambient ששם המחלקה שלהם מסתיים ב-Ambient, והחלפנו אותם במאפיינים חדשים ששם המחלקה שלהם מתחיל ב-Ambient, בהתאם להנחיות לגבי מאפיינים מסוג Ambient ולגבי Compose API. (I33440)
  • נוסף רכיב עוטף של גופן ב-Android. אפשר לטעון גופן Android באמצעות הפונקציה typeface, כלומר typeface(Typeface.DEFAULT). בנוסף, השם של typefaceFromFontFamily() שונה לtypeface() (I52ab7)
  • נוסף בדיקת lint כדי לוודא שמפעלים של Modifier משתמשים ב-androidx.compose.ui.composed {} באופן פנימי, במקום להיות מסומנים כ-@Composable. (I3c4bc)
  • הוספנו בדיקת lint כדי לוודא שפונקציות של יצירת Modifier מוגדרות כתוספים ב-Modifier, כדי שאפשר יהיה לשרשר אותן בצורה חלקה. (I07981)
  • הארגומנט mergeAllDescendants של הסמנטיקה נקרא עכשיו mergeDescendants. (Ib6250)
  • השליטה בזמן בבדיקות (TestAnimationClock והשימושים בה) היא עכשיו ניסיונית (I6ef86, ‏ b/171378521)
  • הסרה של המודול הישן ui-test וה-stub שלו (I3a7cb)
  • השם של TextUnit.Inherit שונה ל-TextUnit.Unspecified כדי לשמור על עקביות עם יחידות אחרות. (Ifce19)
  • ממשק ההתאמה עודכן והפך לפונקציונלי. (I46a07, b/172311734)
  • המודול foundation:foundation-text מוזג לתוך foundation:foundation (Idac0f)
  • הוצאה משימוש של place(Offset)‎ ו-placeRelative(Offset)‎. במקום זאת, צריך להשתמש בעומסים עם היסטים של int ‏ (I4c5e7)
  • השם של id שונה ל-layoutId עבור LayoutIdParentData. השם של Measurable.id שונה לMeasurable.layoutId. (Iadbcb, b/172449643)

גרסה ‎1.0.0-alpha07

11 בנובמבר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha07,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha07 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha07 יוצאות. גרסה ‎1.0.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • בדומה ל-Modifier.fillMaxSize[Width|Height], אנחנו תומכים עכשיו בשברים ב-Modifier.fillParentMaxSize[Width|Height] במסגרת LazyColumn/Row (I797e2,‏ b/166586426)
  • הוסר KeyboardOptions.toImeOptions מ-API ציבורי. (Ic2e45)
  • המאפיינים AmbientTextStyle,‏ ProvideTextStyle ו-AmbientContentColor הוצאו משימוש. במקום זאת, כדאי להשתמש בגרסאות החדשות שזמינות בספריית Material. באפליקציות שאינן Material, במקום זאת, צריך ליצור מערכת עיצוב משלכם עם סביבות נושא ספציפיות שאפשר להשתמש בהן ברכיבים שלכם. ‫(I74acc, b/172067770)
  • המאפיין foundation.Text הוצא משימוש והוחלף במאפיין material.Text. אם אתם מחפשים API בסיסי לטקסט שלא משתמש בערכים מתוך Theme, כדאי לעיין ב-androidx.compose.foundation.BasicText. (If64cb)
  • נוספה התכונה maxLines לרכיבי TextFields‏ (Ib2a5b)
  • עדכון של TextFields כדי לקבל KeyboardOptions ‏ (Ida7f3)
  • נוספה KeyboardOptions לשימוש ב-TextFields (I9ca32)
  • הוספת BasicText כ-API לטקסט ללא דעה קדומה לגבי עיצוב, במקביל ל-BasicTextField. (I28268)
  • ההערה ExperimentalLazyDsl הוסרה. עכשיו אפשר להשתמש ב-LazyColumn/LazyRow בלי להוסיף @OptIn (Idab7a, ‏ b/166584730)
  • הוצאנו משימוש את BaseTextField. במקום זאת, משתמשים ב-BasicTextField. (I896eb)
  • הוספנו את BasicTextField כתחליף ל-CoreTextField ול-BaseTextField (‏Id4cea)
  • הסרה של LazyColumnItems/LazyRowItems שיצאו משימוש (I1d8a8)
  • הוסרו רכיבי ה-Composable שהוצאו משימוש לשינוי הגודל למדידות פנימיות. ‫(I18537, ‏ b/171811496)
  • השם של relativePaddingFrom השתנה ל-paddingFrom. נוסף משנה המאפיין paddingFromBaseline כדי להקל על ציון המרחקים מגבולות הפריסה לקווי הבסיס של הטקסט. (I0440a, ‏ b/170633813)
  • הפרמטר matchHeightConstraintsFirst נוסף למגדיר aspectRatio, שאפשר להשתמש בו כדי לציין את המגדיר שייקבע את הגודל לפי מגבלות הגובה לפני שמנסים את מגדירי הרוחב התואמים. ‫(Ie7c43, ‏ b/155290593)
  • ה-DpConstraints שהוצא משימוש הוסר. ‫(I87884, ‏ b/171702471)

תיקוני באגים

  • נוסף ScaleFactor inline class כדי לייצג גורמי קנה מידה לצירים האופקי והאנכי בנפרד, כדי לתמוך בתרחישי שימוש של שינוי קנה מידה לא אחיד.
    • נוספה שיטת computeScaleFactor אל ContentScale
    • נוסף ContentScale.FillBounds כדי לבצע שינוי גודל לא אחיד כדי למתוח את גבולות המקור כך שימלאו את היעד.
    • הוספנו שיטות אופרטור לחישוב פרמטרים של ScaleFactor עם פרמטרים של Size.
    • (Ic96a6, b/172291582)
  • הפונקציה captureToBitmap הועברה אל captureToImage. (I86385)
  • סימון CoreText כ-@InternalTextApi. במקום זאת, צריך להשתמש ב-BasicText. (I6aaeb)
  • שינוי השם של KeyboardOptions ל-ImeOptions ‏ (I82f36)
  • העברנו את KeyboardType ו-ImeAction אל KeyboardOptions ‏ (I910ce)
  • ‫CoreTextField סומן כ-‎ @InternalTextApi. במקום זאת, אפשר להשתמש ב-BasicTextField‏ (Ie2469)
  • ההערה ExperimentalSubcomposeLayoutApi הוסרה. מעכשיו אפשר להשתמש ב-SubcomposeLayout בלי להוסיף @OptIn ‏ (I708ad)
  • הוספת המודול ui-test-junit4 ‏ (Ib91f8)
  • ה-API של הסמלים עודכן כך שיקבל Color.Unspecified כצבע גוון אפשרי, שיצייר את הנכס או את הצייר שסופקו ללא ColorFilter. בעבר, ניסיונות להתעלם מהגוון באמצעות Color.Unspecified היו גורמים להוספת גוון בצבע שקוף, ובסופו של דבר לא היה מוצג כלום. (I049e2, ‏ b/171624632)
  • הפונקציה MeasureResult הועברה מחוץ ל-MeasureScope. (Ibf96d, ‏ b/171184002)
  • כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, ‏ b/170475424)
  • ‫androidx.ui.test עבר אל androidx.compose.ui.test (I9ffdb)
  • הפונקציות FirstBaseline ו-LastBaseline הועברו לחבילה androidx.compose.ui.layout ‏ (Ied2e7)
  • נוסף SelectionContainer בלי הקריאה החוזרת (Ibfadb)
  • הוספת בדיקות למיקומים של SelectionHandles ב-SelectionContainer. (Ie93db)
  • נוספה אפשרות לתיקון אוטומטי במקלדת IME (I57b8d)

גרסה ‎1.0.0-alpha06

28 באוקטובר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha06,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha06 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha06 יוצאות. גרסה ‎1.0.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • ‫androidx.compose.foundation.Icon הועבר אל androidx.compose.material.Icon. אפשר גם להשתמש ברכיב Image / Modifier.paint() עם Painter אם לא רוצים להשתמש בספריית Material. (I9f622)
  • נוספה interactionState ל-Modifier.scrollable, ‏ ScrollableColumn ול-LazyColumnFor (I81566, ‏ b/169509805)
  • המאפיין alignByBaseline נוסף ל-RowScope והשם של alignWithSiblings שונה ל-alignBy (I06503, ‏ b/170628732)
  • הפונקציה Box הפכה לפונקציה מוטמעת. ‫(Ibce0c, ‏ b/155056091)
  • נוספה התכונה maxLines לרכיב CoreTextField ‏ (Ibee58, ‏ b/143687793)
  • נוספה גלישת שורות ל-CoreTextField. (I21a4b)

תיקוני באגים

  • הוצאנו משימוש את VectorPainter לטובת rememberVectorPainter כדי לציין בצורה טובה יותר שה-API של הקומפוזיציה משתמש באופן פנימי ב-remember כדי לשמור נתונים בין קומפוזיציות. (Ifda43)
  • הפעלת מעברים ב-ComposeTestRule; הסרת האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)
  • נוספה אפשרות למקלדת עם שורה אחת ל-CoreTextField (I72e6d)
  • שינינו את השם של Radius API ל-CornerRadius כדי להבהיר טוב יותר את אופן השימוש בו ב-Compose. עדכנו את המסמכים כדי לציין שרדיוסים שליליים של פינות מוצמדים לאפס. (I130c7, ‏ b/168762961)
  • נוספה אפשרות לציין פרטים של כלי הבדיקה במגדיר (modifier) מורכב (Idee08, ‏ b/163494569)
  • נוספה אפשרות IME של KeyboardCapitalization (I8ac38)
  • תיקון המיקום של נקודת האחיזה לשינוי הסדר בפריסה מימין לשמאל. (I6e1e0)
  • שינוי שובר תאימות: הוסר ערך ההחזרה מ-PointerInputFilter.onPointerEvent(...), כי הערך היחיד שאפשר לשנות באירועי הצבעה הוא נתוני הצריכה. במקום להחזיר נתונים מ-PointerInputFilter.onPointerEvent(...), עכשיו אפשר פשוט לשנות את נתוני הצריכה של PointerEvents שמועברים. (I6acd0)
  • הוספנו את האפשרות 'בחירת הכול' לתפריט הבחירה (Ief02b)

גרסה ‎1.0.0-alpha05

‫14 באוקטובר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha05,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha05 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha05 יוצאות. גרסה ‎1.0.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • ‫CoreTextField תומך עכשיו בפונקציונליות של סמן (Id23aa)
  • הוצאנו משימוש את ממשקי ה-API‏ contentColor()‎ ו-currentTextStyle()‎, והחלפנו אותם ב-AmbientContentColor וב-AmbientTextStyle בהתאמה. אפשר לגשת לערך הנוכחי באמצעות .current במאפיין הסביבה, כמו בכל סביבה אחרת. השינוי הזה בוצע כדי לשמור על עקביות ולמנוע מצב שבו יש כמה דרכים להשיג את אותה המטרה. בנוסף, שמות של כמה מאפייני סביבה שונו כדי לתאר טוב יותר את המטרה שלהם, באופן הבא:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • ‫EmphasisAmbient -> AmbientEmphasisLevels
    • ‫RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

תיקוני באגים

  • במסגרת התקנון של ערכי Sentinel עבור מחלקות מוטבעות, שם המחלקה Color.Unset שונה ל-Color.Unspecified כדי לשמור על עקביות עם מחלקות מוטבעות אחרות (I97611, b/169797763)
  • הוספנו פעולות נגישות של העתקה/הדבקה/גזירה (I6db4f)
  • הוצג TextOverflow.None. כשהערך של overflow הוא None, רכיב Text לא יטפל יותר בגלישה, והוא ידווח על הגודל בפועל שלו ל-LayoutNode. ‫(I175c9, ‏ b/158830170)
  • הפרמטרים של Size.Unspecified עודכנו ל-Float.NaN במקום ל-Float.POSITIVE_INFINITY. עדכנו את ההטמעות של Painter כדי לבדוק גם את Size.Unspecified וגם את Sizes לא סופיים. (I95a7e)
  • נוסף מודול Paging Compose ושילוב של פייג'ינג (Ib85da)
  • שינוי LazyListScope כדי לקבל ערכים שניתנים לאיפוס (I1765b)
  • השם של OnPositionedModifier שונה ל-OnGloballyPositionedModifier והשם של onPositioned()‎ שונה ל-onGloballyPositioned(). ‏(I587e8, ‏ b/169083903)
  • נוספו דוגמאות ל-LazyColumn/Row ‏ (Idc16d)
  • תיקון של השיטות items ו-itemsIndexed כדי לאפשר emptyList ‏ (I06647)
  • הוספת DSL להגדרת פרטי הכלי לבדיקה (Ic9a22)
  • מעבירים את LongPress אל Text. (Iff2bc)
  • השבתה של התכונה 'בחירה בטקסט' והדגמה. (Ie7e97)
  • תמיכה בהמרת AnnotatedString ל-SpannableString לצורך נגישות. (Ief907)
  • בוצעה הסרה של PointerInputFilter.onPointerInput(...). במקומה צריך להשתמש ב-PointerInputFilter.onPointerEvent(...). (I6f04a)

גרסה ‎1.0.0-alpha04

‫1 באוקטובר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha04,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha04 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha04 יוצאות. גרסה ‎1.0.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • השם של Stack השתנה ל-Box. ה-Box הקיים foundation.Box יוצא משימוש לטובת ה-Box החדש ב-compose.foundation.layout. ההתנהגות של Box החדש היא להציב את רכיבי הצאצא אחד מעל השני כשיש לו כמה רכיבי צאצא – זה שונה מ-Box הקודם, שהתנהג באופן דומה ל-Column. (I94893, ‏ b/167680279)
  • הפרמטרים של קישוט התיבה הוצאו משימוש. אם רוצים להוסיף קישוטים או ריווח לתיבה, צריך להשתמש במאפייני Modifier (‏Modifier.background, ‏ Modifier.border, ‏ Modifier.padding) (Ibae92, ‏ b/167680279)
  • מוסיפים מחלקה חדשה של LazyListState. כך אפשר לצפות במיקום הגלילה של הרכיבים LazyRow ו-LazyColumn ולשלוט בו. אפשר ליצור מופעים באמצעות rememberLazyListState()‎ ולהעביר אותם לפרמטר state של הרכיב. בגרסה הראשונית הזו אפשר לראות את הפריט הגלוי הראשון ואת ההיסטים. (Ic7cb7, b/159307669)
  • עכשיו אפשר לשמור את המיקום ברשימה ואת היסטוריית הגלילה ולשחזר אותם כשיוצרים מחדש את הפעילות (Ie045f, ‏ b/166589058)
  • הוספת פעולה של לחיצה ארוכה (I6281b, b/156468846)
  • נוסף כלי השירות MutatorMutex כדי לשמור על מוטטור יחיד של מצב משותף לאורך זמן ולבטל מוטטורים מתנגשים לפי עדיפות (I3f975)
  • הוספת ההערה ‎@VisibleForTesting ל-rootAnimationClockFactory, ‏ transitionsEnabled,‏ blinkingCursorEnabled ו-textInputServiceFactory, הפיכתם ל-API פנימי והסתרת ה-kdoc שלהם (I554eb, ‏ b/168308412)
  • הוסר הפרמטר inlineContent מהרכיב Text עם קלט String. לא ייעשה בו שימוש כי inlineContent חייב לעבוד עם AnnotatedString. (Ief403)
  • הוסרו ממשקי ה-API המותאמים אישית של סידור החלונות שהוצאו משימוש. ‫(Ic576d, ‏ b/168297922, ‏ b/168297923)
  • הפרמטר unbounded נוסף ל-modifiers של wrapContentSize, שמאפשרים למדוד את רכיב הפריסה עם אילוצים מקסימליים אינסופיים. (I77951, ‏ b/158559319)
  • מנענו ייבוא סטטי של תוכן בהיקפי פריסה (לדוגמה, alignWithSiblings ב-RowScope). במקום זאת, צריך להשתמש בהגדרה מפורשת של היקף ההגדרה: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, ‏ b/166760797)

תיקוני באגים

  • עודכנו הרבה ממשקי 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)
  • בוצעו אופטימיזציות של הביצועים לגלילה ב-LazyColumnFor/LazyRowFor, כך שלא מתבצעות קומפוזיציות מחדש מיותרות במהלך כל גלילה (I64f65,‏ b/168293643,‏ b/167972292,‏ b/165028371).
  • תוקן קראש ב-LazyColumnFor/LazyRowFor אחרי גלילה ואז שינוי פריטים, והוטמעה גלילה אוטומטית למעלה כשפריט שהיה גלוי קודם הוסר, כדי שלא יוצגו יותר רווחים ריקים בסוף (I220ab,‏ b/161480164,‏ b/167855468)
  • אסור יותר להטמיע רכיבים עם אפשרות גלילה באותו כיוון, כמו ScrollableContainer ו-LazyColumnFor. התכונה הזו אף פעם לא נתמכה, והיא גרמה לבעיות בהעברה מהירה ובכל העצלנות של יצירת הפריטים של LazyColumnFor (I6e101)
  • עודכנו הרבה ממשקי API של גרפיקה
    • עדכנו את ממשקי ה-API של DrawScope עם שיטות טרנספורמציה בהיקף מוגבל כדי לציין שהטרנספורמציה חלה רק בתוך הקריאה החוזרת (callback) ומוסרת אחרי שהקריאה החוזרת מופעלת.
    • עדכנו את מסמכי העזרה בנושא clipPath כך שיפנו אל Path במקום אל מלבן מעוגל
    • תיקון הרווח במסמכי התיעוד של הפרמטר right ב-clipPath
    • שם הפונקציה DrawScope.drawCanvas שונה ל-drawIntoCanvas, והוסר הפרמטר size
    • השמות של הפרמטרים dx/dy בשיטת inset שונו ל-horizontal ול-vertical
    • נוספה פונקציית עומס יתר של inset שמספקת את אותו ערך inset לכל 4 הגבולות
    • הסרנו את התיעוד בנושא שיטת ההזחה, שצוין בו שההזחה תחול על כל 4 הצדדים
    • עדכון המסמכים של המחלקה Rect
    • עדכון ההערות על פרמטרים של Rect כדי להתאים לסגנון kdoc
    • הוסרו Rect.join ו-Rect.expandToInclude
    • נוצר עומס יתר עבור Rect.translate(offset) ו-Rect.shift הוצא משימוש
    • (If086a, b/167737376)
  • מוסיפים את AccessibilityScrollState למאפייני הסמנטיקה. (Ifeda9)
  • כדאי להגדיר את TextRange כ-inline כדי להימנע מיצירת אובייקט. (Id034b)
  • ההגדרה ParagraphConstraints הוסרה. הרוחב מועבר עכשיו ישירות ל-Paragraph. (Ica712)

גרסה ‎1.0.0-alpha03

16 בספטמבר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha03,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha03 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha03 יוצאות. גרסה ‎1.0.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • השם של InnerPadding שונה ל-PaddingValues. (I195f1, ‏ b/167389171)
  • השימוש ב-gravity שונה באופן עקבי ל-align או ל-alignment בממשקי API של פריסות. ‫(I2421a, ‏ b/164077038)
  • נוסף פרמטר יישור ל-Stack, שמאפשר לציין את היישור שמוגדר כברירת מחדל לכל רכיבי הצאצא של Stack. (Ie80ca, ‏ b/164085265)

תיקוני באגים

  • הוצאנו משימוש את DpConstraints ואת ממשקי ה-API שמשתמשים בו. (I90cdb, ‏ b/167389835)
  • הפרמטרים minWidth ו-maxWidth של widthIn קיבלו את השמות החדשים min ו-max. באופן דומה, לגבי preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • נוספו onNode ושיטות גלובליות אחרות ב-ComposeTestRule כי השיטות הגלובליות הנוכחיות יוצאו משימוש. (Ieae36)
  • תוקנו חישובים של גודל ומיקום ב-GestureScope, שגרמו בין היתר ליצירה של תנועות החלקה לא תקינות (Iaf358, ‏ b/166589947)
  • הועברו createAndroidComposeRule ו-AndroidInputDispatcher מandroidx.ui.test.android אל androidx.ui.test (Idef08, ‏ b/164060572)

גרסה ‎1.0.0-alpha02

‫2 בספטמבר 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha02,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha02 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha02 יוצאות. גרסה ‎1.0.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • הכיתוב TestUiDispatcher מסומן כניסיוני (Iae99d, ‏ b/161247083)
  • נוסף ManualFrameClock.hasAwaiters כדי לבדוק אם יש משהו שממתין למסגרת מהשעון הזה; runWithManualClock כתחליף ל-runBlocking כשמריצים בדיקות שדורשות ManualFrameClock;‏ TestUiDispatcher.Main שמאפשר גישה קלה לשולח הראשי של ממשק המשתמש בבדיקות.

    לדוגמה:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b, ‏ b/161247083)

גרסה ‎1.0.0-alpha01

26 באוגוסט 2020

הגרסאות androidx.compose.foundation:foundation:1.0.0-alpha01,‏ androidx.compose.foundation:foundation-layout:1.0.0-alpha01 וגם androidx.compose.foundation:foundation-text:1.0.0-alpha01 יוצאות. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.

גרסה 0.1.0-dev

גרסה 0.1.0-dev17

‫19 באוגוסט 2020

הגרסאות androidx.compose.foundation:foundation:0.1.0-dev17,‏ androidx.compose.foundation:foundation-layout:0.1.0-dev17 וגם androidx.compose.foundation:foundation-text:0.1.0-dev17 יוצאות. גרסה 0.1.0-dev17 מכילה את השמירות האלה.

שינויים ב-API

  • הסידור spacedBy נוסף לרכיבים Row ו-Column כדי לאפשר מיקום של רכיבי פריסה צאצאים עם ריווח קבוע. נוסף גם סידור מיושר, כדי לאפשר מיקום של רכיבי פריסת צאצא אחד ליד השני ומיושרים בשורה או בעמודה בהתאם ליישור. הוצאנו משימוש את השיטות הקודמות Arrangement.Vertical#arrange ו-Arrangement.Horizontal#arrange, ולא תהיה תמיכה בכתיבת פריסות מותאמות אישית בעתיד. (I6733d, b/161985975)
  • ההיסט הפך למחלקה מוטבעת (Iaec70)
  • הוסרו קריאות חוזרות (callback) של onFocusChanged מ-TextField. במקומו, צריך להשתמש ב-Modifier.focusObserver. ‫(I51089, ‏ b/161297615)
  • המאפיין Modifier.drawBorder הוצא משימוש. במקומו צריך להשתמש ב-Modifier.border. החלפנו את מחלקת הנתונים Border במחלקת הנתונים BorderStroke‏ (I4257d, ‏ b/158160576)
  • הוסרו הרכיבים VerticalScroller ו-HorizontalScroller. במקום זאת, צריך להשתמש ב-ScrollableColumn/Row. הוסר Modifier.drawBackground. שימוש ב-Modifier.background ‏ (I73b0d, ‏ b/163019183)
  • הוסר מה-LazyItemScope שימוש במגדירי fillMax* שסומנו כהוצאה משימוש, כי הם מקשים על הוספה נכונה של מגדירים כאלה לפריטים שהם לא צאצאים ישירים של LazyColumnFor (Ifa78d)
  • נוספה הטמעה של LazyColumn/LazyRow כ-DSL‏ (I93cc6)
  • האילוץ הוא עכשיו מחלקה מוטמעת (I88736)
  • הוספנו את היכולת לשנות את הגודל של פריסה לחלק מהשטח הזמין, באמצעות שינויי הגודל fillMaxWidth, ‏ fillMaxHeight ו-fillMaxSize. (I945bb, ‏ b/161562591)

תיקוני באגים

  • נוסף פרמטר של שינוי ל-SelectionContainer ‏ (I4aada, ‏ b/161487952)
  • נוספה פונקציית lambda‏ mergePolicy ל-SemanticsPropertyKey. אפשר להשתמש בזה כדי להגדיר מדיניות מותאמת אישית למיזוג סמנטי של mergeAllDescendants. מדיניות ברירת המחדל היא להשתמש בערך של ההורה אם הוא כבר קיים, אחרת בערך של הצאצא. ‫(Iaf6c4, ‏ b/161979921)
  • השם של PlacementScope.placeAbsolute() שונה לPlacementScope.place(), והשם הקודם PlacementScope.place() שונה לPlacementScope.placeRelative(). כתוצאה מכך, השיטה PlacementScope.place() לא תשקף יותר באופן אוטומטי את המיקום בהקשרים של כתיבה מימין לשמאל. אם רוצים להשתמש במדיניות הזו, צריך להשתמש במדיניות PlacementScope.placeRelative() במקום זאת. (I873ac, ‏ b/162916675)
  • הוסר הרכיב FilledTextField שיצא משימוש. במקומו צריך להשתמש ב-TextField כדי לקבל את ההטמעה של Material Design בשדה טקסט מלא. (I5e889)
  • הוספנו את הפרמטר backgroundColor לרכיב LinearProgressIndicator והסרנו את הריווח הפנימי מהרכיב CircularProgressIndicator. נוסף ProgressIndicatorConstants.DefaultProgressAnimationSpec חדש שאפשר להשתמש בו כ-AnimationSpec ברירת המחדל כשמנפישים התקדמות בין ערכים (If38b5, ‏ b/161809914, ‏ b/161804677)
  • הקומפוזיציה state { ... } יצאה משימוש, ועכשיו משתמשים בקריאות מפורשות ל-remember { mutableStateOf(...) } כדי לשפר את הבהירות. השינוי הזה מצמצם את שטח הפנים הכולל של ה-API ואת מספר המושגים לניהול מצב, והוא תואם לתבנית by mutableStateOf() של הקצאת מאפייני מחלקה. (Ia5727)
  • השם RRect שונה ל-RoundRect כדי להתאים יותר לדפוסי השמות של Compose. נוצרו פונקציות דומות ל-RRect והוצאו משימוש פונקציות ה-constructor של RRect ‏ (I5d325).
  • הוסרו הפונקציות onChildPositioned ו-OnChildPositionedModifier. מפתחים צריכים להשתמש ב-onPositioned וב-OnPositionedModifier בפריסת הצאצא במקום זאת. (I4522e, ‏ b/162109766)
  • ‫IntSize הוא עכשיו מחלקה מוטבעת (I2bf42)
  • לוחצים לחיצה ארוכה על האזור הריק כדי לערוך. (Ib1e5b)
  • הסתרת סרגל הכלים הצף אחרי שמקישים על הטקסט. (If4525)
  • הסתרת סרגל הכלים הצף כשמעדכנים את הבחירה. (I8444c)
  • מבטלים את הסימון של האפשרות 'מתי לטשטש'. (I781a2)

גרסה 0.1.0-dev16

‫5 באוגוסט 2020

הגרסאות androidx.compose.foundation:foundation:0.1.0-dev16,‏ androidx.compose.foundation:foundation-layout:0.1.0-dev16 וגם androidx.compose.foundation:foundation-text:0.1.0-dev16 יוצאות. גרסה 0.1.0-dev16 מכילה את השמירות האלה.

שינויים ב-API

  • הפרמטר LazyItemScope נוסף לפרמטר itemContent של רשימות Lazy. הוא מספק משנים למילוי הגודל המקסימלי של הרכיב ההורה, וכך פותר את מקרה השימוש שבו הפריט צריך למלא את אזור התצוגה, והמשנה הרגיל Modifier.fillMaxSize() לא פועל כי הפריט נמדד עם אילוצי אינסוף. (Ibd3b2, ‏ b/162248854)
  • העברת תיבת דו-שיח לממשק המשתמש (I47fa6)
  • נוספו LazyColumnForIndexed/LazyRowForIndexed – גרסאות של LazyColumnFor/LazyRowFor שמספקות גם אינדקס וגם פריט ב-itemCallback. האפשרות הזו שימושית כשצריך לדעת את האינדקס הנוכחי בנוסף לפריט הנוכחי. (I65ff3)
  • השם של Modifier.deternimateProgress השתנה ל-Modifier.progressSemantics ‏ (I9c0b4)
  • השם של LazyColumnItems שונה ל-LazyColumnFor. השם של LazyRowItems שונה ל-LazyRowFor ‏ (I84f84)
  • מומלץ להוסיף סימנים או הערות. (I66b20)
  • חבילת foundation.shape.corner שוטחה ל-foundation.share (I46491, ‏ b/161887429)
  • נוסף פרמטר כוח משיכה של ציר חוצה עבור LazyRowItems/LazyColumnItems. רכיבי LazyRowItems/LazyColumnItems תומכים עכשיו בהתנהגות של גלישת תוכן. (Ib39fc)
  • השם של ZoomableState השתנה ל-ZoomableController. נוספה תמיכה בעקומות מותאמות אישית ל-smoothScale. נוספה פונקציונליות של enabled ו-onZoomStarted (If8b8f)
  • השם של רכיב Material FilledTextField שונה ל-TextField, והשם של רכיב TextField הבסיסי שונה ל-BaseTextField, כדי שיהיה קל יותר למצוא את ה-API הרצוי הפשוט ביותר ולהשתמש בו (Ia6242,‏ b/155482676).
  • הוסר AdapterList שהוצא משימוש בעבר. במקום זאת, אפשר להשתמש ב-LazyColumnItems ‏ (I12b9b)
  • השם של Modifier.drawBackground שונה ל-Modifier.background (I13677)
  • ה-DSL הישן של ConstraintLayout הוסר. השם של ConstraintSet2 השתנה ל-ConstraintSet. (If58d1, b/162450908)
  • נוספו הפונקציות Modifier.absoluteOffset() ו-Modifier.absoluteOffsetPx(). בניגוד למגדירי היסט, מגדירי היסט מוחלט לא ישתקפו אוטומטית בהקשר של כתיבה מימין לשמאל (I3aa21)
  • ‫Row ו-Column הן עכשיו פונקציות מוטמעות, מה שמפחית באופן משמעותי את התקורה של השימוש בהן. (I75c10)

תיקוני באגים

  • טיפלנו בתיקונים רחבים של 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. שם ה-enum של ClipOp שונה ל-Pascal Case
    7. השמות של סוגי ה-enum של FilterQuality שונו ל-Pascal Case
    8. השמות של הערכים ב-enum‏ StrokeJoin שונו ל-Pascal Case
    9. שמות הערכים של PointMode שונו ל-Pascal Case
    10. שונה השם של סוגי ה-enum‏ PaintingStyle ל-Pascal Case
    11. שינוי השם של סוגי ה-enum‏ PathFillType ל-Pascal Case
    12. השמות של הערכים של 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 לטובת פונקציות constructor
    20. עדכון של מחלקות Brush ושל פונקציות בונות עם ממשקי API‏ @Immutable ו-@Stable
    21. העדכון של ספירת VertexMode ל-PascalCase
    22. השיטה selectPaint של DrawScope עודכנה כדי להחליף באופן מותנה פרמטרים של קו המתאר בציור אם הם השתנו
    23. העדכון של Size כולל הוספה של API לפירוק מבנה, שינוי השם של UnspecifiedSize ל-Unspecified והסרה של שיטות שלא נמצאות בשימוש
  • נוסף MonotonicFrameAnimationClock שמאפשר להשתמש ב-MonotonicFrameClock כ-AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על קורוטינות לבין ממשקי API שעדיין משתמשים בשעונים הישנים שמבוססים על קריאות חוזרות (callback).

    הגרסה המקבילה של ManualAnimationClock ב-MonotonicFrameClock היא עכשיו ManualFrameClock. ‫(I111c7, ‏ b/161247083)

  • בוצעה הסרה של SemanticsNodeInteraction.performPartialGesture. במקום זאת, אתם צריכים להשתמש ב-SemanticsNodeInteraction.performGesture. (Id9b62)

  • השם של SemanticsNodeInteraction.getBoundsInRoot() שונה ל-SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)

  • ממשקי ה-API לתמיכה בכתיבה מימין לשמאל עודכנו. נוסף LayoutDirectionAmbient, שאפשר להשתמש בו כדי לקרוא ולשנות את כיוון הפריסה. הוסרו Modifier.rtl ו-Modifier.ltr. (I080b3)

  • הפונקציה Modifier.plus הוצאה משימוש. במקומה צריך להשתמש בפונקציה Modifier.then. השימוש במילה 'ואז' מעביר מסר חזק יותר לגבי הסדר, וגם אוסר על הקלדת Modifier.padding().background() + anotherModifier, מה ששובר את השרשרת ומקשה על הקריאה (Iedd58, ‏ b/161529964)

  • נוספו isFocused() ו-isNotFocused() SemanticsMatcher. (I0b760)

  • נוסף RemeasurementModifier. היא מאפשרת למשתמשים למדוד מחדש את הפריסה באופן סינכרוני. בדרך כלל לא צריך להשתמש בה כי המדידה מחדש והפריסה מחדש מתבצעות באופן אוטומטי, אבל אנחנו משתמשים בה בתוך LazyColumnItems במהלך הגלילה. (I5f331, ‏ b/160791058)

  • הפונקציה isSystemInDarkTheme תמיד מתייחסת להגדרת העיצוב הכהה בכל המערכת, ומתעלמת מסטטוס החיסכון באנרגיה לפני Q, בהתאם להנחיות העדכניות. (I0c10c)

  • הפונקציה OnChildPositioned הוצאה משימוש. במקום זאת, צריך להשתמש ב-OnPositioned ברכיב הצאצא. (I87f95, ‏ b/162109766)

  • השם של AndroidComposeTestRule שונה ל-createAndroidComposeRule. (I70aaf)

  • הוספת פעולת נגישות לקבלת TextLayoutResult ‏ (I9d6e6)

גרסה 0.1.0-dev15

‫22 ביולי 2020

הגרסאות androidx.compose.foundation:foundation:0.1.0-dev15,‏ androidx.compose.foundation:foundation-layout:0.1.0-dev15 וגם androidx.compose.foundation:foundation-text:0.1.0-dev15 יוצאות. גרסה ‎0.1.0-dev15 מכילה את השמירות האלה.

כדי להשתמש בגרסה 0.1.0-dev15 של Compose, צריך:

עדכון פניות קשורות

  • כדי להשתמש בגרסה 0.1.0-dev15 של Compose, צריך לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרה על יחסי תלות.

שינויים ב-API

  • בדומה לפרמטר החדש ב-ScrollableColumn/ScrollableRow, גם ל-LazyColumnItems/LazyRowItems יש עכשיו פרמטר contentPadding שמאפשר להוסיף ריווח לתוכן אחרי שהוא נחתך. אי אפשר לעשות את זה רק באמצעות פרמטר modifier. בנוסף, אפשר להוסיף ריווח רק לפני הפריט הראשון או אחרי הפריט האחרון. (Ibc24e)
  • השם של הקריאה החוזרת (callback) onFocusChange בשדות טקסט שונה ל-onFocusChanged (Ida4a1)
  • הפסקנו את התמיכה ב-VerticalScroller וב-HoriziontalScroller. אפשר להשתמש ב-ScrollableColumn וב-ScrollableRow כדי ליצור חוויה מובנית עם התנהגות ופרמטרים של Column/Row, או ב-Modifier.verticalScroll וב-Modifier.horizontalScroll ברכיב שלכם. באופן דומה, הוצאנו משימוש את ScrollerPosition לטובת ScrollState' (I400ce, ‏ b/157225838, ‏ b/149460415, ‏ b/154105299).
  • ממשקי ה-API‏ Modifier.draggable ו-Modifier.scrollable עברו שינוי. המאפיין DragDirection הוסר לטובת Orientation. הפשטנו את הדרישה לציין מדינה עבור רכיב שאפשר לגלול בו. השם של ScrollableState שונה ל-ScrollableController (Iab63c, ‏ b/149460415)
  • מאפייני סמנטיקה עם ערך יחיד משתמשים עכשיו בסגנון קריאה. לדוגמה, המחרוזת 'semantics { hidden = true }' נכתבת עכשיו כך: semantics { hidden() }. (Ic1afd, ‏ b/145951226, ‏ b/145955412)
  • הגדלים של הפינות שבהם נעשה שימוש ב-RoundedCornerShape וב-CutCornerShape יכולים להיות עכשיו גדולים מ-50% (Id2340, ‏ b/160400213)
  • הפרמטר ContentScale שמוגדר כברירת מחדל עבור רכיב ה-Image שניתן להרכבה שונה מ-Inside ל-Fit. השינוי הזה בוצע כדי שההתנהגות תתאים להגדלה של האובייקט Painter הבסיסי אם גודל הפריסה גדול יותר מהגודל המובנה של האובייקט Painter, תוך שמירה על יחס הגובה-רוחב. ההתנהגות הזו תואמת יותר לציפיות לגבי הגדלים הקבועים של התמונה, בלי להשפיע על התנהגות ברירת המחדל אם רק הגודל המובנה משמש לחישוב הגודל של הרכיב. (I40ae3, ‏ b/159838006)
  • משתמשים ב-AnimationSpec במקום ב-AnimationBuilder בממשקי ה-API ברמה העליונה כדי להבהיר את הרעיון של הגדרת אנימציה סטטית. משפרים את ה-DSL של המעבר על ידי הסרת הדרישה ל-lambda ליצירת AnimationSpec כמו tween ו-spring. במקום זאת, הם מקבלים ישירות פרמטרים של בנאי. – שיפור נוחות השימוש הכוללת ב-AnimationSpec על ידי פתיחת קונסטרוקטורים במקום להסתמך על בנאים. – שינוי משך הזמן וההשהיה של KeyFrames ו-Tween ל-Int. כך נמנעים מהמרות מיותרות של סוגים ומעומס יתר של שיטות (לתמיכה גם ב-Long וגם ב-Int). (Ica0b4)
  • המאפיין Clickable הוסר. שימוש ב-Modifier.clickable ‏ (I84bdf)
  • נוספו LazyRowItems – אנלוגיה של LazyColumnItems עם גלילה אופקית (Ibbcf7)
  • השקנו ממשקי API של אנימציה ללא מצב (stateless) ברמה נמוכה. ממשקי ה-API האלה (I63bf7)
  • השימוש ב-androidx.ui.foundation.TextFieldValue וב-androidx.ui.input.EditorValue הוצא משימוש. גם רכיבי ה-TextField,‏ FilledTextField ו-CoreTextField הניתנים להרכבה שמשתמשים בסוג הזה הוצאו משימוש. במקומו, אפשר להשתמש ב-androidx.ui.input.TextFieldValue (I4066d,‏ b/155211005)
  • השימוש ב-IntPx הוחלף ב-Int. ‏ IntPxPosition הוחלף ב-IntOffset. הוחלף IntPxSize ב-IntSize. (Ib7b44)
  • ‫androidx.ui.foundation.shape.RectangleShape הוסר; צריך להשתמש ב-androidx.ui.graphics.RectangleShape (I94939, ‏ b/154507984)
  • כדי לאחד את מספר הכיתות שמשמשות לייצוג מידע על גודל, צריך להשתמש בכיתת הגודל במקום ב-PxSize. השימוש בשיטה הזו מאפשר ליהנות מהיתרונות של מחלקה מוטמעת כדי להשתמש בערך מסוג long כדי לארוז 2 ערכים מסוג float שמייצגים רוחב וגובה שמוצגים כערכים מסוג float. (Ic0191)
  • כדי לצמצם את מספר המחלקות שמשמשות לייצוג מידע על מיקום, מומלץ להשתמש במחלקה Offset במקום במחלקה PxPosition. השימוש ב-inline class מאפשר ליהנות מהיתרונות של long כדי לארוז 2 ערכי float לייצוג של היסטים x ו-y שמיוצגים כערכי float. (I3ad98)
  • נוסף Modifier.zoomable לפונקציונליות של פתיחת או סגירת אצבעות לשינוי מרחק התצוגה (Id5d63)
  • הוצאנו משימוש את הרכיב Toggleable. מומלץ להשתמש ב-Modifier.toggleable במקום זאת (I35220, ‏ b/157642842)
  • המאפיין MutuallyExclusiveSetItem הוצא משימוש. במקומו צריך להשתמש ב-Modifier.selectable. (I02b47, ‏ b/157642842)
  • הוצאנו משימוש את TestTag. במקומה, צריך להשתמש ב-Modifier.testTag. (If5110, b/157173105)
  • נוסף פרמטר fontWeight לרכיב Text, שלא נוסף קודם בטעות (I56937)
  • החלפנו את השימוש במחלקה Px בכמה מחלקות compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I19d02)
  • הרכיב VerticalScroller מספק עכשיו Column מחוץ לקופסה. הקומפוננטה HorizontalScroller מספקת עכשיו Row מחוץ לקופסה. (Ieca5d, b/157020670)
  • במסגרת מאמצי הרפקטורינג הנרחבים, החלפנו את השימוש במחלקה Px במחלקות שונות של Compose כך שנסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטרים של פיקסלים (Iede0b)
  • המאפיין Modifier.indication נוסף לחבילת הבסיס. אפשר להשתמש בה כדי להציג אינדיקציה של לחיצה, גרירה או פעולה אחרת על רכיבים אינטראקטיביים מותאמים אישית (I8425f,‏ b/155287131)
  • רכיבי VerticalScroller ו-HorizontalScroller תומכים עכשיו בגלילה הפוכה אם המאפיין isReversed מוגדר ב-ScrollerPosition ‏ (I953bd)
  • תמיכה בהוספת קומפוזיציות לפריסת טקסט. (I1373c)
  • איחדנו את ההטמעות של CanvasScope, כך שעכשיו יש רק DrawScope ו-ContentDrawScope. שינינו את השם של CanvasScope ל-DrawScope. בוצע עדכון של DrawScope כדי להטמיע את הממשק Density ולספק LayoutDirection מחלקת המשנה DrawScope נמחקה ב-ContentDrawScope בוצע עדכון של Painter ו-PainterModifier כדי שלא יכללו יותר את המאפיין RTL כי DrawScope כבר מספק אותו בלי לספק אותו באופן ידני (I1798e)
  • הוסר DrawBackground API שהוצא משימוש לטובת drawBackground extension APIs ב-Modifier. בוצע רפקטורינג של ההטמעות של color, ‏ brush ו-paint drawBackground כדי לצמצם את נתיבי הקוד וגם כדי להסיר את הדרישה ליצירת Modifier כחלק מהקומפוזיציה. (I0343a)
  • ממשקי API ברמה גבוהה יותר של Compose עודכנו כך שהם חושפים CanvasScope במקום Canvas. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם של Paint. צרכנים שעדיין צריכים גישה ל-Canvas יכולים להשתמש בשיטה drawCanvas של התוסף, שמספקת קריאה חוזרת להנפקת פקודות ציור עם ה-Canvas הבסיסי. (I80afd)
  • המיקום של HorizontalScroller ו-VerticalScroller לא משוחזר באמצעות מצב מופע שמור. (Ia0fae, ‏ b/155075048)
  • הוסר FocusManagerAmbient. משתמשים ב-FocusModifier.requestFocus כדי לקבל את המיקוד. (Ic4826)
  • הסרנו באופן זמני את פריסת הטבלה עד שנשיק שוב את האפשרות הזו עם API מעודכן. (Id88a7)
  • נוצר CanvasScope API שעוטף אובייקט Canvas כדי לחשוף משטח API לציור דקלרטיבי בלי שמירת מצב. הטרנספורמציות כלולות בהיקף של המקלט שלהן, וגם פרטי הגודל מוגבלים לגבולות התואמים של התוסף. הוא לא מחייב את הצרכן לתחזק אובייקט משלו של מצב הצבע כדי להגדיר פעולות ציור.

    נוספה CanvasScopeSample וגם בוצע עדכון באפליקציית ההדגמה כדי לכלול הדגמה של גרפיקה הצהרתית (Ifd86d)

  • הוסר ColoredRect. במקום זאת, צריך להשתמש ב-User Box עם drawBackground modifier (I983c7,‏ b/152753731)

  • הוספת התאמה אישית של צבע הסמן ל-TextField ‏ (I6e33f)

  • עכשיו אפשר להסתיר או להציג את המקלדת הווירטואלית באמצעות SoftwareKeyboardController שמועבר על ידי הקריאה החוזרת (callback) onTextInputStarted (I8dc44, ‏ b/151860051)

  • השימוש ב-TextFieldValue עם TextField יכול לשרוד יצירה מחדש של פעילות כשמשתמשים בו כך: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, ‏ b/155075724)

  • הוספנו ל-Text() פרמטרים שנמצאים בשימוש נפוץ. אם אתם יוצרים כרגע סגנון טקסט מקומי כדי להעביר מספר קטן של הפרמטרים האלה, כמו Text(style = TextStyle(textAlign = TextAlign.Center)), עכשיו אתם יכולים פשוט לספק את הפרמטרים ישירות: Text(textAlign = TextAlign.Center) (I82768)

  • החלפנו את הפרמטר focusIdentifier של CoreTextField/TextField ב-FocusNode כדי לשלב אותו עם מערכת המשנה של המיקוד. (I7ea48)

  • עדכון של TextField – בממד האופקי, הוא יתפוס את כל המקום שזמין לו (Ib08df,‏ b/154638552)

  • נוספו InteractionState ו-Interaction, כדי להקל על יצירת רכיבים שמגיבים לשינויים במצב ממשק המשתמש, כמו לחיצה וגרירה (Icfe25, ‏ b/152525426)

  • ‫RectangleShape הועבר מ-androidx.ui.foundation.shape.* אל androidx.ui.graphics.* (Ia74d5, ‏ b/154507984)

  • הוחלפו כל השימושים ב-Color שניתן להגדיר כ-nullable ב-API בשימושים ב-non-nullable, והשימוש ב-Color.Unset במקום null (Iabaa7)

  • עדכון של TextField API – מיזוג של קריאות חוזרות (callback) מסוג onFocus ו-onBlur לקריאה חוזרת יחידה מסוג onFocusChange(Boolean) עם פרמטר (I66cd3)

  • שינינו את השם של ScaleFit ל-ContentScale העברנו את ContentScale מהמודול ui-graphics למודול ui-core כדי שיהיה באותו מודול כמו Alignment API. שם המאפיין FillMaxDimension שונה ל-Crop שם המאפיין FillMinDimension שונה ל-Fit שם המאפיין Fit שונה ל-Inside כדי להתאים טוב יותר למאפיין ImageView.ScaleType. נוספה תיעוד שמציין שהשילוב של Crop ו-Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.CENTER_CROP, ושהשימוש ב-Fit עם Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.FIT_CENTER. השימוש ב-Inside עם Alignment.Center משיג את אותה תוצאה כמו ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

  • הוסרה הפונקציה ProvideContentColor, במקומה נעשה שימוש ישירות בפונקציה ContentColorAmbient עם Providers (Iee942)

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

  • שיפור DrawModifier API:

    • הגדרתי את היקף המקבל של draw() כ-ContentDrawScope
    • הסרת כל הפרמטרים ב-draw()
    • ל-DrawScope יש את אותו ממשק כמו ל-CanvasScope הקודם
    • ל-ContentDrawScope יש שיטה drawContent()‎‏ (Ibaced, ‏ b/152919067)
  • התכונה ColoredRect הוצאה משימוש. במקומה, צריך להשתמש ב-method‏ Box(Modifier.preferredSize(width, height).drawBackground(color)). ‫(I499fa, ‏ b/152753731)

  • מערכת העיצוב של הצורות עודכנה בהתאם למפרט של Material Design. עכשיו אפשר לספק צורות קטנות, בינוניות וגדולות לשימוש ברוב הרכיבים (Ifb4d1)

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

  • המאפיין Draggable הועבר למאפיין modifier (Id9b16, b/151959544)

  • הועבר Text לחבילה androidx.ui.foundation, מ-androidx.ui.core. (I87ce5)

  • הוספת הפרמטר enabled ל-Checkbox, ‏ Switch ו-Toggleable ‏ (I41c16)

  • האפקט 'אדווה' הוא עכשיו אפקט שינוי. השימוש המומלץ ב-Clickable הוא Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, ‏ b/151331852, ‏ b/150060763)

  • הוספנו את VectorPainter API כדי להחליף את subcomposition API הקיים לגרפיקה וקטורית. התוצאה של subcomposition היא אובייקט VectorPainter במקום DrawModifier. הוצאנו משימוש את רכיבי ה-DrawVector הקודמים לטובת VectorPainter.

    שינוי השם של Image(Painter) API ל-PaintBox(Painter) נוצר רכיב Vector שאפשר להוסיף לו רכיבים אחרים, שמתנהג כמו רכיב Image, אבל עם VectorAsset במקום ImageAsset‏ (I9af9a,‏ b/149030271)

  • נוצר קומפוזיציה של Created Image כדי לטפל בגודל/בפריסה בנוסף לציור של AssetImage נתון במסך. רכיב ה-Composable הזה תומך גם בציור של כל מופע Painter שרירותי בהתאם לגודל הפנימי שלו, וגם בגודל קבוע או בגודל מינימלי נתון (Ibcc8f)

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

  • שם המחלקה Image שונה ל-ImageAsset כדי להבדיל טוב יותר בין נתוני התמונה לבין רכיב ה-Image שיוצג בקרוב ומשמש להשתתפות בפריסה ולציור תוכן.

    נוצרה שיטת הרחבה ב-android.graphics.Bitmap, Bitmap.asImageAsset(), כדי ליצור מופע של ImageAsset ששימושי לשילוב של פיתוח אפליקציות מסורתיות ל-Android עם Compose Framework. (Id5bbd)

  • הקומפוזבל DrawImage הוסר. שימוש ב-ImagePainter כדי לצייר תמונה בפריסה קיימת, או ב-SimpleImage כדי להוסיף תמונה שתופסת מקום (I595e1, ‏ b/149827027)

  • רכיב ה-Stack תומך בכיווניות מימין לשמאל (Ic9e00)

  • הוספנו את הרכיבים Icon,‏ IconButton ו-IconToggleButton והסרנו את הרכיב AppBarIcon. אפשר להחליף ישירות את השימושים הקיימים ב-AppBarIcon ב-IconButton, ועכשיו יהיה להם את יעד המגע הנכון. אפשר לעיין בדוגמאות כדי לקבל מידע על השימוש, ובסמלים כדי לראות את סמלי Material שסופקו ואפשר להשתמש בהם ישירות עם הרכיבים האלה. (I96849)

  • הקומפוזיציה DrawShape הוסרה. במקומו, אפשר להשתמש בשינוי DrawBackground. (I7ceb2)

  • נוסף AdapterList, רכיב רשימה עם אפשרות גלילה שמרכיב ומסדר רק את הפריטים הגלויים. בעיות ידועות כרגע כוללות את העובדה שהפריסה היא רק אנכית, והיא לא מטפלת באופן מלא בכל המקרים של שינויים ברכיבי הצאצא שלה. (Ib351b)

  • נוסף רכיב עם אפשרות גלילה, שמאפשר ליצור רכיבי גלילה או רשימות בהתאמה אישית (I5fd37)

  • שינוי השם של הרקע ל-DrawBackground והגדרת זיכרון כברירת מחדל (Ia0bd3)

  • הוספת פרמטרים של שוליים פנימיים, גבול, צורה ורקע ל-Box (I05027, ‏ b/148147281)

  • נוסף רכיב Canvas. הקומפוזיציה הזו תופסת נפח מסוים (שמסופק על ידי המשתמש) ומאפשרת לכם לצייר באמצעות CanvasScope ‏ (I0d622)

  • שינוי השם של Border modifier ל-DrawBorder (I8ffcc)

  • הוספנו רכיב Box לשילוב פריסה ופונקציונליות נפוצה של ציור. (I6e2a7)

  • הגלילה מתבצעת עכשיו כמו במכשיר Android. (I922af, ‏ b/147493715)

  • הוחלף ב-DrawBorder לטובת Border Modifier ‏ (Id335a)

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

  • הפרמטר percent כשיוצרים קווים מנחים של ConstraintLayout שונה ל-fraction. (Ida2db)

  • הוספנו תמיכה בשוליים של מחסומי ConstraintLayout. (I47ffe)

  • תוקנה התמיכה בפריסה מימין לשמאל ב-ConstraintLayout. נוספו ממשקי API שלא מודעים לכיוון הכתיבה מימין לשמאל. (I3b1c7)

  • נוסף DSL חדש ל-ConstraintLayout. פרטים נוספים מופיעים בדוגמאות. (Icaa9a)

  • נוספה ההערה ‎ @ExperimentalLayout. התגים ConstraintLayout, ‏ FlowRow ו-FlowColumn מסומנים עכשיו בתג הזה כדי לציין שממשקי ה-API שלהם עומדים להשתנות. (I412a8)

  • נוסף Modifier.padding(InnerPadding) (I94985, b/157133803)

  • הוסרו RowAlign ו-ColumnAlign שהוצאו משימוש ב-Row וב-Column. (If60d4, ‏ b/155858731)

  • הוסר LayoutTag()‎ שהוצא משימוש. במקומו צריך להשתמש ב-Modifier.tag()‎. הוסרה השיטה Modifier.matchParent()‎ שהוצאה משימוש. במקומה צריך להשתמש ב-Modifier.matchParentSize()‎. (If8044)

  • נוסף משנה הפריסה offsetPx, שאפשר להשתמש בו כדי להגדיר היסטים (דינמיים) בפיקסלים. (I5af57)

  • הקומפוזיציה AlignmentLineOffset הוצאה משימוש. במקומה צריך להשתמש במדיניות relativePaddingFrom()‎. הקומפוזיציה CenterAlignmentLine הוסרה. (I60107)

  • נוסף משנה פריסה defaultMinSizeConstraints, שמגדיר אילוצי גודל לפריסה העוטפת רק כשהאילוצים התואמים הנכנסים לא מוגדרים (0 לאילוצי מינימום ואינסוף לאילוצי מקסימום). (I311ea, b/150460257)

  • המאגר הוסר. שימוש ב-Box במקום זאת (Ibbc2b, ‏ b/151407926)

  • הוסרו משני LayoutWidth/Height/Size שהוצאו משימוש. (Ib0bc1)

  • נוספו ערכי ברירת מחדל לפרמטרים של משנה ההיסט. (I37f06)

  • נוסף משנה של מרווח פנימי סימטרי. (I39840)

  • הוסר משנה המאפיינים LayoutAspectRatio שיצא משימוש. (I65a74)

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

  • תוקן באג במגדירי הרוחב והגובה שגרם למדידת הפריסה העוטפת ללא אילוצים בציר הנגדי. (I210b8, ‏ b/154797971)

  • נוספו הפרמטרים verticalGravity ו-horizontalGravity לרכיבים Row ו-Column, בהתאמה. (I7dc5a)

  • הפונקציות wrapContentWidth ו-wrapContentHeight עודכנו כך שהן מצפות ליישור אנכי או אופקי ולא ליישור כלשהו. העדכון של משנה הגרביטציה מאפשר יישור אנכי או אופקי. העדכונים שבוצעו ברכיבים Row, ‏ Column ו-Stack מאפשרים להגדיר יישור רציף בהתאמה אישית. (Ib0728)

  • הפכנו את Alignment (יישור) לניתן ליצירה עם ערכים שרירותיים. נוספו יישור דו-ממדי. (Ia0c05)

  • השם של EdgeInsets שונה ל-InnerPadding. השם של הפרמטר innerPadding של Material Buttons שונה ל-padding. (I66165)

  • המאפיין alignToSiblings מקבל עכשיו Measured במקום Placeable. (I5788d)

  • נוספו משנים לשינוי גודל למדידות פנימיות, והוצאו משימוש הרכיבים ששימשו למטרה הזו. (I8295d)

  • הוספנו תמיכה בהתאמה אישית של מאפיינים של רכיבי צאצא של ConstraintLayout (Idb1a5)

  • הוסרו רכיבי Wrap ו-Center composable שהוצאו משימוש. (I29e23)

  • נוסף LayoutModifier2, ‏ API חדש להגדרת שינויים בפריסה. הוצא משימוש LayoutModifier ‏ (If32ac)

  • מעכשיו אפשר לגשת לחברים ב-RowScope וב-ColumnScope מחוץ ל-Row ול-Column. (I3a641)

  • מאגר התגים יצא משימוש. במקום זאת, אפשר להשתמש ב-Box. (I675ce, ‏ b/151407926)

  • נוסף משנה המאפיינים LayoutOffset להזזת מיקום הפריסה (I0b8a3)

  • תמיכה ראשונית בפריסת RTL ב-Compose (Ia5519)

  • העדכון של LayoutAlign לא מאפשר יותר למלא את המקום הפנוי (I2b14f)

  • הוסר קומפוזיציה של AspectRatio לטובת modifier. נמחקו רכיבי FlexColumn, ‏ FlexRow ו-Spacing modifier שיצאו משימוש (Iec8a7)

  • הוסר שינוי המאפיין LayoutInflexible עבור Row ו-Column ‏ (I0d820)

  • הטמעת נקודות אחיזה לגרירת בחירה כדי לשנות את הבחירה ב-TextField. (I27032)

  • מטמיע LongPressAndDrag לבחירת TextField. (I17919)

תיקוני באגים

  • השימוש ב-FocusModifier הוצא משימוש, ועכשיו אפשר להשתמש ב-Modifier.focus, ‏ Modifier.focusRequester ו-Modifier.focusObserver. המאפיינים FocusState ו-FocusDetailedState הוצאו משימוש לטובת FocusState2 (I46919, ‏ b/160822875, ‏ b/160922136)
  • השם של runOnIdleCompose שונה לrunOnIdle (I83607)
  • השמות של כמה ממשקי API לבדיקות השתנו כדי שיהיו אינטואיטיביים יותר. כל ממשקי ה-API של findXYZ קיבלו שם חדש: onNodeXYZ. כל ממשקי ה-API של doXYZ קיבלו שם חדש: performXYZ. (I7f164)
  • הוסרה ההגדרה Modifier.ripple שהוצאה משימוש בעבר. הקומפוננטה Clickable משתמשת עכשיו באפקט אדווה כאינדיקציה שמוצגת כברירת מחדל (אם הגדרתם MaterialTheme {} באפליקציה), כך שברוב המקרים אתם יכולים פשוט להשתמש בקומפוננטה Clickable ולקבל אינדיקציה של אפקט אדווה בחינם. אם אתם צריכים להתאים אישית את הצבע, הגודל או הפרמטר המוגבל של האפקט, אתם יכולים ליצור ידנית RippleIndication ולהעביר אותו ל-clickable כפרמטר indication. (I663b2, b/155375067)
  • הוסרו ממשקי API לבדיקת גודל שיצאו משימוש. (Iba0a0)
  • הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
  • גרסה 1 של נעילת כיוון הגלילה מיושמת ב-Compose. (I1ce7a, b/150289741)
  • חלונות קופצים, תיבות דו-שיח ותפריטים מקבלים עכשיו בירושה את MaterialTheme ההקשרי (Ia3665, b/156527485)
  • הוסר פרמטר של כיוון הפריסה מבלוק המידה של הפונקציה Layout(). עם זאת, כיוון הפריסה זמין בתוך הקריאה החוזרת (callback) דרך אובייקט היקף המדידה (Ic7d9d)
  • נוספה התכונה AbsoluteArrangement – מאפשרת סידור של רכיבי הצאצא בתוך השורה בלי שיקוף אוטומטי ב-RTL (I3a1df)
  • ההערה @Untracked הוצאה משימוש. החלפה עם ‎ @ComposableContract(tracked=false)‎ ‏(Id211e)
  • לפני השינוי הזה, פלאגין הקומפיילר של Compose היה מיירט באופן לא טריוויאלי קריאות ל-constructors בתוך פונקציית @Composable אם היה (I5205a, b/158123804)
  • הוספת viewModel() composable שמאפשר ליצור או לקבל ViewModel שכבר נוצר, בדומה לאופן שבו הוא פועל ב-Activity או ב-Fragment (I5fdd1)
  • שינינו את המבנה של מחלקת Radius כך שתהיה מחלקה מוטמעת. הסרנו שיטות ליצירת מודעות נלוות לטובת בנאי פונקציות עם פרמטר ברירת מחדל, כדי שהרדיוס לאורך ציר ה-Y יתאים לזה של פרמטר הרדיוס בציר ה-X שהוא חובה.

    הפונקציה DrawScope.drawRoundRect עודכנה כך שהיא מקבלת פרמטר Radius יחיד במקום 2 ערכי float נפרדים לרדיוס לאורך ציר x וציר y ‏ (I46d1b)

  • החלפנו את השימוש במחלקה Px בכמה מחלקות Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטרים של פיקסלים. מחיקה של כל המחלקה Px‏ (I3ff33)

  • החלפנו את השימוש במחלקת Px בכמה מחלקות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I086f4)

  • החלפנו את השימוש במחלקת Px בכמה מחלקות Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (Id3434)

  • במסגרת מאמצי רפקטורינג נרחבים, החלפנו את השימוש במחלקת Px במחלקות שונות של Compose כך שנסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I97a5a)

  • הסמן ב-TextField כולל אנימציית הבהוב (Id10a7)

  • כבר לא צריך להעביר GestureToken (Id7ae5) כדי להשתמש במחוות חלקיות.

  • החלפנו את השימוש במחלקה Px במחלקות שונות של Compose כחלק ממאמץ רחב של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I57bff)

  • הפונקציה Modifier.semantics לא הוצאה משימוש כדי לאפשר שימוש ברכיבים ברמה גבוהה. (I4cfdc)

  • משנים את השם של AnnotatedString.Builder.addAnnotationString ל-addStringAnnotation. (I5059e)

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

  • אפשר למדוד רכיבי צאצא של Layout ו-LayoutModifier עם כיוון פריסה שונה. (Ibd731)

  • הוספנו פרמטר אופציונלי נוסף של rect ל-ImagePainter כדי לתמוך בציור של חלק משני של ImageAsset הבסיסי (I0ea9e)

  • תוקנה קריסה ב-AdapterList כשמסירים פריטים (Ic64b0, ‏ b/153195921)

  • שינינו את הדרך שבה אנחנו מודדים את הפריסה הראשונה שמוסיפים לבלוק activity.setContent { }. בעבר, הוא נאלץ למלא את כל המסך של הפעילות, ועכשיו הוא מתנהג כאילו הוספתם את הפריסה שלכם ל-Stack: הוא יכול להיות קטן יותר מהמסך ויוצב בפינה השמאלית העליונה של המסך. אם רוצים את ההתנהגות הישנה, אפשר להחיל את Modifier.fillMaxSize()‎ על הפריסה. ‫(Ie88a7, ‏ b/153453714)

  • המודול ui-text-compose נקרא עכשיו ui-text. המודול ui-text מכיל עכשיו את רכיבי CoreText ו-CoreTextField (‏Ib7d47)

  • השם של מודול ui-text שונה ל-ui-text-core (I57dec)

  • העברנו את הקומפוזיציות ui-framework/CoreText ו-CoreTextField אל ui-text-compose. יכול להיות שכדאי לכלול את ui-text-compose בפרויקט שלכם. (I32042)

  • הפונקציות runOnIdleCompose ו-runOnUiThread הן עכשיו פונקציות גלובליות ולא שיטות ב-ComposeTestRule. (Icbe8f)

  • ‫[Mutable]אופרטורים של נציגי מאפיינים של מצב הועברו לתוספים כדי לתמוך באופטימיזציות של נציגי מאפיינים ב-Kotlin 1.4. כדי להמשיך להשתמש ב-by state { ... } או ב-by mutableStateOf(...), המתקשרים צריכים להוסיף ייבוא. (I5312c)

  • הערכים של clipToBounds ו-clipToOutline ב-DrawLayerModifier וב-drawLayer() הם עכשיו false כברירת מחדל. (I0eb8b, b/152810850)

  • השם של LayoutResult שונה ל-MeasureResult. (Id8c68)

  • הוצא משימוש Center composable. צריך להחליף אותו ב-LayoutSize.Fill + LayoutAlign.Center modifier, או באחד מהרכיבים הקומפוזביליים Box או Stack עם שינויים מתאימים (Idf5e0)

  • השם של הפריסה LayoutFlexible שונה ל-LayoutWeight. השם של הפרמטר tight שונה ל-fill. (If4738)

  • הפונקציה DrawVector שונתה מפונקציה קומפוזבילית רגילה להחזרת Modifier drawVector()‎ שתצייר את הווקטור כרקע לפריסה. (I7b8e0)

  • מחליפים את הפונקציה Clip שניתנת להרכבה במקש הצירוף drawClip(). ‏ DrawClipToBounds הוא מקש צירוף נוח לשימוש כשצריך לחתוך רק את הגבולות של השכבה בצורת מלבן. (If28eb)

  • הפונקציה הקומפוזבילית DrawShadow הוחלפה בעיבוד drawShadow(). הצללות מצוירות עכשיו כחלק מ-LayerModifier. (I0317a)

  • ‫androidx.compose.ViewComposer הועבר אל androidx.ui.node.UiComposer ‫androidx.compose.Emittable הוסר. הוא היה מיותר כי יש את ComponentNode. הספרייה androidx.compose.ViewAdapters הוסרה. הם כבר לא תרחיש שימוש נתמך. הפונקציה Compose.composeInto הוצאה משימוש. במקומה, צריך להשתמש ב-setContent או ב-setViewContent. הפונקציה Compose.disposeComposition יצאה משימוש. במקום זאת, צריך להשתמש בשיטה dispose ב-Composition שמוחזרת על ידי setContent. השיטה androidx.compose.Compose.subcomposeInto הועברה אל androidx.ui.core.subcomposeInto השם של השיטה ComponentNode#emitInsertAt שונה ל-ComponentNode#insertAt השם של השיטה ComponentNode#emitRemoveAt שונה ל-ComponentNode#removeAt השם של השיטה ComponentNode#emitMode שונה ל-ComponentNode#move (Idef00)

  • הוצא משימוש רכיב קומפוזבילי מסוג Wrap. אפשר להחליף אותו במאפיין LayoutAlign או ברכיב Stack (Ib237f)

  • הגדרנו שהכיוון של הפריסה יועבר מצומת פריסת האם לרכיבי הצאצא. נוסף משנה של כיוון הפריסה. (I3d955)

  • שינוי השם של Painter.toModifier ל-Painter.asModifier כי ל-Modifier שנוצר יש הפניה ל-Painter המקורי שאפשר לשתף בין כמה מופעים של Modifier‏ (I7195b)

  • תמיכה בכיוון מימין לשמאל במאפיין LayoutPadding ‏ (I9e8da)

  • התכונות Density ו-DensityScope מוזגו לממשק אחד. במקום ambientDensity()‎, עכשיו אפשר להשתמש ב-DensityAmbient.current. במקום withDensity(density)‎, רק with(density)‎‏ (I11cb1)

  • הוסרה המחלקה ValueHolder. שינינו את המבנה של המחלקות AnimatedValue ו-AnimatedFloat כדי להפוך את שדה ערך האנימציה למופשט, כך שמחלקות משנה יוכלו לעקוב אחרי עדכון הערך.

    • נוספו מחלקות מודלים ל-AnimatedValue,‏ AnimatedFloat וכו'.
    • הוספנו קבוצה חדשה של API קל משקל מסוג @Composable להנפשה בין ערכים.
    • (I79530)
  • שינויים בתוכנה שעלולים לגרום לכשלים ב-API של מצב אווירה. פרטים נוספים מופיעים ביומן ובמסמכי התיעוד של Ambient<T> (I4c7ee, b/143769776)

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

  • תוקן באג ב-ConstraintLayout שגרם לקריסה בהרכבות מחדש. (Ibee5a, b/158164341)

  • בוצע שינוי ב-API של lambda עם Constraints trailing. עכשיו, במקום שני פרמטרים, יש לו היקף של מקבל, שבנוסף למגבלות ול-layoutDirection מספק את המאפיינים minWidth,‏ maxWidth,‏ minHeight ו-maxHeight ב-Dp ‏ (I91b9a,‏ b/149979702)

  • השם של LayoutModifier2 שונה ל-LayoutModifier. (Id29f3)

  • פונקציות המדידה המובנות ב-Layout וב-LayoutModifier2 מקבלות עכשיו IntrinsicMeasureScope, שמספק API של שאילתות מובנות עם כיוון פריסה שמופץ באופן מרומז. (Id9945)

  • המאפיין LayoutDirectionAmbient הוצא משימוש. כדי לקרוא את כיוון הפריסה שמוגדר על ידי הלוקאל, משתמשים ב-localeLayoutDirection ב-ConfigurationAmbient ‏ (I851b1)

  • נוספו positionInParent ו-boundsInParent ל-LayoutCoordinates. (Icacdd, b/152735784)

  • הקומפוזיציה ParentData הוצאה משימוש. אפשר ליצור משנה שמטמיע את הממשק ParentDataModifier, או להשתמש במשנה LayoutTag אם רוצים רק לתייג רכיבי צאצא של פריסה כדי לזהות אותם בתוך בלוק המדידה. (I51368, b/150953183)

  • מוסיפים OnPositionedModifier ו-OnChildPositionedModifier כדי להחליף את הפונקציות OnPositioned ו-OnChildPositioned שאפשר להרכיב. (I2ec8f)

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

  • הפרמטר LayoutDirection נוסף ל-WithConstraints ‏ (I6d6f7)

  • הדגל ComposeFlags.COMPOSER_PARAM עודכן ל-true, מה שישנה את אסטרטגיית יצירת הקוד לתוסף הכתיבה. ברמה גבוהה, הפעולה הזו גורמת ליצירה של פונקציות @Composable עם פרמטר סינתטי נוסף, שמועבר לקריאות הבאות של @Composable כדי שסביבת זמן הריצה תוכל לנהל את הביצוע בצורה תקינה. זהו שינוי משמעותי שגורם לשבירת תאימות בינארית, אבל הוא אמור לשמור על תאימות ברמת המקור בכל השימושים המאושרים של Compose. (I7971c)

  • השדה LayoutCoordinates השתנה כך שהשדה providedAlignmentLines הוא Set ולא Map, והשדה LayoutCoordinates מיישם את האופרטור get() במקום זאת כדי לאחזר ערך. כך קל יותר לשנות ערך אחד או יותר בקבוצה בלי ליצור אוסף חדש לכל משנה. (I0245a)

  • ל-LayoutCoordinates אין יותר מאפיין position. המאפיין position לא הגיוני כשמביאים בחשבון LayoutModifiers,‏ rotation או scaling. במקום זאת, מפתחים צריכים להשתמש ב-parentCoordinates וב-childToLocal() כדי לחשב את הטרנספורמציה מקואורדינטת פריסה אחת לקואורדינטת פריסה אחרת.

    ב-LayoutCoordinates נעשה שימוש ב-IntPxSize במאפיין size במקום ב-PxSize. פריסות משתמשות בגדלים של פריסות בפיקסלים שלמים, ולכן כל הגדלים של הפריסות צריכים להיות מספרים שלמים ולא ערכים של נקודה צפה. (I9367b)

  • שיפורים בפלטפורמת ה-API של Constraints‏ (I0fd15)

  • נוסף TextDirection.Content ‏ (I48f36)

  • התאמנו את תפריט סרגל הכלים כדי שהאפשרויות 'העתקה', 'גזירה' ו'הדבקה' יוצגו בצורה תקינה. (Id3955)

  • הוספת FloatingToolbar לבחירת TextField. (Ie8b07)

  • השם של TextDirectionAlgorithm שונה ל-TextDirection ‏ (I75ce8)

  • השם של TextDirection השתנה ל-ResolvedTextDirection ‏ (I3ff38)

  • הוספת HapticFeedback ל-TextField Selection. (I58050)

  • הוספת שיטות להעתקה, לגזירה ולהדבקה לבחירת TextField. (Idb70b)

  • התכונות TestTag ו-Semantics נמחקו. במקום זאת, אפשר להשתמש ב-Modifier.testTag וב-Modifier.semantics (I15ff0, b/158841414)

  • שם החבילה של Locale ו-LocaleList השתנה מ-androidx.ui.text ל-androidx.ui.intl (I8132c)

  • שינוי ב-API: השם של AnnotatedString(builder: Builder) שונה ל-annotatedString(builder: Builder). (Ia6377)

  • שינוי ב-API: השם של AnnotatedString.Item שונה ל-AnnotatedString.Range. (I2d44d)

  • הוספת סרגל כלים לפעולות שקשורות לטקסט. (I49d53)

  • ‫LifecycleOwnerAmbient זמין עכשיו. עכשיו, Activity שמשתמשים בו עם Compose UI צריך להרחיב את androidx.activity.ComponentActivity (או AppCompatActivity). הפונקציה setContent ב-android.app.Activity הוצאה משימוש (Idb25a,‏ b/153141084)

  • שם החבילה ui-android-text (androidx.text) הוחלף ב-androidx.ui.text.platform כדי להתאים למדיניות androidx. (I42711)