Compose Foundation

כתיבת אפליקציות ב-Jetpack פיתוח נייטיב באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם למערכת העיצוב.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫11 במרץ 2026 1.10.5 - ‎1.11.0-beta01 -

מבנה

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

משוב

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

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

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

גרסה 1.11

גרסה ‎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 כדי לאפשר הגדרה של רצועות רשת על סמך הגודל הזמין. ‫(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 ירחיב אותם. תודה, סטיבן שון! ‫(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 נכתב מחדש כדי לא להשתמש ב-suspend pointer input כאופטימיזציה. התכונה הזו מופעלת באמצעות הדגל שאפשר להשבית אם נתקלים בבאג בהטמעה החדשה – 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, ‏ custom wrapping, ‏ direction change ובקרה מפורטת על יישור באמצעות 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, שנדרש כשצריך קריאה חוזרת (callback) של onRemeasured(). במקום להשתמש ב-LayoutAwareModifierNode כללי יותר כשלא צריך קריאות חוזרות אחרות, צריך להשתמש בממשק הזה ישירות. (If6fb0)
  • הוספנו את visible Modifier שאפשר להשתמש בו כדי לדלג על ציור התוכן של Composable בלי להשפיע על המקום שהוא תופס. ‫(Ia6871, ‏ b/158837937)

גרסה 1.10

גרסה 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 אחד למופע 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), צריך להשתמש בשיטות החדשות של פקטורי (factory): 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 כך שתשתמש ב-Cache Window במקום בפריט ברירת המחדל 1 בכיוון הגלילה. עכשיו, אחזור מראש ראשוני מופעל כברירת מחדל ב-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 היא לא לצרוך, כדי שרכיבי Child 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

  • כדי להשתמש באיתור שגיאות בקוד של "פיתוח נייטיב" שמופץ עם Compose, נדרשת גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת (IDE), נדרשת גרסה Ladybug של Android Studio או גרסה חדשה יותר.
  • שינוי שעלול לגרום לכשלים: עומסי יתר של clickable,‏ combinedClickable,‏ selectable,‏ toggleable ו-triStateToggleable ללא פרמטר של אינדיקציה תומכים עכשיו רק במופעים של IndicationNodeFactory שסופקו באמצעות LocalIndication. השינוי הזה יחול כשקומפילציה מחדש של השימושים במאפיינים האלה תתבצע באמצעות הגרסה הזו של Compose. השינוי לא משפיע על תלות בינארית או על תלות מעבר. אם אתם מספקים ל-LocalIndication הטמעה של Indication שהוצאה משימוש, ואתם משתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה בהתנהגות נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במאפיינים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל את השינוי הזה באופן זמני, וכך לאפשר שדרוג של Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש במדיניות IndicationNodeFactory במקום זאת. אפשר גם להשתמש בעומסים העודפים עם פרמטר מפורש של Indication – העומסים העודפים האלה ימשיכו לתמוך במופעים של Indication שאינם 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)
  • אי אפשר להשוות ישירות בין ערכי צבע של 64 ביט ב-Compose לבין ערכי צבע ב-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 ישתנו אוטומטית בהתאם לגודל המסך, ולכן אין יותר צורך להגדיר אותה כ-True. העדכון הזה פותר את הבעיה שבה תצוגות צאצא לא קיבלו עדכונים של WindowInsets כברירת מחדל. מפתחים יכולים לבטל את ההסכמה לעדכון על ידי שינוי הערך של ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled ל-TRUE, או עדיף, על ידי הגדרת הערך של AbstractComposeView.consumeWindowInsets ל-TRUE בכל המקרים של תצוגת פיתוח נייטיב. (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 מכילה את השמירות האלה.

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

  • כדי להשתמש באיתור שגיאות בקוד של "פיתוח נייטיב" שמופץ עם Compose, נדרשת גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת (IDE), נדרשת גרסה Ladybug של Android Studio או גרסה חדשה יותר.

  • שינוי שעלול לגרום לכשלים: עומסי היתר של clickable,‏ combinedClickable,‏ selectable,‏ toggleable ו-triStateToggleable ללא פרמטר של אינדיקציה תומכים עכשיו רק במופעים של IndicationNodeFactory שסופקו באמצעות LocalIndication. השינוי הזה יחול כשקומפילציה מחדש של השימושים במאפיינים האלה תתבצע באמצעות הגרסה הזו של Compose. השינוי לא משפיע על תלות בינארית או על תלות מעבר. אם אתם מספקים ל-LocalIndication הטמעה של Indication שהוצאה משימוש, ואתם משתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה בהתנהגות נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במאפיינים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל את השינוי הזה באופן זמני, וכך לאפשר שדרוג של Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש במדיניות IndicationNodeFactory במקום זאת. אפשר גם להשתמש בעומסים העודפים עם פרמטר מפורש של Indication – העומסים העודפים האלה ימשיכו לתמוך במופעים של Indication שאינם 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 הטמעה של Indication שהוצאה משימוש, ואתם משתמשים בממשקי ה-API האלה, תתרחש קריסה בזמן הריצה. השינוי הזה בהתנהגות נדרש כדי לשפר את הביצועים, וכדי לאפשר לפונקציות קומפוזביליות שמשתמשות במאפיינים האלה לדלג במהלך ההרכבה מחדש. אתם יכולים להשתמש ב-ComposeFoundationFlags.isNonComposedClickableEnabled=false כדי לבטל את השינוי הזה באופן זמני, וכך לאפשר שדרוג של Compose בלי שההעברה הזו תחסום אתכם. הדגל הזה יוסר אחרי גרסה יציבה אחת. כדי לפתור את הבעיה, צריך להעביר את כל ההטמעות של אינדיקציות שיצאו משימוש לשימוש במדיניות IndicationNodeFactory במקום זאת. אפשר גם להשתמש בעומסים העודפים עם פרמטר מפורש של Indication – העומסים העודפים האלה ימשיכו לתמוך במופעים של Indication שאינם IndicationNodeFactory, למרות שלא מומלץ לעשות זאת מסיבות שקשורות לביצועים. ‫(I6bcdc, ‏ b/316914333)
  • הוספנו דגל לשליטה בהתנהגות האוטומטית של שליפה מראש (prefetch) של רכיבים מוטמעים: isAutomaticNestedPrefetchEnabled (I8d448)
  • מגדירים עומס יתר ל-LazyGridState ול-rememberLazyGridState שמקבל LazyLayoutCacheWindow. (I51151)
  • הוספת סרגלים לשינוי גודל החלון. הוספת DerivedRuler כדי לאפשר חישוב של Ruler מ-Ruler אחר. משנה את PlacmentScope כדי להטמיע את הצפיפות. (I658bc, ‏ b/359260964)
  • נוספה פונקציית יצירה 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's 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 composable. נוסף הדגל הניסיוני 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 שאפשר להגדיר לו ערך null. אם הערך הוא null, והאינדיקציה שסופקה היא IndicationNodeFactory, אפשר ליצור את האינדיקציה רק כשצריך, מה שמשפר את הביצועים. אם אתם לא משתמשים ב-hoisting וב-MutableInteractionSource, מומלץ להעביר null במקום להעביר remember { MutableInteractionSource() }.
    • המאפיין Indication#rememberUpdatedInstance הוצא משימוש. הוא גורם לירידה משמעותית בביצועים שאי אפשר להימנע ממנה, ומונע אופטימיזציות אחרות. במקום זאת, צריך להשתמש ב-IndicationNodeFactory API החדש.
  • BasicTextField השימוש ב-TextFieldState יציב עכשיו, ואנחנו ממליצים לכל האתרים שמתקשרים עם Google Ads להתחיל את המעבר מ-BasicTextField(value, onValueChange) ל-BasicTextField(TextFieldState).
  • המאפיין ClickableText הוצא משימוש. כדי להוסיף לטקסט קישורים שאפשר ללחוץ עליהם, משתמשים ב-BasicText עם ההערה החדשה LinkAnnotation ב-AnnotatedString. ‫LinkAnnotation מאפשרת עיצוב בהתאמה אישית על סמך מצב הקישור (למשל, מודגש, בהשהיה).
  • חדש: ContextualFlowRow ו-Enhanced FlowRow/Column עם MaxLines ו-Overflow. אנחנו שמחים להודיע על שיפורים בתכונות הניסיוניות FlowRow ו-FlowColumn, שכוללות עכשיו תמיכה ב-maxLines ובגלישה מעבר למסך, וגם על השקת התכונות ContextualFlowRow ו-ContextualFlowColumn. המטרה של העדכון הזה היא לספק רכיבים עם ביצועים אופטימליים. הרכיב ContextualFlow* מתאים למספר גדול של פריטים שמשתמשים בהגדרה של מספר קטן של שורות מקסימליות ובלחצנים דינמיים של 'עוד' (‎+N), והרכיבים FlowRow ו-FlowColumn מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow או ב-FlowColumn, שבה כל הפריטים מורכבים בלי קשר להתאמה למקסימום של הציר הניצב, צריך להגדיר את הגלישה ל-FlowRowOverflow.Visible או ל-FlowColumnOverflow.Visible במהלך האתחול. כדאי לנסות את ContextualFlowRowSample ו-FlowRowSample כדי לראות דוגמאות לשימוש בתכונות החדשות. (Ib9135, ‏ b/293577082)
  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyColumn וב-LazyRow. בעבר הייתה אפשרות להוסיף את המגביל Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי התצוגה הזה והשקנו שינוי תצוגה חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (התפוגגות פנימה), היעלמות (התפוגגות החוצה) ושינוי סדר. (I2d7f7, b/150812265)
  • הטמענו תמיכה ניסיונית בצילומי מסך ארוכים במאגרי גלילה של Compose באמצעות Android API רשמי (ScrollCaptureCallback).
  • מקורות NestedScroll Drag and Fling מוחלפים במקורות UserInput ו-SideEffect כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (תופעת לוואי), גלגל העכבר ומקלדת (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 לא פעל עם חלק משיטות הקלט.
  • יצירת מהירות: מניעת הפצה של ערכי NaN בממשק המשתמש של Compose וב-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)
  • הוסר מהכיתה TextStyle: TextLinkStyles. במקום זאת, TextLinkStyles הוא חלק מהבונה LinkAnntation ומהשיטה AnnotatedString.fromHtml (I90b2b)
  • תוקן באג שגרם לכך שהרכיב Pager נסגר כשמבצעים תנועת החלקה לכיוון גבול בזמן שהוא כבר נמצא בגבול. (I9f373, b/339171222)
  • ב-BTF2 יש עכשיו תנועות נכונות של העכבר לבחירה. (Ibe8c6)

External Contribution

  • שליחה מחדש של 'Make compose/measure time calculation content-type based in prefetch to improve accuracy' (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 בקריאות חוזרות שלא גורמות להשהיה. (I59de8)

תיקוני באגים

  • תוקן באג שגרם לקריסה של Pager כש-contentPadding היה גדול מהאילוצים הנכנסים. הערכים השליליים שמוחזרים מהפונקציה 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)
  • תוקנה בעיה שבה הערך של AnchoredDraggableState [currentValue] השתנה כשמתקרבים לגבולות של המצב. (Iea30b, b/333846848)

External Contribution

  • שינינו את השם של PrefetchExecutor -> PrefetchScheduler כדי לשקף טוב יותר את האחריות שלו. (Ib9154)
  • הוספנו תמיכה באחזור מראש של פריטים ב-LazyLists מקוננים (למשל LazyColumn שמעבד LazyRows מקונן). השינוי הזה צפוי להפחית את מספר הפריימים שנושרים במהלך גלילה ב-LazyLists האלה. ההטמעה מתבצעת כברירת מחדל על ידי שליפה מראש (prefetch) של 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(), שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (התפוגגות פנימה), היעלמות (התפוגגות החוצה) ושינוי סדר. ‫(Ib7d12, ‏ b/330510929)
  • נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-LazyVerticalStaggeredGrid וב-LazyHorizontalStaggeredGrid. בעבר הייתה אפשרות להוסיף את המגביל Modifier.animateItemPlacement() כדי לתמוך באנימציות של מיקום (סידור מחדש). הוצאנו משימוש את שינוי התצוגה הזה והשקנו שינוי תצוגה חדש ולא ניסיוני בשם Modifier.animateItem(), שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (התפוגגות פנימה), היעלמות (התפוגגות החוצה) ושינוי סדר. (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 בתצוגת הדפים. עכשיו, בכל מעבר של מדידה, הלקוח יכול לבטל את ההסכמה לשמירת האינדקס על סמך המפתח על ידי קריאה ל-requestScrollToPage. השינוי הזה לא משפיע על ההתנהגות הקיימת בשום צורה, אלא אם מתבצעת קריאה אל requestScrollToPage. (Ic4213)
  • השקנו את requestScrollToItem ל-LazyGrids. עכשיו, בכל מעבר של מדידה, הלקוח יכול לבטל את ההסכמה לשמירת האינדקס על סמך המפתח על ידי קריאה ל-requestScrollToItem. השינוי הזה לא משפיע על ההתנהגות הקיימת בשום צורה, אלא אם מתבצעת קריאה אל requestScrollToItem. (I0a7a0)
  • האפשרות ClickableText הוצאה משימוש. כדי להוסיף קישורים לטקסט, יוצרים AnnotatedString עם LinkAnnotation שמתאים לקישור ומעבירים את AnnotatedString הזה אל ה-composable‏ Text (I34d4b, ‏ b/323346994)
  • האפשרות UrlAnnotation הוצאה משימוש. במקומה יש להשתמש באפשרות LinkAnnotation.Url. אם אתם משתמשים בערכת נושא של Material, צריך להשתמש באובייקט TextDefaults כדי ליצור את ההערה עם ערכת הנושא של Material (I8d180, b/323346545)
  • השם של String.parseAsHtml שונה ל-AnnotatedString.Companion.fromHtml (I43dcd)
  • נוספו ארגומנטים של סגנון (linkStyle, focusedLinkStyle, hoveredLinkStyle) ומאזין לאינטראקציה עם קישורים לשיטה parseAsHtml. כשמנתחים את המחרוזת עם תגי <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 כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (Side Effect) וגלגל העכבר והמקלדת (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(), שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (התפוגגות פנימה), היעלמות (התפוגגות החוצה) ושינוי סדר. (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)
  • הוספנו GraphicsLayer API חדש כדי לספק גמישות רבה יותר במיקום ובהצגה של מופעי 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 הניסיונית לעיצוב היפר-קישורים. (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() כדי לאפשר לצמתי שינוי לקבל את 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)
  • הוספנו את ה-modifier‏ receiveContent שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack פיתוח נייטיב.
  • receiveContent משתלב עם BasicTextField2 כדי לקבל תוכן עשיר שמסופק על ידי המקלדת הווירטואלית, או באמצעות פעולת הדבקה מהלוח. (I81b72)
  • במסגרת השינוי הזה, אנחנו מחליפים את SnapFlingBehavior ב-TargetedFlingBehavior ברכיב ה-pager כדי לאפשר תרחישי שימוש נוספים ולספק גמישות רבה יותר. (I762ea)
  • בשינוי הזה אנחנו הופכים את ממשקי ה-API של 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 שאפשר להגדיר לו ערך null. אם הערך הוא 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.
  • הוספנו את ה-modifier‏ receiveContent שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack פיתוח נייטיב.
  • 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.anchoredDraggable שמאפשר לגרור ולהנפיש בין קבוצה מוגדרת מראש של נקודות עיגון. המשנה הזה נועד להחליף את Modifier.swipeable. במדריך להעברת נתונים מוסבר איך להשתמש בו ואיך להעביר נתונים מ-Modifier.swipeable.
  • נוספה פונקציונליות של גרירה ושחרור בין אפליקציות ורכיבים. כדי להתחיל, אפשר לעיין במאמרים על DragAndDropTarget,‏ Modifier.dragAndDropSource וממשקי API אחרים
  • Modifier.draggable2D הוא משנה חדש שמאפשר תמיכה קלה בגרירה דו-ממדית. דוגמה
  • הוספנו את AndroidExternalSurface ו-AndroidEmbeddedExternalSurface כדי להקל על הוספת רכיבים מבוססי-משטח ב-Compose
  • שינויים ושיפורים שונים ב-API ב-Pager וב-snapFlingBehaviour
  • ממשקי API שונים של מיקוד, טקסט ו-insets עברו לסטטוס של ממשקי 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 עודכן כך שיוצג כמספר עשרוני. עדכנו את התיעוד כדי להבהיר את נושא maximumFlingVelocityהאחדות. (I8adc7)
  • השם של onDragAndDropStart במפעל DragAndDropModifierNode שונה ל-acceptDragAndDropTransfer.

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

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

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

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

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

תיקוני באגים

  • צריך להטמיע את הפונקציות equals ו-hashCode עבור PageSize.Fixed. (Ie3ede, ‏ b/300134276)
  • תוקן באג שגרם לכך שהפריסה BasicText לא הצטמצמה כשminWidth השתנה וminWidth היה קטן מאילוצי המידה הראשוניים maxWidth (Idb19c)
  • הוספנו תמיכה במנוע רינדור של מעבר צבעים קשתי ב-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 להפעלת סשנים של גרירה ושחרור, ומקשי הצירוף dragAndDropTarget לקבלת נתונים מסשנים של גרירה ושחרור (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. הגרסה של maximumFlingVelocity שמופיעה עכשיו בכלי הכתיבה חלה על Draggable. (Ibf974)
  • הוסרו עומסי יתר (overloads) של Pager ו-PagerState שהוצאו משימוש. (Iea07e)
  • הוספנו את BasicTooltipBox ל-compose.foundation ועדכנו את PlainTooltipBox ואת RichTooltipBox כדי להשתמש ב-TooltipBox עם רכיבי composable חדשים של 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. זו דרך לדעת את הגודל של הרכיב שמשתמש ב-ScrollState אחרי המדידה.viewPort (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 של פנורמה דלתא כדי לעזור לקבוע את כיוון הפנורמה ולאפשר או לא לאפשר אותה. ‫(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 שמופעלים כשמנסים לטעון נכסי מפת סיביות עם תיאור של נתיב הנכס שלא נטען. (I19f44, b/230166331, b/278424788)
  • נוספו מאפיינים ופעולות סמנטיים לתמיכה בתרגום טקסט. (I4a6bc)
  • השקנו  API שאפשר להשתמש בו כדי להתאים אישית את האופן שבו רכיבים כמו  מגיבים לבקשות .BringIntoViewCalculatorScrollablebringIntoView השתנה העומס של scrollable כך שיקבל אופציונלית מופע של BringIntoViewCalculator. (Iaf5af)

תיקוני באגים

  • נוספה בדיקת Lint כדי להזהיר אם יוצרים MutableInteractionSource בקומפוזיציה בלי לזכור אותו, בדומה לבדיקות ה-Lint ליצירת מצב ניתן לשינוי / MutableInteractionSource.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, layout modifier ועוד, הועברו אל 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)
  • תוקנה רגרסיה שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי רכיב ה-Composable‏ 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 ובסידור שלהם באמצעות cross axis arrangement (סידור צירים מוצלבים). (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

  • נוסף קריאה חוזרת (callback) חדשה Modifier.Node.onReset() שמאפשרת לאפס מצב מקומי מסוים כדי לטפל בצורה נכונה במקרה שבו נעשה שימוש חוזר ב-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. כאן דווחה הבעיה במקור. תיקון נשלח ויהיה זמין בעדכון הבא של Compose. כפתרון עקיף, אפשר לעדכן את הספריות 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 אבל לפני חידוש הקורוטינות של המתקשרים. (Idb413, ‏ b/254115946, ‏ b/222093277, ‏ b/255802670)
  • הוספנו פעולות נגישות בדף: PageUp, PageDown, PageLeft, PageRight. הערה: האפשרויות האלה זמינות רק מ-API 29. (Ida4ab)
  • הצגת HorizontalPager ו-VerticalPager, דרך להצגת קומפוזיציות באופן שדומה ל-Pager. הוספנו את PagerState כדי לשלוט ברכיבי ה-Pager ולקבל מידע על המצב הנוכחי של ה-Pager. הוספנו את PageSize, דרך לשלוט בגודל הדף של רכיב Pager. אפשר להשתמש בזה כדי ליצור קרוסלה כמו Pagers. הוספנו את 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() ו-withConsumedWindowInsets() שונו ל-consumeWindowInsets() ו-onConsumedWindowInsetsChanged(), והמשנים הפכו לציבוריים. (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* API (‏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.
  • ממשקי ה-API המתאימים SnapFlingBehavior, ‏ rememberSnapFlingBehavior ואחרים נוספו כניסיוניים.
  • Modifier.clickable,‏ Modifier.toggleable וגם Modifier.selectable מציגים עכשיו גלים כשלוחצים עליהם באמצעות המקלדת או לחצני החיצים בשלט רחוק.

גרסה ‎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 במחלקה 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 כדי לאפשר הצמדה ברשימות עצלניות. (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)
  • הוסר LazyVerticalGrid שהוצא משימוש מהחבילה androidx.compose.foundation.lazy. ה-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. הפונקציה מאפשרת לייצג רשימה של ערכים באמצעות כמה מרווחים. המאפיין הזה שימושי כשרוצים להגדיר שפת תצורה משלכם שדומה לזו שמשמשת את LazyColumn, שבה אפשר להגדיר פריטים ברשימה באמצעות כמה קריאות item/items. ‫(I2d05e, ‏ b/228580728)

תיקוני באגים

  • הבהרנו במסמכי התיעוד של WindowInsets.ime שערכי ה-inset מדווחים החל מ-API 23, אבל רק אנימציות מדווחות החל מ-API 30. (Ia7fc0, ‏ b/230756508)ime
  • לחיצה על מקש המחיקה קדימה כשהסמן נמצא בסוף שדה טקסט לא תגרום יותר לקריסה.
  • הארגומנטים של בנאי המחלקה 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 (מזהה 409c)
  • נוספה אפשרות לשרטוט טקסט עם צביעת מעבר צבעים באמצעות המברשת ב-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 companion חושפת עכשיו את הנראות (אם הם מופיעים במסך, בלי קשר לחיתוך עם החלון) ואת הגודל שלהם אם הם זמינים במכשיר, אבל לא פעילים כרגע. (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 מאפשר למפתחים להשבית את השימוש ב-WindowInsets של Android. כך כל 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)

תיקוני באגים

  • אם משנים את הגודל של אזור הגלילה ורכיב ה-Composable שהמיקוד עליו היה גלוי קודם,עכשיו אפשר להשתמש במקשי שינוי הגלילה (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)
  • ממשק Measured חושף עכשיו את המאפיין parentData ‏ (I3313f)
  • הוספנו את האפשרות הניסיונית Modifier.onFocusedBoundsChanged כדי לאפשר צפייה בגבולות של רכיבים שניתן להתמקד בהם. ‪(I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • נוסף LazyHorizontalGrid. (I61ae7, b/191238807)
  • הוספנו API חדש, LazyVerticalGrid, להגדרת גדלים של צירים חוצים (I17723)
  • נוסף משנה FocusGroup ‏ (I64bc0, ‏ b/213508274, ‏ b/184670295)

תיקוני באגים

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

External Contribution

  • העדכון כולל שימוש ב-Kotlinx coroutines 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)
  • תמיכה בטעינה אסינכרונית של גופנים בטקסט (I77057, ‏ b/214587005)
  • מעכשיו יש תמיכה ב-LazyVerticalGrid ב-line breaking לפני פריטים עם טווח שלא מתאים לשורה הנוכחית. (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 עם השם מוגדר במלואו של מחלקת המאפיינים כפרמטר של ממשק החלה. דוגמה לשימוש ב-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) כדי ליצור רכיבי Font family חדשים מחוץ לשימוש ב-Compose.
    • הפונקציות Paragraph ו-MultiParagraph מקבלות עכשיו FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver מכיל עכשיו את מפענח ה-DNS שמשמש לפריסה הזו. מפענח ה-DNS TextLayoutResult.layoutInput.resourceLoader יצא משימוש כי הוא כבר לא בשימוש. ‫(Id5a45, ‏ b/174162090)
  • נוסף AndroidFont, API חדש ברמה נמוכה שמאפשר לספק סוגים חדשים של תיאורי משאבי גופנים ב-Android. לדוגמה, טעינת גופנים מקצה עורפי ספציפי לאפליקציה, איתור אופציונלי של גופנים שהותקנו מראש במכשיר או טעינת גופן ממקור שלא מסופק על ידי מפעלי הגופנים הנוכחיים.
    • הרחבת Font.ResourceLoaded API כדי לתמוך בטעינת גופנים אופציונלית ואסינכרונית. לא מומלץ למפתחי אפליקציות להשתמש ישירות ב-API הזה. כדי להוסיף סוגים חדשים של גופנים, אפשר לעיין במאמר בנושא AndroidFont.
    • פונקציית התוסף Font.AndroidResourceLoader מאפשרת ליצור Font.ResourceLoader כשלא מדובר בהרכבה.
    • הפרמטר loadingStrategy נוסף לגופנים מבוססי-משאבים, כדי לאפשר טעינה אסינכרונית כשגופן המשאב מפנה ל-XML של גופנים להורדה. (Ie5aea, ‏ b/174162090)
  • ה-constructor של Typeface(FontFamily) הוצא משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, תהליך שיכול להימשך עד 10 שניות לגופנים שניתנים להורדה. בגופנים שאפשר להוריד, הקריאה הזו עשויה להיחסם למשך 10 שניות. במקום זאת, צריך להשתמש ב-FontFamilyResolver.preload
    • האפשרות fontResource(FontFamily): Typeface הוצאה משימוש. בעבר, התג הזה שימש לטעינה מראש של גופנים, תהליך שיכול להימשך עד 10 שניות לגופנים שניתנים להורדה. במקום זאת, אפשר להשתמש ב-FontFamilyResolver.preload (If8e7c, b/174162090)
  • מעכשיו אפשר לציין את סוג התוכן של הפריטים בפונקציות LazyVerticalGrid – פונקציות item/items ב-LazyGridScope מקבלות עכשיו פרמטר כזה. המידע הזה עוזר ללוגיקה של שימוש חוזר בהרכב הפריט לפעול בצורה יעילה יותר, ולהשתמש מחדש בתוכן רק בין פריטים מאותו סוג. (I7b355, b/215372836)
  • למאפיינים LazyListLayoutInfo ו-LazyGridLayoutInfo נוספו עכשיו מאפיינים חדשים: viewportSize, ‏ orientation, ‏ reverseLayout (Ifc8ed, ‏ b/200920410)
  • עכשיו אפשר לציין את סוג התוכן של הפריטים בפונקציות LazyColumn/LazyRow – item/items ב-LazyListScope. המידע הזה עוזר ללוגיקה של שימוש חוזר בהרכב הפריט לפעול בצורה יעילה יותר, ולהשתמש מחדש בתוכן רק בין פריטים מאותו סוג. (I26506)
  • ה-constructor של 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 (I46f07) ב-Android

תיקוני באגים

  • התנהגות הזכוכית המגדלת לבחירת טקסט שופרה כדי להתאים לזכוכית המגדלת של הפלטפורמה. (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)
  • תוקנה פריסה מימין לשמאל ב-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(), במקום תמיד באיחור לאירוע מסוג down. ‫(Ibefe0, ‏ b/203141462)
  • נוסף BringIntoView API ניסיוני שמאפשר לשלוח בקשה להורים כדי שהם יגללו להצגת פריט (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 ניסיוני שמאפשר לשלוח בקשה להורים כדי שהם יגללו להצגת פריט (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 היא מתודה שמופעלת אחרי ההפעלה.

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

איך זה עובד?

  • ספריות יכולות להגדיר את הכללים האלה, שייארזו בפרטי מידע שנוצרו בתהליך של פיתוח (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)
  • החלפנו את ה-enum‏ FocusState בממשק 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 בקריאות החוזרות של 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 is introduced. (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 שמאפשר לסמן אוסף של רכיבי Tabs או RadioButtons למטרות נגישות (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, שלא סופקה להם ברירת מחדל של factory. בעבר, הפעולה הזו הייתה מספקת הפניה לערך null עבור סוג שלא יכול להיות null.

    לסוגים שניתן להגדיר להם ערך null, כדאי לספק את { 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 הוסר. במקום זאת, אתם צריכים להשתמש ב-Modifier.pointerInput { detectTapGestures(...) }. (I266ed, ‏ b/175294473)

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

  • ההדרכה הועברה לחבילת Foundation. ה-VelocityTracker הועבר מ-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 top level clearRoots הוסרה. היא כבר לא נחוצה.
    • הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
    • הפונקציה Composer.collectKeySourceInformation הוסרה. היא כבר לא נחוצה.
    • הוסרו ה-methods 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 כדי להחליף את הממשק הקודם של 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)
  • נוסף רכיב של הקשר שגרת המשך (coroutine) InfiniteAnimationPolicy שיחול על אנימציות אינסופיות. כברירת מחדל, לא מותקנת מדיניות, אלא אם מריצים בדיקות עם ComposeTestRule. (I50ec4, b/151940543)
  • הפונקציות Animatable.snapTo ו-Animatable.stop הן עכשיו פונקציות השהיה (If4288)
  • הפונקציה ComponentActivity.setContent הועברה אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
  • הוסרו ה-methods של פירוק והעתקה (copy()) מכמה מחלקות שבהן השימוש בהן היה נדיר. (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 יצא משימוש. במקום זאת, אתם צריכים להשתמש ב-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)

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

  • הוצאנו משימוש את פריט המידע שנוצר בתהליך פיתוח (Artifact) 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)
  • הסרה של פונקציות גלילה שהוצאו משימוש ולא מושהות בהמשך לשינויים מהגרסה הקודמת, פונקציות הגלילה שלא מושהות הוסרו עכשיו לחלוטין. צריך להמיר לפונקציות השהיה עם אותם שמות. אפשר לקבל היקף של שגרת המשך באמצעות rememberCoroutineScope().‏ (I3d39c, ‏ b/178169563)

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

  • המסננים 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)

  • נוסף פרמטר של תיאור תוכן לתמונה ולסמל. הוא משמש כדי לספק תיאור לשירותי הנגישות (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 מחוץ לקומפוזיציה (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)
  • שינויים בפונקציות של factory עבור Font/FontFamily/Typeface

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

    • במקום 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
    • נוספה סיומת Command להטמעות קונקרטיות של EditOperation
    • ‫EditCommand's הם כבר לא מחלקות נתונים
    • השם של הפונקציה EditOperation.process שונה ל-applyTo
    • השם של InputEventListener שונה ל-InputEventCallback
    • (I0a366)
  • שינינו את המהירות כך שתכלול רכיבים ופעולות מתמטיות. (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 כדי לתמוך באנימציית ריקבון רב-ממדית (I820f2, ‏ b/168014930)
  • נוספה תמיכה בשדות טקסט מושבתים ולקריאה בלבד (I35279, ‏ b/171040474, ‏ b/166478534)
  • הפונקציה animate() הוחלפה בפונקציה animateAsState(), שמחזירה State<T> במקום T. כך אפשר לשפר את הביצועים, כי אפשר לצמצם את היקף הביטול למקום שבו נקרא ערך המצב. (Ib179e)
  • מוסיפים את Semantics role API ומוסיפים Role כפרמטר ל-SemanticsModifier שאפשר ללחוץ עליו, לבחור אותו ולהפעיל או להשבית אותו. שינינו את Modifier.progressSemantics כדי שגם Slider יוכל להשתמש בו. (I216cd)
  • עכשיו אפשר לגשת ל-native 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 כתחליף ל-API של ui-tooling, כדי להשתמש בו לחילוץ מידע על קומפוזיציה. ממשקי ה-API האלה הם ציבוריים, אבל הם לא מיועדים לשימוש מחוץ ל-ui-tooling API, כי הם מספקים את המידע הגולמי ש-ui-tooling API מפרש (I31a9c)

  • בוצע רפקטורינג ב-ShaderBrush כדי ליצור באופן עצלני מופע של Shader כשמידע על גודל סביבת הציור זמין. השימוש ב-Brush مفيد להגדרת מעברי צבעים שממלאים את כל גבולות הציור של קומפוזבל בזמן הקומפוזיציה, בלי צורך להטמיע יישומי DrawModifier מותאמים אישית.

    הוצאנו משימוש ממשקי API של בנאי פונקציות של מעברי צבעים לטובת שימוש בשיטות של אובייקט 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, מלמטה למעלה ולא מלמעלה למטה. לפני השינוי הזה, כדי להטמיע את השיטה מלמטה למעלה היה צריך להשתמש במערך של Insertים, והיה צורך להעתיק אותו לכל ממשק החלה שנדרש לבנייה מלמטה למעלה כדי לשפר את הביצועים. בעקבות השינוי הזה, Applier מחליף את insertBottomUp() כדי לבנות עץ מלמטה למעלה וinsertTopDown() כדי לבנות את העץ מלמעלה למטה. (Icbdc2)

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

  • נוספה פונקציית factory בשם buildAnnotatedString כדי ליצור AnnotatedString. פונקציית ה-builder של annotatedString הוצאה משימוש. (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. ‫Stack הוסר, צריך להשתמש ב-Box במקום זאת (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)
  • השדות uptime ו-position של PointerInputData לא יכולים להיות null. (Id468a)
  • ‫MaterialTheme מגדיר עכשיו את הצבעים הנכונים של נקודות האחיזה לבחירה ושל הרקע של הבחירה. באפליקציות שאינן Material, אפשר להשתמש ב-AmbientTextSelectionColors באופן ידני כדי להתאים אישית את הצבעים שמשמשים לבחירה. (I1e6f4, ‏ b/139320372, ‏ b/139320907)
  • השם של פרמטר היישור של 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
    • הוסרה חריגה שמופעלת בטווח בחירה לא תקין (I4a675, b/172239032)
  • המאפיינים הישנים של Ambient ששמם מסתיים ב-Ambient הוצאו משימוש והוחלפו במאפיינים חדשים שמתחילים ב-Ambient, בהתאם להנחיות לגבי מאפייני Ambient אחרים ולגבי Compose API. (I33440)
  • נוסף רכיב wrapper של Typeface ל-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 וה-stubs שלו (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 בסיסי לטקסט שלא משתמש בערכים מתוך עיצוב, כדאי לעיין ב-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 modifier, שאפשר להשתמש בו כדי לציין את ה-modifier לשינוי הגודל לפי אילוצי הגובה לפני שמנסים את אילוצי הרוחב. ‫(Ie7c43, ‏ b/155290593)
  • הוסר DpConstraints שהוצא משימוש. (I87884, ‏ b/171702471)

תיקוני באגים

  • הוספנו את המחלקה ScaleFactor inline כדי לייצג גורמי קנה מידה לצירים האופקי והאנכי, בלי שהם יהיו תלויים זה בזה, כדי לתמוך בתרחישי שימוש של שינוי קנה מידה לא אחיד.
    • נוספה שיטת computeScaleFactor אל ContentScale
    • נוספה הפונקציה ContentScale.FillBounds כדי לבצע שינוי גודל לא אחיד למתיחת הגבולות של src כך שימלאו את היעד.
    • נוספו שיטות אופרטור לחישוב פרמטרים של 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 ה-Composable משתמש פנימית ב-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()‎, והחלפה שלהם בממשקי ה-API‏ 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 וגם גדלים לא סופיים. (I95a7e)
  • נוסף מודול ליצירת דפי אינטרנט ואינטגרציה של דפי אינטרנט (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)
  • הפרמטרים של קישוט התיבה הוצאו משימוש. אם רוצים להוסיף קישוטים או ריווח לתיבה, צריך להשתמש במקום זאת ב-Modifiers (‏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 נוסף למשנים 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 שונתה והפכה למאפיין במקום לפונקציה
    • העדכון של ה-constructor של 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. התכונה הזו אף פעם לא נתמכה, והיא גרמה לבעיות ב-fling ובכל העצלנות של יצירת הפריטים של LazyColumnFor (I6e101)
  • עודכנו הרבה ממשקי API של גרפיקה
    • עדכנו את ממשקי ה-API של DrawScope עם שיטות טרנספורמציה בהיקף מוגבל כדי לציין שהטרנספורמציה מוחלת רק בתוך הקריאה החוזרת (callback) ומוסרת אחרי שהקריאה החוזרת מופעלת
    • עדכנו את התיעוד של clipPath כך שיפנה אל Path במקום אל מלבן מעוגל
    • תוקן הרווח במסמכי התיעוד של הפרמטר right ב-clipPath
    • השם של DrawScope.drawCanvas שונה ל-drawIntoCanvas והוסר פרמטר הגודל
    • שמות הפרמטרים dx/dy בשיטת inset שונו ל-horizontal ו-vertical
    • נוספה פונקציית עומס יתר של inset שמספקת את אותו ערך inset לכל 4 הגבולות
    • הסרנו את התיעוד בנושא שיטת ההזחה, שצוין בו שההזחה תחול על כל 4 הצדדים
    • עדכון המסמכים של המחלקה Rect
    • עדכון ההערות על פרמטרים של Rect כך שיתאימו לסגנון kdoc
    • הוסרו Rect.join ו-Rect.expandToInclude
    • נוצר עומס יתר עבור Rect.translate(offset) ו-Rect.shift הוצא משימוש
    • (If086a, ‏ b/167737376)
  • מוסיפים את AccessibilityScrollState למאפייני הסמנטיקה. (Ifeda9)
  • כדי להימנע מיצירת אובייקט, צריך להגדיר את TextRange כ-inline. (Id034b)
  • המאפיין ParagraphConstraints הוסר. הרוחב מועבר עכשיו ישירות לפסקה. (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 ב-APIs של פריסות. (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 כדי לאפשר מיקום של רכיבי פריסה צאצאים עם ריווח קבוע. נוסף גם רכיב ה-Arrangment המותאם, כדי לאפשר מיקום של רכיבי פריסה ברמת צאצא אחד ליד השני, והתאמה בשורה או בעמודה בהתאם ל-Alignment. השיטות הקודמות 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)
  • הוסרה ההגדרה fillMax* modifiers שסומנה כהוצאה משימוש מ-LazyItemScope, כי היא הקשתה על הוספת הגדרות כאלה בצורה נכונה לפריטים שהם לא צאצאים ישירים של LazyColumnFor (Ifa78d)
  • נוספה הטמעה של LazyColumn/LazyRow כ-DSL‏ (I93cc6)
  • האילוצים הם עכשיו מחלקה מוטמעת (I88736)
  • הוספנו את היכולת לשנות את הגודל של פריסה לחלק מהשטח הזמין, באמצעות שינויי הגודל fillMaxWidth, ‏ fillMaxHeight ו-fillMaxSize. (I945bb, ‏ b/161562591)

תיקוני באגים

  • נוסף פרמטר של שינוי ל-SelectionContainer (I4aada, ‏ b/161487952)
  • נוספה למבדקת SemanticsPropertyKey פונקציית למדה mergePolicy. אפשר להשתמש בה כדי להגדיר מדיניות מותאמת אישית למיזוג סמנטי של 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 והוצאו משימוש בנאים של פונקציות 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. השמות של הערכים המנויים (enums) של FilterQuality שונו ל-Pascal Case
    8. שינינו את השם של סוגי ה-enum‏ StrokeJoin ל-Pascal Case
    9. שמות הערכים של PointMode שונו ל-Pascal Case
    10. שינוי השם של סוגי ה-enum‏ PaintingStyle ל-Pascal Case
    11. שמות ה-enum של PathFillType שונו ל-Pascal Case
    12. שינינו את השם של סוגי ה-enum של StrokeCap ל-Pascal Case
    13. היישום של DrawCache עודכן כך שהוא לא משתמש יותר בפרמטרים של lateinit
    14. עדכנו את DrawScope כך שלא ישתמש יותר בהעברת הרשאה עצלה לפרמטרים הפנימיים fillPaint ו-strokePaint
    15. בוצע עדכון של Image composable כדי להימנע משימוש ב-Box לצורך תקורה נמוכה יותר
    16. עדכון של המחלקה Outline כך שתכלול הערות @Immutable
    17. הוספנו הערות @Immutable לכל הוראת נתיב ב-PathNode
    18. בוצע עדכון של Vector subcomposition כדי להסיר בדיקות מיותרות של שוויון מותנה, כי compose כבר מטפל בהן
    19. הוצאנו משימוש את שיטות ה-constructor הנלוות של Rect לטובת פונקציות constructor
    20. עדכנו את המחלקות של Brush ואת בנאי הפונקציות באמצעות ממשקי API‏ @Immutable ו-@Stable
    21. העדכון של ספירת הערכים (enum) VertexMode ל-PascalCase
    22. העדכון של השיטה selectPaint ב-DrawScope מאפשר להחליף באופן מותנה פרמטרים של קו בציור אם הם השתנו
    23. עדכון של Size כדי להוסיף API של פירוק מבנה, לשנות את השם של UnspecifiedSize ל-Unspecified ולהסיר שיטות שלא נעשה בהן שימוש
  • נוסף MonotonicFrameAnimationClock שמאפשר להשתמש ב-MonotonicFrameClock כ-AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על קורוטינות לבין ממשקי API שעדיין משתמשים בשעונים הישנים שמבוססים על קריאות חוזרות (callback).

    השם של המקבילה של MonotonicFrameClock ל-ManualAnimationClock הוא עכשיו ManualFrameClock. (I111c7, b/161247083)

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

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

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

  • ה-API‏ 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)
  • בוצע שינוי ב-APIs‏ Modifier.draggable ו-Modifier.scrollable. המאפיין DragDirection הוסר לטובת Orientation. הדרישה לציין מדינה עבור רכיב שאפשר לגלול בו פשוטה יותר עכשיו. השם של ScrollableState שונה ל-ScrollableController (Iab63c, b/149460415)
  • מאפיינים סמנטיים עם ערך יחיד משתמשים עכשיו בסגנון קריאה. לדוגמה, המחרוזת 'semantics { hidden = true }' נכתבת עכשיו כך: semantics { hidden() }. (Ic1afd, ‏ b/145951226, ‏ b/145955412)
  • עכשיו אפשר להגדיר גדלים של פינות שגדולים מ-50% ב-RoundedCornerShape וב-CutCornerShape (Id2340, b/160400213)
  • הפרמטר ContentScale שמוגדר כברירת מחדל עבור רכיב ה-Image שניתן להרכבה השתנה מ-Inside ל-Fit. הפעולה הזו בוצעה כדי להתאים את ההתנהגות של Painter אם גודל הפריסה גדול יותר מהגודל המקורי של Painter, תוך שמירה על יחס הגובה-רוחב. ההתנהגות הזו תואמת יותר לציפיות לגבי הגדרת גדלים קבועים לתמונה, בלי להשפיע על התנהגות ברירת המחדל אם רק הגודל המובנה משמש לחישוב הגודל של הרכיב. (I40ae3, b/159838006)
  • משתמשים ב-AnimationSpec במקום ב-AnimationBuilder בממשקי ה-API ברמה העליונה כדי להבהיר את ה<b>קונספט</b> של הגדרת <b>אנימציה</b> סטטית. - <b>שיפור</b> ה-DSL של ה<b>מעבר</b> על ידי הסרת הדרישה ל-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 שמייצגים רוחב וגובה. (Ic0191)
  • כדי לצמצם את מספר המחלקות שמשמשות לייצוג נתוני מיקום, כדאי להשתמש במחלקה Offset במקום ב-PxPosition. השימוש בשיטה הזו מאפשר ליהנות מהיתרונות של מחלקה מוטבעת כדי להשתמש בערך מסוג long לאריזת 2 ערכים מסוג float שמייצגים את ההיסטים x ו-y שמוצגים כערכים מסוג float. (I3ad98)
  • נוסף Modifier.zoomable לפונקציונליות של צביטה לשינוי גודל (Id5d63)
  • הוצאנו משימוש את הרכיב שאפשר להפעיל ולהשבית. מומלץ להשתמש ב-Modifier.toggleable במקום זאת (I35220, ‏ b/157642842)
  • המאפיין MutuallyExclusiveSetItem הוצא משימוש. במקומו צריך להשתמש ב-Modifier.selectable. (I02b47, b/157642842)
  • התג TestTag הוצא משימוש. במקומו, צריך להשתמש ב-Modifier.testTag. (If5110, b/157173105)
  • הוספת הפרמטר fontWeight לרכיב Text, שלא נוסף בטעות קודם לכן (I56937)
  • החלפנו את השימוש במחלקה Px בכמה מחלקות של Compose כחלק ממאמץ רחב של ארגון הקוד מחדש (Refactoring), כדי להסתמך רק על Dp ועל סוגים פרימיטיביים של פרמטרים של פיקסלים (I19d02)
  • רכיב VerticalScroller מספק עכשיו Column מחוץ לקופסה. הקומפוננטה HorizontalScroller מספקת עכשיו Row מחוץ לקופסה. (Ieca5d, b/157020670)
  • החלפנו את השימוש במחלקת Px במחלקות שונות של פיתוח נייטיב כחלק ממאמץ רחב של ארגון הקוד מחדש (Refactoring), כדי להסתמך רק על 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)
  • הוסר ה-API ‏DrawBackground שיצא משימוש לטובת ממשקי API של תוסף drawBackground ב-Modifier. בוצע רפקטורינג של ההטמעות של צבע, מברשת ו-paint drawBackground כדי לצמצם את נתיבי הקוד וגם כדי להסיר את הדרישה ליצירת Modifier כחלק מהקומפוזיציה. (I0343a)
  • ממשקי API ברמה גבוהה יותר של Compose עודכנו כך שבמקום Canvas הם חושפים CanvasScope. כך הצרכנים לא צריכים לשמור אובייקטים של Paint. צרכנים שעדיין צריכים גישה ל-Canvas יכולים להשתמש בשיטה drawCanvas של התוסף, שמספקת קריאה חוזרת להנפקת פקודות ציור עם ה-Canvas הבסיסי. (I80afd)
  • המיקום של הגלילה לא משוחזר ב-HorizontalScroller וב-VerticalScroller באמצעות מצב מופע שמור. (Ia0fae, b/155075048)
  • הוסר FocusManagerAmbient. משתמשים ב-FocusModifier.requestFocus כדי לקבל את המיקוד. (Ic4826)
  • פריסת הטבלה הוסרה באופן זמני עד שנוכל להחזיר אותה עם API מעודכן. (Id88a7)
  • נוצר CanvasScope API שעוטף אובייקט Canvas כדי לחשוף משטח API לציור דקלרטיבי ללא מצב. הטרנספורמציות מוגבלות להיקף המקלט שלהן, וגם פרטי הגודל מוגבלים לגבולות התואמים של התוסף. הוא לא מחייב את הצרכן לשמור אובייקט משלו של מצב הצביעה כדי להגדיר פעולות ציור.

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

  • הוסר ColoredRect. במקום זאת, משתמשים ב-Box עם modifier של drawBackground (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 – מיזוג של הקריאות החוזרות onFocus ו-onBlur לקריאה חוזרת יחידה onFocusChange(Boolean) עם פרמטר (I66cd3)

  • שינינו את השם של ScaleFit ל-ContentScale העברנו את ContentScale מ-ui-graphics ל-ui-core module כדי שיהיה באותו מודול כמו Alignment API. השם של FillMaxDimension שונה ל-Crop השם של FillMinDimension שונה ל-Fit השם של Fit שונה ל-Inside כדי להתאים טוב יותר ל-ImageView.ScaleType equivalents נוספה תיעוד שמציין שהשילוב של 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 הוצאה משימוש. במקום זאת, אתם צריכים להשתמש ב-Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • שינוי השם של העיבוד Border ל-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(). רכיב ה-Composable‏ 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 עודכנו כך שהן מצפות ליישור אנכי או אופקי ולא ליישור כלשהו. המשנה של המאפיין gravity עודכן כדי לקבל יישור אנכי או אופקי. העדכנו את הרכיבים Row, ‏ Column ו-Stack כדי לתמוך ביישור רציף בהתאמה אישית. (Ib0728)

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

  • השם של EdgeInsets השתנה ל-InnerPadding. השם של הפרמטר innerPadding של לחצני Material שונה ל-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 שיצאו משימוש (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(). עם זאת, כיוון הפריסה זמין בתוך הקריאה החוזרת דרך אובייקט היקף המדידה (Ic7d9d)
  • נוספה התכונה AbsoluteArrangement – מאפשרת סידור של רכיבי הצאצא בתוך השורה בלי שיקוף אוטומטי ב-RTL ‏ (I3a1df)
  • ההערה @Untracked הוצאה משימוש. Replace with @ComposableContract(tracked=false) (Id211e)
  • לפני השינוי הזה, תוסף הקומפיילר של Compose היה מיירט באופן לא טריוויאלי קריאות ל-constructors בתוך פונקציה הניתנת להגדרה אם הייתה (I5205a, b/158123804)
  • הוספת viewModel() composable שמאפשר ליצור או לקבל ViewModel שכבר נוצר, בדומה לאופן שבו זה עובד ב-Activity או ב-Fragment (I5fdd1)
  • בוצע רפקטורינג של מחלקת Radius כדי שתהיה מחלקה מוטמעת. הוסרו שיטות ליצירת רכיבים נלווים לטובת בנאי פונקציות עם פרמטר ברירת מחדל, כדי שהרדיוס לאורך ציר ה-Y יתאים לפרמטר הרדיוס החובה לאורך ציר ה-X.

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

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

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

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

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

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

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

  • החלפנו את השימוש במחלקת Px בכמה מחלקות של פיתוח נייטיב כחלק ממאמץ רחב של ארגון הקוד מחדש (Refactoring), כדי להסתמך רק על 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 מכיל עכשיו את רכיבי ה-Composable‏ CoreText ו-CoreTextField (‏Ib7d47)

  • השם של מודול ui-text שונה ל-ui-text-core (I57dec)

  • העברנו את הקומפוזיציות ui-framework/CoreText ו-CoreTextField אל ui-text-compose. יכול להיות שכדאי לכם לכלול את ui-text-compose בפרויקט שלכם. (I32042)

  • runOnIdleCompose ו-runOnUiThread הן עכשיו פונקציות גלובליות במקום שיטות ב-ComposeTestRule. (Icbe8f)

  • [ניתן לשינוי]אופרטורים של נציגי מאפיינים של מצב הועברו לתוספים כדי לתמוך באופטימיזציות של נציגי מאפיינים ב-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 עם modifiers מתאימים (Idf5e0)

  • השם של הפריסה LayoutFlexible שונה ל-LayoutWeight. השם של הפרמטר tight שונה ל-fill. (If4738)

  • הפונקציה DrawVector השתנתה מפונקציה הניתנת להגדרה רגילה להחזרת Modifier drawVector()‎ שתצייר את הווקטור כרקע לפריסה. (I7b8e0)

  • מחליפים את הפונקציה הניתנת להגדרה Clip במקש הצירוף drawClip(). ‏ DrawClipToBounds הוא מקש צירוף נוח לשימוש כשצריך לחתוך רק את הגבולות של השכבה בצורת מלבן. (If28eb)

  • הפונקציה הניתנת להגדרה DrawShadow הוחלפה בשינוי (modifier) 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 שגרם לקריסה ב-recompositions. ‫(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 לא הגיוני כשמביאים בחשבון LayoutModifiers,‏ rotation או scaling. במקום זאת, מפתחים צריכים להשתמש ב-parentCoordinates וב-childToLocal() כדי לחשב את הטרנספורמציה מ-LayoutCoordinate אחד ל-LayoutCoordinate אחר.

    ב-LayoutCoordinates נעשה שימוש ב-IntPxSize במאפיין size במקום ב-PxSize. בפריסות משתמשים בגדלים של מספרים שלמים בפיקסלים, ולכן כל הגדלים של הפריסות צריכים להיות מספרים שלמים ולא ערכים של נקודה צפה. (I9367b)

  • שיפורים בפלטפורמת ה-API של Constraints‏ (I0fd15)

  • נוסף TextDirection.Content ‏ (I48f36)

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

  • הוספת סרגל כלים צף לבחירת שדה טקסט. (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 חדש זמין עכשיו. עכשיו פעילות שמשתמשים בה עם Compose UI צריכה להרחיב את androidx.activity.ComponentActivity (או AppCompatActivity). הפונקציה setContent ב-android.app.Activity הוצאה משימוש (Idb25a, ‏ b/153141084)

  • שם החבילה ui-android-text (androidx.text) הוחלף ב-androidx.ui.text.platform כדי להתאים למדיניות androidx. (I42711)