ממשק המשתמש של Compose

רכיבים בסיסיים של ממשק המשתמש של Compose שנדרשים כדי לקיים אינטראקציה עם המכשיר, כולל פריסה, ציור והזנה.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
13 בנובמבר 2024 1.7.5 - - 1.8.0-alpha06

מבנה

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

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

קיבוץתיאור
compose.animationפיתוח אנימציות באפליקציות שלהם ב-Jetpack Compose כדי להעשיר את חוויית המשתמש.
compose.compilerשינוי פונקציות עם @Composable והפעלת אופטימיזציות באמצעות פלאגין של קומפילר Kotlin.
compose.foundationכתיבת אפליקציות ב-Jetpack Compose באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם של מערכת עיצוב.
compose.materialפיתוח ממשקי משתמש של Jetpack Compose באמצעות רכיבי Material Design מוכנים לשימוש. זוהי נקודת הכניסה ברמה הגבוהה יותר של Compose, שנועדה לספק רכיבים שתואמים לאלה שמתוארים בכתובת www.material.io.
compose.material3פיתוח ממשקי משתמש של Jetpack Compose באמצעות רכיבי Material Design 3, הגרסה הבאה של Material Design. Material 3 כולל רכיבים ועיצוב נושאים מעודכנים ותכונות של התאמה אישית של Material You, כמו צבעים דינמיים. הוא תוכנן כך שיהיה עקבי עם הסגנון החזותי החדש של Android 12 וממשק המשתמש של המערכת.
compose.runtimeאבני בניין בסיסיות של מודל התכנות ושל ניהול המצב ב-Compose, וזמן ריצה ליבה שאליו פונה הפלאגין של Compose Compiler.
compose.uiרכיבים בסיסיים של ממשק המשתמש של Compose שנדרשים כדי לקיים אינטראקציה עם המכשיר, כולל פריסה, ציור והזנה.

הצהרת יחסי תלות

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

משוב

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

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.8

גרסה 1.8.0-alpha06

13 בנובמבר 2024

androidx.compose.ui:ui-*:1.8.0-alpha06 משוחרר. גרסת 1.8.0-alpha06 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספת המשתנה stylusHoverIcon. (Iff20a, ‏ b/331289114)
  • שינוי מנהל המילוי האוטומטי לממשק. (I84914, ‏ b/376080755)
  • הוספת requestFocus(FocusDirection) גם ל-focusRequester וגם ל-FocusTargetModifierNode כדי לאפשר התמקדות בכיוון ספציפי. (I5d9ec, ‏ b/245755256)
  • הפרמטרים FocusProperties.enter ו-FocusProperties.exit הוחלפו ב-onEnter וב-onExit, באמצעות היקף מקלט במקום הפרמטר FocusDirection. (I6e667)
  • הוספת תמיכה במילוי אוטומטי בסרגל הכלים של הטקסט. (Ie6a4c)
  • שינויים ב-API ל-Modifier.focusRestorer() (I99c03):
    • שם הפרמטר השתנה ל-'fallback'
    • הפרמטר הוא עכשיו FocusRequester ולא lambda
    • הפרמטר הוא עכשיו לא NULL עם Default כערך ברירת המחדל
  • הסרת ההערה @Experimental מממשק מנהל המילוי האוטומטי. התכונה עדיין בשלבי פיתוח ותשולב במהדורה הזו, אבל אנחנו לא רוצים להציג את ה-API הניסיוני (Id8398)
  • LocalHapticFeedback מספק עכשיו הטמעה HapticFeedback שמוגדרת כברירת מחדל כש-Vibrator API מציין שיש תמיכה בהפעלה של משוב מישוש. הוספנו את הערכים הבאים ל-HapticFeedbackType: Confirm, ‏ ContextClick, ‏ GestureEnd, ‏ GestureThresholdActivate, ‏ Reject, ‏ SegmentFrequentTick, ‏ SegmentTick, ‏ ToggleOn, ‏ ToggleOff, ‏ VirtualKey. רכיבים ב-Compose ל-Wear שאפשר ללחוץ עליהם לחיצה ארוכה, כמו Button,‏ IconButton,‏ TextButton ו-Card, מבצעים עכשיו את הפעולה החזותית LONG_PRESS כשמספקים טיפול בלחיצה ארוכה. (I5083d)
  • מסירים את OverscrollConfiguration ואת LocalOverscrollConfiguration ומוסיפים את rememberPlatformOverscrollFactory כדי ליצור מופע של הפרמטרים של הטמעת ברירת המחדל של גלילה מעבר לקצה המסך או להתאים אישית את הפרמטרים. כדי להשבית את האפשרות לגלילה מעבר לקצה המסך, במקום LocalOverscrollConfiguration provides null צריך להשתמש ב-LocalOverscrollFactory provides null. כדי לשנות את צבע ההילה או את המילוי, במקום LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), משתמשים ב-LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, ‏ b/255554340, ‏ b/234451516)
  • ה-API הניסיוני GlobalAssertions הוסר. השימוש המיועד בו היה להריץ בדיקות נגישות. לצורך זה, מומלץ להשתמש ב-enableAccessibilityChecks() במקום זאת. (I59322)

גרסה 1.8.0-alpha05

30 באוקטובר 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 משוחרר. גרסת 1.8.0-alpha05 כוללת את ההוספות האלה.

תכונות חדשות

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

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

שינויים ב-API

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

תיקוני באגים

  • תצוגות שמוטמעות בחלון הכתיבה יכולות עכשיו לקבל אירועי רוטציה אם הן נמצאות במוקד (I4d53a, ‏ b/320510084)
  • תוקנה בעיה שבה סוגים שונים של משאבים לא התעדכנו אחרי שינויים בתצורה (Ia9b99, ‏ b/352336694)
  • תוקנה בעיה שמונעת את הפעולה הנכונה של TextField כשמשתמשים במקלדת היפנית של POBox במכשירי Sony ישנים מסוימים. (Ia9b99, ‏ b/373743376)
  • תוקנה בעיה שבה תיבת הדו-שיח מוצגת בחלק התחתון של המסך במקום במרכז (Ia2ec, ‏ b/373093006)
  • ב-Targeting API מגרסה 35 ואילך, לא קיימת יותר אכיפה של הגדרת decorFitsSystemWindows כ-false בתיבת דו-שיח. (Ibc94, ‏ b/364492593)
  • תיקון קריסה כששכבות מועברות בין חלונות (למשל, תיבת דו-שיח ותוכן ראשי) (I675ba,‏ b/330955281)

גרסה 1.8.0-alpha04

16 באוקטובר 2024

androidx.compose.ui:ui-*:1.8.0-alpha04 משוחרר. גרסת 1.8.0-alpha04 כוללת את ההוספות האלה.

שינויים ב-API

  • הוספת פונקציות קריאה חוזרת (callbacks) של DelegatableNode#onDensityChange ו-DelegatableNode#onLayoutDirectionChange כדי לאפשר עדכון של מצב הצומת כשהן משתנות (I04f3e, ‏ b/340662451)
  • הוספת WindowInfo#containerSize כדי לספק את גודל מאגר התוכן של החלון הנוכחי. אפשר לאחזר אותו באמצעות LocalWindowInfo. (Idc38c, ‏ b/369334429, ‏ b/360343819)
  • תיקון לרכיבים נגללים בתצוגת עץ של צמתים, שמוסרים מהעץ במהלך תנועה רציפה. עכשיו הצמתים האלה יבטל את התנועה המהירה וישלחו בצורה נכונה את האירוע onPostFling עם המהירות שנותרה. אנחנו גם משיקים את הדגל NewNestedScrollFlingDispatchingEnabled כדי לשלוט בהתנהגות במקרה של נסיגה (regression). הדגל יוסר לפני גרסת הבטא. (I05c37, ‏ b/371168883)
  • הוספנו את PointerInputModifierNode#touchBoundsExpansion, שאפשר להשתמש בו כדי להגדיל את גבולות המגע של שינוי קלט של מצבית אצבע אחת. (Iccf02, ‏ b/335339283)
  • הוספת WindowInfo#containerSize כדי לספק את גודל מאגר התוכן של החלון הנוכחי. אפשר לאחזר אותו באמצעות LocalWindowInfo. (I27767, ‏ b/369334429, ‏ b/360343819)
  • מסירים את readOnly מ-TextFields כדי להצמיד לגרסה היציבה של הבסיס. (I3aaba)
  • עכשיו, Paragraph ו-ParagraphIntrinsics מקבלים רשימה של כל ההערות שהוחלו על AnnotatedString. בעבר, הם קיבלו רק רשימה של SpanStyles (I12f80)

תיקוני באגים

  • עדכנו את האופן שבו פסקאות מטופלות ב-AnnotatedString. בעבר אפשר היה ליצור רק פסקאות שלא חופפות זו לזו. עכשיו האפשרות AnnotatedString מאפשרת להשתמש בקטעים חופפים לגמרי שיושלמו יחד, ובקטעים בתצוגת עץ. במקרה כזה, הקטע החיצוני יחולק לפי גבולות הקטע הפנימי, והסגנון של הקטע הפנימי ימוזג עם הסגנון של הקטע החיצוני (Ic9554)
  • תיקון קריסה ב-AnnotatedString באמצעות LinkAnnotation באורך אפס. (89aac6)

גרסה 1.8.0-alpha03

2 באוקטובר 2024

androidx.compose.ui:ui-*:1.8.0-alpha03 משוחרר. גרסת 1.8.0-alpha03 כוללת את ההוספות האלה.

שינויים ב-API

  • עדכון הגרסה של Kotlin ל-1.9 (I1a14c)
  • הוספנו תפקיד סמנטי חדש בשם Carousel (קרוסלה) כדי לדמות את התנהגות הרשימה ב-Pagers לשירותי נגישות. (Id354b, ‏ b/354109776, ‏ b/239672673)
  • משנים את השם של invisibleToUser() ל-hideFromAccessibility. הפונקציה שלו לא משתנה. פרטים נוספים זמינים במסמכי העזרה. (Ib43a3)

תיקוני באגים

  • עדכון המסמכים של המשתנה SensitiveContent (Ib0442)
  • תוקנה בעיה שבה קליפים כלליים מסוימים של קווי מתאר התעלמו בשילוב עם צללי גובה בגרסאות מסוימות של Android
  • תוקנה בעיה שבה קליפים ריקים הוחלו כשציינתם קליפים כלליים של קווים כלליים בגרסאות מסוימות של Android.
  • הוספנו חריג קבוע שמופעל כש-IME פעיל בתצוגה חיצונית והפעולה Next משמשת להעברת המיקוד אל ComposeView. ההתנהגות של clearFocus() תואמת להתנהגות של View ב-API גרסה 28 ומטה, שבה clearFocus() יכול לגרום ל-View שמוגדרת כברירת מחדל להתמקד.
  • תוקנה בעיה שבה מיקום מודעות התרחש בצמתים מנותקים ב-LazyList, על ידי הפרדת הניהול של קומפוזיציות משנה לסבבים שונים של פריסה.
  • תוקנה בעיה שבה מקלדת התוכנה רצתה כשהמיקוד עובר מ-TextField ל-EditText או לכל עורך אחר שמבוסס על תצוגה.
  • צמתים מוערמים של גלילה ישלחו עכשיו אירועי onPostFling בצורה תקינה אחרי שהם ינותק.
  • שיפורים כלליים בביצועים

גרסה 1.8.0-alpha02

18 בספטמבר 2024

androidx.compose.ui:ui-*:1.8.0-alpha02 משוחרר. גרסת 1.8.0-alpha02 כוללת את ההוספות האלה.

שינויים ב-API

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

תיקוני באגים

  • תיקון Dalog dismissOnClickoutside (39a3d, ‏ b/364508685)
  • לא לחתוך צללים של תוכן של תיאור ודיאלוג (e8e2f, ‏ b/363027803)
  • תיקון התנהגות שגויה כשהחיפוש במצב התמקדות עובר בין 'כתיבה' לבין תצוגה (58377, b/350534714)

תרומה חיצונית

  • עכשיו אפשר להשתמש ב-AlignmentLines Map עם סוגי VerticalAlignmentLine או HorizontalAlignmentLine ספציפיים. (I02912)
  • שיטה נפוצה חדשה של ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21)

גרסה 1.8.0-alpha01

4 בספטמבר 2024

androidx.compose.ui:ui-*:1.8.0-alpha01 משוחרר. הגרסה 1.8.0-alpha01 כוללת את ההוספות האלה.

גרסה 1.7

גרסה 1.7.5

30 באוקטובר 2024

androidx.compose.ui:ui-*:1.7.5 משוחרר. גרסה 1.7.5 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנו בעיות שבהן לא הייתה רינדור תקין של גובה וחיתוך באמצעות קווי מתאר מותאמים אישית.
  • תוקנה קריסה של טקסט שמתרחשת עם LinkAnnotation ברוחב אפס. (Ic1e2e)
  • תיקון של הודעה ב-Talkback לגבי הלחצן כשהוא נוצר כרכיב טקסט שניתן ללחוץ עליו. (I1f588)

גרסה 1.7.4

16 באוקטובר 2024

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

גרסה 1.7.3

2 באוקטובר 2024

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

תיקוני באגים

  • תוקנה בעיה שבה ציון קטע גזור כללי של קו מתאר הוביל לגבול קטע גזור ריק בגרסאות מסוימות של Android.
  • הוספנו חריג קבוע שמופעל כש-IME פעיל בתצוגה חיצונית והפעולה Next משמשת להעברת המיקוד אל ComposeView. ההתנהגות של clearFocus() תואמת להתנהגות של View ב-API גרסה 28 ומטה, שבה clearFocus() יכול לגרום ל-View שמוגדרת כברירת מחדל להתמקד.
  • תוקנה בעיה שבה נעשה שימוש ב-placeOrder שגוי לצורך ביטול תוקף מראש, וכך תוקנה בעיה קיצונית שבה המערכת דילגה על מיקום מודעה מראש.

גרסה 1.7.2

18 בספטמבר 2024

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

תיקוני באגים

  • שיפור הביצועים של אירועי סמנטיקה ומידע על צמתים של נגישות על ידי הסרת מעקב מפורט. (I89156, ‏ b/362530618)
  • ComposeView לא ייגרם יותר קריסה כשמעבירים לו גודל מדידה גדול במיוחד (da5db, ‏ b/347036173)
  • תוקנה בעיה בנגישות של קורא מסך, שבה לא בוצעו הודעות LiveRegion על לחצנים. (f66fa7, ‏ b/348590026)

גרסה 1.7.1

10 בספטמבר 2024

  • אין שינויים בפריטי המידע שנוצרו בתהליך פיתוח (artifacts) של Android. הוסרו ארטיפקטים מסוג -desktop והתווספו ארטיפקטים מסוג -jvmStubs ו--linuxx64Stubs. אין להשתמש באף אחד מהיעדים האלה. הם משמשים כסמנים לעזרה במאמצים של Jetbrains Compose.

גרסה 1.7.0

4 בספטמבר 2024

androidx.compose.ui:ui-*:1.7.0 משוחרר.

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

בפוסט הזה בבלוג מפורטים שינויים חשובים בגרסה 1.7.0.

גרסה 1.7.0-rc01

21 באוגוסט 2024

androidx.compose.ui:ui-*:1.7.0-rc01 משוחרר. גרסת 1.7.0-rc01 כוללת את ההוספות האלה.

שינויים בולטים

  • מודול ui:ui מחייב עכשיו גרסה מינימלית של foundation:foundation בגרסה 1.7.0-rc01 ואילך. ההחלטה הזו נובעת מבעיית אי-תאימות בהתנהגות בין ui ל-foundation בנוגע לשינויים ב-NestedScrollSource שהתרחשו בשלב מוקדם של 1.7.0-alpha01.

גרסה 1.7.0-beta07

7 באוגוסט 2024

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

תיקוני באגים

  • פונקציות SemanticsNodeInteraction שקשורות לקלט טקסט, performTextReplacement,‏ performTextInput ו-performTextClearance, יגרמו עכשיו לשגיאות טענת נכוֹנוּת (assertion) כשהן יישלחו ל-TextFields לקריאה בלבד. (I4ae8f)

גרסה 1.7.0-beta06

24 ביולי 2024

androidx.compose.ui:ui-*:1.7.0-beta06 משוחרר. גרסת 1.7.0-beta06 מכילה את ההוספות האלה.

גרסה 1.7.0-beta05

10 ביולי 2024

androidx.compose.ui:ui-*:1.7.0-beta05 משוחרר. גרסת 1.7.0-beta05 כוללת את ההוספות האלה.

תיקוני באגים

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

גרסה 1.7.0-beta04

26 ביוני 2024

androidx.compose.ui:ui-*:1.7.0-beta04 משוחרר. גרסת 1.7.0-beta04 כוללת את ההוספות האלה.

תיקוני באגים

  • תיקון שגיאה שגרמה לקריסות בזמן מדידת שורות טקסט ארוכות מאוד (למשל, 10,000 תווים) (8157ab)
  • משביתים את התמיכה ב-software rendering ב-API של GraphicsLayer. (35ddd8)
  • תיקון לקריסה בלוגיקה של עמידות השכבות. (70b13e)
  • האפשרות של שימוש חוזר באובייקטים של שכבות בוטלה כי היא גרמה לבעיות ברינדור. (70b13e)

גרסה 1.7.0-beta03

‫12 ביוני 2024

androidx.compose.ui:ui-*:1.7.0-beta03 משוחרר. גרסת 1.7.0-beta03 מכילה את ההוספות האלה.

גרסה 1.7.0-beta02

29 במאי 2024

androidx.compose.ui:ui-*:1.7.0-beta02 משוחרר. גרסת 1.7.0-beta02 כוללת את ההוספות האלה.

שינויים ב-API

  • השם של SemanticsProperties.Editable השתנה ל-IsEditable ו-SemanticsPropertyReceiver.editable השתנה לערך isEditable. המאפיין הוא עכשיו בוליאני ותמיד מצוין באמצעות שדות טקסט. (I8acd8)
  • שינוי השם של פרמטר נקודת השוואה לנגישות. (I3d440)
  • ממשק API מעודכן לעיצוב הקישורים: TextLinkStyles הוא עכשיו חלק מה-constructor של LinkAnnotation ומה-method של AnnotatedString.fromHtml (I90b2b). הוסרו גם ה-TextDefaults מהחומר (I5477b)

תיקוני באגים

  • השם של LayoutCoordinates.introducesFrameOfReference שונה ל-LayoutCoordinates.introducesMotionFrameOfReference כדי לשקף טוב יותר את המטרה שלו. שינוי השם של פונקציה קשורה כדי לחשב קואורדינטות על סמך הדגל הזה. (I3a330)

גרסה 1.7.0-beta01

14 במאי 2024

androidx.compose.ui:ui-*:1.7.0-beta01 משוחרר. גרסת 1.7.0-beta01 כוללת את ההוספות האלה.

שינויים ב-API

  • השם של performCustomAccessibilityActionLabelled השתנה ל-performCustomAccessibilityActionWithLabel והשם של performCustomAccessibilityActionWhere השתנה ל-performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations הוא עכשיו hasEqualAnnotations (I685c0)
  • עדכנו את ה-API לקבלת קישורים בעיצוב Material בטקסט. באופן ספציפי, הוסרו מה-TextDefaults השיטות ליצירת LinkAnnotations מעוצב ולניתוח HTML עם קישורים מעוצבים. במקום זאת, הוספנו את הכיתה TextLinkStyles שמאפשרת לעצב את הקישורים כפרמטר ל-Text composable. (I31b93)

תיקוני באגים

  • תיקון של תרחישים נוספים לדוגמה להוספה דינמית של משתני קלט של סמן במהלך אירועים 63e1504

גרסה 1.7.0-alpha08

1 במאי 2024

androidx.compose.ui:ui-*:1.7.0-alpha08 משוחרר. גרסת 1.7.0-alpha08 כוללת את ההוספות האלה.

שינויים ב-API

  • הוספת תמיכה בהטמעות של צורות שניתן לשנות. עכשיו Shape#createOutline נצפה בשכבות הגרפיקה, כך שקריאת ערכי המצב בתוכן גורמת לביטול כשהמצב משתנה, ומאפשרת ליצור אנימציות של צורות עם ביצועים טובים יותר. (Id1629, ‏ b/326070216)
  • השם של isPositionedByParentWithDirectManipulation השתנה ל-introducesFrameOfReference. הערה: עכשיו יש לו את ההשפעה ההפוכה, כלומר כברירת מחדל, רוב ה-LayoutCoordinates מציבים מסגרת הפניה, ורק כשהם נתונים לטיפול ישיר, הערך של המאפיין יהיה שקר. כדי לשלוח שאילתה לגבי מיקום עם פריטים שמציגים רק מסגרת הפניה, משתמשים ב-positionInLocalFrameOfReference(...). או positionInLocalLookaheadFrameOfReference מ-LookaheadScope. (Ifc5f7)
  • ממשקי ה-API של LookaheadScope הפכו ליציבים (I21507)
  • שינוי הפונקציה lambda של הפעולה עבור getScrollViewportLength בהתאם למשוב של ועדת ה-API. (Ibc74a)
  • עדכנו את ממשקי ה-API של GraphicsLayer outline כך שיכללו פרמטרים מסוג float במקום int. הסרנו את ערכי sentinel של UnsetOffset/UnsetSize IntSize לטובת קבועים לא מצוינים שכבר קיימים בכיתות inline של Offset ו-Size שמבוססות על float (I2fb03, ‏ b/333863462)
  • כשמזריקים קלט של עכבר במהלך בדיקות, הפונקציות MouseInjectionScope.click(),‏ MouseInjectionScope.doubleClick(),‏ MouseInjectionScope.tripleClick() ו-MouseInjectionScope.longClick() מקבלות עכשיו פרמטר button: MouseButton כדי להרחיב את ההתאמה שלהן. ערך ברירת המחדל הוא MouseButton.Primary לכל השיטות. (I31a23, ‏ b/190493367, ‏ b/261439695)
  • השם של onClicked השתנה ל-onClick בתוך LinkInteractionListener. (Iaa35c)
  • משנים את השם של TextInclusionStrategy.isInside ל-isIncluded. צריך להגדיר את סוג ההחזרה של Paragraph/MultiParagraph#getRangeForRect() כבלתי ניתן לאפס. (I51f26)

תיקוני באגים

  • תוקנה בעיה בצילום מסך ארוך של קונטיינרים שגלול בהם באמצעות reverseScrolling=true. (I7c59c)

תרומה חיצונית

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

גרסה 1.7.0-alpha07

17 באפריל 2024

androidx.compose.ui:ui-*:1.7.0-alpha07 משוחרר. גרסת 1.7.0-alpha07 כוללת את ההוספות האלה.

שינויים ב-API

  • האפשרות ClickableText סומנה כמיושנת. כדי להוסיף קישורים לטקסט, יוצרים AnnotatedString עם LinkAnnotation שתואם לקישור ומעבירים את ה-AnnotatedString הזה ל-composable של הטקסט. (I34d4b, ‏ b/323346994)
  • להציג את ViewConfiguration.HandwritingGestureLineMargin לתנועות כתב יד. תמיכה בתנועת JoinOrSplit עבור BasicTextField (Ie6e13, ‏ b/325660505)
  • האפשרויות FocusProperties.enter ו-FocusProperties.exit כבר לא ניסיוניות. האפשרויות FocusDirection.Enter ו-FocusDirection.Exit כבר לא ניסיוניות. FocusRequester.Cancel כבר לא בגרסת ניסיון (I461a1, ‏ b/261564106)
  • כששולחים שאילתה לגבי קואורדינטות של פריסה, עכשיו אפשר להשתמש בארגומנט excludeDirectManipulationOffset כדי להחריג את ההיסט שהוגדר על ידי פריסות הורה שהציבו את הצאצאים שלהן באמצעות Placeable.PlacementScope.withDirectManipulationPlacement. באופן דומה, עיצוב שמשנה את המיקום של צאצאיו לעיתים קרובות יכול עכשיו למקם אותם באמצעות withDirectManipulationPlacement (למשל 'גלילה', שמוטמע כברירת מחדל). כך אפשר ליצור אנימציות מבוססות-approachLayout באופן אינטואיטיבי יותר, כי עכשיו יש לכם אפשרות להבדיל בין ההיסט שרוצים להנפיש לבין מה שרוצים להחיל ישירות כשמחליטים להנפיש את הגישה שלכם. (I60ec7)
  • ה-feature flag של צילומי מסך ארוכים הוסר. (I28648, ‏ b/329128246)
  • LazyColumn ידפיס עכשיו כותרות מוצמדות בצורה נכונה בצילומי מסך ארוכים. (I8d239, ‏ b/329296635)
  • המקורות NestedScroll 'גרירה' ו'השלכה' מוחלפים במקורות UserInput ו-SideEffect כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו גם אנימציות (Side Effect) וגלגל עכבר ומקלדת (UserInput). (I40579)
  • ApproachLayoutModifierNode ו-Modifier.approachLayout עכשיו יציבים, ויש isMeasurementApproachInProgress() ו-isPlacementApproachInProgress() חדשים שיחליפו את isMeasurementApproachComplete() ו-isPlacementApproachComplete() הישנים, בהתאמה.
  • הוסר המשתנה המשתנה intermediateLayout שהוצא משימוש. (I3e91c)
  • משנים את השם של GraphicsLayer#buildLayer ל-record כדי לשקף את השיטות begin/endRecording של ממשקי API שתומכים ב-Displaylist, כמו RenderNode ו-Picture.
  • עודכנה ההגדרה rememberGraphicsLayer כדי לנצל את rememberObserver. (I312c1, ‏ b/288494724, ‏ b/330758155)
  • UrlAnnotation הוצא משימוש. יש להשתמש ב-LinkAnnotation.Url במקום זאת. אם אתם משתמשים בנושאים של Material Design, צריך להשתמש באובייקט TextDefaults כדי ליצור את ההערה עם נושאים של Material Design שיוחלו עליה (I8d180, ‏ b/323346545)
  • קישורי טקסט קיבלו אפשרות עיצוב למצב לחיצה, בנוסף לעיצוב הרגיל, לעיצוב במצב 'עכבר מרחף מעל' ולעיצוב במצב 'מוקד' (I5f864,‏ b/139312671)
  • השם של String.parseAsHtml שונה לשם AnnotatedString.Companion.fromHtml. (I43dcd)
  • נוספו ארגומנטים של עיצוב (linkStyle, focusedLinkStyle, hoveredLinkStyle) ומאזין לאינטראקציה עם קישורים לשיטה parseAsHtml. כשמנתחים את המחרוזת המתויגת ב-HTML באמצעות תגי <a>, השיטה יוצרת LinkAnnotation.Url לכל תג כזה ומעבירה את אובייקטי הסטיילינג ואת הקשיב לאינטראקציה עם הקישור לכל הערה. (I7c977)
  • LinkAnnotation מקבל עכשיו את הארגומנטים של עיצוב המבוסס על המצב ואת LinkInteractionListener. מוסיפים את ההערה הזו ל-AnnotatedString כדי ליצור היפר-קישור. העברת focusedState ו/או hoveredState מאפשרת להגדיר את האפקט החזותי configuration של קישורים כשהם ממוקדים ו/או כשעוברים מעליהם. (I81ce4, ‏ b/139312671)
  • השדה ImeOptions.hintLocales לא יכול יותר להכיל ערך null. אם רוצים להעביר רשימת Locale ריקה, צריך להשתמש ב-LocaleList.Empty. (Ic5bc4)

תיקוני באגים

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

גרסה 1.7.0-alpha06

3 באפריל 2024

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

תכונות חדשות

  • הוספנו את השיטה parseAsHtml למחרוזות עם סגנון: היא מאפשרת להמיר מחרוזת שמסומנת בתגי HTML ל-AnnotatedString. לתשומת ליבכם, לא כל התגים נתמכים. לדוגמה, עדיין לא תוכלו להציג רשימות של נקודות. (I84d3d, ‏ I30626, ‏ b/139326648)
  • הוספנו תמיכה ניסיונית בצילומי מסך ארוכים בקונטיינרים לגלילה ב-Compose באמצעות Android API הרשמי (ScrollCaptureCallback). התכונה הזו היא ניסיונית, ויכול להיות שהיא לא מטפלת כרגע בכל המקרים בצורה נכונה. לכן, התכונה מושבתת כרגע כברירת מחדל. כדי להביע הסכמה, מגדירים את הדגל ComposeFeatureFlag_LongScreenshotsEnabled לערך true. (I2b055, ‏ b/329296471)

שינויים ב-API

  • הערך של fun ClipEntry.getMetadata() משתנה ל-val ClipEntry.clipMetadata. (I50155)
  • הוסרו הפונקציות ClipboardManager.getClipMetadata ו-ClipboardManager.hasClip. יש להשתמש ב-clipEntry.getMetadata() כדי לקרוא את המטא-נתונים של הקליפ הנוכחי. צריך גם לבדוק אם התוצאה של ClipboardManager.getClip היא null או לא, כדי להבין אם יש קליפ נוכחי בלוח העריכה. (I50498)
  • עכשיו אפשר להעביר אובייקטים מסוג GraphicsLayer לפונקציות מסוג placeable.placeWithLayer() (I1b22f)
  • עכשיו אפשר להעביר ל-ClipboardManager.setClip ערך null כדי לנקות את הלוח. (I7d2e9)
  • נוספו מזהי משאבים שיעזרו בהסתרת תצוגות שמשמשות כפרטי הטמעה בכלי ה-build (I99531)
  • נוספה שיטת ההשעיה GraphicsLayer#toImageBitmap כדי לתמוך ברינדור של תוכן של קובץ bitmap ל-GraphicsLayer. זוהי פעולת עיבוד (רינדור) שמואצת בחומרה ברמת API 22 ואילך (כולל), ותומכת ביותר מ-99% מכל מכשירי Android. ברמת API‏ 21 של Android, המערכת תשתמש ברינדור בתוכנה. (I9e114)
  • שיטה מסייעת להמרת Android RectF ל-ComposeRect (I39925, ‏ b/325660505)
  • עכשיו, לכל הפרמטרים של KeyboardOptions יש ערך לא מוגדר כברירת מחדל. הוספנו את השיטה KeyboardOptions.merge.
  • שינינו את השם של KeyboardOptions.autoCorrect ל-autoCorrectEnabled והפכנו אותו לאפשרות nullable, כאשר null מציין שלא צוין ערך. (Ia8ba0, ‏ b/295951492)
  • בגרסה BasicTextField(state) ובגרסה BasicSecureTextField, עכשיו נעשה שימוש ב-KeyboardActionHandler במקום ב-KeyboardActions כדי לעבד פעולות שבוצעו על ידי מקלדת התוכנה. (I58dda)

גרסה 1.7.0-alpha05

‫20 במרץ 2024

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

תכונות חדשות

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

שינויים ב-API

  • GraphicsLayer.draw(Canvas) כבר לא ממשק API ציבורי. במקום זאת, צריך להשתמש בפונקציית התוסף DrawScope.drawLayer(GraphicsLayer) כדי לצייר את השכבה. (I7a7c0)
  • פיצול restrictedConstraints() לשתי שיטות: fitPrioritizingWidth() ו-fitPrioritizingHeight() (I6d7fd)
  • הוספנו stub ל-HardwareCanvas לשימוש ב-Android L‏ (I1c3b5, ‏ b/288494724)
  • עדכון מסגרת Compose כדי לחשוף קומפוזיציה מקומית של GraphicsContext, לצד עדכון ההטמעות של הבעלים, DelegateableNode ו-drawWithCache כדי לחשוף גישה ל-GraphicsContext לצורך גישה ברמת ההיקף, שתנקה באופן אוטומטי את המופעים של GraphicsLayer כשה-Modifiers פורקים. (I64a2f, ‏ b/288494724)
  • הוספנו את InterceptPlatformTextInput כדי לעזור לכתוב בדיקות ברמה נמוכה שקשורות ל-IME ותרחישי שימוש אחרים ברמה נמוכה של IME. האפשרות PlatformTextInputTestOverride הוצאה משימוש. (I862ed, ‏ b/322680547)
  • פונקציית התוסף GraphicsLayer.setOutline(Outline) נוספה. (Ib81f4)
  • הצגת ה-constructor של פונקציית GraphicsContext ליצירת מפעל ליצירת מכונות של GraphicsLayer (Ib98d6, ‏ b/288494724)
  • חשיפת ה-API של GraphicsLayer כדי לספק גמישות מוגדרת למפתחים בתיעוד פקודות ציור שאפשר להשתמש בהן כדי לצייר במקום אחר, וגם להחיל אפקטים ויזואליים שונים על התוצאה הסופית. (I80245, ‏ b/288494724)
  • פונקציית Paragraph#getRangeForRect מחזירה טווח טקסט שמכוסה על ידי אזור מלבני נתון. (Iee516, ‏ b/325660505)
  • הוסר שינוי ניסיוני מברירת המחדל של BasicText באמצעות הארגומנט onLinkClicked. בעתיד נוסיף ממשק API חלופי לתמיכה בהיפר-קישורים. (I107d5)

תיקוני באגים

  • הוספנו הגדרת API של GraphicsLayer expect/actual כדי לתמוך בצילום ובהפעלה חוזרת של פקודות ציור עם טרנספורמציות ואפקטים חזותיים אופציונליים של קומפוזיציה. הצגת ממשק GraphicsContext שמכיל יחסי תלות של גרפיקה, כולל יצירה וניהול של מכונות GraphicsLayer. (I4a8d6, ‏ b/288494724)
  • תוקנה בעיה בחיבור בין פלטפורמות (interop) בחיפוש עם מיקוד ב-1D, שבה המיקוד היה נתקע בתוך ComposeView שהוטמע בין תצוגות אחרות. (I08fd4)

תרומה חיצונית

  • LocalLifecycleOwner הועבר מ-Compose UI אל lifecycle-runtime-compose כדי שאפשר יהיה להשתמש בממשקי ה-API העוזרים שמבוססים על Compose מחוץ לממשק המשתמש של Compose. תודה ל-Jake Wharton על התרומה. (I6c41b, ‏ b/328263448)
  • חושפים באופן עקבי מאפייני bias float בכל תת-הסוגים של התאמה מבוססת-הטיה. (I69f0f, ‏ b/328088992)

גרסה 1.7.0-alpha04

6 במרץ 2024

androidx.compose.ui:ui-*:1.7.0-alpha04 משוחרר. הגרסה 1.7.0-alpha04 כוללת את ההוספות האלה.

שינויים ב-API

  • תמיכה בתכונה 'כתיבה בסטיילוס' ב-BasicTextField2 במכשירים עם Android מגרסה U ואילך. (I002e4)
  • ב-CL הזה אנחנו מוסיפים את הפעולה הסמנטית GetScrollViewportLength כדי שנוכל להעביר למערכת הנגישות מידע על הרכיבים שגללו ב-Compose. ב-CL הזה חל גם שימוש בנכס הזה ברשימות גליליות של Foundation. (Ic5fa2)
  • FocusRequester.createRefs יציבה עכשיו (I4d92c, ‏ b/261436820)
  • הוספנו את DelegatableNode.requireView() כדי לאפשר לצמתים של משתני ערך לקבל את View הנוכחי של Android בלי לקרוא קומפוזיציה מקומית. (I40768)
  • ממשק API חדש Path.reverse() להפיכת הכיוון של נתיב (I36348)
  • הוספנו את hintLocales ל-KeyboardOptions כדי לספק ל-TextFields את היכולת להציע למערכות IME עם אזורים ספציפיים להגדיר מראש שפה מועדפת.
  • חושפים את הנכס platformLocale מ-Locale שמחזיר את אובייקט הפלטפורמה הבסיסי, למשל java.util.Locale. (I921c6)

גרסה 1.7.0-alpha03

21 בפברואר 2024

androidx.compose.ui:ui-*:1.7.0-alpha03 משוחרר. גרסה 1.7.0-alpha03 כוללת את ההצהרות האלה.

שינויים ב-API

  • חדש: ContextualFlowRow ו-FlowRow/Column משופרים עם MaxLines ו-Overflow. אנחנו שמחים לבשר על שיפורים בתכונות הניסיוניות FlowRow ו-FlowColumn, שכוללות עכשיו תמיכה ב-maxLines וב-overflow, וגם על ההשקה של ContextualFlowRow ו-ContextualFlowColumn. העדכון הזה נועד לספק רכיבים עם ביצועים מיטביים. ContextualFlow* מתאים למספר גדול של פריטים, עם הגדרה קטנה של maxLines ולחצני 'עוד' דינמיים עם הסימן +N. FlowRow ו-FlowColumn מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow או ב-FlowColumn, שבה כל הפריטים מורכבים ללא קשר להתאמה שלהם למגבלה המקסימלית של הציר הרוחבי, צריך להגדיר את overflow ל-FlowRowOverflow.Visible או ל-FlowColumnOverflow.Visible במהלך האינטליקציה. ב-ContextualFlowRowSample וב-FlowRowSample אפשר למצוא דוגמאות לתכונות החדשות האלה בפעולה. (Ib9135, ‏ b/293577082)
  • מוסיפים את מאפיין הסמנטיקה maxTextLength שצריך להגדיר בשדות טקסט שסורקים את מספר התווים המרבי המותר. (I24d9f, ‏ b/170648072)
  • העטיפה Modifier.inspectable יצאה משימוש. ה-API הזה יוצר יותר ביטולים של המשתנה המשנה ממה שנחוץ, ולכן לא מומלץ להשתמש בו. מפתחים מומלצים להטמיע את השיטה inspectableProperties() ב-ModifierNodeElement אם הם רוצים לחשוף נכסי מודификаторים לכלים. (Ib3236)
  • יצירת עצם חדשה ל-PopupProperties שמאפשרת שליטה מלאה בדגלים של WindowManager.LayoutParams. (Ibb33e, ‏ b/312485503)
  • הוספנו את DelegatableNode.requireLayoutCoordinates() כדרך לקבל את LayoutCoordinates הנוכחי של Modifier.Node בלי שתצטרכו לשנות את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Ia8657)
  • הוספנו את DelegatableNode.currentLayoutCoordinates כדרך לקבל את LayoutCoordinates הנוכחי של Modifier.Node בלי שתצטרכו לשנות את onPlaced ולאחסן את הקואורדינטות בנכס בעצמכם. (Iaebaa)
  • BasicTextField2 וממשקי ה-API הקשורים בחבילה androidx.compose.foundation.text2 מועברים אל androidx.compose.foundation.text. (I9f635)
  • הוספנו ממשק API חדש של ApproachLayoutModifierNode כדי לתמוך ביצירת לוגיקה מותאמת אישית של גישה בצומת Modifier מפורש. הוספנו גם ממשק API ניסיוני חדש מסוג DeferredTargetAnimation לאנימציות שהיעד שלהן לא ידוע בזמן היצירה. (I60745)
  • ממשקי API חדשים של Path לשאילתות לגבי הכיוון של נתיב ולחילוץ קווי מתאר מ-Path. (I63d04)
  • נוספו PathHitTest ו-Path.contains(Offset) כדי לבדוק אם Path מכיל נקודה ספציפית. (I3b218)
  • עכשיו, TextLayoutResult חושף את השיטה getLineBaseline(lineIndex). כך אפשר לקרוא את קו הבסיס של שורה שרירותית בטקסט, בנוסף למאפייני הנוחות הקיימים firstBaseline ו-lastBaseline. (Ide4e8, ‏ b/237428541)
  • הוספנו שיטה להשוואה של ההערות של שני AnnotatedStrings בלבד. (I32659)

תיקוני באגים

  • תוקנה בעיה בתאימות לאחור עם SemanticsPropertyReceiver.performImeAction ו-SemanticsActions.PerformImeAction. (Id0528, ‏ b/322269946)

גרסה 1.7.0-alpha02

7 בפברואר 2024

androidx.compose.ui:ui-*:1.7.0-alpha02 משוחרר. גרסה 1.7.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

  • נפתרה בעיית תאימות בינארית עם SemanticsPropertyReceiver.performImeAction. (I65865, ‏ b/322269946)
  • ה-constructor של PopupProperties שמקבל פרמטר usePlatformDefaultWidth כבר לא נחשב לניסיוני. (I8f8d2)
  • נוספה עומס יתר של ComposeTestRule.waitUntil שמקבל תיאור מחרוזת של התנאי שרוצים לכלול בהודעת הזמן שנותר לתפוגה. (I9413e)
  • ממשק API חדש לסמנטיקה unset() להסרת מאפייני סמנטיקה שנוספו באותה שרשרת של מודификаторים. נכס סמנטיקה חדש isOpaque. (I8c583, ‏ b/317966058, ‏ b/246056649)
  • הוסר originalEventPosition משיטת ההעתקה ב-API הציבורי של PointerInputChange. (I7bead)

תיקוני באגים

  • תוקן באג בנושא נגישות (a11y) שאפשר ללחוץ על פריטים שאינם כרטיסיות או לחצני בחירה כשבוחרים בהם. (I2181c)
  • VelocityTracker תקבל עכשיו את התיקון להוספת נקודות כברירת מחדל. אם יהיו בעיות, עדיין תוכלו להשבית את התיקון על ידי הגדרת VelocityTrackerAddPointsFix ל-false. (Ib3877, ‏ b/269487059)
  • תוקן חוסר תאימות לאחור של קובצי בינארי ב-TextStyle וב-ParagraphStyle. (I179f0, ‏ b/320819734)

תרומה חיצונית

  • נוספה קונסטרוקטור חדש של DialogProperties ללא פרמטרים ספציפיים לפלטפורמה. (I45829)
  • נוספה קונסטרוקטור חדש של PopupProperties ללא פרמטרים ספציפיים לפלטפורמה. (I9a038)

גרסה 1.7.0-alpha01

24 בינואר 2024

androidx.compose.ui:ui-*:1.7.0-alpha01 משוחרר. גרסה 1.7.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • הרחבנו את ClipboardManager על ידי הוספת ClipEntry ו-ClipMetadata כדי לתמוך בתוכן שרירותי כמו תמונות.
  • הוספת DeviceConfigurationOverride API ל-ui-test כדי לאפשר שינוי מקומי של התנהגות התוכן שנבדק, למשל כדי לציין גודל זמין, אזור גיאוגרפי, כיוון פריסה, קנה מידה של גופן או נושא.

גרסה 1.6

גרסה 1.6.8

‫12 ביוני 2024

androidx.compose.ui:ui-*:1.6.8 משוחרר. גרסת 1.6.8 כוללת את ההוספות האלה.

תיקוני באגים

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

גרסה 1.6.7

1 במאי 2024

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

גרסה 1.6.6

17 באפריל 2024

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

תיקוני באגים

  • תיקון קריסה נדירה ב-BasicTextField.

גרסה 1.6.5

3 באפריל 2024

androidx.compose.ui:ui-*:1.6.5 משוחרר. גרסת 1.6.5 כוללת את ההוספות האלה.

גרסה 1.6.4

‫20 במרץ 2024

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

גרסה 1.6.3

6 במרץ 2024

androidx.compose.ui:ui-*:1.6.3 משוחרר. גרסת 1.6.3 כוללת את ההוספות האלה.

גרסה 1.6.2

21 בפברואר 2024

androidx.compose.ui:ui-*:1.6.2 משוחרר. גרסה 1.6.2 כוללת את השמירות האלה.

גרסה 1.6.1

7 בפברואר 2024 androidx.compose.ui:ui-*:1.6.1 פורסם. גרסה 1.6.1 כוללת את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

  • תוקנה בעיה בתאימות לאחור עם SemanticsPropertyReceiver.performImeAction ו-SemanticsActions.PerformImeAction. (Ie0bb2, ‏ b/322269946)
  • עכשיו מתקבלת שגיאה במהלך המדידה של פריסות אם אחת מהן מחזירה גודל גדול באופן חריג. בדרך כלל, שגיאה כזו מתרחשת כשהמדידה משתמשת באילוצים מקסימליים באופן ישיר, בלי לבדוק את Constraints.Infinity. הבדיקה תעזור למפתחים למצוא בעיות בפריסה עם המידה הלא נכונה, ולא בפריסה שמכילה אותה. (I339a9)

גרסה 1.6.0

24 בינואר 2024

androidx.compose.ui:ui-*:1.6.0 משוחרר. גרסה 1.6.0 כוללת את ההצהרות האלה.

גרסה 1.6.0-rc01

10 בינואר 2024

androidx.compose.ui:ui-*:1.6.0-rc01 משוחרר. גרסה 1.6.0-rc01 כוללת את השמירות האלה.

תיקוני באגים

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

גרסה 1.6.0-beta03

13 בדצמבר 2023

androidx.compose.ui:ui-*:1.6.0-beta03 משוחרר. גרסה 1.6.0-beta03 מכילה את ההצהרות האלה.

תכונות חדשות

  • עכשיו אפשר לנתק LayoutCoordinates בלי לנתק את הצומת. אפשר למנוע זאת באמצעות הכלי לבדיקת פריסות ב-Compose (If693)

תיקוני באגים

  • PlatformImeOptions היא עכשיו כיתה ספציפית במקום ממשק. (If40a4)
  • תוקנו קומפוזיציות מחדש נוספות במורד הזרם שנגרמו בגלל שהועברו ערכים חדשים ל-LocalSoftwareKeyboardController ול-LocalTextInputService בכל פעם שהתרחשה קומפוזיציה מחדש של שורש. (I42190, ‏ b/310510985)

גרסה 1.6.0-beta02

29 בנובמבר 2023

androidx.compose.ui:ui-*:1.6.0-beta02 משוחרר. גרסה 1.6.0-beta02 מכילה את השמירות האלה.

גרסה 1.6.0-beta01

15 בנובמבר 2023

androidx.compose.ui:ui-*:1.6.0-beta01 משוחרר. גרסה 1.6.0-beta01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • המשתנה המשנה DragAndDropTarget מקבל עכשיו את DragAndDropTarget המקבל באופן מפורש, ויש לו פונקציית lambda כדי להביע הסכמה לסשן גרירה ושחרור. עכשיו יש שתי פונקציות ברירת מחדל ל-DragAndDropModifierNode. אחת לקבלת העברות ואחת להעברת נתונים (I69481)
  • maximumFlingVelocity עודכן כך שיוצג כ-Float. עדכנו את המסמכים כדי להבהיר את האחדות של maximumFlingVelocity. (I8adc7)
  • השם של onDragAndDropStart במפעל DragAndDropModifierNode השתנה ל-acceptDragAndDropTransfer.acceptsDragAndDropTransfer נוסף למשתנה dragAndDropTarget כדי לאשר סשן גרירה ושחרור. פונקציית הלוגריתם מחזירה DragAndDropTarget תקין אם רוצים סשן גרירה ושחרור. פונקציות lambda אחרות לעיבוד אירועי גרירה הוחלפו בפונקציה הזו. נוספה פונקציית ייצור DragAndDropTarget כדי לקבל מפעילויות גרירה ושחרור (Iebf3a)
  • הוסרו DragAndDropInfo כסוג. עכשיו DragAndDropModifierNode.drag מקבל פרמטרים עבור transferData, גודל הקישוט ופונקציית הלמה DrawScope של קישוט הגרירה

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

    השם של onDragAndDropEvent בפונקציית המפעל של DragAndDropModifierNode השתנה ל-onDragAndDropStart כדי להבהיר שה-DragAndDropTarget שסופק תקף רק לסשן גרירה ושחרור נתון.

    ה-DragAndDropEventType הוסר (I645b1)

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

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

  • מחליפים את OriginalText ב-TextSubstitution. (Ifa5a8)

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

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

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

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

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

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

תיקוני באגים

  • אם לא תהיה התמקדות בכלי לעריכת טקסט, המקלדת הווירטואלית לא תוצג יותר ב-SoftwareKeyboardController.show(). (I2165a, ‏ b/301477279)
  • מעכשיו, המערכת תתעלם מאירועי Up של מפתחות חומרה למפתחות שלא קיבלו אירוע Down באותו תצוגת עריכה. (Ib37b4, ‏ b/305518328)
  • הוספת תמיכה במעבד גרפיקה ל-Sweep Gradient ב-ArcLine. (I4d5bb)
  • מטמיעים את equals ואת hashcode עבור PageSize.Fixed. (Ie3ede, ‏ b/300134276)
  • תיקון בעיית תאימות בינארית בעקבות שינוי ב-Window Inset (Iee695)
  • כדאי להסיר את שכבת הליבה של Material3 עבור צ'יפ/לחצן של Material3, כי לפי בדיקות המיקרו-ביצועים הביצועים טובים יותר בלי שכבה זו. (I55555)
  • עכשיו TestDispatchers שהועברו כ-effectContext לבדיקות Compose ישמשו ליצירת שעוני הבדיקה והפריימים. (Ia7178)

גרסה 1.6.0-alpha08

18 באוקטובר 2023

androidx.compose.ui:ui-*:1.6.0-alpha08 משוחרר. גרסה 1.6.0-alpha08 מכילה את ההצהרות האלה.

שינויים ב-API

  • השם של פונקציית ה-lambda onDrawDragShadow ב-Modifier.dragAndDrawSource השתנה ל-drawDragDecoration, והשם של פרמטר הגודל ב-DragAndDropInfo השתנה ל-dragDecorationSize. (Id0e30, ‏ b/303904810)
  • אפשר להשתמש ב-SemanticsNodeInteraction.isDisplayed() וב-SemanticsNodeInteraction.isNotDisplayed() כדי לבדוק אם צומת תואם גלוי או לא, בלי לבצע גם טענת נכוֹנוּת (assertion) עליו. (I2c196, ‏ b/302100809)
  • הוספנו ערך Unspecified מיוחד לשדות TextAlign, ‏ TextDirection, ‏ Hyphens ו-LineBreak של ParagraphTextStyle כדי להחליף את null. מאחר שהכיתות האלה הן כיתות בקוד, החלפת nullable ב-Unspecified מונעת תיוג של טיפוסים פרימיטיביים. מתכנני ה-constructor, פונקציות ה-getter ופונקציות אחרות ב-TextStyle ובסגנון Paragraph עודכנו כדי לקבל את הפרמטרים שצוינו כסוגי non-null. (I4197e, ‏ b/299490814)
  • הוספת עומס יתר של GoogleFont לקריאת GoogleFont מ-XML. (If8f59)
  • הפכת את הכיתה LoremIpsum PreviewParameterProvider לכיתה פתוחה. (I41bf5, ‏ b/266918816, ‏ b/300116360)

תיקוני באגים

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

גרסה 1.6.0-alpha07

4 באוקטובר 2023

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

שינויים ב-API

  • הוספנו את PlatformTextInputMethodTestOverride לכתיבה של בדיקות עבור עורכי טקסט מותאמים אישית. (Id159b)
  • מוסיף את המשתנה המשנה dragAndDropSource להתחלת סשנים של גרירה ושחרור, ואת המשתנה המשנה dragAndDropTarget לקבלה מסשנים של גרירה ושחרור. (Ib7828, ‏ b/286038936)
  • נוספו קולקציות ColorList ו-ColorSet שמאפשרות להימנע מהקצאות. (I744bd)
  • נוספה הדגל הזמני DisableNonLinearFontScalingInCompose כדי להשבית שינוי גודל גופני לא לינארי. אם אתם צריכים זמן כדי לנקות את הבדיקות, תוכלו להגדיר את הערך DisableNonLinearFontScalingInCompose = true בהן. הדגל הזה יוסר ב-Compose 1.6.0-beta01. (Ic9486)

תיקוני באגים

  • ניתוח מותאם של פריטים גרפיים וקטורים שניתן לשרטוט בפורמט XML. (Ibb015)

גרסה 1.6.0-alpha06

20 בספטמבר 2023

androidx.compose.ui:ui-*:1.6.0-alpha06 משוחרר. גרסה 1.6.0-alpha06 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • אופטימיזציה נוספת של סמלי Material. (I3e08d)
  • נוספה היכולת לעבור על עץ המשתנים המשתנה למעלה/למטה כדי למצוא צמתים דומים. (I2d234)
  • נוספה קריאה חוזרת (callback) של onRestoreFailed() למערך focusRestorer() (Ie1d43)
  • נוספו הערות של androidx לממשקי API שונים של גרפיקה כדי לציין את ColorInt, ‏ FloatRange, ‏ IntRange, ‏ Size ועוד. (Id65c8, ‏ b/290950582)
  • הוספת showSystemUi=true להגדרה של PreviewScreenSizes (Ib61d3)

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

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

גרסה 1.6.0-alpha05

6 בספטמבר 2023

androidx.compose.ui:ui-*:1.6.0-alpha05 משוחרר. גרסה 1.6.0-alpha05 מכילה את ההצהרות האלה.

שינויים ב-API

  • מפעילים את התכונה 'צילום תוכן' ב-AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • מהירות ההזזה ברכיבי תצוגה כמו ScrollView ו-RecyclerView מוגבלת ל-ViewConfiguration.ScaledMaximumFlingVelocity. ל-Compose יש עכשיו גרסה משלו של maximumFlingVelocity שחלה עכשיו על Draggable. (Ibf974)
  • הוספת שלד ראשוני לתמיכה בממשקי API של גרירה ושחרור בפלטפורמה. (If84ce)
  • הוספת deviceId ל-RotaryScrollEvent (Iba3bf)
  • עדכון של ui-tooling Devices API כך שיכלול מכשירים חדשים יותר (Ib25b4)

גרסה 1.6.0-alpha04

23 באוגוסט 2023

androidx.compose.ui:ui-*:1.6.0-alpha04 משוחרר. גרסה 1.6.0-alpha04 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספה שיטה להשבתת ReusableComposition, שמסירה תצפיות אבל משאירה את הצמתים במקומם. אפשר להפעיל מחדש את ההרכב שהושבת על ידי שליחת קריאה ל-setContent. (Ib7f31)
  • הוספת ממשק ReusableComposition לניהול מחזור החיים ולשימוש חוזר ברכיבי משנה. (I812d1, ‏ b/252846775)
  • Modifier.focusGroup הועברו לממשקי API יציבים. (I7ffa3)
  • נוספו הערות של androidx לממשקי API שונים של גרפיקה כדי לציין את ColorInt, ‏ FloatRange, ‏ IntRange, ‏ Size ועוד. (I70487, ‏ b/290950582)
  • עדכנו את ה-API של ColorFilter כך שיכלול סוגי תת-כיתות ספציפיים כדי לשפר את היכולת לבדוק את הפרמטרים. (I5fe29)
  • הצגת ספריית wear-tooling-preview עם רשימה של מכשירים תקינים של Wear שאפשר להשתמש בהם לתצוגות מקדימות של ממשק המשתמש (Ib036e)
  • נוצר ממשק FontScalable כדי לטפל בחלק של שינוי גודל הגופן בממשק Density. (I2cf3f)

גרסה 1.6.0-alpha03

9 באוגוסט 2023

androidx.compose.ui:ui-*:1.6.0-alpha03 משוחרר. גרסה 1.6.0-alpha03 מכילה את ההצהרות האלה.

שינויים ב-API

  • סוג חדש של מעבר כניסה/יציאה שבו המערכת משנה את הגודל של התוכן בהתאם לגודל של מאגר התגים שמכיל את האנימציה במהלך האנימציה של הכניסה והיציאה. LookaheadScope הממשק והתכונה 'שימוש ברכיבים' יציב עכשיו. (Ifb2ce)
  • נוספה תמיכה בהגדרה של privateImeOptions (Idb772)

תיקוני באגים

  • PopupPositionProvider.calculatePosition יעדכן עכשיו באופן אוטומטי את המיקום של חלון הקופץ כשהסטטוס שנקרא בחשבון ישתנה. (I676a1, ‏ b/292257547)
  • תוקנו שדות טקסט שמוצגת בהם מקלדת ואפשר לערוך אותם כשהערך של readOnly הוא true. תוקנה גם בעיה שבה המקלדת לא מוצגת כשהערך של readOnly משתנה מ-true ל-false בזמן המיקוד. (I34a19, ‏ b/246909589)
  • הרחבנו את השימוש בהצהרות נכוֹנוּת גלובליות בבדיקות ממשק המשתמש. (I1f90d)

גרסה 1.6.0-alpha02

26 ביולי 2023

androidx.compose.ui:ui-*:1.6.0-alpha02 משוחרר. גרסה 1.6.0-alpha02 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספה ממשק לאיתור שירותים שאפשר להטמיע על ידי מי שמטמיע את Composition. הממשק מאפשר הטמעה של Composition שמעבירה לחיפוש שירותים של שירות אחר, שמעביר את החיפוש ל-Composition המקורי. אין לקרוא לזה ישירות, והוא משמש ליצירת ממשקי API ניסיוניים בסביבת זמן הריצה, שניתן למצוא בגרסאות עטופות של המלחין, כמו מודול ממשק המשתמש. (I296b9)
  • ממשק API של PlatformTextInput* שעוצב מחדש לחלוטין. (I6c93a, ‏ b/274661182, ‏ b/267235947, ‏ b/277380808)
  • האפשרויות SoftwareKeyboardController ו-LocalSoftwareKeyboardController כבר לא ניסיוניות. LocalSoftwareKeyboardController הוא עכשיו גם CompositionLocal תקין. (I4c364)
  • LookaheadLayout ו-LookaheadLayoutScope הוצאו משימוש בגרסאות קודמות והם הוסרו עכשיו. ממשקי ה-API החלופיים הם LookaheadScope שיכולים לפעול עם כל פריסה. (I12ac3)
  • הוספנו את SemanticsNodeInteraction.requestFocus כדרך נוחה יותר לגלות ולבקש התמקדות במבחנים. (Ie8722)
  • הוספת ממשקי API ניסיוניים לרישום טענות נכוֹנוּת גלובליות, לשימוש של מסגרות בדיקה בעתיד. (I12d77)

תיקוני באגים

  • ההפעלה הראשונה של פונקציית ה-callback update של AndroidView תידחה עכשיו עד שהתצוגה תצורף, במקום לפעול כשהשילוב שמציג את AndroidView מוחל. התיקון הזה מתקן באג שבו פונקציית ה-callback של update לא הייתה מתבטלת אם מצב שקרא השתנה באופן מיידי על ידי אפקט. (Ie9438, ‏ b/291094055)

גרסה 1.6.0-alpha01

21 ביוני 2023

androidx.compose.ui:ui-*:1.6.0-alpha01 משוחרר. גרסה 1.6.0-alpha01 מכילה את ההוספות האלה.

תכונות חדשות

  • תמיכה בתכונה 'הצגת נתונים מראש' ב-LazyList. כך LazyList במעבר החזוי יכול לעקוף כל אנימציה (למשל, אנימציה של מיקום פריט, AnimatedVisibility וכו') ולחשב את המיקום והגודל של החזוי לכל הצאצאים. אחרי עיבוד ה-lookahead, הצאצאים של LazyList יכולים לעבור אנימציה בנפרד מהמציאות כפי שהיא נראית בעיבוד ה-lookahead.

שינוי בהתנהגות: הערך של includeFontPadding הוא עכשיו false כברירת מחדל ב-Compose

הערך של includeFontPadding הוא עכשיו false כברירת מחדל (21d806) ב-Compose.

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

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

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

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

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

אתם יכולים להביע הסכמה לשימוש ב-includeFontPadding לכל הטקסטים שלכם על ידי הגדרת סגנונות Material. לתשומת ליבכם, שמות הפרמטרים משתנים בין M2 ל-M3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /**/,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /**/
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

מידע נוסף על Compose includeFontPadding זמין בתיעוד למפתחים ובפוסט הזה בבלוג.

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

שינויים ב-API

  • תמיכה InputConnection#requestCursorUpdates (I0c69b)
  • נוספו FocusRequester.saveFocusedChild ו-FocusRequester.restoreFocusedChild (Ic557e, ‏ b/272302679, ‏ b/275157318)
  • הוספת סוג ResourceResolutionException כדי לעטוף את ה-throwables שנזרקים כשמנסים לטעון נכסי bitmap עם תיאור של נתיב הנכס שלא הצליח להיטען. (I19f44, ‏ b/230166331, ‏ b/278424788)
  • אופטימיזציה של הנגישות לביצועים ולהקצאות זיכרון. (Iede48)
  • נוספו מאפיינים ופעולות סמנטיים כדי לתמוך בתרגום טקסט. (I4a6bc)
  • מאפיין חדש ב-IntrinsincMeasureScope והטמעות שלו (למשל MeasureScope) כדי לציין אם סבב המדידה הנוכחי הוא סבב תחזית. (I7a812)
  • עדכנו את ה-API של DrawScope כדי להוסיף את היכולת לטרגט מחדש את העיבוד לקנבס אחר עם צפיפות/כיוון פריסה וגודל חלופיים.
  • עדכנו את DrawContext כך שיתמוך בהגדרה של צפיפות וכיוון פריסה, וגם בהגדרה של קנבס. (Ie1f9b, ‏ b/225408150)
  • נוספה Paragraph#fillBoundingBoxes כדי לחשב תיבות מלבניות של תווים. (If30ee)
  • נוספה קבוצה של MultiPreviews נפוצים (Ia5a27)

תיקוני באגים

  • נוספה ממשק FocusTargetModifierNode שאפשר להשתמש בו כדי ליצור FocusTarget בהתאמה אישית. (I9790e)
  • שינינו את השם של הפרמטרים fallback* ב-constructor של TextMeasurer ל-default*. (I940a5)
  • השם של SemanticsPropertyReceiver.performImeAction השתנה ל-onImeAction והשם של SemanticsActions.PerformImeAction השתנה ל-OnImeAction. (I8e841)
  • הוספת גלגל כדי להבדיל בין גלילה בעכבר לבין גרירה בגלילה בתצוגת עץ (במיוחד ב-NestedScrollConnection). (Ie57e4)
  • הוספנו את ה-API asComposePaint כדי להחליף את toComposePaint, כי האובייקט המוחזר עוטף את android.graphics.Paint המקורי (I22b4c)
  • מוציאים משימוש את SemanticsProperties.imeAction ומחליפים אותו בפרמטר חדש ל-SemanticsActions.performImeAction. (I4a587)
  • נוספה תמיכה בבחירה בעזרת העכבר. אם תבחרו בטקסט באמצעות מגע, הבחירה תתרחב במילה ותתכווץ בתו. (Ic0c6c, b/180639271)
  • שיטות Paragraph שהשליכו בעבר את AssertionError עבור אופסים מחוץ לטווח, משליכות עכשיו את IllegalArgumentException כמו ש-MultiParagraph עושה. (I549d3, ‏ b/243338896)

גירסה 1.5

גרסה 1.5.4

18 באוקטובר 2023

androidx.compose.ui:ui-*:1.5.4 משוחרר. גרסה 1.5.4 מכילה את השמירות האלה.

גרסה 1.5.3

4 באוקטובר 2023

androidx.compose.ui:ui-*:1.5.3 משוחרר. גרסה 1.5.3 מכילה את ההצהרות האלה.

תיקוני באגים

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

גרסה 1.5.2

27 בספטמבר 2023

androidx.compose.ui:ui-*:1.5.2 משוחרר. גרסה 1.5.2 מכילה את השמירות האלה.

תיקוני באגים

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

גירסה 1.5.1

6 בספטמבר 2023

androidx.compose.ui:ui-*:1.5.1 משוחרר. גרסה 1.5.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

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

גרסה 1.5.0

9 באוגוסט 2023

androidx.compose.ui:ui-*:1.5.0 משוחרר. גרסה 1.5.0 כוללת את השמירות האלה.

גרסה 1.5.0-rc01

26 ביולי 2023

androidx.compose.ui:ui-*:1.5.0-rc01 משוחרר. גרסה 1.5.0-rc01 כוללת את השמירות האלה.

תיקוני באגים

  • תוקנה קריסה שהתרחשה כשמשתמשים ב-SubcomposeLayout בתוך movableContentOf().

גרסה 1.5.0-beta03

28 ביוני 2023

androidx.compose.ui:ui-*:1.5.0-beta03 משוחרר. גרסה 1.5.0-beta03 מכילה את ההצהרות האלה.

תיקוני באגים

  • נוספה ממשק FocusTargetModifierNode שאפשר להשתמש בו כדי ליצור FocusTarget מותאם אישית. (Ifb1d6)
  • תוקנה בעיה ברכיבים הניתנים לקישור מסוג תיבת דו-שיח וחלון קופץ, שעלולה לגרום לכך שחלון הצאצא לא ישתנה בגודל כצפוי כשusePlatformDefaultWidth=true. (I112ee)

גרסה 1.5.0-beta02

7 ביוני 2023

androidx.compose.ui:ui-*:1.5.0-beta02 משוחרר. גרסה 1.5.0-beta02 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוספנו את ממשק ה-API של asComposePaint כדי לאפשר שימוש במכונה של android.graphics.Paint ב-Compose

תיקוני באגים

  • הוספנו את ה-API asComposePaint כדי להחליף את toComposePaint, כי האובייקט המוחזר עוטף את android.graphics.Paint המקורי (I22b4c)

גרסה 1.5.0-beta01

24 במאי 2023

androidx.compose.ui:ui-*:1.5.0-beta01 משוחרר. גרסה 1.5.0-beta01 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוסרו הקצאות ביצירת קומפוזיציה מחדש, באנימציות צבע וב-AndroidComposeView (Ib2bfa)
  • הוספת פונקציית עזרה CacheDrawModifierNode() כדי לאפשר הענקת גישה (Icf8f9)
  • אנחנו משיקים את המאפיין isLookingAhead, שניתן לגשת אליו דרך MeasureScope, כדי לבחון את תוצאות הניתוח מראש ולהשפיע על הניתוח הראשי, אם רוצים. (Ibf4c3)
  • מאפיין סמנטיקה חדש traversalIndex, מספר צף שמשמש לסדר מחדש צמתים בסריקה של TalkBack (ערכים נמוכים יותר מופיעים לפני ערכים גבוהים יותר). (I9a81b, ‏ b/186443263)
  • שינוי השם של נכס הסמנטיקה isContainer ל-isTraversalGroup (I121f6)
  • עכשיו יש ל-ColorProducer operator fun invoke במקום produce (I4a9a2)
  • הוספת API טרנספורמציה של Path כדי להחיל טרנספורמציות של תזוזה/שינוי קנה מידה/סיבוב על אובייקטים של נתיבים. (I23434, ‏ b/233772232)
  • השם של method של ColorProducer הוא produce. (I78bde)
  • שינוי השם של toFrameworkColorSpace ל-toAndroidColorSpace (I4f547)
  • משנים את השם של ColorLambda ל-ColorProducer. (I73b1a)
  • הצגת ממשקי API להמרה בין סוגי מרחבי צבע של Android ו-Compose. (Ie7db4, ‏ b/279979665)
  • הוספנו פרמטר צבע ל-BasicText כדי לאפשר להוסיף אנימציה יעילה לטקסט או להגדיר את צבע הטקסט. (Iffd88, ‏ b/246961787)
  • השם של TextRange.constrain השתנה ל-TextRange.coerceIn. (I31be2)
  • הוספנו TextStyle.merge(...) מותאם עם רשימת פרמטרים מלאה. (Iad234, ‏ b/246961787)
  • טיפלנו בבעיות יציבות בממשקי Text API רבים, כולל Brush,‏ DrawStyle,‏ TextMotion,‏ DrawScope.drawText,‏ Paragraph.paint(Brush),‏ MultiParagraph.paint(Brush). (I2f740, ‏ b/261581564, ‏ b/261581931, ‏ b/261561245)
  • האפשרות PlatformTextStyle.includeFontPadding הוצאה משימוש. הכוונה המקורית שלנו הייתה להסיר את השדה, אבל המשוב מראה שהמפתחים זקוקים לאפשרות ההגדרה הזו. לכן, מסירים את ההודעה על ההוצאה משימוש מהשדה (I98e96,‏ b/277703184)
  • נוספה השיטה הציבורית TextRange.constrain. (I97912)
  • עכשיו אפשר לפתוח UrlAnnotation ב-AnnotatedString באמצעות שירותי נגישות כמו TalkBack. (If4d82, ‏ b/253292081)
  • נוספה הפעולה InsertTextAtCursor semantics לשדות טקסט. (I11ed5)
  • ה-constructor של LineHeightStyle.Alignment(topRatio) מקודם ל-API יציב. (I79c32, ‏ b/261565383)
  • TextMeasurer וממשקי ה-API הקשורים כבר לא נחשבים לניסיוניים. (I74647, ‏ b/261581753)
  • נוספה הפעולה הסמנטית PerformImeAction כדי להפעיל את הפעולה של IME בצמתים של עורכי טקסט. (Ic606f, ‏ b/269633506)
  • ממשקי ה-API של PlatformTextInput כבר לא נחשבים לניסיוניים ב-Android. (I668eb)
  • שם הפרמטר value של Enum.valueOf השתנה (Ia9b89)
  • חריגות נוספות שהושלחו מ-valueOf של enum (I818fe)
  • השקנו ממשק API חדש ברמה נמוכה של PlatformTextInputAdapter ליצירת הטמעות בהתאמה אישית של קלט טקסט, שמתקשרות ישירות לממשקי ה-API של הפלטפורמה. (I58df4)
  • נוסף הפרמטר BlendMode לשיטות DrawScope.drawText,‏ Paragraph.paint ו-MultiParagraph.paint כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508)
  • משנים את השם של Font.MaximumAsyncTimeout ל-Font.MaximumAsyncTimeoutMillis. שינוי שם בלבד. (I07af5)
  • ערכים מעודכנים של DPI של @Preview מכשירי עזר (Id6151, ‏ b/254528382)
  • מוסיפים את הפרמטרים brush ו-alpha ל-BasicText כדי לאפשר אנימציה יעילה או הגדרה יעילה של מברשת הטקסט.
  • הגדרת סוגי פונקציות lambda ללא תיבות עבור Float,‏ Double,‏ Long,‏ Int ו-Short ב-:ui:ui-unit‏ (I6f18d,‏ b/246961787)

תיקוני באגים

  • הסרה של מספר הקצאות במעקב אחר מהירות הסמן (I26bae)
  • הפחתת ההקצאות בניהול של פריסה והזנת מצביע (I5333a)
  • אופטימיזציה של השימוש בזיכרון של Vector ועיבוד הפריימים הראשונים (I2f3c6)
  • הוסרו הקצאות כשמציירים קווים ונקודות ב-Canvas (I9f535)
  • הוספת מסמכים עבור AndroidFont.fontVariationSettings (I7d9e2)

תרומה חיצונית

  • שיפור בביצועים והפחתת ההקצאות בממשקי Vector API‏ (I906cb)

גרסה 1.5.0-alpha04

10 במאי 2023

androidx.compose.ui:ui-*:1.5.0-alpha04 משוחרר. גרסה 1.5.0-alpha04 מכילה את ההצהרות האלה.

תכונות חדשות

  • Modifier.Node שיפורים בהענקת גישה נוספה יכולת משופרת להענקת גישה למכונות Modifier.Node אחרות מ-DelegatingNode. אפשר לעשות זאת באמצעות ממשקי ה-API delegate ו-undelegate. לפני השינוי הזה, כל ממשק API מהצומת שמעניק את הגישה היה צריך להוענק במפורש לצומת שמקבל את הגישה. אחרי השינוי הזה, ממשקי הצמתים יוענקו באופן משתמע, אלא אם DelegatingNode יבטל אותם באופן מפורש. (67352bc)

שינויים ב-API

  • NestedScrollModifierNode הוא NestedScroll Modifier.Node שאפשר להקצות אליו. (I69513)
  • הוספנו את הפרמטרים onReset ו-onRelease ל-composable‏ AndroidViewBinding, שמשקף את ה-composable‏ AndroidView ומאפשר תמיכה בשימוש חוזר ב-View באמצעות ViewBinding. (I00b1e, ‏ b/276802519)
  • עדכנו את Compose Path API כדי לתמוך בפעולות חזרה אחורה, כדי לתמוך בתרחישי שימוש שבהם מתבצעת מניפולציה תכופה ב-Path, עם שימוש חוזר מהיר יותר. (I7b797)
  • הוספנו TextStyle.merge(...) מותאם עם רשימת פרמטרים מלאה. (Iad234, ‏ b/246961787)
  • טיפלנו בבעיות יציבות בממשקי Text API רבים, כולל Brush,‏ DrawStyle,‏ TextMotion,‏ DrawScope.drawText,‏ Paragraph.paint(Brush),‏ MultiParagraph.paint(Brush). (I2f740, ‏ b/261581564, ‏ b/261581931, ‏ b/261561245)
  • האפשרות PlatformTextStyle.includeFontPadding הוצאה משימוש. הכוונה המקורית שלנו הייתה להסיר את השדה, אבל המשוב מראה שהמפתחים זקוקים לאפשרות ההגדרה הזו. לכן, מסירים את ההודעה על ההוצאה משימוש מהשדה (I98e96,‏ b/277703184)

תיקוני באגים

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

גרסה 1.5.0-alpha03

19 באפריל 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 משוחרר. גרסה 1.5.0-alpha03 מכילה את ההצהרות האלה.

תכונות חדשות

  • התנהגות ברירת המחדל החדשה של SubcomposeLayout ב-LookaheadScope: SubcomposeLayouts ללא משבצות מותנות (למשל, TabRow, ‏ Scaffold, ‏ BoxWithConstraints וכו') פועלות עכשיו בצורה חלקה עם אנימציות של תחזית קדימה.

שינויים ב-API

  • ערך ברירת מחדל חדש של intermediateMeasurePolicy שמשתמש שוב במדיניות המדידה מהמעבר של תחזית העתיד מאפשר לסוגים המשנה של SubcomposeLayout ללא משבצות מותנות, כמו Scaffold,‏ TabRow ו-BoxWithConstraints, לפעול עם תחזית העתיד כברירת מחדל. (Id84c8)
  • מעכשיו, כשה-recomposer שנוצר לחלון ב-Android יקבל התראה מסוג ON_STOP, הוא יחסום רק שיחות אל withFrameNanos במקום את כל ההלחנות. המשמעות היא שחלונות המשויכים לפעילויות שהופסקו ימשיכו לבצע עיבוד מחדש של הנתונים, אבל האנימציות או כל גורם אחר שמפעיל את withFrameNanos ייחסמו. (Id9e7f, ‏ b/240975572)
  • השינויים ב-motionEventSpy לגרסה היציבה. (Ic5ec4, ‏ b/261560988)
  • נוספה השיטה הציבורית TextRange.constrain. (I97912)
  • ה-API PlatformTextStyle.includeFontPadding לא הוצא משימוש כדי לעודד מפתחים להשתמש ב-API התאימות הזה כדי לעבור ולהבדוק את ההגדרה includeFontPadding כ-false. (I98e96, ‏ b/277703184)

גרסה 1.5.0-alpha02

5 באפריל 2023

androidx.compose.ui:ui-*:1.5.0-alpha02 משוחרר. גרסה 1.5.0-alpha02 כוללת את ההוספות האלה.

שינויים ב-API

  • ממשק API חדש של SubcomposeLayout שמשתמש במדיניות נוספת של מדד ביניים לטיפול בלוגיקה של המדידה/הפריסה במהלך אנימציות מבוססות-תחזית. (I017d3)
  • PointerInput עכשיו 'עצל' ומשתמש ב-Modifier.Node לשיפור הביצועים (מידע נוסף על השינוי הקטן בהתנהגות). (15dab9)
  • שינוי ממשקי API ניסיוניים לממשקים יציבים באמצעות אירועי מפתח. (I9c7d8, ‏ b/261566839, ‏ b/261567368)
  • שינוי ממשקי ה-API הניסיוניים לממשקי API יציבים ב-PointerInputChange. (I1b543, ‏ b/261560988, ‏ b/261565762, ‏ b/261565749)
  • הוספת דרך ליצור מופע של SuspendingPointerInputModifierNode להטמעות מורכבות יותר של Modifier.Node. (Ic4933)
  • עכשיו אפשר לפתוח UrlAnnotation ב-AnnotatedString באמצעות שירותי נגישות כמו TalkBack. (If4d82, ‏ b/253292081)
  • הוספנו ממשק API כדי ליירט מפתחות חומרה לפני שהם נשלחים למקלדת הווירטואלית (I4f4c6, ‏ b/186800395)
  • נוספה הפעולה InsertTextAtCursor semantics לשדות טקסט. (I11ed5)
  • פעולות בדיקה שקשורות לטקסט (למשל performTextInput) יבקשו עכשיו להתמקד ישירות, באמצעות פעולת הסמנטיקה, במקום ללחוץ על השדה. (I6ed05)

תיקוני באגים

  • מעכשיו, כדי לבצע פעולות בדיקה של טקסט, צריך להפעיל שדות טקסט. (Iab328)

גרסה 1.5.0-alpha01

22 במרץ 2023

androidx.compose.ui:ui-*:1.5.0-alpha01 משוחרר. גרסה 1.5.0-alpha01 כוללת את ההצהרות האלה.

שינויים ב-API

  • עכשיו אין צורך ב-LookaheadScope מפורש ב-Modifier.intermediateLayout. בבלוק המדידה ב-intermediateLayout, הקבלה היא IntermediateMeasureScope, שמספק את CoroutineScope,‏ LookaheadScope ו-MeasureScope בצורה נוחה.(Ibe2e5)
  • LookaheadLayout הוחלף ב-LookaheadScope, שכבר לא נחשב לפריסה. כך ניתן לשלוט ישירות בתוכן הצאצא ב-LookaheadScope באמצעות מדיניות המדידה של ההורה. (Ibe2e5)
  • הוספת Modifier.Node#coroutineScope כדי לאפשר ל-Modifier.Nodes להפעיל קורוטינים. (I76ef9)
  • מאפשרים ל-Modifier.Nodes לקרוא את CompositionLocals על ידי הטמעת הממשק CompositionLocalConsumerModifierNode. (Ib44df)
  • העברה של הכיתה @Deprecated לנכס. (I882d1)

גרסה 1.4

גרסה 1.4.3

3 במאי 2023

androidx.compose.ui:ui-*:1.4.3 משוחרר. גרסה 1.4.3 כוללת את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה יכול להיות שהפריסה של AndroidView לא תהיה נכונה כשמשתמשים בה עם מודификаторים מסוימים. (I4dc77, ‏ b/274797771)
  • תוקן באג בחיפוש ממוקד דו-ממדי שהשפיע על תפריטי DropDown (b/276811828)
  • תוקן באג במאפייני התמקדות בהתאמה אישית של כניסה/יציאה, שבו הבלוק של הכניסה/היציאה הופעל רק בפעם הראשונה שבה הופעל הלוגריתם (b/277234245)
  • תוקנה נסיגה במערכת המיקוד שגרמה לקריסה בזמן קריאת focusProperties. (b/271324781, ‏ b/274897776)

גרסה 1.4.2

19 באפריל 2023

androidx.compose.ui:ui-*:1.4.2 משוחרר. גרסה 1.4.2 כוללת את השמירות האלה.

תיקוני באגים

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

גרסה 1.4.1

5 באפריל 2023

androidx.compose.ui:ui-*:1.4.1 משוחרר. גרסה 1.4.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

  • תיקון בעיה ב-ParentDataModifier שלא משפיעה על AndroidView (b/274797771)

גרסה 1.4.0

22 במרץ 2023

androidx.compose.ui:ui-*:1.4.0 משוחרר. גרסה 1.4.0 כוללת את ההצהרות האלה.

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

  • הוספנו ממשק PinnableContainer API חדש שמאפשר להצמיד פריטים ברשימה מושבתת, כדי שלא יוסרו כשמגללים מחוץ לטווח. לדוגמה, Modifier.focusable() משתמש במנגנון הזה כדי להצמיד את הפריט שבו יש כרגע מיקוד. (Ib8881, ‏ b/259274257, ‏ b/195049010)
  • מערכת המיקוד נכתבה מחדש באמצעות ממשקי ה-API הניסיוניים החדשים של Modifier.Node. (I7f4d7, ‏ b/247708726, ‏ b/255352203, ‏ b/253043481, ‏ b/247716483, ‏ b/254529934, ‏ b/251840112, ‏ b/251859987, ‏ b/257141589)
  • הוספה בנכס הסמנטיקה IsContainer בפלטפורמות. המאפיין הזה ישמש בשינוי מאוחר יותר שיקבע את סדר הסריקה על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (I63379)
  • נוסף תפקיד נגישות חדש DropdownList. אפשר להשתמש בזה כדי לשכפל את ההתנהגות של TalkBack כשממקדים את android.widget.Spinner. (I177e5, ‏ b/236159001)
  • עכשיו אפשר להשתמש ב-PlatformTextStyle(emojiSupportMatch) כדי להשבית את העיבוד של תמיכה באמוג'י בפסקה אחת. (Ia7100, b/139326806)
  • עכשיו, בבדיקות ממשק המשתמש של Android Compose יתבצעו מעברים של פריסה לכל פריים בזמן ביצוע הפריים כדי להגיע למצב חוסר פעילות (למשל, באמצעות waitForIdle). הדבר עשוי להשפיע על בדיקות שמבצעות טענת נכוֹנוּת (assert) על פריימים נפרדים של אנימציות פריסה. (I8ea08, ‏ b/222093277)
  • הוספנו את TextMotion הניסיוני ל-TextStyle כדי להגדיר טקסט כ-Static(default) או כאנימציה. משתמשים ב-TextMotion.Animated אם רוצים לשנות את הגודל, התרגום או הסיבוב של הטקסט באמצעות אנימציה. (I24dd7)

גרסה 1.4.0-rc01

8 במרץ 2023

androidx.compose.ui:ui-*:1.4.0-rc01 משוחרר. גרסה 1.4.0-rc01 כוללת את השמירות האלה.

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.4.0-beta02

22 בפברואר 2023

androidx.compose.ui:ui-*:1.4.0-beta02 משוחרר. גרסה 1.4.0-beta02 כוללת את ההצהרות האלה.

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.4.0-beta01

8 בפברואר 2023

androidx.compose.ui:ui-*:1.4.0-beta01 משוחרר. גרסה 1.4.0-beta01 מכילה את ההוספות האלה.

שינויים ב-API

  • השם של PinnableContainer.PinnedHandle.unpin() השתנה ל-release() (I4667a)
  • הוספנו את waitUntilNodeCount, ‏ waitUntilAtLeastOneExists, ‏ waitUntilExactlyOneExists ו-waitUntilDoesNotExist כ-API ניסיוני ל-ComposeTestRule, והרחבנו את ממשק ה-API waitUntil כך שיקבל כל בודק התאמה וכל מספר של צמתים. מידע נוסף זמין בכתובת ComposeTestRule. (Ifa1b9, ‏ b/226934294)
  • משנים את השם של Font.MaximumAsyncTimeout ל-Font.MaximumAsyncTimeoutMillis. (I07af5)
  • הסרת את GoogleFont.Provider.AllFontsListUri וקישרתי אליו ב-ktdoc במקום זאת. (I16f29)

תיקוני באגים

  • הוספת מסמכים עבור AndroidFont.fontVariationSettings (I7d9e2)

גרסה 1.4.0-alpha05

25 בינואר 2023

androidx.compose.ui:ui-*:1.4.0-alpha05 משוחרר. גרסה 1.4.0-alpha05 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • הוספנו עומסי יתר ניסיוניים חדשים לפונקציה runComposeUiTest ולפונקציות create*ComposeRule שמקבלות פרמטרים מסוג CoroutineContext. ההקשר ישמש להרכבת הבדיקה לכל קריאה ל-LaunchedEffect ול-rememberCoroutineScope() בהרכבה. (I10614, ‏ b/265177763)
  • הוספת ממשק API חדש למעקב אחר מהירות בכיוון אחד (If5a82)
  • המכשיר FocusRequester מסומן עכשיו כ-@Stable. (I580ee)
  • מסירים הערה ניסיונית מהמגדיר (constructor) של DialogProperties, שמקבל פרמטר usePlatformDefaultWidth. (Ic4048)
  • נוספה פונקציה לחישוב המיקום והטנגנט במרחק על נתיב – באמצעות PathMeasure.getPosition() ו-PathMeasure.getTangent() (I3b47c)
  • הסרנו את הגדרת ה-setter הציבורית שנחשפה בטעות ב-PlatformParagraphStyle. (I07f47)
  • עוד סוגים/אפשרויות של פונקציות מוסתרות בקוד או פונקציות מוסתרות שהוצאו משימוש (I24f91)
  • מוסיפים את AnnotatedString.hasStringAnnotations לשאילתה כדי לחפש הערות ללא הקצאות. (I94dfe, ‏ b/246960758)
  • נוספה עומס יתר חדש לפונקציה TextMeasurer.measure שמקבלת String כטקסט. (I47b2d, ‏ b/242705342)
  • ממשקי ה-API LineBreak ו-Hyphens ב-TextStyle עברו לשלב היציבות. (Ic1e1d)

תרומה חיצונית

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

גרסה 1.4.0-alpha04

11 בינואר 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 משוחרר. גרסה 1.4.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

  • הוספנו ממשק PinnableContainer API חדש שמאפשר להצמיד פריטים ברשימה מושבתת, כדי שלא יוסרו כשמגללים מחוץ לטווח. לדוגמה, Modifier.focusable() משתמש במנגנון הזה כדי להצמיד את הפריט שבו יש כרגע מיקוד. (Ib8881, ‏ b/259274257, ‏ b/195049010)
  • מערכת המיקוד נכתבה מחדש באמצעות ממשקי ה-API הניסיוניים החדשים של Modifier.Node. (I7f4d7, ‏ b/247708726, ‏ b/255352203, ‏ b/253043481, ‏ b/247716483, ‏ b/254529934, ‏ b/251840112, ‏ b/251859987, ‏ b/257141589)
  • הוספה בנכס הסמנטיקה IsContainer בפלטפורמות. המאפיין הזה ישמש בשינוי מאוחר יותר שיקבע את סדר הסריקה על סמך המשמעות הסמנטית של רכיבים כמו משטחים. (I63379)
  • נוסף תפקיד נגישות חדש DropdownList. אפשר להשתמש בזה כדי לשכפל את ההתנהגות של TalkBack's כשממקדים את android.widget.Spinner. (I177e5, ‏ b/236159001)
  • עכשיו אפשר להשתמש ב-PlatformTextStyle(emojiSupportMatch) כדי להשבית את העיבוד של תמיכה באמוג'י בפסקה אחת. (Ia7100, b/139326806)
  • עכשיו, בבדיקות ממשק המשתמש של Android Compose יתבצעו מעברים של פריסה לכל פריים בזמן ביצוע הפריים כדי להגיע למצב חוסר פעילות (למשל, באמצעות waitForIdle). הדבר עשוי להשפיע על בדיקות שמבצעות טענת נכוֹנוּת (assert) על פריימים נפרדים של אנימציות פריסה. (I8ea08, ‏ b/222093277)
  • הוספנו את TextMotion הניסיוני ל-TextStyle כדי להגדיר טקסט כ-Static(default) או כאנימציה. משתמשים ב-TextMotion.Animated אם רוצים לשנות את הגודל, התרגום או הסיבוב של הטקסט באמצעות אנימציה. (I24dd7)

שינויים ב-API

  • הארגומנט maxSize: IntSize בפונקציה drawText הוחלף ב-size: Size כדי להתאים לפונקציות אחרות של DrawScope. כברירת מחדל, size מוגדר כ-Size.Unspecified, והוא לא אמור לשנות את התנהגות ברירת המחדל הקודמת. (Icd27d)
  • הוסרה האפשרות ליצור גופני ניסיוניים. (I8a724, b/261435386)
  • לכיתה Group של נתוני ui tooling יש עכשיו שדה, isInline, שמציין אם הקבוצה מיועדת לקריאה לפונקציה שניתנת ליצירה בתוך שורה. אם הערך של isInline הוא true, הקריאה היא לפונקציה מורכבת בתוך שורה. עם זאת, הערך עשוי להיות false בקריאות לפונקציות שניתנות לקישור בקוד ממודולים שעבר הידור בגרסה של הפלאגין של ה-Compose Compiler שלא יוצרת את פרטי הפונקציה בקוד. (Idb846)
  • העברנו מספר ממשקי API שהיו בעבר ניסיוניים למצב יציב
  • ממשק ה-API של אירועי גלילה סיבובית יציב עכשיו (I42ad3, ‏ b/261561229)
  • ה-API של FontVariation יציב עכשיו (I8779f, ‏ b/241016309)
  • כל המשתנים ה-constructor של Font() הם עכשיו ממשק API יציב (I5948b, ‏ b/261435386)
  • DeviceFontFamilyName יציבה עכשיו (I8b640, ‏ b/261435386)
  • ה-constructor של AndroidFont עם variationSettings הוא עכשיו ממשק API יציב, וניתן להשתמש בו כדי ליצור סוגים חדשים של מתארי גופנים. (I5adcc, ‏ b/261565807)
  • ממשק ה-API של createFontFamilyResolver יציב עכשיו. אפשר להשתמש בזה כדי לתפוס חריגות שלא נלכדו במהלך טעינת גופנים אסינכרוני. (Ibb481, ‏ b/261435386)
  • ממשק ה-API של Font.loadingStrategy יציב עכשיו. (I5937c, ‏ b/261435386)
  • ממשק ה-API של GoogleFont יציב עכשיו. (Ic90b0, ‏ b/261435386)
  • TextUnit(float, TextUnitType) הוא עכשיו ממשק API יציב. (I90c84, ‏ b/261561612)
  • pluralStringResource הוא עכשיו ממשק API יציב. (I09849, ‏ b/261439703)

גרסה 1.4.0-alpha03

7 בדצמבר 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 משוחרר. גרסה 1.4.0-alpha03 כוללת את ההצהרות האלה.

שינויים ב-API

  • מתבצע תהליך הסרה של הקובץ ExperimentalComposeUiApi מהתיקייה PointerIcon (I23af8)
  • הצגת פעולות של נגישות בדף: PageUp, PageDown, PageLeft, PageRight. לתשומת ליבכם, האפשרויות האלה זמינות רק מ-API 29. (Ida4ab)
  • עדכנו את תצוגת הפרמטר rememberNestedScrollConnection מתצוגת הרמה הבסיסית לתצוגת המארח. (Ia5200)
  • הוספנו Modifier API לשליחת שאילתות לגבי פרטי גלילה של ישויות אב. (I2ba9d, ‏ b/203141462)
  • משמש ב-Clickable כדי לעכב בצורה נכונה אינטראקציות של הקשה, כשתנועות עלולות להפוך לאירועי גלילה.
  • תוקנה בעיה שבה Clickables לא עכב את הרטט בצורה נכונה כשמשתמשים בו בתוך Scrollable ViewGroup.
  • עדכנו את התכונות 'תיבות הצירים' ו'גיליונות' כדי לעכב בצורה נכונה את הלחיצות במקרה שהתנועות עלולות להפוך לאירועי גלילה.
  • השם של CompositingStrategy.Always שונה ל-Offscreen כדי לציין שה-graphicsLayer תמיד יומר למאגר ביניים (I47dc1)
  • עומס יתר בפריסה עם כמה משבצות תוכן יציב עכשיו (I10566, ‏ b/248294649)
  • נוספו ממשקי API חדשים וניסיוניים, PerfettoTrace.record {} ו-PerfettoTraceRule, כדי לתעד עקבות של Perfetto (שנקראים גם 'עקבות מערכת') כחלק מבדיקה, כדי לבדוק את ההתנהגות והביצועים של הבדיקה. (I3ba16)
  • בבדיקות ממשק משתמש שמשתמשות בכלל Compose, ההמשכות שהתחדשו במהלך קריאות חזרה (callbacks) של withFrameNanos לא יישלחו עד שכל הקריאות החוזרות של המסגרות יסתיימו. זה תואם להתנהגות של compose כשהוא פועל באופן רגיל. עם זאת, בדיקות שמסתמכות על ההתנהגות הישנה עשויות להיכשל. השינוי הזה אמור להשפיע רק על קוד שמפעיל את withFrameNanos או את withFrameMillis ישירות, ויש לו לוגיקה מחוץ לפונקציית הקריאה החוזרת שמועברת לפונקציות האלה, וייתכן שיהיה צורך להעביר אותה לתוך הפונקציות האלה. דוגמאות לשינויים בבדיקת האנימציה מופיעות ב-CL הזה.
  • נוספה פרמטר onPerformTraversals: (Long) -> Unit אופציונלי ל-constructor ולפונקציית ה-factory של TestMonotonicFrameClock כדי להריץ קוד אחרי קריאות חוזרות (callbacks) של withFrameNanos, אבל לפני שממשיכים את רצפי הפעולות החוזרות (coroutines) של מבצעי הקריאה החוזרת. (Idb413, ‏ b/254115946, ‏ b/222093277, ‏ b/255802670)
  • הוספנו את EmojiCompat לתיבת הכתיבה (Ibf6f9, ‏ b/139326806)
  • נוספה פרמטר חדש של טפט ל-@Preview לתמיכה בצבע דינמי (I9f512)

תיקוני באגים

  • התראות על החלת קובץ snapshot נשלחות עכשיו אחרי ש-Recomposer מסיים להחיל את השינויים. (Iad6c0, ‏ b/222093277)
  • הוספנו שינויים ב-captureToImage כדי לאפשר צילום צילומי מסך של כמה חלונות. האפשרות הזו שימושית לבדיקות של צילומי מסך שמשתמשות בחלונות קופצים של כתיבה. (I169c5)

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

  • Compose UI ו-Compose Material תלויים עכשיו ב-Lifecycle 2.5.1. (I05ab0, ‏ b/258038814)

גרסה 1.4.0-alpha02

9 בנובמבר 2022

androidx.compose.ui:ui-*:1.4.0-alpha02 משוחרר. גרסה 1.4.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

  • עודכנה ההגדרה GraphicsLayerScope כדי לחשוף את הגודל הנוכחי של graphicsLayer. האפשרות הזו שימושית לחישוב טרנספורמציות graphicsLayer כפונקציה של הגודל של Composable. (If8c43,‏b/181387080)
  • הוספנו את CompositingStrategy כדי לקבוע מתי להשתמש בשכבת קומפוזיציה מחוץ למסך לצורך עיבוד של תוכן graphicsLayer. ההגדרה 'אוטומטי' שומרת על התנהגות ברירת המחדל, שבה המערכת משתמשת בשכבה באופן פנימי אם מוחלת אלפא או ב-RenderEffect/Overscroll. תמיד תהיה תמיד מאגר אופליין, שבו ModulateAlpha ימנע שימוש במאגר אופליין, ובמקום זאת ישנה כל אחת מההוראות לציור שתועדו ב-graphicsLayer. השימוש ב-ModulateAlpha עדיין יתבסס על מאגר נתונים זמני מחוץ למסך לצורך שימושים ב-RenderEffect/Overscroll (I25e82, ‏ b/256382834)
  • השדה invalidateSubtree() נוסף לשדה Modifier.Node כדי לאפשר ביטול תוקף של היררכיות שלמות לצורכי פריסה וציור. (I4bd90)
  • קידום rememberNestedScrollInteropConnection לגרסה היציבה. נוספה האפשרות להעביר תצוגת root אל rememberNestedScrollInteropConnection. כך התצוגה בהתאמה אישית תוכל להגיב טוב יותר למגבלות על גלילה, במיוחד בתצוגות לא סטנדרטיות (למשל ModalBottomSheetDialog). (I9e107)
  • נוספה ממשק ObserverNode שאפשר להשתמש בו בהטמעות של Modifier.Node שצריכות לקבל התראה כשערך שקראו בעבר השתנה (I5728b, ‏ b/247716483)
  • נוספה קונסטרוקטור חדש ל-Paint שמקבל android.graphics.Paint מקורי. הוספנו גם פונקציית תוסף toComposePaint() שממירה אובייקט Paint מקורי קיים ל-Compose Paint. (Ica91b)
  • הוספת FontFamily.Resolver.resolveAsTypeface חדש לשימוש ב-Android. (I8950b)
  • הוספת ToolingState כדי לאפשר לכלים לשנות מצבים פנימיים של Composable (Ie6614)
  • שינוי כלי הפיתוח כדי לספק תמיכה טובה יותר באנימציות חדשות שנוספו (I8677b)
  • נוספו הפרמטרים minLines, TextField ו-OutlinedTextField לטקסט של material ו-material3, שמאפשרים להגדיר את הגובה המינימלי של הרכיב לפי מספר השורות (I4af1d)

גרסה 1.4.0-alpha01

24 באוקטובר 2022

androidx.compose.ui:ui-*:1.4.0-alpha01 משוחרר. גרסה 1.4.0-alpha01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • נוספה שיטה חדשה, awaitEachGesture(), לזיהוי תנועות. הפונקציה פועלת באופן דומה ל-forEachGesture(), אבל הלולאה על התנועות פועלת לגמרי בתוך AwaitPointerEventScope, כך שאי אפשר לאבד אירועים בין איטרציות.
  • האפשרות forEachGesture() הוצאה משימוש לטובת awaitEachGesture() כי היא עלולה לגרום לאיבוד אירועים בין תנועות. (Iffc3f, ‏ b/251260206)
  • הוצאה משימוש של מיחזור אובייקטים של נגישות ב-androidx. גילינו שהשינויים בביצועים זניחים גם בגרסאות הנתמכות הוותיקות ביותר. (I0a961)
  • הוספנו את DrawStyle כמאפיין ניסיוני ל-TextStyle ול-SpanStyle כדי לאפשר ציור של טקסט עם קו מתאר. (If24b8, ‏ b/155421273)
  • AnnotatedString.Builder מטמיע עכשיו את kotlin.text.Appendable. (I1a061, ‏ b/231030444)
  • ל-AnnotatedString.Builder יש עכשיו שיטה append(AnnotatedString, start: Int, end: Int) להוספת מחרוזת משנה של AnnotatedString ואת הסגנונות המתנגשים.
  • נוספה הפרמטר DrawStyle לפונקציות הציור Paragraph ו-MultiParagraph, שמאפשר לצייר טקסט עם קו מתאר. (Ic8102, ‏ b/155421273)

תרומה חיצונית

  • תודה ל-vighnesh על הוספת מכשירי טלוויזיה לתצוגות המקדימות (Ie15cd)

גרסה 1.3

גרסה 1.3.3

11 בינואר 2023

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

תיקוני באגים

  • תוקנה קריסה שמתרחשת לפעמים ב-Android 9 כשהפעילות שומרת את המצב של תצוגת הכתיבה. (I0b755, ‏ b/260322832)

גרסה 1.3.2

7 בדצמבר 2022

androidx.compose.ui:ui-*:1.3.2 משוחרר. גרסה 1.3.2 מכילה את ההצהרות האלה.

תיקוני באגים

  • העדכון כולל שימוש ב-Profobuf 3.21.8, כדי למנוע התראת אבטחה ב-protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

גרסה 1.3.1

9 בנובמבר 2022

androidx.compose.ui:ui-*:1.3.1 משוחרר. גרסה 1.3.1 מכילה את השמירות האלה.

גרסה 1.3.0

24 באוקטובר 2022

androidx.compose.ui:ui-*:1.3.0 משוחרר. גרסה 1.3.0 כוללת את ההצהרות האלה.

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

  • חבילת API ניסיונית חדשה LookaheadLayout (מאפשרת התנהגויות אנימציה שלא היו אפשריות בעבר)
  • חבילת API ניסיונית חדשה Modifier.Node (חלופה בעלת ביצועים גבוהים יותר ל-Modifier.composed)
  • תמיכה משופרת בחלונות מוטמעים.
  • תמיכה במיקוד בלחצני D-Pad ובמקלדת חומרה ב-LazyLists.
  • גובה ההגבהה המקסימלי שנתמך בתיבת דו-שיח ובחלונות קופצים הופחת ל-8dp (שינוי משמעותי בהתנהגות של חלק ממערכות העיצוב בהתאמה אישית – הסיבה לכך מפורטת בהערות למהדורה beta01)
  • הרבה שיפורים קלים ב-API שלא משבשים את הקוד
  • תיקוני באגים ושיפורי ביצועים רבים

גרסה 1.3.0-rc01

5 באוקטובר 2022

androidx.compose.ui:ui-*:1.3.0-rc01 משוחרר. גרסה 1.3.0-rc01 כוללת את ההצהרות האלה.

שינויים ב-API

  • נוספו מקפים ניסיוניים חדשים ל-API כדי לתמוך בהוספת מקפים אוטומטית בטקסט (Iaa869)

תיקוני באגים

  • הגופנים של DeviceFontFamilyName לא יגדירו את הגדרות הווריאציות של wght ו-ital כברירת מחדל, אלא ישתמשו בהגדרות הפלטפורמה של Typeface שהוטען. (Ia7a6d, ‏ b/246989332)
  • תוקנה דליפת זיכרון ב-LazyColumn – לא הייתה קריאה ל-onModifierLocalsUpdated עם ערך ברירת המחדל כשנעשה שימוש חוזר במודיפיקטורים (b/230168389)

גרסה 1.3.0-beta03

21 בספטמבר 2022

androidx.compose.ui:ui-*:1.3.0-beta03 משוחרר. גרסה 1.3.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • הוספת אפשרויות להתאמה אישית של חלוקת הטקסט לשורות. (I86907)
  • שינינו את הארגומנט size:IntSize ל-constraints: Constraints בשיטה TextMeasurer.measure כדי לתמוך באילוצים של רוחב מינימלי. (I37530, ‏ b/242707525)

תיקוני באגים

  • ממשק ה-API BackHandler של AndroidX Activity פועל עכשיו בתוך Dialog composable. (I35342)

גרסה 1.3.0-beta02

7 בספטמבר 2022

androidx.compose.ui:ui-*:1.3.0-beta02 משוחרר. גרסה 1.3.0-beta02 מכילה את ההצהרות האלה.

שינויים ב-API

  • הוספנו עומס יתר ניסיוני ל-Layout שמקבל רשימה של כמה פונקציות lambda של תוכן שניתנות ליצירה, ומאפשר לטפל במדדים שנוספו לפונקציות lambda שונות של תוכן באופן שונה (Ic1b4e)

שינויים בממשקי Focus API הניסיוניים:

  • התכונות FocusDirection.In ו-FocusDirection.Out הוצאו משימוש והוחלפו ב-FocusDirection.Enter וב-FocusDirection.Exit. (Ia4262, ‏ b/183746982)
  • נוספו שני מאפייני התמקדות חדשים – כניסה ויציאה – כדי לציין התנהגות מותאמת אישית ל-FocusManager.moveFocus(Enter) ול-FocusManager.moveFocus(Exit). (I5f3f9, ‏ b/183746982)
  • עכשיו אפשר להשתמש במקש FocusRequester.Cancel כדי לבטל העברת המיקוד. אפשר להשתמש ב-FocusRequester.Cancel בכל אחד ממאפייני המיקוד הבאים: למעלה, למטה, ימינה, שמאלה, הבא, הקודם, התחלה, סיום, Enter ויציאה. (Ib300f)

גרסה 1.3.0-beta01

24 באוגוסט 2022

androidx.compose.ui:ui-*:1.3.0-beta01 משוחרר. גרסה 1.3.0-beta01 מכילה את ההצהרות האלה.

שינוי מבנה של צומת של משתנה שינוי

השכבה שמטפלת במופעי Modifier/Modifier.Element ומתואמת את ההתנהגות שלהם ב-LayoutNodes עברה שינוי משמעותי. במצב הנוכחי, מדובר בשיפור קוד שלא השפיע על ממשק ה-API הציבורי של אף אחד מהמפעילים הרבים ב-Compose, וניתן להתייחס אליו כאל שינוי בהטמעה בלבד. עם זאת, זהו שינוי חשוב מכמה סיבות. (Ie4313)

סיכום השינויים

ממשקי ה-API הניסיוניים של Modifier.Node מספקים הפשטה שמאפשרת לשמור מצב במכונה שתישמר במחזור החיים של צומת הפריסה, ותוקצה לכל צומת פריסה לכל שימוש ב-Modifier.Element התואם שיצר אותה.

באופן כללי, ההפשטה הזו מספקת מנגנון חלופי ליצירת משתני סטטוס ללא הסתמכות על המנגנונים של ממשק ה-API Modifier.composed.

סיכון

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

מומלץ לשדרג לגרסה הזו בזהירות. אם לדעתך משהו השתבש, אפשר ליצור איתנו קשר.

ממשקי API ניסיוניים

נוספו ממשקי API ניסיוניים שונים, כולם קשורים למושג החדש 'צומת שינוי'. רכיבי Modifier.Node נוצרים כתוצאה מ-

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

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

גובה ההגבהה המקסימלי בתיבות דו-שיח ובחלונות קופצים הופחת ל-8dp.

גובה ההגבהה המקסימלי שנתמך בתיבת הדו-שיח ובחלונות הקופצים של Compose הופחת מ-30dp ל-8dp. השינוי הזה משפיע גם על חלונות דו-שיח וחלונות קופצים בהתאמה אישית של Material וגם על חלונות דו-שיח וחלונות קופצים בהתאמה אישית של ממשק המשתמש. השינוי הזה נעשה כדי לצמצם באג בנגישות בגרסאות Android שקודמות ל-S, וכדי להבטיח ששירותי הנגישות בחלונות האלה יוכלו לקיים אינטראקציה עם התוכן בתיבת הדו-שיח או בחלון הקופץ.

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

שינויים ב-API

  • תוקנה בעיה שבה painterResource לא התעדכן בשינויים בהגדרות (I58e73, ‏ b/228862715)
  • הפרמטר rememberTextMeasurer לא מקבל יותר פרמטרים מסוג FontFamily.Resolver,‏ Density או LayoutDirection. יש להשתמש ב-constructor‏ TextMeasurer כדי לספק ערכים מותאמים אישית לפרמטר האלה. (Ia1da3)
  • הוסף הנכס DialogProperties.decorFitsSystemWindows כדי לאפשר לתיבות דו-שיח לתמוך ב-WindowInsets. (I57742, ‏ b/229378542)
  • העברנו את ה-constructors של הגופנים לקובץ ה-Kotlin המקורי כדי לשמור על תאימות בינארית. אין שינוי מהגרסה היציבה האחרונה. (Ieb2f3)
  • הוסר אופרטור מיותר מכמה הגדרות של שוויון – אין לכך השפעה. (I6c309)
  • FontVariation.Setting הוא ממשק סגור, שמאפשר להשתמש ב-APIs לחיתוך בעתיד. (I11021, ‏ b/143703328)
  • מוסיפים את CompositionGroup.findParameters ל-SlotTree.kt. כך כלים יכולים לאחזר פרמטרים של CompositionGroup בלי לנתח את טבלת המודעות כולה. (I124fe)

גרסה 1.3.0-alpha03

10 באוגוסט 2022

androidx.compose.ui:ui-*:1.3.0-alpha03 משוחרר. גרסה 1.3.0-alpha03 מכילה את ההצהרות האלה.

שינויים ב-API

  • LayoutCoordinates.findRootCoordinates() זמין עכשיו לכולם (I7fa37, ‏ b/204723384)
  • הוספנו ממשק API ניסיוני כדי לקבל את LayoutCoordinates ב-PlacementScope. כך המפתחים יכולים לדעת איפה המיקום הנוכחי של הפריסה כדי למקם את הצאצאים ביחס למיקום שלה. (I5482b, ‏ b/238632578)
  • הוספנו את LayoutCoordinates.transformFrom כדי לקבל את טרנספורמציית המטריצה מ-LayoutCoordinates אחד ל-LayoutCoordinates אחר. (Ic5ab1, ‏ b/238632578)
  • הוצאנו משימוש את SemanticsModifier.id והעברנו את מזהה הסמנטיקה ל-LayoutInfo.semanticsId במקום זאת. (Iac808, ‏ b/203559524)
  • הגדרות הגופן של משאבי הגופנים תומכות עכשיו בהגדרת הגדרות של וריאציות גופן (API מגרסה 26 ואילך). (I900dd, ‏ b/143703328)
  • תמיכה בגופנים משתנים ב-DeviceFontFamilyNameFont (Ic1279, ‏ b/143703328)
  • הרשימה FontVariation.Setting יכולה להיכלל עכשיו בבוררים של גופנים כדי להגדיר גופנים משתנים במכשירי O+ ואילך. (I11a9d, ‏ b/143703328)
  • הוספת API של FontVariation להגדרה של גופנים משתנים ולהשתמש בהם. (I3c40c, ‏ b/143703328)
  • ה-constructor של LineHeightStyle.Alignment הוא עכשיו ציבורי (ניסיוני) (I4bbbe, b/235876330)
  • עכשיו אפשר להגדיר את הפרמטר Paragraph כ-expect|actual ב-Android ובמחשב. (Id387e, ‏ b/239962983)
  • Interface Paragraph is now sealed interface Paragarph. אין תרחיש לדוגמה שבו כדאי ליצור קטגוריה משנית של פסקאות, ואנחנו ממליצים לפנות אלינו אם השינוי הזה משפיע עליכם. (If5247, ‏ b/239962983)
  • ההערה הניסיונית הוסרה מ-PlatformTextStyle ומ-LineHeightStyle. (I64bef)
  • הוצאה משימוש של TextInputService.show|hideSoftwareKeyboard. במקום זאת, צריך להשתמש ב-SoftwareKeyboardController בקוד האפליקציה וב-TextInputSession בקוד לניהול IME. (I14e4c, ‏ b/183448615)
  • הוספת API חדש לסוגים קיימים של אנימציה (I26179)

תיקוני באגים

  • הוספנו את @RequiresPermission לממשקי API שדורשים להעניק את ההרשאה POST_NOTIFICATIONS ב-SDK 33 ואילך. (Ie542e, ‏ b/238790278)

גרסה 1.3.0-alpha02

27 ביולי 2022

androidx.compose.ui:ui-*:1.3.0-alpha02 משוחרר. גרסה 1.3.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

  • הוספנו נכס חדש PointerInputChange#pressure כדי לאחזר את הלחץ. (I45a5e, ‏ b/205164819)
  • הוספנו את rememberTextMeasurer כדי ליצור בקלות מכונות TextMeasurer ולזכור אותן בזמן הכתיבה. (I8d66e)
  • Rect,‏ RoundRect ו-MutableRect תומכים עכשיו בתחביר in של Kotlin להפעלת הפונקציה contains. (Ie42b0, ‏ b/238642990)
  • מסירים פונקציות מיותרות מ-KeyInjectionScope, כי אפשר להטמיע אותן בקלות באמצעות חלקים פשוטים יותר של ה-API. הפונקציות שהוסרו כוללות את pressKeys, ‏ keysDown ו-keysUp. (I81d77)
  • שמות הקבועים והפרמטרים ב-KeyInjectionScope עברו ריפרקטור (refactoring) כך שיכללו את הסיומת 'Millis', כאשר היחידות של הקבועים והפרמטרים האלה הן אלפיות שנייה. (Iabef5)
  • הוספנו את השיטה toStringForLog() ל-EditCommand כדי לעזור בפתרון בעיות בעריכת טקסט. (I53354, ‏ b/228862731)
  • הוספנו את פונקציית התוסף drawText ל-DrawScope כדי לספק דרך לצייר טקסט עם כמה סגנונות ברכיבים מורכבים ובמודיפיירים שפועלים על DrawScope, כמו Canvas ו-drawBehind. (I16a62, b/190787898)
  • הצגת ממשק API ניסיוני חדש בשם TextMeasurer שמאפשר חישוב שרירותי של פריסת טקסט שיוצר תוצאות זהות ל-BasicText, ללא קשר לסביבת זמן הריצה של Compose. (I17101)
  • מוסיפים את mapTree ל-SlotTree.kt. כך כלים יכולים לבדוק את SlotTree בלי ליצור קודם עותק בזיכרון, כמו ש-asTree עושה. ב-Layout Inspector, השינוי הזה משפר את הביצועים פי 10 בערך. (I5e113)
  • שינינו את Compose Preview כך שיישמר בקובצי פלט בינאריים, כדי לאפשר למפתחים לכתוב הערות MultiPreview מספריות ולעשות בהן שימוש חוזר. (I85699, ‏ b/233511976)

תיקוני באגים

  • כשמוסיפים אירועי InputEventChange למעקב אחרי Velocity, מעכשיו נביא בחשבון דלתא במקום מיקומים. כך נבטיח שהמהירות מחושבת בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (Icea9d,‏ b/216582726,‏ b/223440806,‏ b/227709803)
  • תיקון שגיאת NPE שנגרמת על ידי AnnotatedString.toUpperCase כשיש הערות. (I0aca2, ‏ b/210899140)

גרסה 1.3.0-alpha01

29 ביוני 2022

androidx.compose.ui:ui-*:1.3.0-alpha01 משוחרר. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • LookaheadLayout חדש שתומך במעבר מבט קדימה לפני המדידה או הפריסה בפועל. כך אפשר לחשב מראש את הפריסה כשהיא משתנה, תוך מתן אפשרות למדד/לפריסה של lookahead להשתמש בגודל/במיקום שחושבו מראש כדי ליצור אנימציה של הגודל והמיקומים לעבר היעד. SubcomposeLayouts עדיין לא נתמכים, אבל הם יהיו זמינים בגרסה עתידית. (I477f5)
  • מוסיפים פרמטר אלפא אופציונלי לסוג המברשת של TextStyle ו-SpanStyle כדי לשנות את האטימות של כל Text. (Ic2fac, ‏ b/234117635)
  • הוספנו את סוג ההערה UrlAnnotation ואת השיטות המשויכות כדי לתמוך בתמיכה בקישור TalkBack ב-AnnotatedString. (I1c754, ‏ b/231495122)
  • העברת הפונקציונליות של השירות לזמן הריצה (I4f729)

תיקוני באגים

  • TextLayoutResult.getLineForOffset לא יגרום להשלכה. (Idc5d6, ‏ b/235876324)

תרומה חיצונית

  • נוספה ממשק API חדש WindowInfo.keyboardModifiers כדי לצפות במצב שלו בתוך פונקציות שניתנות ליצירה או דרך snapshotFlow‏ (Icdb8a)

גרסה 1.2

גרסה 1.2.1

10 באוגוסט 2022

androidx.compose.ui:ui-*:1.2.1 משוחרר. גרסה 1.2.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן שגיאת nullpointer בכלי הבדיקה (b/237987764)
  • תוקנה חריגה של הטמעת סוג במהלך שמירה ב-inspector (b/235526153)

גרסה 1.2.0

27 ביולי 2022

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

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

  • שיפורים בתנועה באמצעות מקש המיקוד:

    • עכשיו אפשר לגלול ברשימות עם טעינה איטית לפי המיקוד באמצעות ה-API הליבה החדש BeyondBoundsLayout
    • ממשקי API חדשים להתאמה אישית של התנהגות ב-FocusOrder וב-FocusProperties
    • התנהגות משופרת עם מקלדת פיזית או שלט רחוק לטלוויזיה
  • ממשקי API חדשים ל:

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

גרסה 1.2.0-rc03

29 ביוני 2022

androidx.compose.ui:ui-*:1.2.0-rc03 משוחרר. גרסה 1.2.0-rc03 כוללת את ההצהרות האלה.

  • אין שינויים מאז 1.2.0-rc02.

גרסה 1.2.0-rc02

22 ביוני 2022

androidx.compose.ui:ui-*:1.2.0-rc02 משוחרר. גרסה 1.2.0-rc02 כוללת את ההוספות האלה.

גרסה 1.2.0-rc01

15 ביוני 2022

androidx.compose.ui:ui-*:1.2.0-rc01 משוחרר. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.

שינויים ב-API

  • ממשקים בספריות של compose נוצרים עכשיו באמצעות שיטות ברירת המחדל של ממשק jdk8‏ (I5bcf1)
  • נוספו פונקציות של סדר גבוה יותר ל-KeyInjectionScope כדי להחדיר לחיצות על מקשים בזמן שמקשים אחרים מוחזקים או מופעלים. הפונקציות האלה כוללות את withKeysDown, ‏ withKeysToggled וכו'. נוספו גם מאפיינים לבדיקת אם מקש מטא מסוים לחוץ, לדוגמה, isCtrlDown כדי לבדוק אם אחד ממפתחות הבקרה לחוץ. מסמכי התיעוד של כל פונקציה זמינים בכתובת KeyInjectionScope. (I9f6cd, ‏ b/229831515)
  • הוספנו OverscrollEffect ניסיוני כדי לאפשר אפקטים מותאמים אישית של גלילה מעבר לקצה המסך, לצד עומסי יתר של Modifier.scrollable שמקבלים אותו.
  • הגרסה הניסיונית LocalOverScrollConfiguration הועברה מחבילה foundation.gesture לחבילת הבסיס, ושמה שונה ל-LocalOverscrollConfiguration (If19fb,‏ b/204650733)
  • משנים את השם של runComposeUiTestWithoutActivity {} ל-runEmptyComposeUiTest {}, כדי להתאים אותו ל-createEmptyComposeRule() (I6fed7)

גרסה 1.2.0-beta03

1 ביוני 2022

androidx.compose.ui:ui-*:1.2.0-beta03 משוחרר. גרסה 1.2.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים.

שינויים ב-API

  • pressKeyTimes, וגם isCapsLockOn וחברים נוספים נוספו ל-KeyInjectionScope. בנוסף, ה-API תומך עכשיו בדפוסי הזרקה משולבים של עכבר ומקלדת, כמו לחיצה על לחצן עכבר תוך לחיצה על מקש Meta. (I4c8da, ‏ b/229831515)
  • נוספה תמיכה ניסיונית בהחדרת אירועים מרכזיים. משתמשים ב-performKeyInput כדי לשלוח אירועי מפתח, או שולחים אותם דרך המאפיין key של MultiModalInjectionScope במהלך תנועת קלט מרובת-מודלים באמצעות performMultiModalInput. תיעוד של ה-API זמין בכתובת KeyInjectionScope. (Ic5000, ‏ b/229831515)
  • הוספת GoogleFont.Provider.AllFontsListUri חדש לאחזור המקור הקנוני באינטרנט של Google Fonts שנתמכים ב-Android.
  • שיפרנו את הודעות השגיאה שמופצות מחדש כש-GoogleFonts לא מצליח לטעון בזמן כתיבת אימייל. (I0416c)

תיקוני באגים

  • כשמוסיפים אירועי InputEventChange למעקב אחר מהירות, מעכשיו נביא בחשבון דלתא במקום מיקומים. כך נבטיח שהמהירות מחושבת בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (I51ec3,‏ b/216582726,‏ b/223440806,‏ b/227709803)
  • ההגדרה Show Layout Bounds תחול עכשיו על רכיבים מורכבים מיד אחרי שמפעילים או משביתים אותה מתוך משבצת ההגדרות המהירות, בלי שתצטרכו לצאת מהפעילות ולהיכנס אליה מחדש. (I843d5, ‏ b/225937688)
  • חיפוש מחרוזת נגישות לא מפעיל טעינת גופן. בעבר, המערכת ניסתה לטעון גופנים עבור StyleSpans, מה שהוביל לקריסות אם FontFamily.Resolver נמחק. (I4609d)
  • לחיצה על מקש המחיקה קדימה כשהסמן נמצא בסוף שדה טקסט לא תגרום יותר לקריסה.
  • עכשיו, הארגומנטים של ה-constructor של DeleteSurroundingTextCommand ו-DeleteSurroundingTextInCodePointsCommand חייבים להיות לא שליליים. (Ica8e6, b/199919707)

גרסה 1.2.0-beta02

18 במאי 2022

androidx.compose.ui:ui-*:1.2.0-beta02 משוחרר. גרסה 1.2.0-beta02 מכילה את ההצהרות האלה.

שינויים ב-API

  • שימוש חוזר בפונקציונליות בסוגי תצוגה מקדימה אחרים (I19f39)

תיקוני באגים

  • השם של השדה ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer השתנה ל-DisposeOnDetachedFromWindowOrReleasedFromPool כדי לשקף בצורה טובה יותר מתי מתרחשות פעולות סילוק, ולא רק מתי הן לא מתרחשות. (If15ca)

גרסה 1.2.0-beta01

11 במאי 2022

androidx.compose.ui:ui-*:1.2.0-beta01 משוחרר. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.

תכונות חדשות

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

שינויים ב-API

  • נוספה תכונה ניסיונית BeyondBoundsInterval שאפשר להשתמש בה בהטמעות בהתאמה אישית של LazyList כשהן מתכננות את הפריסה של פריטים מעבר לגבולות הגלוי (Ifabfb, ‏ b/184670295)
  • גרסאות עם מפתחות של Modifier.composed הן עכשיו API יציב (Ie65e4, ‏ b/229988420)
  • הפשטנו את ה-API של rememberNestedScrollConnection כך שישתמש במשתני מקומיים של קומפוזיציה כדי לקבל את פרטי התצוגה הנוכחית (I67ca7)
  • עכשיו אפשר להשתמש בהערה @ComposableTarget ובהערות שמסומנות ב-@ComposableTargetMarker ברמת הקובץ באמצעות הקידומת @file. שימוש בהערה של יעד ברמת הקובץ יגרום למהדר להניח שכל הפונקציות הניתנות ליצירה בקובץ נועדו לטרגט את האפלייטור המשויך. לדוגמה, השימוש ב-@file:UiComposable מצהיר שכל הפונקציות של @Composable מטרגטות את ה-applier של Compose UI. פונקציה שצריכה לטרגט מחבר אחר צריכה לספק במפורש את ההערה של סמן היעד למחבר הרצוי. (I40804)
  • הוסף ממשק API לבדיקה חדש, ניסיוני ולא תלוי פלטפורמה: interface ComposeUiTest ו-fun runComposeUiTest(block: ComposeUiTest.() -> Unit), שאפשר להשתמש בהם כדי להריץ בדיקות של Compose Ui בלי צורך ב-TestRule. כדי להריץ בדיקה ללא ComposeTestRule, מעבירים את הבדיקה כפונקציית lambda אל runComposeUiTest ומשתמשים בשיטות ובחברים בהיקף הנמען ComposeUiTest, שהם אותם אלה שב-ComposeContentTestRule.

    הערכים interface AndroidComposeUiTest ו-fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) ספציפיים ל-Android, והם מתווספים כדי לספק גישה ל-Activity הבסיסית, בדומה ל-AndroidComposeTestRule. כדי לקבל שליטה רבה יותר, אפשר ליצור class AndroidComposeUiTestEnvironment בעצמכם.

    ההטמעה במחשב היא class DesktopComposeUiTest, אבל בשלב הזה אין פונקציות ריצה ספציפיות למחשב.

    אפשר להעביר בדיקה מ-ComposeTestRule ל-ComposeUiTest באופן הבא (דוגמה ל-Android). מאת:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    אל:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • בשלב הזה, ComposeContentTestRule ו-ComposeTestRule לא מורחבים מ-ComposeUiTest, כלומר עדיין אי אפשר להפעיל פונקציות של תוספים ב-ComposeUiTest בממשק TestRule. כש-ComposeUiTest יועבר ל-API יציב, ComposeContentTestRule ו-ComposeTestRule ישתנו כך שירחיבו את ComposeUiTest. (Ib4e90)

  • השם של LineHeightBehavior השתנה ל-LineHeightStyle

  • השם של LineVerticalAlignment השתנה ל-LineHeightStyle.Alignment

  • שינוי שם השם של LineHeightTrim שונה ל-LineHeightStyle.Trim

  • הערכים של מגדיר המבנה (constructor) שמוגדר כברירת מחדל ב-LineHeightStyle הוסרו (I582bf, ‏ b/181155707)

  • הוספנו את Brush ל-TextStyle ול-SpanStyle כדי לספק דרך לצייר טקסט עם צבע פסגה. (I53869, ‏ b/187839528)

  • המאפיינים trimFirstLineTop ו-trimLastLineBottom של LineHeightBehavior השתנו למאפיין enum יחיד: LineHeightTrim. ל-LineHeightTrim יש 4 מצבים מוגדרים על ידי שני ערכים בוליאנים: FirstLineTop, LastLineBottom, Both ו-None (Ifc6a5, b/181155707)

  • הוספת LineHeightBehavior ל-TextStyle ול-ParagraphStyle. LineHeightBehavior קובע אם גובה השורה יחול על החלק העליון של השורה הראשונה ועל החלק התחתון של השורה האחרונה. הוא גם מגדיר את היישור של השורה במרחב שסופק על ידי TextStyle(lineHeight).

    לדוגמה, אפשר לקבל התנהגות דומה לזו שמוגדרת ב-CSS באמצעות LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • ההגדרות של trimFirstLineTop ו-trimLastLineBottom פועלות בצורה תקינה רק כאשר הערך של includeFontPadding הוא false. (I97332, b/181155707)

  • הפונקציות PlatformParagraphStyle.lerp ו-PlatformSpanStyle.lerp הופכות לפונקציות ברמה העליונה (I9a268)

תיקוני באגים

  • במסמכי התיעוד של PointerInputChange::copy מצוין עכשיו בצורה נכונה שמדובר בעותק שטחי. (I182f5)
  • תמיכה בשלוש נקודות כשהגובה מוגבל ולא מתאים לכל שורות הטקסט (Ie528c, ‏ b/168720622)
  • הפעלת ברירת המחדל includeFontPadding. אפשר להשבית את includeFontPadding באמצעות המאפיין TextStyle.platformTextStyle. בעתיד הקרוב נשנה את התנהגות ברירת המחדל, אבל עד אז זה יאפשר לנו לשלב בצורה טובה יותר שיפורים לגובה השורה (aosp/2058653) ולפתור בעיות של חיתוך TextField. (I01423, ‏ b/171394808)

תרומה חיצונית

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

גרסה 1.2.0-alpha08

20 באפריל 2022

androidx.compose.ui:ui-*:1.2.0-alpha08 משוחרר. גרסה 1.2.0-alpha08 מכילה את ההוספות האלה.

שינויים ב-API

  • הפונקציות pluralStringResource סומנו כניסיוניות כדי לאפשר התפתחות שתתמוך בעתיד בבינלאומיזציה טובה יותר. (If24e4)
  • עכשיו אפשר להשתמש בפרמטר Constraints ב-Paragraph וב-MultiParagraph. העברת הערך Constraints.maxHeight לא מבצעת פעולה כלשהי כרגע, אבל היא תאפשר לבצע חישובים מסוימים בעתיד, כמו חיתוך אליפסה על סמך הגובה. (I6afee, ‏ b/168720622)
  • עכשיו אפשר להשתמש ב-SubcomposeSlotReusePolicy.getSlotsToRetain() עם סוג של MutableSet בהתאמה אישית, שלא מאפשר להוסיף אליו פריטים חדשים. (Icd314)
  • PointerIcon הוא עכשיו ממשק @Stable (I9dafe)
  • האפשרות 'צריכה חלקית (מצב מושבת או מיקום)' הוצאה משימוש ב-PointerInputChange. אפשר להשתמש ב-consume() כדי לצרוך את השינוי באופן מלא. אפשר להשתמש ב-isConsumed כדי לקבוע אם מישהו אחר כבר נצל את השינוי.
  • PointerInputChange::copy() יוצרת עכשיו תמיד עותק שטחי. המשמעות היא שעותקים של PointerInputChange ייצרכו ברגע שאחד מהעותקים ינוצל. אם רוצים ליצור PointerInputChange ללא קישור, משתמשים במקום זאת ב-constructor. (Ie6be4, ‏ b/225669674)
  • מפעילים את יכולת הפעולה ההדדית של גלילה בתצוגת עץ בין Compose ל-View בכיוון Compose > View. המשמעות היא שהורה של רכיב ה-Compose יוכל לקבל תנועות גלילה בתצוגת גלילה בתצוגת גלילה בתצוגת גלילה. (If7949, ‏ b/174348612)
  • SemanticsProperty testTagsAsResourceId חדש, שאפשר להשתמש בו כדי להתאים את Compose לבדיקות UIAutomator שמיועדות למערכת View. (I39c20)
  • הצגת כל העיצובים הזמינים של גופנים מערכת ב-Android באמצעות FontFamily.SansSerif. ב-API 21-28, המערכת תשתמש בשמות גופנים חלופיים כמו sans-serif-medium באופן פנימי. זהו שינוי בהתנהגות, כי בעבר הייתה תמיכה רק במשקלים 400 ו-700 ב-API 21-28. (I380fe, ‏ b/156048036, ‏ b/226441992)
  • במדריכים מסוג Paragraph ו-Multiparagraph, ארגומנטים תלויי מיקום הוחלפו למיקום לפני ארגומנטים אופציונליים. (Idafaa)
  • עכשיו, AndroidFont מקבלת את typefaceLoader כפרמטר של ה-constructor. (I2c971)

גרסה 1.2.0-alpha07

6 באפריל 2022

androidx.compose.ui:ui-*:1.2.0-alpha07 משוחרר. גרסה 1.2.0-alpha07 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספה הפונקציה החדשה Snapshot.withoutReadObservation { ... }. היא מאפשרת למשתמשים להריץ את הפונקציה של Lambda שהועברה בלי להירשם לשינויים בערכים של המצב שנקראו במהלך הבלוק הזה. אפשר להשתמש ב-snapshot כזה בתרחישי שימוש שבהם רוצים ליהנות מהיתרונות של קריאה/כתיבה מבוססת-snapshot ללא סיכון לקריאה מחדש או למדידה מחדש מיותרת. (I9f365, ‏ b/214054486)
  • נכס התוסף consumeWindowInsets של ComposeView מאפשר למפתחים להשבית את השימוש ב-Android WindowInsets. כך אפשר להחיל WindowInsets בנפרד על כל ComposeViews בהיררכיה, בלי שהם יפריעו זה לזה. (I0ef08, b/220943142)
  • הוספנו את KeyboardType.Decimal כחלופה ל-Keyboard.Number כדי לכלול באופן ספציפי את המפריד העשרוני ב-IME. (Iec4c8, ‏ b/209835363)
  • PointerEventType.Scroll ו-PointerEvent.scrollDelta הם עכשיו ממשקי API יציבים (I574c5, ‏ b/225669674)
  • הפעלת יכולת הפעולה ההדדית של גלילה בתצוגה עץ בין View ל-Compose עבור כיתות View שתומכות בכך. המשמעות היא שאפשר עכשיו לשלוח את ההפרשים בגלילה לרכיב הורה של תצוגה (ששיתף פעולה). (I5d1ac, ‏ b/174348612)
  • עדכנו את FontFamily.Resolver כדי לשלב הגדרת נגישות של טקסט מודגש ברמת המערכת (I6c1e7)
  • האפשרות Font(AssetManager, String, ...) הוצאה משימוש והוחלפה ב-Font(String, AssetManager, ...). זהו ממשק API ניסיוני. (I1c7a4)
  • הוספת מאפיין גופן חדש Font(DeviceFontFamilyName) כדי לחפש גופנים שהותקנו במערכת במהלך רשתות גיבוי של גופנים (fallback). (I30468, ‏ b/219754572)
  • נוספה הגדרת תאימות זמנית ל-includeFontPadding ב-TextStyle/ParagraphStyle. אפשר לשנות את includeFontPadding דרך TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). זוהי אפשרות תצורה זמנית להפעלת ההעברה, והיא תוסר. (If47be, ‏ b/171394808)
  • מוסיפים את התוסף GoogleFont.Provider.isAvailableOnDevice כדי לקבל עזרה בניפוי באגים. (I64e31)
  • הוספת קונסטרוקטור של GoogleFont.Provider לשימוש עם @ArrayRes (Ic5ee1, ‏ b/225984280)
  • Compose GoogleFont נקרא עכשיו Font(GoogleFont), ה-API נשאר יציב בכל שאר הדברים. (I125f2)

תיקוני באגים

  • הוספנו בדיקת איתור שגיאות בקוד ל-material/Scaffold כדי לוודא שמשתמשים במרווח הפנימי (Ifb111)

גרסה 1.2.0-alpha06

23 במרץ 2022

androidx.compose.ui:ui-*:1.2.0-alpha06 משוחרר. גרסה 1.2.0-alpha06 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספה פעולת סמנטיקה RequestFocus לבקשת מיקוד ביעד שניתן להתמקד בו. (I17b71)
  • עדכון הניתוח של רכיבי drawable וקטוריים כדי לתמוך בהשתקפות אוטומטית של התוכן של VectorPainter אם כיוון הפריסה הנוכחי הוא RTL. (I79cd9, ‏ b/185760237)
  • עדכנו את הצבעים של הצללים/התאורה הסביבתית כך שיהיו פרמטרים נלווים של Modifier.graphicsLayer לצורך תאימות ל-API (I3f864, ‏ b/160665122)

  • הוספנו הטמעות ברירת מחדל לצבע הצללית/התאורה הסביבתית ב-GraphicsLayerScope כדי להבטיח ששינויים ב-API לא יגרמו לשיבושים

  • הוספת מועד אירוע לאירועי RSB (Ief8ae)

  • FocusOrder מוזג עכשיו ל-FocusProperties, ו-focusProperties() כולל עכשיו את כל היכולות של focusOrder(). התכונות FocusOrder ו-focusOrder() הוצאו משימוש. צריך להחליף את focusOrder() שמקבל focusRequester במשתנה focusRequester() בשילוב עם focusProperties(). כך אפשר להפריד בצורה טובה יותר בין הבעיות של המשתנים המשתנים. (I601b7)

  • שדרוג של RecyclerView וגם של Compose יביא עכשיו לביצועים טובים יותר של גלילה ב-RecyclerViews עם תצוגות Compose כצאצאים.

  • הוספת ViewCompositionStrategy.Default כדרך לאחזור אסטרטגיית ברירת המחדל המובנית

  • מוסיפים את ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, שהיא שיטת ברירת המחדל החדשה ומטפלת כראוי במאגרי מאגרים כמו RecyclerView. (If7282)

  • הוספנו תמיכה בהוספת הערות לכיתות של הערות באמצעות @Preview, כצעד ראשון להוספת התכונה 'תצוגות מקדימות מרובות'. אפשר להשתמש בהערות כאלה כדי להוסיף הערות לשיטות Composable או לכיתות הערה אחרות, שאפשר יהיה להתייחס אליהן כאל הערות עקיפות עם @Preview הנתון. (I12eff)

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

תיקוני באגים

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

תרומה חיצונית

  • compose-ui: הוספת המאפיינים ambientShadowColor ו-spotShadowColor ל-GraphicsLayerScope (I1ba1a, ‏ b/160665122)
  • עכשיו יש תמיכה במשאבים מרובים באמצעות הפונקציות pluralStringResource. (Ib2f23, ‏ b/191375123)

גרסה 1.2.0-alpha05

9 במרץ 2022

androidx.compose.ui:ui-*:1.2.0-alpha05 משוחרר. גרסה 1.2.0-alpha05 מכילה את ההוספות האלה.

שינויים ב-API

  • עכשיו אפשר להעביר ל-TextToolbar ארגומנטים של lambda במקום ActionCallback. (Ib2eb9, ‏ b/197950089)
  • עדכנו את האפשרות של ערך null ב-core וב-appcompat בהתאם ל-Tiramisu DP2 (I0cbb7)
  • הממשק למדידת ביצועים חושף עכשיו את המאפיין parentData‏ (I3313f)
  • Modifier.onPlaced והממשק של OnPlacedModifier יציב עכשיו. (Ib5482)
  • הידד! עכשיו יש תמיכה בהגדרה 'קנה מידה למשך זמן אנימציה' ביצירת אנימציה מתוך אפשרויות הפיתוח. (I5a4fc, ‏ b/161675988)
  • נוספה פונקציית שינוי מקומית של BeyondBoundsLayout (If8b51, ‏ b/184670295)
  • טקסט: ההגדרה includeFontPadding מושבתת עכשיו כברירת מחדל. המערכת מטפלת בבעיות החיתוך שנובעות מ-includeFontPadding=false, ולא אמורה להתרחש בעיית חיתוך בסקריפטים ארוכים. (I31c84, ‏ b/171394808)

תיקוני באגים

  • הפונקציה ComposeContentTestRule.setContent תגרום להודעת השגיאה IllegalStateException אם תנסו להגדיר תוכן שכבר קיים. (I888a5, ‏ b/199631334)
  • תיקון קריסה שנגרמה על ידי תוכן הלוח בזמן קריאה מהלוח ב-Android. (I06020, ‏ b/197769306)
  • שיפור של דגימות הגלילה ב-RSB. (I6a596)

תרומה חיצונית

  • העדכון כולל שימוש ב-Kotlinx coroutines 1.6.0 (I3366d)

גרסה 1.2.0-alpha04

23 בפברואר 2022

androidx.compose.ui:ui-*:1.2.0-alpha04 משוחרר. גרסה 1.2.0-alpha04 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספו ComposableTarget, ‏ ComposableTargetMarker ו-ComposableOpenTarget שמאפשרים לדווח בזמן הידור על קריאה של פונקציה הניתנת להגדרה שמטרגטת מחולל שמטרגט אחר לא תוכנן להשתמש בו.

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

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

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

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

  • תמיכה בטעינת גופן אסינכרוני בטקסט (I77057, ‏ b/214587005)

  • מוסיפים API של גשר להמרת Font.ResourceLoader בהתאמה אישית ל-FontFamily.Resolver. (Ia0060)

תיקוני באגים

  • הערכים של FontFamily.Resolver מועברים לקומפוזיציות משנה כמו Popup.
  • הערכים של Font.ResourceLoader מועברים לקומפוזיציות משנה כמו Popup. (I48fa5)

גרסה 1.2.0-alpha03

9 בפברואר 2022

androidx.compose.ui:ui-*:1.2.0-alpha03 משוחרר. גרסה 1.2.0-alpha03 כוללת את ההוספות האלה.

שינויים ב-API

  • השיטות של notifyFocusedRect ב-TextInputSession וב-TextInputService הוצאו משימוש ולא יתבצעו קריאות אליהן. במקום זאת, אתם צריכים להשתמש ב-BringIntoViewRequester. (Ia4302, ‏ b/192043120, ‏ b/216842427, ‏ b/178211874)
  • הוספת method‏ destroyDisplayListData למחלקת הסטאב RenderNode (I1e659, ‏ b/216660268)
  • נוספה ממשק API חדש שמאפשר למדוד מראש צאצאים של SubcomposeLayout שיצרתם מראש. (I857ea)
  • הוספנו את movableContentOf, שממירה פונקציית lambda שניתנת לקיפול לפונקציית lambda שמעבירה את המצב שלה ואת הצמתים התואמים לכל מיקום חדש שבו היא נקראת. כשהקריאה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני. אם קריאה חדשה ל-lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של הקריאה החדשה. אם לא תתווסף קריאה חדשה, המצב יוסר לתמיד, ותישלח התראה למשתמשי הצפייה.

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

  • FontFamilyResolver זמין עכשיו דרך LocalFontFamilyResolver.current

  • הוספנו את createFontFamilyResolver(context) ו-createFontFamilyResolver(context, coroutineScope) כדי ליצור פותרי FontFamily חדשים מחוץ לשימוש ב-Compose.

  • הרכיבים Paragraph ו-MultiParagraph מקבלים עכשיו את הערך FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver מכיל עכשיו את המפַתח שמשמש לפריסה הזו, והוא מחליף את TextLayoutResult.layoutInput.resourceLoader שכבר לא בשימוש. (Id5a45, ‏ b/174162090)

  • תמיכה בטעינה אסינכרונית ובטעינה אופציונלית של גופנים, עם התנהגות חלופית. הנתיב הזה משמש את Text ו-TextField, וחשוף דרך FontFamilyResolver

  • תמיכה בטעינה מראש של גופנים דרך FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext מאפשר להגדיר את ההקשר הגלובלי של פונקציית ה-coroutine שמשמש לטעינת גופנים אסינכרונים. (I87fe8, ‏ b/174162090)

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

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

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

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

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

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

  • ה-constructor של SubcomposeLayoutState שמקבל את maxSlotsToRetainForReuse הוצא משימוש. במקום זאת, יש קונסטרוקטור חדש שמקבל את SubcomposeSlotReusePolicy – ממשק חדש שמאפשר שליטה פרטנית יותר על החריצים שצריך לשמור לשימוש חוזר בעתיד. (I52c4d)

  • חשיפת הפונקציות HSV ו-HSL ב-Color כ-API לא ניסיוני. מרחב הצבעים Oklab הוא עכשיו API ציבורי. (I08fb6, ‏ b/180731008)

  • AndroidComposeTestRule.AndroidComposeStatement, שיצאה משימוש, לא הייתה אמורה להיכלל ב-API הציבורי ובכל מקרה לא עשתה כלום בשבילכם. (Ibc46b)

  • שינוי שם של כיתה kt שנוצרה באופן פנימי (Ia0b9e, ‏ b/174162090)

  • הוסר FontLoadingStrategy.values (I42a9d, ‏ b/174162090)

  • ה-Global font loader נקרא עכשיו FontFamilyResolver. (I4f773, ‏ b/174162090)

  • שימוש במערכת חדשה לטעינת גופנים במחשב. (I9ce5c, ‏ b/174162090)

  • הפונקציה FontFamily.Resolver.resolve מחזירה את הערך State<Any> (I4406c, ‏ b/174162090)

תיקוני באגים

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

גרסה 1.2.0-alpha02

26 בינואר 2022

androidx.compose.ui:ui-*:1.2.0-alpha02 משוחרר. גרסה 1.2.0-alpha02 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספו Modifier.onRotaryScrollEvent() ו-Modifier.onPreRotaryScrollEvent() למכשירי Wear עם לחצן צד מסתובב (I18bf5, ‏ b/210748686)
  • הוספת תוסף View.createLifecycleAwareRecomposer ניסיוני (I0cde6)

תרומה חיצונית

  • הערך של PointerEvent.scrollDelta.y הפוך עכשיו ב-Android (עכשיו הוא מחזיר 1 במקום -1 אם מטים את גלגל העכבר ימינה) (Ia9811)

גרסה 1.2.0-alpha01

12 בינואר 2022

androidx.compose.ui:ui-*:1.2.0-alpha01 משוחרר. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • FontFamily.canLoadSynchronously הוצא משימוש. למאפיין הזה אין משמעות סמנטית. (Ica5ef)
  • נוספו שדות זהות ל-CompositionData ליצירת מזהי Invariant ב-Layout Inspector. (Ic116e)
  • הוספת מזהי מכשירים של Wear OS לרשימת המכשירים לבדיקה (I93232)

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

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

גרסה 1.1

גרסה 1.1.1

23 בפברואר 2022

androidx.compose.ui:ui-*:1.1.1 משוחרר. גרסה 1.1.1 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון NullPointerException ב-androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, ‏ b/206677462)
  • תיקון קריסה שנגרמה על ידי תוכן הלוח בזמן קריאה מהלוח ב-Android. (I06020, ‏ b/197769306)
  • תוקנה בעיית RTL ב-LazyVerticalGrid (aosp/1931080, ‏ b/207510535)

גרסה 1.1.0

9 בפברואר 2022

androidx.compose.ui:ui-*:1.1.0 משוחרר. גרסה 1.1.0 כוללת את השמירות האלה.

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

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

גרסה 1.1.0-rc03

26 בינואר 2022

androidx.compose.ui:ui-*:1.1.0-rc03 משוחרר. גרסה 1.1.0-rc03 כוללת את ההוספות האלה.

תיקוני באגים

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

גרסה 1.1.0-rc01

15 בדצמבר 2021

androidx.compose.ui:ui-*:1.1.0-rc01 משוחרר. גרסה 1.1.0-rc01 כוללת את השמירות האלה.

תיקוני באגים

  • תוקן באג שגרם לפעולות גלילה של נגישות חסרות (I7cbfb)
  • עכשיו SemanticsNodeInteraction.captureToImage() יפעל גם אם HardwareRenderer.isDrawingEnabled() הוא false, על ידי הפעלתו למשך השיחה (Idf3d0)

גרסה 1.1.0-beta04

1 בדצמבר 2021

androidx.compose.ui:ui-*:1.1.0-beta04 משוחרר. גרסה 1.1.0-beta04 כוללת את ההצהרות האלה.

תכונות חדשות

  • עודכן כך שיהיה תואם ל-Kotlin 1.6.0

שינויים ב-API

  • ניקוי של nullability ב-androidx.core.view (I7078a, ‏ b/204917439)
  • נוספו ממשקי API ניסיוניים שמאפשרים למשתמשים לצרוך את PointerInputchange באופן מלא או לבדוק אם הוא נצרך או לא. (I2e59d)
  • הוספת תמיכה באירועים של גלגל הגלילה של העכבר בשכבת ממשק המשתמש. (Ia14eb, ‏ b/198214718)
  • הוספת עומסי יתר ניסיוניים של Modifier.composed שמקבלים מפתחות להשוואה לצורך בדיקת שוויון ועומדים בדרישות לדילוג על אופטימיזציות. (Ice799, ‏ b/205851704)
  • עכשיו ComposeNotIdleException מתחיל ב-Exception במקום ישירות ב-Throwable. חשוב לזכור: משמעות הדבר היא שתנאי catch שתפסו Exception עשויים עכשיו לתפוס ComposeNotIdleException, בעוד שבעבר הם לא היו עושים זאת. (I9c217)

תיקוני באגים

  • תוקנה בעיה שבה קטעי הטקסט לא זזו כשהשינויים בחשיפה של IME. (I25f2e)

גרסה 1.1.0-beta03

17 בנובמבר 2021

androidx.compose.ui:ui-*:1.1.0-beta03 משוחרר. גרסה 1.1.0-beta03 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוספנו את המשתנה החדש Modifier.onPlaced כדי לאפשר מעקב אחרי שינויים במיקום. לכן, אפשר לבצע שינויים נוספים בהיסט של המשתנה הצאצא על סמך השינוי שנצפה במיקום המודעה. (I558fd)
  • הוסר InjectionScope.flush() וגם InjectionScope.dispose(). עכשיו, מחיקת כל האירועים וסילוק ההיקף מתרחשים בסוף השיטה perform*Input()‎ שנקראת, כמו קודם. (I2bed8)
  • הוסר MultiModalInjectionScope.Touch וגם MultiModalInjectionScope.Mouse. כדי להחדיר אירועי מגע ועכבר לתנועות רב-מודאליות, אפשר עכשיו להשתמש ב-MultiModalInjectionScope.touch() וב-MultiModalInjectionScope.mouse(). שתי הפונקציות האלה מקבלות פונקציית lambda עם היקף הנמען של המודל הזה. (Idde18)

תיקוני באגים

  • ערך ברירת המחדל של durationMillis ב-TouchInjectionScope.swipeWithVelocity מחושב עכשיו כך שאפשר יהיה להחליק. (I19deb)

גרסה 1.1.0-beta02

3 בנובמבר 2021

androidx.compose.ui:ui-*:1.1.0-beta02 משוחרר. גרסה 1.1.0-beta02 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוספנו את BringIntoView API הניסיוני, שמאפשר לשלוח בקשה להורים כדי שהם יגללו כדי להציג פריט (Ib918d, b/195353459)
  • ממשקי API חדשים ליצירת אנימציות לצורך תמיכה בכלים. באופן ספציפי, הם מאפשרים לכלים לבדוק את האנימציות ואת ההגדרות שלהן ב-Transitions. (I4116e)

תרומה חיצונית

  • נוספה Modifier.pointerHoverIcon‏ (I95f01)

גרסה 1.1.0-beta01

27 באוקטובר 2021

androidx.compose.ui:ui-*:1.1.0-beta01 משוחרר. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוספנו ממשק API BringIntoView ניסיוני שמאפשר לשלוח בקשה להורים כדי שהם יגללו כדי להציג פריט (Ib918d, b/195353459)
  • ממשקי API חדשים ליצירת אנימציות לצורך תמיכה בכלים. באופן ספציפי, הם מאפשרים לכלים לבדוק את האנימציות ואת ההגדרות שלהן ב-Transitions. (I4116e)

גרסה 1.1.0-alpha06

13 באוקטובר 2021

androidx.compose.ui:ui-*:1.1.0-alpha06 משוחרר. גרסה 1.1.0-alpha06 מכילה את ההוספות האלה.

שינויים ב-API

  • הסרת ExperimentalComposeUiApi מהחשבונות ViewRootForInspector ו-LayoutInfo.ownerViewId (I5c2e3)
  • נוספה עומס יתר ללא צאצאים ל-Layout, עם יעילות משופרת (Ib0d9a)
  • הוסר InternalCompilerApi מהשיטות של Composer שנדרשות לקריאה במספר מודולים (I1aa0b)
  • עכשיו הפונקציה SemanticsNodeInteraction.performSemanticsAction מחזירה את SemanticsNodeInteraction שאליו הופעלה הפונקציה. (I9e5db)
  • נוספה LocalInputModeManager CompositionLocal כדי לזהות את המצבים TouchMode/NonTouchMode. (I6a83c, ‏ b/175899786)
  • הוספנו את viewConfiguration: ViewConfiguration ל-LayoutInfo כדי לאפשר לצרכנים לקבל את הערך הנכון לדברים כמו זמן קצוב ללחיצה ארוכה. (I76ca6)
    • הוספנו את viewConfiguration: ViewConfiguration ל-InjectionScope כדי לאפשר לבדיקות לשנות את הזרקת הקלט על סמך דברים כמו זמן קצוב ללחיצה ארוכה או זמן קצוב ללחיצה על מגע.
    • משך ברירת המחדל של לחיצה ארוכה והקשה כפולה, גם למגע וגם להזנת עכבר, השתנה כך שיהיה מבוסס על הערכים ב-InjectionScope.viewConfiguration.
  • הטמעה של ExposedDropdownMenu על סמך ExposedDropdownMenuBox עם TextField ו-DropdownMenu בתוכו (If60b2)
  • האפשרות dismissOnOutsideClick נוספה ל-PopupProperties, והיא מחליפה את dismissOnClickOutside שהוצאה משימוש. הנכס החדש מקבל את מיקום הקליק ואת גבולות העוגן, ומאפשר שליטה מדויקת יותר לגבי הקריאה ל-onDismissRequest. לדוגמה, אפשר להשתמש באפשרות הזו כדי למנוע סגירה של הצמדה במגעים על הצמדה.
    • הוספה של updateAndroidWindowManagerFlags ל-PopupProperties, שמאפשרת שליטה ברמה נמוכה על הדגלים שהחלון הקופץ מעביר ל-WindowManager של Android. הפרמטר של פונקציית ה-lambda יהיה הדגלים המחושבים מהערכים של PopupProperties שמובילים לדגלים של WindowManager: לדוגמה, focusable. התוצאה של הפונקציה הלימבית תהיה הדגלים הסופיים שיועברו ל-WindowManager של Android. כברירת מחדל, הפונקציה updateAndroidWindowManagerFlags לא תשנה את הדגלים המחושבים מהפרמטרים. צריך להשתמש ב-API הזה בזהירות, רק במקרים שבהם לחלון הקופץ יש דרישות התנהגות ספציפיות מאוד. (I6e9f9)
  • Recomposer.state הוצא משימוש והוחלף ב-Recomposer.currentState כדי לשנות את הסוג שלו ל-StateFlow‏ (Ic2ab3, ‏ b/197773820)
  • flush() ו-dispose() נוספו ל-InjectionScope. משתמשים בהן כשרוצים למחוק באופן מיידי את כל האירועים שנמצאים בתור, וכשרוצים למחוק את ההיקף. (Ifb73a)
  • נוספה הפונקציה performScrollToNode(matcher: SemanticsMatcher) שמגלגלת מאגר שניתן לגלילה אל התוכן שמתאים למתאמת הנתון. (Ic1cb8)
  • InjectionScope מטמיע עכשיו את Density, ומאפשר לכם להמיר בקלות בין px ל-dp ב-performTouchInput ובספריות הידידותיות. (I8fe1f)

תיקוני באגים

  • AndroidView מעביר עכשיו את LocalLifecycleOwner ו-LocalSavedStateRegistryOwner לתצוגה שלו באמצעות ViewTreeLifecycleOwner ו-ViewTreeSavedStateRegistryOwner. (I38f96, ‏ b/179708470)
  • תיקון של בעיה שבה לפעמים SwipeToDismissBox ב-WearOS לא מטפל בהחלקות. (I9387e)
  • זמן ברירת המחדל בין אירועי קלט מוזרקים השתנה מ-10 אלפיות השנייה ל-16 אלפיות השנייה. כתוצאה מכך, ייתכן שהתוצאות של בדיקות שמבצעות תנועות קלט, כמו החלקה ספציפית, ישתנו. (I829fd)

גרסה 1.1.0-alpha05

29 בספטמבר 2021

androidx.compose.ui:ui-*:1.1.0-alpha05 משוחרר. גרסה 1.1.0-alpha05 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספה תמיכה בתקשורת בין משתני פונקציה (Id5467, ‏ b/198826874)
  • הוספנו למאפיין PointerEventChange נקודות היסטוריות ניסיוניות. (Ic1fd8, ‏ b/197553056, ‏ b/199921305)
  • density: Density ו-layoutDirection: LayoutDirection נוספו ל-LayoutInfo. כך צרכני LayoutInfo יכולים לפרש בצורה נכונה את המאפיינים והמיקום שמוצגים ב-LayoutInfo. (I002f1)
  • נוספה תמיכה ניסיונית בהחדרת אירועי עכבר. משתמשים ב-performMouseInput כדי להתחיל לשלוח אירועי עכבר, או שולחים אירועי עכבר דרך המאפיין Mouse של MultiModalInjectionScope במהלך תנועת קלט רב-מודאלית עם performMultiModalInput. במסמכים של MouseInjectionScope מפורט מידע על ממשקי ה-API הזמינים. (Iaa4a8, ‏ b/190493367)

תיקוני באגים

  • תיקון בתמיכת הנגישות לגבי גלילה ברכיבים שניתן לגלול בהם (גם רכיבים עם טעינה איטית וגם רכיבים ללא טעינה איטית) (I6cdb0)
  • שיפור TouchInjectionScope.swipeWithVelocity. עכשיו אפשר להשתמש במגוון רחב יותר של משתני קלט, והמערכת תציע שינויים בקלט אם לא ניתן ליצור החלקה (I40fbe,‏ b/182477143)

גרסה 1.1.0-alpha04

15 בספטמבר 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 משוחרר. גרסה 1.1.0-alpha04 מכילה את ההוספות האלה.

שינויים ב-API

  • PointerEvent כולל עכשיו PointerEventType לתמיכה באירועי מעוף עכבר. (I091fa)
  • לאפשר לצאצאים לקבל קלט של סמן מחוץ למגבלות הקלט של הסמן של ההורה. הורים יכולים ליירט את הקריאות האלה באמצעות הנכס PointerInputScope.alwaysInterceptChildEvents‏ (I9eae3, ‏ b/192479655)
  • performGesture ו-GestureScope שהוצאו משימוש, והוחלפו ב-performTouchInput וב-TouchInjectionScope. (Ia5f3f, ‏ b/190493367)
  • הוספנו את touchBoundsInRoot ל-SemanticsNode, שמכיל את הגודל המינימלי של יעד המגע, כדי שמפתחים יוכלו לוודא יעדים של מגע עומדים בדרישות המינימליות של נגישות. (I2e14b, ‏ b/197751214)
  • ביצוע מחדש של ההטמעה של inspectable (I927bc, ‏ b/191017532)
  • שינינו את שם הפרמטר של הנכס הניתן לבדיקה כך שיתאים לנכס המורכב (I3a482, ‏ b/191017532)
  • הוספנו את performTouchInput ו-TouchInjectionScope כתחליף ל-performTouchInput ו-TouchInjectionScope, ופתחנו את הדרך למודלים אחרים (כמו עכבר).

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

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

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

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

תיקוני באגים

  • מאפשרים לקליפ להרחיב את גבולות יעד המגע מעבר לאזור הקליפ, למטרות של יעד מגע מינימלי. (I43e10, ‏ b/171509422)
  • נוספה תמיכה בגלילה מורחבת במכשירי Android 12. (Iccf3c, ‏ b/171682480)

גרסה 1.1.0-alpha03

1 בספטמבר 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 משוחרר. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.

תכונות חדשות

  • עדכנו את Compose 1.1.0-alpha03 כך שיהיה תלוי ב-Kotlin 1.5.30. (I74545)

שינויים ב-API

  • הוספנו את Modifier.inspectable כדי לעטוף מודיפיקרים אחרים. (I1909b, ‏ b/191017532)
  • הוספנו את ה-API BlurredEdgeTreatment כדי לפשט את התרחישים לדוגמה של טשטוש, באמצעות שילובים נפוצים יותר של דגלים של קליפים ותצורות של משבצות. ברוב התרחישים לדוגמה, התוכן המטושטש מוצג מחוץ לגבולות התוכן המקורי, והאזורים מחוץ לגבולות האלה מטושטשים בשחור שקוף. לחלופין, התוכן נחתך לגבולות התוכן, תוך דגימה של הקצה הקרוב ביותר לגרעיני טשטוש שמתרחבים מעבר לגבולות התוכן. (I6b4b7, ‏ b/166927547)
  • הוספנו תמיכה ב-RenderEffect ב-Compose Desktop. הוספנו את OffsetEffect ואת המאפיין blur, כדרך פשוטה להוסיף אפקטים חזותיים של טשטוש לחלק מההיררכיה של הקומפוזיציה. (I0f6aa, ‏ b/166927547)
  • הוספנו את RenderEffect API, שאפשר להגדיר ב-Modifier.graphicsLayer כדי לשנות את התוכן של השכבה עצמה. אפשר להשתמש בזה כדי לטשטש את התוכן של רכיב מורכב ורכיבים מורכבים צאצאים בהיררכיית קומפוזיציה. (I47c4d, ‏ b/166927547)
  • ל-AwaitPointerEventScope יש עכשיו את השיטות withTimeout()‏ ו-withTimeoutOrNull()‏ (I507f0, ‏ b/179239764, ‏ b/182397793)
  • הוספנו גודל מינימלי של יעד מגע ל-ViewConfiguration לשימוש בסמנטיקה ובקלט של סמן כדי להבטיח נגישות. (Ie861c)
  • נוספה תמיכה ב-TileMode.Decal, שמועילה בהגדרת התנהגות הקצוות של אפקטים של רינדור מבוסס טשטוש. (I7e8ed, ‏ b/166927547)
  • performScrollToIndex, ‏ performScrollToKey,‏ hasScrollToIndexAction ו-hasScrollToKeyAction הם עכשיו ממשקי API יציבים (I142ae, ‏ b/178483889)
  • נוספה שיטת בדיקה כדי לקבל את גבולות החיתוך. (I6b28e)

תיקוני באגים

  • הוסרה השיטה isBounded מ-BlurredEdgeTreatment, ובמקומה הוחלפה בדיקה מפורשת אם הפרמטר shape הוא null. (I85d68)

גרסה 1.1.0-alpha02

18 באוגוסט 2021

androidx.compose.ui:ui-*:1.1.0-alpha02 משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.

שינויים ב-API

  • עכשיו יש ב-PointerEvent תמיכה בקריאת המצב של לחצן העכבר והמצב של מקש השינוי במקלדת. (I6310c, ‏ b/180075467)
  • עכשיו, תנועות מוזרקות משתמשות בשעון MainTestClock כמקור הזמן האמיתי. השעה הנוכחית של האירועים שהוזנו ב-performGesture תאופס לשעה הנוכחית של MainTestClock. (Ifb364, ‏ b/192064452)
  • הוספה של ה-constructor של DpRect(DpOffset, DpSize)‏ (I2cf16, ‏ b/194219828)
  • נוספה הכיתה DpSize‏ (I7abb1, ‏ b/194219828)

תיקוני באגים

  • עדכון של ניתוח ה-XML של גרפיקה וקטורית כדי לתמוך ב-ColorStateLists כמאפייני גוון צבע ברמה הבסיסית ב-VectorDrawables. (I86915, ‏ b/195668138)

גרסה 1.1.0-alpha01

4 באוגוסט 2021

androidx.compose.ui:ui-*:1.1.0-alpha01 משוחרר. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • עכשיו אפשר להשתמש ב-RelocationRequester.bringIntoView כפרמטר של מלבן, וכך להציג חלק מרכיב מורכב (Ice2c5,‏ b/194330245)
  • AnimatedImageVector וממשקי ה-API הקשורים נמצאים עכשיו במודול החדש androidx.compose.animation:animation-graphics. (I60873)
  • הוספנו משתנה ניסיוני לטיפול בבקשות להעברה. (I65a97, ‏ b/178211874)
  • הוספת BrushPainter API כדי לתמוך בציור של מברשת שרירותית בתוך Painter, בדומה ל-ColorPainter

    עדכנו את Brush API כך שיכלול פרמטר גודל מהותי שמתבצעת לגביו שאילתה ב-BrushPainter‏ (Ia2752, ‏ b/189466433)

  • עדכון השיטה DrawScope#drawImage, שמשתמשת ב-rects של המקור והיעד כדי להשתמש בפרמטר אופציונלי של FilterQuality. האפשרות הזו שימושית לגרפיקה שמורכבת מפיקסלים, שנועדה להיראות מפורטת יותר כשהיא מוגדלת. עודכנו הרכיבים BitmapPainter ו-Image composable כך שיכללו גם את הפרמטר האופציונלי FilterQuality (Ie4fb0, ‏ b/180311607)

  • נוספה השיטה GestureScope.advanceEventTime כדי לתת שליטה רבה יותר על תזמון האירועים בתנועה (Ibf3e2)

תיקוני באגים

  • כדי לתמוך טוב יותר בשרשרת של מודификаторי ציור, צריך לוודא שההטמעה של Modifier.paint קוראת ל-drawsContent. בעבר, Modifier.paint היה אמור להיות צומת עלים בשרשרת של Modifiers. עם זאת, כך לא ניתן להגדיר אותו בקונטיינר שאפשר ליצור ממנו קומפוזיציות (למשל box) או להוסיף לו קישוטים נוספים כמו Modifier.paint().border(). כשמפעילים את Modifier.paint‏ drawContent אחרי שציירתם את התוכן של ה-painter הנתון, אתם מקבלים התנהגות עקבית יותר עם דפוס המשתנה המשנה. (Ibb2a7, ‏ b/178201337, ‏ b/186213275)
  • תיבת הדו-שיח פועלת עכשיו בהתאם להתנהגות של הגדרת הגודל בפלטפורמה. כדי לשנות את ההתנהגות הזו, מגדירים את usePlatformDefaultWidth לערך false. (Iffaed, ‏ b/192682388)
  • הועברנו את InfiniteAnimationPolicy אל ‎ :compose:ui (I5eb09, b/160602714)
  • גלילה באמצעות פעולות סמנטיות ברשימות עם טעינה איטית וברכיבי גלילה רגילים כוללת עכשיו אנימציה (Id9066, ‏ b/190742024)

גירסה 1.0

גרסה 1.0.5

3 בנובמבר 2021

androidx.compose.ui:ui-*:1.0.5 משוחרר. גרסה 1.0.5 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

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

גרסה 1.0.4

13 באוקטובר 2021

androidx.compose.ui:ui-*:1.0.4 משוחרר. גרסה 1.0.4 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

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

  • העדכון נעשה כך שיהיה תלוי ב-Kotlin 1.5.31

גרסה 1.0.3

29 בספטמבר 2021

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

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

  • העדכון נעשה כך שיהיה תלוי ב-Kotlin 1.5.30

גרסה 1.0.2

1 בספטמבר 2021

androidx.compose.ui:ui-*:1.0.2 משוחרר. גרסה 1.0.2 כוללת את השמירות האלה.

עודכן כדי לתמוך במהדורה 1.0.2 של Compose. Compose 1.0.2 עדיין תואם ל-Kotlin 1.5.21.

גרסה 1.0.1

4 באוגוסט 2021

androidx.compose.ui:ui-*:1.0.1 משוחרר. גרסה 1.0.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

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

  • העדכון נעשה כך שיהיה תלוי ב-Kotlin 1.5.21.

גרסה 1.0.0

28 ביולי 2021

androidx.compose.ui:ui-*:1.0.0 משוחרר. גרסה 1.0.0 כוללת את ההצהרות האלה.

תכונות עיקריות בגרסה 1.0.0

זוהי הגרסה היציבה הראשונה של Compose. פרטים נוספים זמינים בבלוג הרשמי של Compose Release.

בעיות מוכרות

  • אם אתם משתמשים ב-Android Studio Bumblebee Canary 4 או ב-AGP 7.1.0-alpha04/7.1.0-alpha05, יכול להיות שתתקלו בקריסה הבאה:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    כדי לפתור את הבעיה, צריך להגדיל באופן זמני את minSdkVersion ל-24 ואילך בקובץ build.gradle. הבעיה הזו תיפתר בגרסה הבאה של Android Studio Bumblebee ו-AGP 7.1. (b/194289155)

גרסה 1.0.0-rc02

14 ביולי 2021

androidx.compose.ui:ui-*:1.0.0-rc02 משוחרר. גרסה 1.0.0-rc02 כוללת את ההצהרות האלה.

תיקוני באגים

  • תיבת הדו-שיח פועלת עכשיו בהתאם להתנהגות של הגדרת הגודל בפלטפורמה. כדי לשנות את ההתנהגות הזו, מגדירים את usePlatformDefaultWidth לערך false. (Iffaed, ‏ b/192682388)

גרסה 1.0.0-rc01

1 ביולי 2021

androidx.compose.ui:ui-*:1.0.0-rc01 משוחרר. גרסה 1.0.0-rc01 כוללת את ההוספות האלה.

תכונות חדשות

  • פיצול המודול ui-tooling ל-ui-tooling ול-ui-tooling-preview (Iefa28, ‏ b/190649014)

שינויים ב-API

  • הוסר המאפיין הניסיוני FocusManager#moveFocusIn והמאפיין הניסיוני FocusManager#moveFocusOut (I227d7, ‏ b/170154986, ‏ b/186567354, ‏ b/168510304)
  • התכונה Canvas תומכת עכשיו בפרמטר contentDescription לשיפור הנגישות. (Ib547c)
  • השם של useDefaultMaxWidth ב-PopupProperties השתנה ל-usePlatformDefaultWidth. (I05710)
  • עכשיו אפשר להשתמש בחלונות הדו-שיח ברוחב המסך כולו. (I83929, ‏ b/190810877)
  • הוספה של תמיכה ניסיונית בייצוגים של צבעים בפורמט HSV ו-HSL. (Id7cf8, ‏ b/180731008)

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

  • Compose @Preview כולל עכשיו את הפקודה LocalActivityResultRegistryOwner שמאפשרת להציג תצוגה מקדימה של רכיבים מורכבים שמשתמשים ב-API כמו rememberLauncherForActivityResult(), ותלויים בקיומו של הבעלים הזה. (Ib13d1, ‏ b/185693006)
  • Compose @Preview כולל עכשיו LocalOnBackPressedDispatcherOwner שמאפשר להציג תצוגה מקדימה של רכיבים מורכבים שמשתמשים בממשקי API כמו BackHandler, שמסתמכים על קיומו של הבעלים הזה. (Ia1c05, ‏ b/185693006)

תיקוני באגים

  • הועבר InfiniteAnimationPolicy אל androidx.compose.ui:ui (I5eb09, ‏ b/160602714)
  • AnimatedImageVector הוסר באופן זמני כדי לשנות את מבנה המודול. (I41906, ‏ b/160602714)

גרסה 1.0.0-beta09

16 ביוני 2021

androidx.compose.ui:ui-*:1.0.0-beta09 משוחרר. גרסה 1.0.0-beta09 מכילה את ההתחייבויות האלה.

שינויים ב-API

  • שינוי המאפיינים Role ו-LiveRegionMode של enum לכיתות inline עם קונסטרוקטור פרטי (Id1890)
  • ה-KeyboardCapitalization הופך לכיתה בתוך שורה. (Id5a1c)
  • משנים את HapticFeedbackType לכיתה בתוך שורה. (I255ec)
  • Modifier.pointerInteropFilter הוא @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, ‏ FontSynthesis ו-TextDirection הן עכשיו כיתות בקוד. (I212fe)
  • TextOverflow הופך לכיתה בתוך שורה. (I433af)
  • FontStyle היא עכשיו כיתה בקוד. (I9e48b)

תיקוני באגים

  • ערכי הקבועים של המפתחות הם ‎ @ExperimentalComposeUiApi בשלב הזה. אפשר להצהיר על קבועים פרטיים בקוד שמשתמש ב-API לפני שהם מגיעים למצב יציב. (Ia5d48)
  • עכשיו אפשר להריץ בדיקות Compose ב-Robolectric. עד כה זוהו המגבלות הבאות:
    • אין bitmap מקורי, ולכן ImageBitmap() מוביל ל-NullPointerException.
    • אין ציור, ולכן captureToImage() ימתין ללא הגבלת זמן לתור הבא לציור (כלומר, הוא נכנס לסטטוס 'נעילה גורפת').
    • לא נטען גופן, ולכן כל טקסט יימדד באופן שגוי. לכל התווים יש גובה קבוע של כ-20 פיקסלים ורוחבן הוא פיקסל אחד.
    • ComposeTestRule.waitUntil {} לא מפעיל את ה-thread הראשי בזמן ההמתנה, ולכן הוא זהה למעשה ל-ComposeTestRule.mainClock.advanceTimeUntil {} צפויות להיחשף מגבלות נוספות בעתיד. (I284fa)

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

בגרסה הזו נוספו כללי פרופיל למודול ה-Compose הבאים (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> הוא התיאור של המחלקה שאליה שייך ה-method המטורגט. לדוגמה, למחלקה androidx.compose.runtime.SlotTable יהיה מתאר של Landroidx/compose/runtime/SlotTable;.

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

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

מה המטרה של הכללים?

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

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

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

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

איך זה עובד?

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

גרסה 1.0.0-beta08

2 ביוני 2021

androidx.compose.ui:ui-*:1.0.0-beta08 משוחרר. גרסה 1.0.0-beta08 כוללת את ההצהרות האלה.

שינויים ב-API

  • המאפיין enum של NestedScrollSource מוחלף בכיתה בתוך שורה. (Ie321b, ‏ b/187055290)
  • השם של FocusManager.clearFocus(forcedClear = true) השתנה ל-FocusManager.clearFocus(force = true) (Ia0c41)
  • שינינו את השימוש ב-enum לכיתות מוטמעות כדי למנוע בעיות עם הצהרות exhaustive when כשמוסיפים ערכים חדשים ל-enum. (I2b5eb)
  • הסרת @ExperimentalComposeUiApi מהחשבון PopupProperties. (I01fa6)
  • PointerType השתנה מ-enum למחלקה בקוד (If5058)
  • המאפיינים ContentDescription ו-Text semantics הם עכשיו רשימות ולא ערכים בודדים. כך אפשר למזג אותם כפי שהם, במקום כשרשימות מחוברות. בנוסף, הוספנו ממשקי API טובים יותר לבדיקה כדי לנצל את השינויים האלה (Ica6bf,‏ b/184825850)
  • האפשרות Modifier.focusModifier() הוצאה משימוש והוחלפה באפשרות Modifier.focusTarget() (I6c860)
  • הפונקציות Modifier.onSizeChanged() ו-Modifier.onGloballyPositioned() כבר לא מוכנסות לקוד (I727f6, ‏ b/186109675)
  • המאפיין enum של KeyboardType מוחלף בכיתה בתוך שורה. (I73045, ‏ b/187055290)
  • החלפת המאפיין המסווג FocusState בממשק FocusState (Iccc1a, ‏ b/187055290)
  • המאפיין enum של ImeAction הוחלף בכיתה מוטמעת. (I18be5, ‏ b/187055290)
  • PlaceholderVerticalAlign הופך לכיתה בתוך שורה. (If6290)
  • TextUnitType הוא עכשיו כיתה בקוד. (I4cba9)
  • הפונקציות של AnnotatedString.withAnnotation הן עכשיו ExperimentalTextApi במקום ExperimentalComposeApi. (I0cd0a)
    • ה-constructor של TextUnit עם TextUnitType הוא עכשיו ExperimentalTextApi במקום ExperimentalComposeApi.

תיקוני באגים

  • תוקנה באג שהופיע ב-beta07, שבו פריטים של LazyColumn/Row הוצגו באופן חלקי אחרי הגלילה (I8c9ac,‏ b/188566058)
  • עכשיו detectDragGesures,‏ detectVerticalGestures ו-detectHorizontalGestures יעבדו את שינוי המיקום באופן אוטומטי, ללא צורך לקרוא ל-change.consumePositionChange בקריאות החזרה (callbacks) של onDrag‏ (I42fc4,‏ b/185096350,‏ b/187320697)
  • תוקנה בעיה ב-LayoutModifiers שמספקים קווים ליישור. תוקנה באג שגרם לכך שההורה לא נמדד מחדש כשקווים של התאמה של הצאצאים השתנו. (I4401f, ‏ b/174315652)
  • Modifier.onGloballyPositioned() השתנה כדי לדווח על הקואורדינטות של המשתנה הזה בשרשרת המשתנים, ולא על קואורדינטות הפריסה אחרי החלת כל המשתנים. המשמעות היא שהסדר של המשתנים המשתנים משפיע עכשיו על הקואורדינטות שידווחו. (Ieb67d, b/177926591)

גרסה 1.0.0-beta07

18 במאי 2021

androidx.compose.ui:ui-*:1.0.0-beta07 משוחרר. גרסה 1.0.0-beta07 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספת ממשק ViewRootForInspector לשימוש בכלי לבדיקת מודעות (Ib70df)
  • עכשיו יש ב-SubcomposeLayoutState תמיכה בהגדרת מספר התקנים לשימוש חוזר. הפריסה תמשיך להפעיל עד מספר המקומות הזה במקום למחוק אותם, כדי שנוכל לעשות שימוש חוזר במקום בפעם הבאה שנצטרך מקום חדש (Ieb981)
  • הטיפוס המנוהל (enum) KeyEventType מוחלף בכיתה בתוך שורה. (Id670a, ‏ b/187055290)
  • המאפיין enum של FocusDirection מוחלף בכיתה בתוך שורה. (Ib6d03, ‏ b/187055290, ‏ b/184086802)
  • הוספה של היכולת להעביר את המצב SubcomposeLayout, שמאפשרת ליצור מראש את התוכן ב-slotId נדרש. כך, המדד הבא יעבור מהר יותר, כי בפעם הבאה שננסה ליצור חלוקה משנית עם ה-slotId הנתון לא תהיה צורך ביצירת קומפוזיציה. (I42580, ‏ b/184940225)
  • נוספה ידית לבחירת קליפים (Iff80d, ‏ b/183408447)
  • הוסרו ממשקי API שלא בשימוש שקשורים לתמיכה ב-LayoutInspector. (I2ac78)

תיקוני באגים

  • LazyColumn/Row יישאר פעיל (לא יוסר) עד 2 פריטים שגלויים בעבר, גם אם כבר גוללו החוצה. כך הרכיב יכול לעשות שימוש חוזר ברכיבי המשנה הפעילים כשנצטרך ליצור פריט חדש, וכך לשפר את ביצועי הגלילה. (Ie5555)
  • TextGeomerticTransform ו-TextDecoration ב-AnnotatedString יוחלו כפי שהם. (I61900, ‏ b/184760917)

גרסה 1.0.0-beta06

5 במאי 2021

androidx.compose.ui:ui-*:1.0.0-beta06 משוחרר. גרסה 1.0.0-beta06 כוללת את ההתחייבויות האלה.

שינויים ב-API

  • פתרון התנגשויות עם תנועת ניווט (I1145e)
  • @ComposeCompilerApi כבר לא @RequiresOptIn (Iab690)
  • נוספו ממשקי API לנגישות של CollectionInfo ו-CollectionItemInfo שמאפשרים לסמן את האוסף ואת הפריטים שלו לשירותי נגישות (Id54ef, ‏ b/180479017)
  • נוספה הפונקציה SemanticsActions.ScrollToIndex כדי לגלול ברשימה עם פריטים שנוספו לאינדקס אל הפריט עם אינדקס מסוים, והפונקציה SemanticsProperties.IndexForKey כדי לקבל את האינדקס של פריט ברשימה עם פריטים שמקושרים למפתח. שתי הפעולות מיושמות על ידי LazyList.
    • נוספה הפונקציה SemanticsNodeInteraction.performScrollToIndex שמגלגלת רשימה לאינדקס שצוין, והפונקציה SemanticsNodeInteraction.performScrollToKey שמגלגלת רשימה לפריט עם המפתח שצוין. (I4fe63, ‏ b/178483889, ‏ b/161584524)
  • הוספנו את ownerViewId ל-GraphicLayerInfo‏ (I19f62)
  • נוספו עומסי יתר של Font() כדי לטעון גופנים מנכסים, מקובץ ומ-FileDescriptor (I5d382)
  • הוספנו את Accessibility API‏ error שמאפשר לסמן צומת שמכיל קלט לא חוקי (I12997, ‏ b/180584804, ‏ b/182142737)
  • נוספו Font() עומסי יתר (overloads) לטעינה של גופנים מנכסים, מקובץ ומ-FileDescriptor (I43007)
  • תמיכה בשמירת AnnotatedString ב-TextFieldValue.Saver. נוספו הפונקציות addTtsAnnotation ו-withAnnotation ל-AnnotatedString.Builder (I8cbdc, ‏ b/178446304)
  • נוספה פונקציית ה-constructor של TextUnit‏ TextUnit(value: Float, type: TextUnitType) (I7ecce, ‏ b/178446304)

גרסה 1.0.0-beta05

21 באפריל 2021

androidx.compose.ui:ui-*:1.0.0-beta05 משוחרר. גרסה 1.0.0-beta05 כוללת את ההתחייבויות האלה.

שינויים ב-API

  • נוספו התכונות הניסיוניות FocusManager.moveFocus(In) ו-FocusManager.moveFocus(Out) (Ic5534, ‏ b/183746743)
  • נוספה ממשק API ניסיוני של performTextInputSelection (I2dcbb, ‏ b/178510628)
  • הממשק InputEventCallback הוצא משימוש. לא ניתן היה להשתמש בממשק באף ממשק API ציבורי, ולא היה בו שימוש בקוד. (I34a02, ‏ b/184003208)
  • הפונקציה TextLayoutResult/createTextLayoutResult הוצאה משימוש. זוהי פונקציה ציבורית שלא בשימוש, שנוספה לצורך בדיקה. הפונקציה לא מבצעת פעולה שאפשר להשתמש בה בממשקי API של טקסט ליצירה. הפונקציה הזו הוצאה משימוש ותוסר בהמשך. (I80413)

תיקוני באגים

  • תוקנו פעולות הגלילה של הנגישות ACTION_SCROLL_FORWARD, ‏ ACTION_SCROLL_BACKWARD,‏ accessibilityActionScrollLeft, ‏ accessibilityActionScrollUp,‏ accessibilityActionScrollRight ו-accessibilityActionScrollDown. במקום לגלול עד סוף התוכן שניתן לגלילה, הוא יגלול עכשיו מסך אחד בכיוון הרצוי. (Ieccb0)
  • קובצי AndroidManifest מ-ui-test-manifest ומ-ui-tooling-data תואמים עכשיו ל-Android 12 (I6f9de, ‏ b/184718994)

גרסה 1.0.0-beta04

7 באפריל 2021

androidx.compose.ui:ui-*:1.0.0-beta04 משוחרר. גרסה 1.0.0-beta04 מכילה את ההצהרות האלה על ביצוע שינויים.

שינויים ב-API

  • משנים את השם של hideSoftwareKeyboard ו-showSoftwareKeyboard ב-SoftwareKeyboardController ל-hide() ו-show(), בהתאמה.
    • לספק את הממשק המלא של CompositionLocal ל-LocalSoftwareKeyboardController, כדי לאפשר להגדיר אותו (שימושי במיוחד בבדיקות) (I579a6)
  • הוספנו את ממשק ה-API לנגישות של LiveRegion. אם הצומת מסומן כאזור פעיל, שירותי הנגישות יעדכנו את המשתמש באופן אוטומטי לגבי השינויים (Idcf6f, ‏ b/172590946)
  • הופיעה האפשרות TextOverflow.Visible. (Ic8f89)

תיקוני באגים

  • תוקנה הבעיה שבה פריטים של LazyColumn/LazyRow שנמצאים בקצוות ממוקמים באופן שגוי אחרי תנועה מהירה (Ie4d13, ‏ b/183877420)
  • AndroidViewBinding מסיר עכשיו בצורה תקינה קטעי קוד שנוצרו באמצעות FragmentContainerView כשה-AndroidViewBinding מוסר מההיררכיה של ה-Compose. (Ib0248, ‏ b/179915946)
  • עכשיו AndroidViewBinding מטמיע בצורה נכונה קטעי קוד שנוצרו באמצעות FragmentContainerView כש-ComposeView נמצא בתוך Fragment, וכך מתקן בעיות בשמירה ובשחזור המצב של קטעי הקוד האלה. (I70eb0, ‏ b/179915946)
  • Compose ViewBinding תלוי עכשיו ב-Fragment 1.3.2, ועכשיו הוא מציג באופן עקבי קטעי קוד שמנפחים באמצעות FragmentContainerView אחרי שינויים בהגדרות. (I0743d, ‏ b/179915946)

גרסה 1.0.0-beta03

24 במרץ 2021

androidx.compose.ui:ui-*:1.0.0-beta03 משוחרר. גרסה 1.0.0-beta03 מכילה את ההצהרות האלה.

שינויים ב-API

  • בדיקה מושהית של יחסי התלות של ViewTree ב-ComposeView (I8dbbf, ‏ b/182466548)
  • נוספו פרמטרים אופציונליים startX/endX ו-startY/endY לפונקציות swipeUp/swipeDown/swipeLeft/swipeRight ב-GestureScope. (I49e2d, ‏ b/182063305)

גרסה 1.0.0-beta02

10 במרץ 2021

androidx.compose.ui:ui-*:1.0.0-beta02 משוחרר. גרסה 1.0.0-beta02 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספה רכיב API מקומי חדש של LocalSoftwareKeyboardController כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I5951e, ‏ b/168778053)
  • נוספה רכיב API מקומי חדש של LocalSoftwareKeyboardController כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I84472, ‏ b/168778053)
  • הוסרו SemanticsMatchers הבאים:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • סימנתי את SemanticsMatchers הבא בתור @ExperimentalTestApi:‏
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • נוספו SemanticsMatchers הבאים:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

תיקוני באגים

  • אכיפה של הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, ‏ b/174531520)
  • androidx.compose.ui:ui כבר לא תלויה ב-AppCompat או ב-Fragment. אם אתם משתמשים ב-ComposeView באפליקציה שלכם, ואתם משתמשים ב-Fragment ו/או ב-AppCompat, ודאו שאתם משתמשים ב-AppCompat מגרסה 1.3 ואילך או ב-Fragment מגרסה 1.3 ואילך. הגרסאות האלה נדרשות כדי להגדיר בצורה נכונה את הבעלים של מחזור החיים ומצב השמירה הנדרשים ל-ComposeView. (I1d6fa, ‏ b/161814404)
  • תיקון ל-rememberSaveable { mutableStateOf(0) } שבור כשמשתמשים בו בתוך יעד של navigation-compose. (I1312b, ‏ b/180042685, ‏ b/180701630)
  • נוספה רכיב API מקומי חדש של LocalSoftwareKeyboardController כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I658b6, ‏ b/168778053)
  • תוקן אירוע נדיר של NoSuchElementException ב-ComposeRootRegistrytearDownRegistry() (Iddce1)

גרסה 1.0.0-beta01

24 בפברואר 2021

androidx.compose.ui:ui-*:1.0.0-beta01 משוחרר. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.

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

שינויים ב-API

  • הוספה של קריאה חוזרת מסוג onStart אל detectDragGestures (I67269, ‏ b/179995594)
  • המשתנים המתאימים לשינוי הגודל בהתאם למאפיינים המובנים כבר לא נחשבים לניסיוניים. (I15744)
  • השם של MeasureBlocks השתנה ל-MeasurePolicy, והוא הפך לממשק מהנה. ממשקי Layout API עודכנו או פשוטו כדי להשתמש ב-MeasurePolicy. (Icab48, ‏ b/167662468, ‏ b/156751158)
  • הערך InteractionState הוחלף ב-[Mutable]InteractionSource
    • ממשקים אחראים להפעלה או לאיסוף של אירועי אינטראקציה.
    • במקום להעביר את interactionState = remember { InteractionState() } לרכיבים כמו Button ו-Modifier.clickable(), משתמשים ב-interactionSource = remember { MutableInteractionSource() }.
    • במקום: Interaction.Pressed in interactionState צריך להשתמש בפונקציות התוסף ב-InteractionSource, כמו InteractionSource.collectIsPressedAsState().
    • בתרחישי שימוש מורכבים, אפשר להשתמש ב-InteractionSource.interactions כדי לצפות בזרם של האינטראקציות. מידע נוסף זמין במסמכי התיעוד ובדוגמאות של InteractionSource.
    • (I85965, ‏ b/152525426, ‏ b/171913923, ‏ b/171710801, ‏ b/174852378)
  • הוספת ממשק AccessibilityMananger ו-LocalAccessibilityMananger ב-CompositionLocals‏ (I53520)
  • הוסרו השיטות LayoutCoordinates שהוצאו משימוש. יש להשתמש בפונקציה במקום במאפיין עבור positionInParent ו-boundsInParent (I580ed,‏ b/169874631,‏ b/175142755)
  • שמות חלופיים של טיפוסים הוחלפו בסוגים הבסיסיים:
    • ColorStop נקרא עכשיו Pair<Float, Color>
    • SpanStyleRange הוא עכשיו AnnotatedString.Range‏
    • ParagraphStyleRange נקרא עכשיו AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation נקרא עכשיו AnnotatedString.Range<String>
    • (I8dd1a)
  • נוצר TextInputSession חדש לסשנים של קלט מרכיבי טקסט ברמה נמוכה, כמו CoreTextField. (I8817f, ‏ b/177662148)
  • עכשיו רכיב ה-Placeable חושף את measuredSize, שמייצג את הגודל שבו הפריסה של הצאצא נמדדה בפועל. יכול להיות שהגודל הזה לא יעמוד באילוצים של המדידה. (Ib2729, ‏ b/172560206, ‏ b/172338608)
  • הוספת המשתנה selectionGroup שמאפשר לסמן אוסף של כרטיסיות או לחצני בחירה למטרות נגישות (Ie5c29)
  • השדה defaultFactory עבור compositionLocalOf ו-staticCompositionLocalOf הוא חובה עכשיו במקום אופציונלי.

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

    לסוגי nullable, כדאי לספק את { null } כמפעל ברירת המחדל.

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

  • שיטות שהוצאו משימוש במודולים של ממשק המשתמש הוסרו (I646f6)

  • השם של מגברי הגודל השתנה. השמות של Modifier.width/height/size שונו ל-requiredWidth/requiredHeight/requiredSize. השמות של Modifier.preferredWidth/‏Modifier.preferredHeight/‏Modifier.preferredSize שונו ל-width/‏height/‏size. (I5b414)

  • Modifier.tapGestureFilter הוסר. במקום זאת, אתם צריכים להשתמש ב-Modifier.pointerInput { detectTapGestures(...) }. (I266ed, ‏ b/175294473)

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

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

  • הפונקציות imageResource ו-vectorResource הן עכשיו פונקציות תוסף ב-ImageBitmap וב-ImageVector, בהתאמה. load{Image,Vector,Font}Resource הפונקציות נמחקו. (I89130)

  • ה-AnimationClockObservable והתת-כיתות שלו הוסרו. AnimatedFloat הוסר. (Icde52, ‏ b/177457083)

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

    • ה-constructor של Composition לא מקבל יותר פרמטר מפתח, והוא הוצא משימוש.
    • currentCompositeKeyHash הפך לנכס ברמה העליונה שניתן להגדרה, במקום לפונקציה ברמה העליונה שניתן להגדרה.
    • CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
    • הפונקציה ComposableLambda הפכה לממשק במקום לכיתה ספציפית, והיא כבר לא כוללת פרמטרים של סוגים.
    • הפונקציה ComposableLambdaN הפכה לממשק במקום לכיתה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
    • הפונקציה snapshotFlow הועברה למרחב השמות androidx.compose.runtime
    • שיטת המיזוג של SnapshotMutationPolicy כבר לא ניסיונית
    • פונקציית clearRoots ברמה העליונה עם הערך @TestOnly הוסרה. אין צורך יותר.
    • הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. אין יותר צורך בהם.
    • הפונקציה Composer.collectKeySourceInformation הוסרה. אין צורך יותר.
    • השיטות isJoinedKey,‏ joinedKeyLeft ו-joinedKeyRight הוסרו. אין יותר צורך בהם.
    • ממשקי API שונים ברמה העליונה הועברו וסודרו מחדש בקבצים שונים. בגלל הסמנטיקה של סיווג הקבצים ב-Kotlin, הפעולה הזו תפגע בתאימות הבינארית אבל לא בתאימות למקור, כך שלא אמורה להיות בעיה אצל רוב המשתמשים.
    • (I99b7d, ‏ b/177245490)
  • ComponentActivity.setContent() הוסר מ-compose:ui. צריך להשתמש בקוד מ-androidx.activity:activity-compose:1.3.0-alpha01. viewModel() ו-LocalViewModelStoreOwner הוסרו מ-compose:ui. משתמשים באלה מ-androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • Modifier.scrollable עוצב מחדש. עכשיו הוא משתמש בממשק Scrollable במקום בכיתה ScrollableController (I4f5a5, ‏ b/174485541, ‏ b/175294473)

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

  • SnapshotStateObserver כבר לא בגרסת ניסיון (Id2e6a)

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

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

  • הסרנו את ה-API של String.format ושיפרנו את השימוש בשיטות שונות של toString כדי לא להשתמש ב-String.format באופן פנימי. (Id1290)

  • הוסר dp assertions (I798d2)

  • הוסר androidx.compose.runtime:runtime-dispatch (I55feb)

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

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

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

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

  • נוספה פונקציית עזר שבעזרתה אפשר להגדיר את אותה פעולה לכל קריאות החזרה של ImeAction (I63447, ‏ b/179226323)

  • הסרנו את הקריאה החוזרת (callback) של SoftwareKeyboardController מכל שדות הטקסט, והיא תוחלף בקרוב ב-API חדש. (Iae869, b/168778053)

  • אין יותר שימוש ב-FontSpan וב-FontWeigthStyleSpan והם הוסרו. (Ie5b56, ‏ b/177423444)

  • ביצענו את השינויים הבאים ב-Material API:

    • הוספנו את הפרמטר contentPadding ל-Top/BottomAppBar כדי לאפשר התאמה אישית של ריפוד ברירת המחדל.
    • הפרמטרים ב-BackdropScaffold סודרו מחדש בהתאם להנחיות ה-API, כך שהפרמטרים הנדרשים מופיעים לפני הפרמטרים האופציונליים.
    • הפרמטר icon ב-BottomNavigationItem הועבר אחרי selected ו-onClick.
    • השם של הפרמטר alwaysShowLabels ב-BottomNavigationItem השתנה ל-alwaysShowLabel.
    • השם של הפרמטרים bodyContent בחלק מהרכיבים השתנה ל-content בלבד.
    • הפרמטרים ב-ButtonDefaults.buttonColors() מסודרים מחדש. חשוב לזכור: מכיוון שהסוג של הפרמטרים לא השתנה, לא תהיה שגיאה בקוד. עם זאת, חשוב לוודא שאתם משתמשים בפרמטרים עם שמות או מעדכנים את הסדר באופן ידני, אחרת הקוד לא יפעל כמו בעבר.
    • הפרמטר secondaryVariant נוסף ל-darkColors(). הצבע הזה בדרך כלל זהה לצבע secondary בעיצוב כהה, אבל הוא נוסף כדי לשמור על עקביות ולאפשר התאמה אישית נוספת.
    • הסרנו את ElevationDefaults ואת animateElevation() מפני שהן לא היו שימושיות או נפוצות.
    • שינית את השם של onValueChangeEnd ב-Slider ל-onValueChangeFinished והגדרת אותו כאפשרות nullable.
    • השם של הפרמטר text ב-Snackbar השתנה ל-content כדי לשמור על עקביות.
    • הוספנו את הפרמטר contentPadding ל-DropdownMenuItem כדי לאפשר התאמה אישית של ריפוד ברירת המחדל, והפכנו את content לתוסף של RowScope.
    • השם של ModalDrawerLayout השתנה ל-ModalDrawer.
    • השם של BottomDrawerLayout השתנה ל-BottomDrawer.
    • (I1cc66)

תיקוני באגים

  • הוספנו API לשימוש במשאבי AnimatedVectorDrawable ב-Compose. משתמשים ב-animatedVectorResource כדי לטעון קובץ XML מסוג <animated-vector> כ-AnimatedImageVector ולהוסיף לו אנימציה באמצעות painterFor‏ (I8ea91)
  • נוספה רכיב API מקומי חדש של LocalSoftwareKeyboardController כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I658b6, ‏ b/168778053)

גרסה 1.0.0-alpha12

10 בפברואר 2021

androidx.compose.ui:ui-*:1.0.0-alpha12 משוחרר. גרסה 1.0.0-alpha12 מכילה את ההוספות האלה.

שינויים ב-API

  • התמיכה ב-ViewGroups הוסרה מ-UiApplier. הרכיבים המורכבים של emitView שהוצאו משימוש הוסרו. (Ifb214)
  • עכשיו נדרש ל-Modifier.pointerInput לזכור מפתחות כדי לציין מתי צריך להפעיל מחדש את פונקציית ה-coroutine לזיהוי קלט של סמן עבור יחסי תלות חדשים. (I849cd)
  • השם CompositionReference שונה ל-CompositionContext (I53fcb)
  • השם של Bounds השתנה ל-DpRect‏ (I4b32a)
  • עדכון לבדיקה: הפונקציה hasText() תבדוק גם טקסטים של קלט וגם טקסטים של תוויות/רמזים/סמלי placeholder בשדה הטקסט (Iab803)
  • ה-composable של viewModel()‎ ו-LocalViewModelStoreOwner הועברו אל androidx.lifecycle.viewmodel.compose. כדי להשתמש בו, תצטרכו להוסיף עכשיו תלות נפרדת androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
  • מתן אפשרות לפעולה nullable ב-AccessibilityAction, שינוי תווית הפעולה ב-AccessibilityAction וב-CustomAccessibilityAction מ-CharSequence ל-String (I0dc82)
  • כדי להתאים את שם השיטה למוסכמות של מתן שמות ל-ImageBitmap ול-ImageVector, השם של ImagePainter השתנה ל-BitmapPainter כדי להתאים ל-VectorPainter. (Iba381, ‏ b/174565889)
  • שיפור בממשקי ה-API לבדיקת מחרוזות משנה, כאשר מחרוזת המשנה משמשת עכשיו כארגומנטים (Icbe78)
  • נוספה פונקציית Modifier.focusOrder() שמקבלת FocusRequester בלי לציין סדר התמקדות מותאם אישית של lambda. האפשרות הזו שימושית כשצריך לציין רק ערך עזרה, אבל לא סדר התמקדות מותאם אישית, לרכיב שאפשר ליצור ממנו קומפוזיציות (I4f52a,‏ b/179180978)
  • ComponentActivity.setContent הועבר אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
  • שיטות Destructuring ו-copy() הוסרו מכמה כיתות שבהן הן שימשו לעיתים רחוקות. (I26702, ‏ b/178659281)
  • חלון הקופץ הועבר להיות ספציפי לפלטפורמה. השם של AndroidPopupProperties השתנה ל-PopupProperties, ו-isFocusable הועבר לפרמטר focusable ב-PopupProperties (Ieeea5)
  • שינינו את Dialog כך שיהיה ספציפי לפלטפורמה. שינינו את השם של AndroidDialogProperties ל-DialogProperties. (I4ef69, ‏ b/179138130)
  • הפכנו את LayoutNode לפנימי (I8a7b1, ‏ b/175103944)
  • Constraints.enforce הוחלפה ב-Constraints.constrain. (I8b8ea)
  • loadFontResource הוצא משימוש. צריך להשתמש ב-fontResource במקום זאת. הפונקציות imageResource,‏ loadImageResource,‏ vectorResource ו-loadVectorResource הוצאו משימוש. במקום זאת, צריך להשתמש ב-painterResource. (I6b809)
  • מסיבות ביצועים, סמנטיקה של ScrollAxisRange מקבלת עכשיו פונקציות lambda שמחזירות ערכים מסוג Float במקום ערכים ישירים מסוג Float. (If4a35, ‏ b/178657186)
  • נוספה סמנטיקה של EditableText כדי לסמן טקסט קלט שניתן לעריכה בשדה הטקסט לצורכי נגישות, ושיטות בדיקה תואמות כדי לבדוק את הסמנטיקה (I8e07a)
  • הפכנו את OwnerLayer/‏OwnerScope/‏OwnerSnapshotObserver לרכיבים פנימיים (I4ffaf, ‏ b/175103944)
  • השם של toIntPx() שונה ל-roundToPx().‏ (I9b7e4, ‏ b/173502290)
  • השם של IntBounds השתנה ל-IntRect וה-API השתפר. (I1f6ff)
  • עדכנו את Snapshot API כדי שיהיה עקבי יותר עם הנחיות ה-API, וגם כדי להסתיר את כיתות ההטמעה הפנימיות מה-API הציבורי. (Id9e32)
  • נוספו פעולות סמנטיקה להרחבה ולכיווץ. נוספו expand ו-halfExpand ב-ModalBottomSheetState‏ (Ib5064)
  • ה-API Modifier.dragGestureFilter הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-Modifier.pointerInput { detectDragGestures (...)}. לחלופין, אפשר להשתמש ב-Modifier.draggable כדי לגרור ציר אחד (I0ba93, ‏ b/175294473)
  • השם של Ambients שונה כך שיתאים לשם של Ambient -> CompositionLocal rename. בעבר, השם של סביבות האווירה היה AmbientFoo, עכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)
  • ה-BaseTextField הוצא משימוש. במקום זאת, צריך להשתמש ב-BasicTextField. (I71368)
  • הבחירה הועברה ל-Foundation. (I7892b)
  • בדומה להסרה הקודמת של state { 0 } composable ועידוד השימוש ב-remember { mutableStateOf(0) }, אנחנו עומדים להסיר את savedInstanceState { 0 } composable. במקום זאת, צריך להשתמש ב-rememberSaveable { mutableStateOf(0) }, והוא ישמור וישחזר באופן אוטומטי אם אפשר לאחסן את הסוג שנעשה בו שימוש ב-MutableState בחבילה. אם בעבר העברתם אובייקט שומר מותאם אישית, עכשיו צריך להשתמש בעומס יתר חדש של rememberSaveable עם הפרמטר stateSaver. השימוש ייראה כך: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • נוספה סמנטיקה של סיסמאות לנגישות (I231ce)
  • נוספה ProgressBarRangeInfo.Indeterminate כדי לסמן סרגי התקדמות לא ידועים לצורכי נגישות (I6fe05)
  • השירותים emptyContent() ו-(@Composable () -> Unit).orEmpty() הוצאו משימוש כי אין להם יותר השפעה חיובית על הביצועים או ערך מוסף (I0484d)
  • snapshotFlow ו-withMutableSnapshot כבר לא נחשבים לניסיוניים (I6a45f)
  • עכשיו אפשר לסגור את הכלי ליצירת קומפוזיציות מחדש. מרכיבי קומפוזיציה סגורים ימשיכו את היצירה מחדש עד שה-coroutines של צאצאי הקומפוזיציה יסתיימו. השם של Recomposer.shutDown השתנה ל-cancel כדי להבדיל אותו מ-close. (Ib6d76)
  • השם של UiSavedStateRegistry שונה ל-SaveableStateRegistry, השם של AmbientUiSavedStateRegistry שונה ל-AmbientSaveableStateRegistry והשניים הועברו לחבילה androidx.compose.runtime.saveable. (I30224)
  • שמו של הארטיפקט androidx:compose:runtime:runtime-saved-instance-state שונה ל-androidx:compose:runtime:runtime-saveable (I6dcac)
  • הרבה ממשקי API שהוצאו משימוש מזמן בחבילת UI נמחקים. (I2f2dc)
  • פריט המידע (artifact) compose:runtime-dispatch הוצא משימוש. MonotonicFrameClock נמצא עכשיו ב-compose:runtime ו-AndroidUiDispatcher נמצא ב-compose:ui. (Ib5c36)
  • כיתות Outline.* כבר לא הן כיתות נתונים (I4879e, ‏ b/178001427)
  • הסרת view.captureToImage() ללא החלפה. (I7fcd2)
  • הוספנו את ColorMatrix API, שמשמשים לשינוי ערכי RGB של תוכן המקור. שיפרנו את ColorFilter API כך שיהיה ממשק שיתאים להטמעה של PathEffect. (Ica1e8)
  • מוסיפים את הפרמטר layoutDirection ל-createOutline של Shape. כך אפשר ליצור צורות שמותאמות לכיוון הפריסה. (I57c20, ‏ b/152756983)
  • השימוש ב-onImeActionPerformed הוצא משימוש. במקום זאת, צריך להשתמש ב-KeyboardActions (If0bbd,‏ b/179071523)
  • הוספנו את רכיב ההקשר של קורוטין InfiniteAnimationPolicy, שייושם באנימציות אינסופיות. כברירת מחדל, לא מותקנת מדיניות, אלא אם מריצים בדיקות באמצעות ComposeTestRule. (I50ec4, ‏ b/151940543)
  • האפשרות canDrag הוסרה מ-Modifier.scrollable. (Id66e7, ‏ b/175294473)
  • שינינו את השם של LayoutCoordinates.parentCoordinates ל-LayoutCoordinates.parentLayoutCoordinates כדי לאפשר שימוש במאפיין parentCoordinates חדש. עכשיו אפשר למצוא בנכס parentCoordinates את LayoutCoordintes של המשנה ההורה. כך תוכלו ליצור תרחישי שימוש מלאים יותר ל-onSizeChanged() ול-onGloballyPositioned() (Idfbfd, ‏ b/177926591)
  • ה-API tapGestureFilter, ‏ doubleTapGestureFilter, ‏ longPressGestureFilter ו-pressIndicaitonGestureFilter הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.clickable או ב-Modifier.pointerInput עם הפונקציה detectTapGestures. (I6baf9, ‏ b/175294473)
  • השיטה unregisterProvider של SaveableStateRegistry הוסרה. במקום זאת, registerProvider() מחזיר עכשיו אובייקט SaveableStateRegistry.Entry שאפשר להשתמש בו כדי לבטל את הרישום (Ic4274,‏ b/178583739)
  • השם של rememberSavedInstanceState() השתנה ל-rememberSaveable() והוא הועבר לחבילה androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • הוסרו CoreText ו-CoreTextField ממשק ה-API הציבורי
    • הוסר עומס יתר של SelectionContainer שהוצא משימוש
    • (I99c19)
  • בדיקות שבהן נעשה שימוש ב-Compose בהיררכיות שנוספות או מוסרות ישירות ל-WindowManager יציבות יותר עכשיו. (Ie81ed, ‏ b/175765614)
  • הוסר Recomposer.current().‏ [Abstract]ComposeView מוגדר עכשיו כברירת מחדל ל-Recomposers ברמת החלון שנוצרים בזמנם, ומנוהלים על ידי ViewTreeLifecycleOwner של החלון. הטיקים של האנימציה המבוססת על Recomposition ו-withFrameNanos מושהים בזמן שה-Lifecycle של המארח מושהה. (I38e11)
  • Recomposer.runningRecomposers מציע עכשיו StateFlow גלובלי של RecomposerInfo לקריאה בלבד, כדי לעקוב אחרי מצב ההרכבה המתמשך בתהליך. מומלץ להשתמש ב-API הזה במקום ב-Recomposer.current(), שעבר עכשיו לשימוש מוגבל. (If8ebe)
  • הפונקציות Saver,‏ listSaver(),‏ mapSaver() ו-autoSaver הועברו מ-androidx.compose.runtime.savedinstancestate אל androidx.compose.runtime.saveable (I77fe6)
  • הפונקציה EditCommands מקבלת את הערך AnnotatedString. עם זאת, זהו שינוי ב-API בלבד ועריכת טקסט במספר סגנונות עדיין לא הופעלה. (I4c3ea)
  • זמן הפעולה הרציפה והמשך הזמן הוסרו. (Ib9bf4, ‏ b/177420019)
  • העברנו את CompositionData.asTree() ואת ממשקי ה-API הקשורים למודול נפרד של ui-tooling-data, וסימנו אותם כניסיוניים (Ic95b8)
  • השמות של הפרמטרים ב-RounderCornerShape, ‏ CutCornerShape ו-CornerBasedShape שונו מ-left/right ל-start/end כדי לתמוך בהשתקפות האוטומטית של הצורה בכיוון RTL. הערכים AbsoluteRounderCornerShape ו-AbsoluteCutCornerShape נוספו למקרים שבהם לא רוצים שיבוצע שיקוף אוטומטי. (I61040, ‏ b/152756983)
  • ה-API שאליו פונה הפלאגין של המהדר של Compose עבר שינוי מבני כך שישתמש בממשק במקום בכיתה ספציפית. בנוסף, הממשק לא משתמש יותר בפרמטר מסוג.

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

  • הסרה לא מכוונת של הפונקציה הציבורית StringBuilder.deleteAt‏ (Id6ed9)

תיקוני באגים

  • ComposeViews שממוקמים בהיררכיות תצוגה שהן צאצאים של קומפוזיציה אחרת, מארחים עכשיו קומפוזיציות צאצאיות של אביהם (I92883)
  • עדכנו את ה-API של imageFromResource ב-Compose כדי לעשות שימוש חוזר במטמון ה-drawable של המשאב בזמן טעינת אובייקטים מסוג ImageBitmap. (If3627, ‏ b/178751994)

גרסה 1.0.0-alpha11

28 בינואר 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 משוחרר. גרסה 1.0.0-alpha11 מכילה את ההצהרות האלה.

שינויים ב-API

  • הרכיב WithConstraints עוצב מחדש כ-BoxWithConstraints והועבר ל-foundation.layout. (I9420b, b/173387208)
  • האפשרות Key.DPadUp הוצאה משימוש. במקום זאת, צריך להשתמש ב-Key.DirectionUp. (Iab335, ‏ b/177954892)
  • ממשק הבעלים יהיה מעכשיו פנימי. (If8e35)
  • נוספה פונקציית ה-API FocusManager.moveFocus()‎ כדי להעביר את המיקוד באופן פרוגרמטי. (I045cb, ‏ b/177681839)
  • שינוי PopupPositionProvider כך שישתמש בקואורדינטות ביחס לחלון, ולא בקואורדינטות גלובליות. שינוי השם של parentGlobalBounds ל-anchorBounds, ושינוי של windowGlobalBounds ל-windowSize: IntSize‏ (I2994a)
  • משך הזמן וזמן הפעולה התקינה יוחלפו ב-Long milliseconds, והשלב הזה מסיר את התלות של קלט הסמן בקטגוריות האלה. (Ia33b2, ‏ b/175142755, ‏ b/177420019)
  • AmbientSavedStateRegistryOwner נוסף באופן דומה ל-AmbientLifecycleOwner ול-AmbientViewModelStoreOwner שכבר קיימים (I9a3e8, ‏ b/176756365)
  • עדכון של ממשק ה-API של גרפיקה וקטורית לתמיכה בניתוח של גוון שחלה על הבסיס של הגרפיקה הווקטורית. (Id9d53, ‏ b/177210509)
  • הוספנו את ה-toolType ל-PointerInputChange כדי להבדיל בין מכשירים (Iac787, ‏ b/175142755)
  • השם של AmbientWindowManager השתנה ל-AmbientWindowInfo (I2686a, ‏ b/177084714, ‏ b/177084983)
  • הוצאנו משימוש שיטות של קואורדינטות גלובליות והוספנו שיטות חדשות של קואורדינטות שמבוססות על חלון. (Iee284)
  • נוספה Modifier.toolingGraphicsLayer שמוסיפה מודификатор של שכבת גרפיקה כשהבדיקה מופעלת. (I315df)
  • FocusRequester.createRefs מסומן עכשיו כניסיוני כי הוא עשוי להשתנות. (I2d898, ‏ b/177000821)
  • השם של SemanticsPropertyReceiver.hidden השתנה ל-invisibleToUser והוא סומן בתווית @ExperimentalComposeUiApi. השם של AccessibilityRangeInfo השתנה ל-ProgressBarRangeInfo.‏ השם של stateDescriptionRange השתנה ל-progressBarRangeInfo. השם של AccessibilityScrollState השתנה ל-ScrollAxisRange.‏ השם של horizontalAccessibilityScrollState השתנה ל-horizontalScrollAxisRange.‏ השם של verticalAccessibilityScrollState השתנה ל-verticalScrollAxisRange. (Id3148)
  • הסרנו את PointerInputData ושינינו את PointerInputChange כדי לתת לו את כל השדות של PointerInputData. הפכנו את PointerInputEvent ו-PointerInputEventData לרכיבים פנימיים כי הם לא משמשים באף ממשק API ציבורי. (Ifff97, ‏ b/175142755)
  • הטמעה מעודכנת של GraphicsLayerScope עם צפיפות כדי לתמוך בהמרות של dp לתמונות גולמיות. (Ied528, ‏ b/176819695)
  • עדכנו את matrix API כך שיפעל לפי סדר השורות הראשי, ויספק קבועות של אינדקס כדי לעזור בהמרות בין ייצוגים שונים של מטריצות, כך שיתאימו ללוגיקת ההמרה של המסגרת בין SkMatrix לבין Matrix4 באופן פנימי. (I432e6)
  • הוסר השימוש בשיטות הניסיוניות monotonicFrameAnimationClockOf‏ (Ib753f, ‏ b/170708374)
  • העברת String.fintPrecedingBreak ו-String.fingFollowingBreak אל InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair הוסרה מ-API הציבורי. (Ia9494)
  • שינית את השם של TransformedText.transformedText ל-TransformedText.text
    • TransformedText כבר לא מוגדר כסוג נתונים (Ie672a)
  • המשתמש data class הוסר מהכיתות הבאות:
    • InlineTextContent
    • LocaleList‏ (I605c7)
  • הכיתות הבאות כבר לא הן כיתות נתונים:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput‏ (Iaff99)
  • שינוי VisualTransformation לממשק פונקציונלי (I3bba4)
  • נוספה הפניה לפונקציה מסוג פרמטר (I5e1bd)
  • הוספת גבולות שעברו טרנספורמציה ל-InspectorNode‏ (Ice42f)

תיקוני באגים

  • הפונקציות onCommit,‏ onDispose ו-onActive הוצאו משימוש לטובת ממשקי ה-API SideEffect ו-DisposableEffect (If760e)
  • שינויים בפונקציות המקוריות של Font/FontFamily/Typeface

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

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

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

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

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

  • ממשק ה-API emit()‎ וכל עומסי היתר הוצאו משימוש והשם שלהם שונה ל-ComposeNode. ממשקי ה-API זהים, רק השם שונה כדי לעמוד למוסכמות מתן השמות של Compose‏ (I4137b)

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

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

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

  • RememberObserver מחליף את CompositionLifecycleObserver, ו-CompositionLifecycleObserver הוצא משימוש.

    RememberObserver הוא תחליף ל-CompositionLifecycleObserver עם סמנטיקה שונה ושמות ששונו לשיטות. אפשר לבצע את המעבר ל-API החדש באופן מכני לאובייקטים שנשמרים בזיכרון רק פעם אחת. זוהי השיטה המומלצת, ותמשיך להיות כזו. עם זאת, אם הפניה נזכרה יותר מפעם אחת בהרכבה, onRemembered תופעל לכל הפניה, בעוד ש-onEnter תופעל רק פעם אחת. onEnter הופעל כמה פעמים אם האובייקט שימש בתמהילים משניים, כמו WithConstraints ו-Scaffold, וכתוצאה מכך הקריאה היחידה ל-onEnter לא הייתה מהימנה והיא הוסרה ב-RememberObserver.

    RememberObserver מוסיף את onAbandoned, שנקרא אם המופע של RememberObserver מוחזר מהקריאה החוזרת (callback) שהועברה אל remember אבל לא נשמר במצב ההרכבה, ולכן אף פעם לא תתבצע קריאה ל-onRemembered. המצב הזה יכול להתרחש אם חריגה מסתיימת לפני השלמת היצירה, או אם היצירה נמחקת כי המצב שהיא יוצרת כבר לא רלוונטי או מסיבה אחרת. אם המופע של RememberObserver, בהתאם להמלצה שלמעלה לגבי הפניה יחידה, עוקב אחרי משאב חיצוני, הערכים של onForgotten ושל onAbandoned מציינים שהמשאב כבר לא נדרש. אם האובייקט עוקב אחרי עבודה שהתחילה או משאבים שהוקצו ב-onRemembered, אפשר להתעלם מ-onAbandoned כי הוא לא יקרא אם יקראו ל-onRemembered. (I02c36)

  • פעולות חשבון שהוצאו משימוש בין 2 TextUnits או יותר. פונקציות TextUnit.Sp ו-TextUnit.Em שהוצאו משימוש, במקום פונקציות ההרחבה כמו Int.sp ו-Int.em. (I48369)

  • משאבים בספריות שלא הוגדרו במפורש כמשאבים ציבוריים (למשל, באמצעות public.xml) מוגדרים עכשיו כפרטיים כברירת מחדל. (Ia1dcc, ‏ b/170882230)

  • הרכיבים ScrollableColumn/Row הוצאו משימוש. כשיש תוכן ארוך שאפשר לגלול בו, השימוש ב-ScrollableColumn פחות יעיל בהשוואה ל-LazyColumn, כי ב-LazyColumn אפשר רק ליצור/למדוד/לצייר רכיבים גלויים. כדי למנוע מהמשתמשים להשתמש בדרך הלא יעילה הזו, החלטנו להוציא משימוש את ScrollableColumn ו-ScrollableRow ולעודד שימוש ב-LazyColumn וב-LazyRow במקום זאת. המשתמשים עדיין יכולים להחליט שהם לא צריכים את ההתנהגות העצלה ולהשתמש במודיפיקטורים ישירות, כך: Column(Modifier.verticalScroll(rememberScrollState()))‏ (Ib976b, b/170468083)

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

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

    • יש להשתמש ב-ImeAction.Default במקום ב-ImeAction.Unspecified (Ie1bcc)
  • שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)

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

  • המעבר שמבוסס על TransitionDefinition הוצא משימוש (I0ac57)

  • TextUnitType.Inherit הוסר. במקום זאת, צריך להשתמש ב-TextUnitType.Unspecified. (I9ff64)

גרסה 1.0.0-alpha10

13 בינואר 2021

androidx.compose.ui:ui-*:1.0.0-alpha10 משוחרר. גרסה 1.0.0-alpha10 מכילה את ההצהרות האלה.

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

  • ארגון מחדש של ה-API הפנימי של המהדר מאפשר לקבץ שינויים בצמתים שנוצרו כתוצאה מהרכבה בשלב 'החלת השינויים' של הרכבת הקוד, אחרי שהסתיימו כל הפונקציות של @Composable.

    זהו שינוי התנהגותי שעלול להשפיע על קוד האפליקציה, כי הצמתים לא יהיו זמינים יותר מממשקי API פנימיים וניסיוניים עד שהשינויים יחולו. בדרך כלל אפשר לעקוף את הבעיה הזו על ידי הקפת הקוד ביחסי תלות כאלה ב-SideEffect composable כדי לדחות את ביצוע הקוד עד לאחר יצירת הצמתים והפעלתם. (I018da)

שינויים ב-API

  • הוספנו את Modifier.focusOrder() שאפשר להשתמש בו כדי לציין סדר מותאם אישית של מעבר המיקוד (I90cf5, ‏ b/175899543, ‏ b/170155556, ‏ b/170155429)
  • הסרה של focusObserver שהוצא משימוש. במקום זאת, צריך להשתמש ב-onFocusChanged או ב-onFocusEvent (I3ecb9,‏ b/175156387)
  • שינויים ב-EditOperations API
    • שינוי השם של EditOperation ל-EditCommand
    • הוספת סיומת פקודות להטמעות ספציפיות של EditOperation
    • EditCommand כבר לא הן כיתות נתונים
    • שינוי השם של הפונקציה EditOperation.process ל-applyTo
    • שינוי השם של InputEventListener ל-InputEventCallback
    • (I0a366)
  • הוסר השימוש בפונקציות PxSquared,‏ PxCubed ו-PxInverse. שינוי Size.center() למאפיין. (I973f7)
  • מעכשיו אפשר להגדיר את היצירה של Recomposers לממשקי משתמש שנמצאים בבדיקה באמצעות המודול ui-test (Ibebd8)
  • שינוי המהירות כך שתכלול רכיבים ופעולות מתמטיות. (Ib0447)
  • השם של @ExperimentalTesting השתנה ל-@ExperimentalTestApi כדי להתאים להערות דומות של ממשקי API ניסיוניים (Ia4502, ‏ b/171464963)
  • שינינו את השם של Color.useOrElse() ל-Color.takeOrElse() (Ifdcf5)
  • הוסרו הכיתות DpInverse,‏ DpSquared ו-DpCubed שלא בשימוש. (I4d62b)
  • השם של Constraints#satisfiedBy השתנה ל-isSatisfiedBy. (I9cf5c)
  • מוסיפים קריאה חוזרת (callback) כדי להודיע לבעלים כשהגבולות של layoutnode משתנים. (I72fd1)
  • נוספו הפונקציות isSpecified,‏ isUnspecified ו-useOrElse לכיתות בקוד שמוצג בשורה אחת עם קבוע Unspecified. (I93f7b, ‏ b/174310811)
  • הרחבת ממשקי ה-API של [Abstract]ComposeView כדי לאפשר מיחזור של תצוגות שמבוססות על Compose, תוך ביטול הרכבת התצוגה כדי ליצור אותה מחדש מאוחר יותר. הוספת ממשקי API להתקנה ולזיהוי של Recomposers ברמת החלון ושל CompositionReferences ליצירת קומפוזיציות צאצא.

    מוסיפים את ViewCompositionStrategy כדי להגדיר את אסטרטגיית המחיקה של ההרכב של [Abstract]ComposeViews. התנהגות ברירת המחדל היא מחיקה כשהחלון מנותק. (I860ab)

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

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

  • הוספת מתג ל-Strings.kt ב-foundation (I4a5b7, ‏ b/172366489)

  • הועבר nativeClass למודול UI והוגדר כפנימי. עדכנו את השימוש ב-nativeClass בהטמעות של equals, והחליפו אותו ב-'is MyClass'. (I4f734)

  • Modifier.focus() ו-Modifier.focusRequester() הוצאו משימוש. במקום זאת, צריך להשתמש ב-Modifier.focusModifier()‎ וב-Modifier.focusReference()‎. (I75a48, ‏ b/175160751, ‏ b/175160532, ‏ b/175077829)

  • הוספנו את SelectionRegistrar.notifySelectableChange כדי לעדכן את SelectionManager על עדכונים של Selectable. (I6ff30, ‏ b/173215242)

  • הוספנו את המאפיין Outline.bounds כדי לקבל את המלבן המקיף להטמעות שונות של קווים כלליים. (I16e74, ‏ b/175093504)

  • הוצא משימוש TestUiDispatcher. במקום זאת, צריך להשתמש ב-Dispatchers.Main‏ (Ic171f,‏ b/175385255)

  • ImeOptions ו-KeyboardOptions כבר לא סוג נתונים (I3c898, b/168684531)

  • שינויים ב-VisualTransformation API

    • השם של OffsetMap השתנה ל-OffsetMapping
    • השם של OffsetMapping.identityOffsetMap השתנה ל-OffsetMapping.Identity
    • PasswordTransformation כבר לא שייך ל-data-class
    • העברת OffsetMapping לקובץ משלו
    • (I0bdf3)
  • שינינו את השם של Position ל-DpOffset והסרנו את getDistance()‎ (Ib2dfd)

  • שינוי הפונקציה fun Dp.isFinite() לפונקציה val Dp.isFinite‏ (I50e00)

תיקוני באגים

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

גרסה 1.0.0-alpha09

16 בדצמבר 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 משוחרר. גרסה 1.0.0-alpha09 מכילה את ההוספות האלה.

שינויים ב-API

  • האירוע KeyEvent.Alt הוצא משימוש והוא לא קיים יותר. במקום זאת, צריך להשתמש ב-KeyEvent.isAltPressed. (Idd695)
  • Modifier.keyInputFilter ו-Modifier.previewKeyInputFilter הוצאו משימוש. במקום זאת, צריך להשתמש ב-Modifier.onKeyEvent וב-Modifier.onPreviewKeyEvent (Idbf1b,‏ b/175156384)
  • Modifier.focusObserver הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.onFocusChanged או ב-Modifier.onFocusEvent (I30f17,‏ b/168511863,‏ b/168511484)
  • בממשקי ה-API להשהיית קלט של סמן, שינינו את השם של HandlePointerInputScope ל-AwaitPointerEventScope ואת handlePointerInput() ל-awaitPointerEventScope().‏ (Idf0a1, ‏ b/175142755)
  • Autofill API הוא עכשיו ממשק API ניסיוני, ונדרש הסכמה מפורשת לשימוש בו (I0a1ec)
  • הוספת הצהרות לפירוק מבנה כדי ליצור מכונות של FocuSRequester (I35d84, ‏ b/174817008)
  • השם של accessibilityLabel השתנה ל-contentDescription.‏ השם של accessibilityValue השתנה ל-stateDescription. (I250f2)
  • אירועים מותאמים אישית הוסרו מ-API להשהיית קלט של סמן (Ia54d5, ‏ b/175142755)
  • הוספנו כמה פונקציות חדשות ל-SelectionRegistrar ושינינו את השם של onPositionChange ל-notifyPositionChange. (Ifbaf7)
  • עוד חברים ב-LayoutNode שסימנו כפנימיים (I443c6)
  • הוספת LayoutInfo לשימוש בכלים ובבדיקות (I9b190)
  • AndroidOwner הפך את הבעיה לבעיה פנימית (Ibcad0, ‏ b/170296980)
  • הוסר ההערה ExperimentalPointerInput (Ia7a24)
  • נוספה מערכת גלילה בתצוגת עץ. פרטים נוספים זמינים במאמר בנושא Modifier.nestedScroll‏ (I36e15, ‏ b/162408885)
  • הפונקציה subcomposeInto(LayoutNode) הפכה לפונקציה פנימית (Id724a)
  • ממשק Applier השתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.

    השם של השיטה insert() השתנה ל-insertTopDown().

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

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

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

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

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

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

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

  • הוספנו את PathEffect graphics API כדי לספק דפוסים שונים לצורות עם קווים. הוצאה משימוש של NativePathEffect לטובת הטמעה של PathEffect עם ערכים צפויים/בפועל. (I5e976, ‏ b/171072166)

  • הוספנו ממשקי IdlingResource ל-Compose, כגרסה נתמכת של משאבי ההמתנה של Espresso ב-Compose. אפשר לרשום אותם ולבטל את הרישום שלהם באמצעות ComposeTestRule‏ (I433f3)

  • הסרת הרישום (הביטול) הגלובלי של ComposeIdlingResource והסרת הרישום (הביטול) הגלובלי של שעונים ב-ComposeIdlingResource (I32660)

תיקוני באגים

  • פונקציות Lambda במשתני שינוי של אופסט מחזירות עכשיו IntOffset במקום Float. (Ic9ee5, ‏ b/174137212, ‏ b/174146755)
  • הוסרו מה-API הציבורי SlotTable, ‏ SlotReader ו-SlotWriter. בעבר הם סומנו בתור InternalComposeAPI. עכשיו הם פנימיים למודול ה-Compose.

    הוספנו את CompositionData ו-CompositionGroup כתחליף ל-UI-tooling API, כדי להשתמש בהם לחילוץ פרטי קומפוזיציה. הם גלויים לכולם, אבל לא מיועדים לשימוש מחוץ ל-UI-tooling API, כי הם מספקים את המידע הגולמי ש-UI-tooling API מפרש (I31a9c)

  • שיפרנו את ShaderBrush כדי ליצור באופן עצלני מופע של שַדְר (shader) כשמידע על הגודל של סביבת הציור זמין. האפשרות הזו שימושית להגדרת מעברי צבע שממלאים את כל גבולות הציור של רכיב ה-Composable בזמן היצירה, בלי צורך להטמיע הטמעות מותאמות אישית של DrawModifier.

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

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

  • BuildCompat.isAtLeastR (Idb37e) שהוצא משימוש

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

  • הוסרו שיטות ההרחבה של Float ו-Double להמרת ערכים לרדיאנים. הפונקציה הועברה לפונקציה פרטית בתוך ההטמעה של PathParser, שהיה המקום היחיד שבו היא שימשה (I25f52)

גרסה 1.0.0-alpha08

2 בדצמבר 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 משוחרר. גרסה 1.0.0-alpha08 מכילה את ההצהרות האלה.

שינויים ב-API

  • הוספת פעולה סמנטית 'ביטול' (I2b706)
  • העברנו את ממשקי ה-API של DrawModifier מחבילת androidx.compose.ui לחבילה androidx.compose.ui.draw. נוצר הקובץ DrawModifierDeprecated.kt כדי לכלול שיטות עזר או כינויים מסוגים (type aliases) שיעזרו בהעברה מ-APIs הקודמים ל-APIs הנוכחיים. (Id6044, ‏ b/173834241)
  • שינינו את השם של Modifier.drawLayer ל-Modifier.graphicsLayer. בנוסף, עדכנו את הכיתות הקשורות ל-GraphicsLayer בהתאם למשוב על ה-API. (I0bd29, ‏ b/173834241)
  • נוספו השיטות החדשות placeable.placeWithLayer() ו-placeable.placeRelativeWithLayer(), שמאפשרות למשתני פריסה ולפריסות בהתאמה אישית להציב רכיב צאצא עם שכבת גרפיקה לציור שלו. כך אנחנו יכולים קודם לבצע אופטימיזציה של ציורים מחדש, כך שכאשר אנחנו צריכים להעביר צאצא לא נצטרך לצייר מחדש את התוכן שלו. שנית, אנחנו יכולים להחיל טרנספורמציות ציור על צאצא (Ibd8f6, ‏ b/170296989, ‏ b/171493718, ‏ b/173030831)
  • <T> הוסר מהצהרת SubcomposeLayout. עכשיו אפשר להשתמש בו בלי לציין סוג. (Ib60c8)
  • הוספנו ממשקי API של Modifier.scale/rotate לצורך נוחות ב-drawLayer.
    • השם של Modifier.drawOpacity השתנה ל-Modifier.alpha
    • שינית את השם של Modifier.drawShadow ל-Modifier.shadow (I264ca, ‏ b/173208140)
  • השדות 'זמן פעולה תקינה' ו'מיקום' של PointerInputData לא יכולים להיות ריקים. (Id468a)
  • עכשיו MaterialTheme מגדיר את הצבעים הנכונים לידני הבחירה ולרקע הבחירה. אפליקציות שאינן ב-Material Design יכולות להשתמש באופן ידני ב-AmbientTextSelectionColors כדי להתאים אישית את הצבעים שבהם נעשה שימוש לבחירה. (I1e6f4, ‏ b/139320372, ‏ b/139320907)
  • נוספה הפונקציה WindowManager.isWindowFocused כדי לבדוק אם חלון המארח נמצא במוקד, ונוסף WindowFocusObserver שמספק קריאה חוזרת (callback) של onWindowFocusChanged. (I53b2a, b/170932874)
  • עדכנו את TransformOrigin API כך שיכלול תחביר של ניתוח מבנה כדי להחזיר את pivotFractionX ו-pivotFractionY בתור component1 ו-component2 (If43c4, ‏ b/173586560)
  • הוספנו בדיקת איתור שגיאות בקוד לשמות ולמיקום של פרמטרים של lambda שניתנים ליצירה, כדי לבדוק את העקביות עם ההנחיות של Compose. בנוסף, העברנו חלק מממשקי ה-API שמשתמשים ב-children בתור השם של פונקציית ה-lambda שבסוף ל-content, בהתאם לבדיקת האיתור של שגיאות בקוד ולהנחיות. (Iec48e)
  • נוספה ממשק API כדי לבדוק אם מקשי השינוי Alt, ‏ Ctrl, ‏ Meta או Shift הוקשקו כשאירוע מקש נשלח. (I50ed9)
  • נוספה עומס יתר חדש של Modifier.drawLayer(). הוא מקבל בלוק lambda ב-GraphicsLayerScope חדש שבו מגדירים את פרמטרי השכבה באופן שמאפשר לדלג על הרכבת מחדש ועל פריסה מחדש כשמתרחש שינוי המצב. DrawLayerModifier הוא עכשיו פנימי, לקראת העברת הלוגיקה שלו ל-placeable.placeWithLayer() method של LayoutModifier‏ (I15e9f, b/173030831)
  • הוצאנו משימוש את הסביבות של Ambients עם הסיומת Ambient והחלפנו אותן בנכסים חדשים עם התחילית Ambient, בהתאם להנחיות אחרות לגבי Ambients ו-Compose API. (I33440)
  • הועבר androidx.compose.ui.text.Typeface אל androidx.compose.ui.text.font.Typeface (Ic2b81)
  • שם הארגומנט הסמנטי mergeAllDescendants שונה ל-mergeDescendants. (Ib6250)
  • גלאי תנועות גרירה חדש להשעיית API של קלט סמן, כולל נעילת כיוון. (Icef25)
  • שינינו את השם של VectorAsset ל-ImageVector, והעברנו את VectorAsset ושינינו את השם שלו ל-Builder כדי שיהיה מחלקה פנימית של ImageVector בהתאם להנחיות ל-API. הוספנו סוג חלופי של VectorAssetBuilder כדי לקשר ל-ImageVector.Builder לצורך תאימות. (Icfdc8)
  • השם של ImageAsset והשיטות הקשורות השתנה ל-ImageBitmap. (Ia2d99)
  • הוספת פרמטר zIndex ל-place() של PlacementScope, כך ש-Modifier.zIndex() פועל עכשיו בתור LayoutModifier וכל פריסה מותאמת אישית יכולה להגדיר ערכי zIndex לצאצאים שלה ישירות בבלוק המיקום (I711f7, b/171493718)
  • העברת מאפייני סמנטיקה בסיסיים ל-UI (I6f05c)
  • הוצאה משימוש של place(Offset) ו-placeRelative(Offset). במקום זאת, משתמשים בהעמסת יתר עם אופסים של int (I4c5e7)
  • הוסרו ממשקי API שהוצאו משימוש בעבר: ה-Modifier.onPositioned הוסר, צריך להשתמש ב-Modifier.onGloballyPositioned. השיטה Modifier.onDraw הוסרה. יש להשתמש ב-Modifier.onDrawBehind. Modifier.plus הוצא משימוש. צריך להשתמש ב-Modifier.then. Color.Unset הוסר. יש להשתמש ב-Color.Unspecified. הכיתה PxBounds הוסרה. במקום זאת, יש להשתמש ב-Rect. (Ie9d02, ‏ b/172562222)
  • ממשק ההתאמה עודכן והפך לפונקציונלי. (I46a07, ‏ b/172311734)
  • הוספנו גלאי תנועות להקשה, להקשה כפולה, ללחיצה ארוכה ולחיוויית לחיצה באמצעות הקלט החדש של סמן ההשהיה. הוספנו גם כמה כלי עזר, כדי להקל על המפתחים לכתוב גלאי תנועות משלהם. (I00807)
  • השם של id שונה ל-layoutId עבור LayoutIdParentData. השם של Measurable.id שונה לשם Measurable.layoutId. (Iadbcb, ‏ b/172449643)
  • גלאי תנועות חדש עם תמיכה במגע רב-משתמש, כולל כלי עזר לזיהוי סיבוב, שינוי מרחק התצוגה ותנועת פנורמה. (Ic459d)
  • הוספנו את ממשקי ה-API SweepGradientShader ו-SweepGradientBrush. (Ia22c1)
  • שליטה בזמן בבדיקות (TestAnimationClock והשימושים שלו) היא עכשיו ניסיונית (I6ef86, ‏ b/171378521)
  • הוספת ממשקי API לגלילה שמבוססים על קורוטינים:

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

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

  • הצגת הטמעות ברירת מחדל של שיטות ומאפיינים ב-AnimationClockTestRule שאפשר להעביר אל clock (I7ea3d, ‏ b/173399709)

  • עכשיו אפשר להשתמש ב-AndroidComposeTestRule כדי להפעיל מרכזי פעילות מותאמים אישית (Ib8288, ‏ b/153623653, ‏ b/154135019)

  • ה-API TextLayoutResult.getLineVisibleEnd הוצא משימוש. כתחליף, לפרמטר TextLayoutResult.getLineEnd יש עכשיו פרמטר חדש בשם visibleEnd. (I73282)

  • עדכון של TextFieldValue API

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

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

תיקוני באגים

  • שם הפרמטר של Box שונה ל-contentAlignment. (I2c957)
  • השם של המשתנים offsetPx השתנה ל-offset. עכשיו הם מקבלים פרמטרים של lambda במקום State. (Ic3021, ‏ b/173594846)
  • הוספנו את הפרמטר resetInput ל-TextInputService#onStateUpdated‏ (I3e8f5, ‏ b/172239032, ‏ b/171860947)
  • הוספנו בדיקת איתור שגיאות בקוד (lint) לפרמטרים של מודификаторים בפונקציות מורכבות. בדיקת האיתור של שגיאות בקוד בודקת את השם, סוג ההחזרה, ערך ברירת המחדל והסדר של הפרמטר כדי לוודא שהוא עומד בהנחיות של Compose. (If493b)
  • הוספנו באופן זמני אפשרות לאפשר ל-TestAnimationClock לפעול לפי MonotonicFrameClock (I1403b, ‏ b/173402197)
  • נוספה חבילה של Android Typeface. אפשר לטעון גופן Android באמצעות הפונקציה typeface, למשל typeface(Typeface.DEFAULT). השם של typefaceFromFontFamily() השתנה גם ל-typeface() (I52ab7)
  • הוספנו בדיקת איתור שגיאות בקוד כדי לבדוק שפונקציות של מפעל Modifier מוגדרות כתוספים ל-Modifier, כדי שאפשר יהיה לשרשר אותן יחד בצורה חלקה. (I07981)
  • הסרת המודול הישן של בדיקת ממשק המשתמש והסטאבים שלו (I3a7cb)
  • Recomposer לא מקבל יותר EmbeddingContext. יחסי התלות הנדרשים לתזמון מתקבלים מ-effectCoroutineContext. FrameManager הוצא משימוש. שילובי פלטפורמות צריכים להפעיל טיפול משלהם בתמונות המצב הגלובלית. (I02369)
  • העברת פרטי סגנון לצומת הנגישות. (If5e8d)
  • השם של TextUnit.Inherit השתנה ל-TextUnit.Unspecified כדי לשמור על עקביות עם יחידות אחרות. (Ifce19)

Compose UI גרסה 1.0.0-alpha07

11 בנובמבר 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 משוחרר. גרסה 1.0.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • הוספנו את הכיתה ScaleFactor ברמת השורה, כדי לייצג גורמי שינוי לצייר האנכי והציר האופקי בנפרד, כדי לתמוך בתרחישי שימוש עם שינוי לא אחיד של קנה המידה.
    • נוספה השיטה computeScaleFactor ל-ContentScale
    • הוספנו את ContentScale.FillBounds כדי לבצע שינוי קנה מידה לא אחיד כדי למתוח את גבולות המקור כך שיתפסו את היעד במלואו.
    • נוספו שיטות של אופרטורים לחישוב פרמטרים של ScaleFactor עם פרמטרים של Size.
    • (Ic96a6, ‏ b/172291582)
  • נוספו המפעלים BiasAlignment ו-BiasAbsoluteAlignment ליצירת התאמות. (Iac836, ‏ b/169406772)
  • מאפשר למפתח לנקות את המיקוד בכוח. (I90372)
  • תוקן באג שגרם לכך שלא ניתן היה לצייר את התצוגה של התמונות בתוך 'כתיבה'. (If7782)
  • ה-API של onDrawBehind נוצר ב-ContentDrawScope כדי להתאים למוסכמה של שמות עם Modifier.drawBehind. (I4fc3a, ‏ b/171955269)
  • הוספנו תמיכה במרחק המצלמה כתוספת לטרנספורמציות תלת-ממדיות של rotationX/rotationY בממשקי API של שכבות. (I40213, ‏ b/171492100)
  • נוספה SelectionContainer ללא קריאה חוזרת (Ibfadb)
  • ההערה ExperimentalSubcomposeLayoutApi הוסרה. עכשיו אפשר להשתמש ב-SubcomposeLayout בלי להוסיף את @OptIn (I708ad)
  • FirstBaseline ו-LastBaseline הועברו לחבילה androidx.compose.ui.layout (Ied2e7)
  • הוסר הערך של האטימות מהפונקציה drawShadow() כי הוא היה מבלבול. (I82c62, ‏ b/171624638)
  • MeasureResult הועבר מ-MeasureScope. (Ibf96d, ‏ b/171184002)
  • כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, ‏ b/170475424)
  • הסרה של FocusState2 שהוצא משימוש (I686cb, ‏ b/168686446)
  • ZIndexModifier הוא עכשיו פנימי (I1808b, ‏ b/171493718)
  • סוג ההחזרה של שיטת lerp עודכן בפרמטרים של Size כדי להחזיר Size שאינו null, כדי למנוע אריזה מיותרת. (Ib0044)
  • נוספה האפשרות TestMonotonicFrameClock לבדיקה של קוד שמסתמך על MonotonicFrameClock של Compose כדי להמתין לאירועי פריים של קומפוזיציה באמצעות runBlockingTest של kotlinx-coroutines-test (I4402f)
  • הוסר GestureScope.localToGlobal‏ (I15299, ‏ b/171462785)
  • נוספה פונקציית חיפוש של onAllNodesWithSubstring (I81dd7, ‏ b/171462889)
  • המודול androidx.ui.test הוצא משימוש. צריך לעבור אל androidx.compose.ui.test ו-androidx.compose.ui.test.junit4 (I452e8)

תיקוני באגים

  • השיטה captureToBitmap הועברה ל-captureToImage. (I86385)
  • ה-foundation.Text הוצא משימוש והוחלף ב-material.Text. ל-API טקסט בסיסי ללא דעה מוצגת, שלא צורך ערכים מעיצוב, אפשר לעיין ב-androidx.compose.foundation.BasicText. (If64cb)
  • עדכון של TextFields כדי לקבל KeyboardOptions (Ida7f3)
  • שינוי השם של KeyboardOptions ל-ImeOptions‏ (I82f36)
  • הועברו KeyboardType ו-ImeAction אל KeyboardOptions‏ (I910ce)
  • האפשרות provideDefault נוספה כחלופה לספק נתונים סטטיים, וניתן להשתמש בה כדי לציין ערכים סטטיים שייקבעו רק אם לא צוין כבר ערך סטטי. (Id6635, ‏ b/171024925)
  • ה-BaseTextField הוצא משימוש. במקום זאת, צריך להשתמש ב-BasicTextField. (I896eb)
  • הצגת המודול ui-test-junit4 (Ib91f8)
  • השם של relativePaddingFrom שונה לשם paddingFrom. המשתנה המשנה paddingFromBaseline נוסף כדי להקל על ציון המרחקים בין גבולות הפריסה לבין קווים בסיסיים של טקסט. (I0440a, ‏ b/170633813)
  • השם של LaunchedTask שונה ל-LaunchedEffect כדי לשמור על עקביות עם ממשקי ה-API של SideEffect ו-DisposableEffect. כדי לעודד שימוש בשיטות מומלצות, אסור להשתמש ב-LaunchedEffect ללא פרמטרים של נושא. (Ifd3d4)
  • הוספנו משאבים שניתנים ליצירה מחדש, שמתעדכנים כשהתצורה מתעדכנת. (I6387c, ‏ b/167352819)
  • עכשיו נדרש CoroutineContext בזמן היצירה של Recomposer (Ic4610)
  • סיכום הערכים של zIndex כשחלים כמה Modifier.zIndex(). בעבר, האפשרות הראשונה הייתה מנצחת. (Ic514c, ‏ b/170623936)
  • שינויים בהטמעה הפנימית של SlotTable, שלא אמורים להשפיע על ה-API הציבורי. (If9828)
  • נוספה אפשרות IME לתיקון אוטומטי במקלדת (I57b8d)
  • androidx.ui.test הועבר ל-androidx.compose.ui.test (I9ffdb)
  • הוסרה השיטה KeyboardOptions.toImeOptions מה-API הציבורי. (Ic2e45)

תרומה חיצונית

  • השבתת הפרסום של הארטיפקט הפנימי androidx.compose.ui:ui-text-android‏ (Ib93fa)

גרסה 1.0.0-alpha06

28 באוקטובר 2020

androidx.compose.ui:ui-*:1.0.0-alpha06 משוחרר. גרסה 1.0.0-alpha06 מכילה את ההוספות האלה.

שינויים ב-API

  • עכשיו, Recomposer הוא CompositionReference והורה תקף של קומפוזיציה. עכשיו נדרש שימוש ב-Explicit Recomposer במקומות פחותים. (I4036f)
  • הוצאנו משימוש את VectorPainter והחלפנו אותו ב-rememberVectorPainter כדי לציין בצורה טובה יותר שה-API הניתן ליצירה משתמש בפנים ב-'remember' כדי לשמור נתונים במהלך קומפוזיציות. (Ifda43)
  • עדכנו את ממשק ה-API של Modifier.drawWithCache כדי לחשוף את ContentDrawScope כטווח מקלט במקום DrawScope, כדי לספק להטמעות את היכולת לשנות את הסדר של פקודות הציור. האפשרות הזו שימושית בתרחישי שימוש של שילוב/הוספת גוון, שבהם צריך ליצור קודם עיבוד (רנדור) של פיקסלים של תוכן כדי שהאלגוריתם המתאים של שילוב המצבים יוכל לחול בצורה תקינה. (Ie7ec8)
  • העברת SimpleContainer אל PopupTestUtils.kt‏ (I78c57)
  • ConsumedData כבר לא סוג נתונים. פרטים נוספים זמינים בכתובת https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • תיקון המיקום של נקודת האחיזה ב-RTL. (I6e1e0)
  • שינוי ה-DrawScope וה-ContentDrawScope לממשקים במקום לכיתות מופשטים
    • יצירה של הטמעה של CanvasDrawScope ב-DrawScope
    • הטמעות מחדש של DrawScope כך שייעשה שימוש ב-CanvasScope במקום זאת
    • נוצר DrawContext כדי לעטוף את יחסי התלות של DrawScope
    • הסרת שיטות לא תקינות ב-DrawScope (I56f5e)
  • שינוי שפוגע בתאימות לאחור: הוסר ערך ההחזרה מ-PointerInputFilter.onPointerEvent(...), מאחר שהערך היחיד שאפשר לשנות באירועי סמן הוא נתוני צריכה. במקום להחזיר נתונים מ-PointerInputFilter.onPointerEvent(...), עכשיו אפשר פשוט לשנות את נתוני הצריכה של PointerEvents שהועברו. (I6acd0)
  • הוספו ממשקים ל-MeasureScope ול-IntrinsicMeasureScope. (I1a087, ‏ b/170461665)
  • פונקציית המיזוג של AlignmentLine הוסתר. (I9da1a, ‏ b/170612900, ‏ b/170611568)
  • הוספת היכולת לציין פרטי ביקורת במשנה מורכב (Idee08, ‏ b/163494569)
  • הוספה של האפשרות 'בחירת הכול' לתפריט הבחירה (Ief02b)
  • עדכנו את DrawTransform.rotate כך שיקבל פרמטר pivot שמוגדר כברירת מחדל כ-center, בהתאם למסמכי העזרה.
    • עדכנו את DrawScope.rotateRad כך שישתמש ב-Offset של נקודת הציר כדי להתאים לשיטות טרנספורמציה אחרות.
    • עומס יתר של DrawScope.rotateRad שיצאה משימוש, שצרך משתני float עבור הקואורדינטות x ו-y של הציר.
    • (Iffcbb, ‏ b/170434992)

תיקוני באגים

  • בדיקת איתור שגיאות בקוד של ממשקי API עבור MissingGetterMatchingBuilder מופעלת ב-androidx‏ (I4bbea, ‏ b/138602561)
  • מוסיפים בדיקה. (I6b8ae)
  • מפעילים את המעברים ב-ComposeTestRule ומסירים את האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)
  • נוספה אפשרות IME של האותיות הגדולות במקלדת (I8ac38)
  • נוספה אפשרות מקלדת לשורה אחת ל-CoreTextField‏ (I72e6d)
  • העברה של SimpleContainer אל PopupTestUtils.kt‏ (I65c3e)
  • שינינו את השם של Radius API ל-CornerRadius כדי לשקף טוב יותר את אופן השימוש בו ב-Compose. עדכנו את המסמכים כדי לציין שרדיאנים של פינות שליליים מוגבלים לאפס. (I130c7, ‏ b/168762961)
  • שיפור יכולת הפעולה ההדדית עם Android על ידי המשך שליחת MotionEvents לתצוגות Android צאצאיות שמחזירות false ל-onTouchEvent לכל הפעולות מלבד ACTION_DOWN (I94c5a, ‏ b/170320973)
  • Box הפך לפונקציה מוטמעת. (Ibce0c, ‏ b/155056091)

תרומה חיצונית

  • תמיכה בלוקאלים שונים עבור AnnotatedString.capitalize ו-AnnotatedString.decapitalize (I4aa7f)

גרסה 1.0.0-alpha05

14 באוקטובר 2020

androidx.compose.ui:ui-*:1.0.0-alpha05 משוחרר. גרסה 1.0.0-alpha05 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספת שפת DSL לציון פרטי המפקח (Ic9a22)
  • מעבירים את 'לחיצה ארוכה' אל 'טקסט'. (Iff2bc)
  • Modifier.pointerInput‏ – שינוי מקדם קלט ניסיוני להשהיית קלט (Ia77d2)
  • נוספו פעולות נגישות של העתקה/הדבקה/חיתוך (I6db4f)
  • הוסרה המכונה הציבורית ליצירת אובייקטים של AndroidOwner (Iacaef)
  • חלונות קופצים ותיבות דו-שיח יורשים עכשיו את FLAG_SECURE מהחלון ההורה. הוספנו גם אפשרות להגדיר זאת באופן מפורש (I64966, ‏ b/143778148, ‏ b/143778149)
  • עכשיו אפשר לשנות את נתוני הצריכה. בנוסף, קריאות לפונקציות התוסף שמבצעות שימוש לא מחזירות יותר ערך חדש של PointerInputChange, אלא מבצעות מוטציה של PointerInputChange שסופק.

    זהו השלב הראשון בתהליך בן שני שלבים להפיכת הנתונים של PointerEvent למשתנים, כך שקוד המשתמש לא יוכל לערוך נתונים אחרים של מצביע. השלב השני הוא הסרת סוג ההחזרה List<PointerInputChange> מ-PointerInputFilter.onPointerEvent(...). (Id067e)

  • השבתת האפשרות 'בחירה בטקסט' ודגמה. (Ie7e97)

  • הפכנו את onGloballyPositioned לפונקציה מוטמעת (inline) (I15830)

  • השם של OnPositionedModifier השתנה ל-OnGloballyPositionedModifier, והשם של onPositioned() השתנה ל-onGloballyPositioned().‏ (I587e8,‏ b/169083903)

  • המאפיין hasPendingMeasureOrLayout נוסף לבעלים, והוא מציין אם לבעלים יש עבודות פריסה בהמתנה. (I3d9f8, ‏ b/169038599)

  • הוספנו ממשק API לניקוי המיקוד באופן פרוגרמטי (Ie1dc2, ‏ b/161487952)

  • בוצעה הסרה של PointerInputFilter.onPointerInput(...). צריך להשתמש ב-PointerInputFilter.onPointerEvent(...) במקומו. (I6f04a)

  • שינויים בגודל

    • הוסר Size.getFlipped
    • הוסרה Size.rem
    • הוסר Size.truncDiv‏ (Ief44d, ‏ b/169790720)
  • כחלק מהסטנדרטיזציה של ערכי סנטינל לכיתות בקוד, שינינו את השם של Color.Unset ל-Color.Unspecified כדי לשמור על עקביות עם כיתות אחרות בקוד (I97611, ‏ b/169797763)

  • האפשרות TextOverflow.None לא מופיעה. כש-overflow הוא None, הרכיב Text לא מטפל יותר בחריגה מעבר לגבולות, והוא מדווח על הגודל בפועל שלו ל-LayoutNode. (I175c9, ‏ b/158830170)

  • השם של פרמטר ההיקף ב-AnnotatedString.Builder.addStringAnnotation השתנה ל-tag כדי לשמור על עקביות ב-API. (I7c8cb)

תיקוני באגים

  • כדי לשפר את הביצועים של גלילה ב-LazyColumn/Row, אנחנו מבצעים פחות עבודה בהרכבה המשנית בכל גלילה. נוספה השיטה החדשה hasInvalidations()‏ ל-Composition class. השיטה hasPendingChanges()‏ מ-Recomposer נקראה עכשיו hasInvalidations()‏ (Ib2f32, ‏ b/168293643, ‏ b/167972292, ‏ b/165028371)
  • העדכנו את הפרמטרים של Size.Unspecified ל-Float.NaN במקום ל-Float.POSITIVE_INFINITY. עדכנו את הטמעות Painter כך שיבדקו את הערך Size.Unspecified וגם ערכים של Sizes לא סופיים. (I95a7e)
  • סדר הקריאות ל-place() בפריסות בהתאמה אישית מגדיר עכשיו את סדר הציור של הצאצאים (Ibc9f6)
  • תמיכה בהמרה של AnnotatedString ל-SpannableString לצורכי נגישות. (Ief907)
  • נוספו stubs לכיתות Android שנמצאות בפלטפורמות ישנות יותר, כדי להימנע משימוש ב-reflection ככל האפשר. (Ia1790)
  • תוקנה באג: אם המקלדת הווירטואלית המוצגת גרמה לאפליקציה לתרגם, קואורדינטות הקלט של הסמן היו הופכות ללא נכונות. (Ic4cec, ‏ b/163077821)

גרסה 1.0.0-alpha04

1 באוקטובר 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 משוחרר. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • הוספנו את OwnerScope כדי לאפשר איסוף של היקפי התצפית של פריסה ותרשימים אחרי שהם כבר לא תקפים. (Ic4cf8)
  • נוספו OnRemeasuredModifier ו-onSizeChanged() כדי לקבל קריאה חוזרת (callback) כשפריסת התוכן נמדדת מחדש והגודל משתנה, בהתאמה. (I657cf, ‏ b/154108792)
  • הוספת פעולה לפי סמנטיקה של לחיצה ארוכה (I6281b, ‏ b/156468846)
  • הגדרת FocusManager כפרטי. (I7872f)
  • עדכנו את ההטמעה כדי ליצור הטמעה ייעודית של DrawCacheModifier במקום להוסיף מאפיינים אופציונליים ל-DrawModifier.

    מסמכי עזרה מעודכנים לשיטות שונות (Ibd166)

  • כדי למנוע יצירת אובייקט, צריך להגדיר את TextRange בשורה. (Id034b)

  • אי אפשר יותר לקרוא את PlacementScope#parentWidth ואת PlacementScope#parentLayoutDirection מבלוק מיקום המודעה של פריסה מותאמת אישית. (Icc1ae, ‏ b/168295623)

  • מוסיפים את AccessibilityScrollState למאפייני הסמנטיקה. (Ifeda9)

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

  • הרכיב ParagraphConstraints הוסר. עכשיו הרוחב מועבר ישירות ל-Paragraph. (Ica712)

תיקוני באגים

  • עדכנו הרבה ממשקי Graphics API
    • עדכנו את ממשקי ה-API של טרנספורמציות של שינוי קנה מידה וסיבוב כך שישתמשו בפרמטר Offset יחיד שמייצג את קואורדינטת הציר, במקום בפרמטר float נפרד לכל אחת מקואורדינטות ה-x/y ב-DrawScope וב-DrawTransform.
    • הוסר השימוש בשיטות Rect.expandToInclude ו-Rect.join
    • עדכנו את המסמכים של Radius כך שיכללו את המונח 'אליפסה' בנוסף למונח 'אליפסואיד'
    • נוספה תיעוד כדי לציין שאין להפעיל ישירות את המבנה הציבורי של הכיתה Radius שמוטמעת בקוד, אלא ליצור אובייקטים של Radius באמצעות המבנים של הפונקציות שלהם
    • הוסרו ממשקי ה-API של RoundRect לשליחת שאילתות ל-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 של גודל שהניחו שמדובר ב-Rectangle עם מקור ב-0,0
    • הוספנו ל-Radius ממשק API להרס עצמי
    • העברנו פונקציות שונות של התוסף RoundRect לנכסים במקום זאת
    • (I8f5c7, ‏ b/168762961)
  • ה-foundation.Box הוצא משימוש. במקום זאת, צריך להשתמש ב-foundation.layout.Box. (Ie5950, ‏ b/167680279)
  • השם של Stack השתנה ל-Box. תיפסק התמיכה ב-Box הקודם, והוא יוחלף ב-Box החדש ב-compose.foundation.layout. ההתנהגות של Box החדש היא להציב את הצאצאים זה על גבי זה כשיש לו כמה צאצאים – בניגוד ל-Box הקודם, שההתנהגות שלו הייתה דומה לזו של Column. (I94893, ‏ b/167680279)
  • הפרמטרים של עיטור התיבה הוצאו משימוש. אם רוצים להוסיף לקובייה קישוטים או שוליים, צריך להשתמש במקום זאת ב-Modifiers (Modifier.background, ‏ Modifier.border, ‏ Modifier.padding) (Ibae92, ‏ b/167680279)
  • עדכנו הרבה ממשקי Graphics API
    • עדכנו את ממשקי ה-API של DrawScope עם שיטות טרנספורמציה ברמת ההיקף כדי לציין שהטרנספורמציה חלה רק בתוך פונקציית הקריאה החוזרת, והיא תוסר אחרי ההפעלה של פונקציית הקריאה החוזרת
    • מסמכי העזרה של clipPath עודכנו כך שיתייחסו ל-Path במקום ל-rounded rectangle
    • תוקן המרווח במסמכי התיעוד של הפרמטר הנכון ב-clipPath
    • שינוי השם של DrawScope.drawCanvas ל-drawIntoCanvas והסרת הפרמטר size
    • שינוי השם של הפרמטרים dx/dy בשיטת ההכנסה ל'אופקי' ו'אנכי'
    • הוספנו עומס יתר של inset שמספק את אותו ערך inset לכל 4 הגבולות
    • הסרנו את המסמך בנושא שיטת ההכנסה (inset) שמציין שההכנסה תחול על כל 4 הצדדים
    • מסמכי עזר מעודכנים לגבי הכיתה Rect
    • עדכנו את ההערות על הפרמטרים של Rect כך שיתאימו לסגנון של kdoc.
    • הוסר Rect.join ו-Rect.expandToInclude
    • נוצרה עומס יתר ל-Rect.translate(offset) והוצא משימוש Rect.shift
    • (If086a, ‏ b/167737376)
  • הוספת הערה למאפיינים rootAnimationClockFactory, ‏ transitionsEnabled,‏ blinkingCursorEnabled ו-textInputServiceFactory באמצעות @VisibleForTesting, הפיכת המאפיינים ל-API פנימי והסתרת ה-kdoc שלהם (I554eb, ‏ b/168308412)
  • כדי להשבית את הבחירה שמוגדרת כברירת מחדל ולהימנע מהתנהגות בלתי צפויה, מסירים את SelectionContainer מהחלק העליון. אפשר להשתמש ב-SelectionContainer באופן ספציפי כדי לעטוף את התוכן שצריך לבחור במקום זאת. (I8dfe0, ‏ b/158459594)

גרסה 1.0.0-alpha03

16 בספטמבר 2020

androidx.compose.ui:ui-*:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.

שינויים ב-API

  • מסירים פעולות סמנטיות של גלילה קדימה או אחורה. נוספו שלבים ב-AccessibilityRangeInfo. (Ia47b0)
  • הוסר onInvalidate() מ-OwnerOwnedLayer מטפל בביטול התוקף. (Ica72b, ‏ b/162061312)
  • הוסרו שיטות של אופרטורים ב-Size API שמנצלות פרמטרים של Offset. התוצאה של הפעולות האלה לא ברורה וסוג התוצאה לא צפוי. לדוגמה, האם הפונקציה size - offset תחזיר ערך של offset או תוצאה של size עם ההפרש?

    כמו כן, הוסרו שיטות שהוצאו משימוש בכיתה Size. (Iec902, ‏ b/166514214)

תיקוני באגים

  • תיקון לפריטים של LazyColumn שנוצרו לפעמים באופן שגוי. הבעיה הזו גרמה גם לקריסות בתנאים מסוימים. (Ibcf17, ‏ b/163066980, ‏ b/165921895)
  • DpConstraints וממשקי ה-API שמשתמשים בהם הוצאו משימוש. (I90cdb, ‏ b/167389835)
  • createAndroidComposeRule ו-AndroidInputDispatcher הועברו מ-androidx.ui.test.android ל-androidx.ui.test (Idef08, ‏ b/164060572)
  • השמות של השימושים ב-gravity שונו באופן עקבי ל-align או ל-alignment בממשקי ה-API של הפריסה. (I2421a, ‏ b/164077038)
  • הוספנו את onNode ושיטות גלובליות אחרות ל-ComposeTestRule, כי השיטות הגלובליות הנוכחיות יוצאו משימוש. (Ieae36)

גרסה 1.0.0-alpha02

2 בספטמבר 2020

androidx.compose.ui:ui-*:1.0.0-alpha02 משוחרר. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

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

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

    נוספו בדיקות לאימות השיטות ב-Rect.kt‏ (I08460, ‏ b/165822356)

תיקוני באגים

  • נוספה פונקציית MutableRect, מלבן שאפשר לשנות. (I71bd2, ‏ b/160140398)
  • Matrix4 הוחלף ב-Matrix. כל שאר החלקים של חבילת vectormath הוסרו. (Ibd665, ‏ b/160140398)
  • הסכימון הקריאה לפונקציות שניתנות ליצירה השתנה. זהו שינוי בינארי שעלול לגרום לכשל. צריך לבצע הידור מחדש של כל הספריות כדי שיוכלו לפעול עם הגרסה הזו של הפלאגין של ה-Compose Compiler.

    השינוי הזה לא יוצר שינוי שגורם לשבירה ברמת המקור, כי ממשקי ה-API היחידים שהשתנו הם ממשקי ה-API של המהדר, שצריך להביע הסכמה מפורשת לשימוש בהם. (I7afd2, ‏ b/158123185)

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

גרסה 1.0.0-alpha01

26 באוגוסט 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 משוחרר. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.

גרסה 0.1.0-dev

גרסה 0.1.0-dev17

19 באוגוסט 2020

androidx.compose.ui:ui-*:0.1.0-dev17 משוחרר. גרסה 0.1.0-dev17 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

שינויים ב-API

  • האפשרות emitView הוצאה משימוש. אם אפשר, השתמשו ב-AndroidView במקום זאת כדי להפיק תצוגות בתוך Compose. חשוב לדעת שבעתיד לא תהיה תמיכה בהרכבה ישירה של תצוגות (Views) וקבוצות תצוגות (ViewGroups), אלא אם הן עלים בעץ ההרכבה, מצב שבו אפשר להשיג זאת באמצעות AndroidView. (I29b1e, ‏ b/163871221)
  • FocusState2 הוצא משימוש והוחלף ב-FocusState (Ia8b79, ‏ b/160822876, ‏ b/160923332)
  • הוסר השימוש ב-overloads של AndroidView שהוצאו משימוש. (I946b9, ‏ b/163802393)
  • עכשיו אפשר להצהיר על אירועים מותאמים אישית שאפשר לדלג על אחד או יותר מה-setters שלהם ולבנות אותם מחדש בנפרד מהאירוע. (Ibbd13)
  • שינינו את כיתות הווקטורים כך שלא יהיו יותר כיתות נתונים, כי אותו מופע אובייקט משמש ליצירה.

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

    שינוי המבנה של מופע VectorComponent כך שיהיה חלק מ-VectorPainter, כי הוא משמש לשימוש חוזר בקומפוזיציות שונות.

    עדכנו את GroupComponent ו-PathComponent כך ששדות השם שלהם יהיו ניתנים לשינוי (Ieae45, ‏ b/151378808)

  • onChildPositioned ו-OnChildPositionedModifier הוסרו. במקום זאת, המפתחים צריכים להשתמש ב-onPositioned וב-OnPositionedModifier בפריסה של הצאצא. (I4522e, ‏ b/162109766)

  • ההיסט הפך לכיתה בתוך שורה (Iaec70)

  • נוספה פרמטר של שינוי ל-SelectionContainer‏ (I4aada, ‏ b/161487952)

  • הוסר FocusModifier שהוצא משימוש (I0b4ba, ‏ b/160922116, ‏ b/160821157, ‏ b/162441435, ‏ b/160822875, ‏ b/160921940)

  • הוספת פונקציית lambda ‏mergePolicy אל SemanticsPropertyKey. אפשר להשתמש בזה כדי להגדיר מדיניות מותאמת אישית למיזוג של סמנטיקה של mergeAllDescendants. מדיניות ברירת המחדל היא להשתמש בערך ההורה אם הוא כבר קיים, אחרת בערך הצאצא. (Iaf6c4, ‏ b/161979921)

  • Constraints הוא עכשיו סוג בקוד (inline) (I88736)

  • הוספנו את FocusManager, שמזיז את הלוגיקה הנפוצה של המיקוד מ-AndroidComposeView (I528ef,‏ b/161487952,‏ b/162206799)

  • שמות PointerEventPass עודכנו לגרסה Alpha. (Ifda6f)

  • IntOffset הוא עכשיו סוג בשורה (Iac0bf)

  • IntSize היא עכשיו כיתה מוטמעת (I2bf42)

  • השם של PlacementScope.placeAbsolute() שונה ל-PlacementScope.place(), והשם הקודם של PlacementScope.place() שונה ל-PlacementScope.placeRelative(). כתוצאה מכך, השיטה PlacementScope.place() לא תשקף יותר באופן אוטומטי את המיקום בהקשרים מימין לשמאל. אם רוצים לעשות זאת, צריך להשתמש במקום זאת ב-PlacementScope.placeRelative(). (I873ac, ‏ b/162916675)

  • AlertDialog משתמש עכשיו ב-FlowRow ללחצנים (I00ec1, ‏ b/161809319, ‏ b/143682374)

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

  • ארגון מחדש של קוד הקלט של מצביע. (Ie3f45)

  • הוצאה משימוש של PxBounds לטובת Rect. עדכנו את כל השימושים ב-PxBounds באמצעות rect והוספו הערות מתאימות להוצאה משימוש או להחלפה כדי לעזור בהעברה. (I37038, ‏ b/162627058)

  • הוסר KeyEvent2 שהוצא משימוש. במקום זאת, צריך להשתמש ב-KeyEvent. (Ied2d0, ‏ b/162097587)

  • ל-KeyEvent יש מאפיין Unicode שאפשר להשתמש בו כדי לקבל את תו ה-Unicode שנוצר על ידי שילוב המצב של המקש שצוין ומקש המטא (If3afc)

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

  • הוסרו 2 PointerEventPasses שכבר לא נחוצים. (I3dd9d)

  • הוספת הפרמטרים color, ‏ shadow ו-TextDecoration ל-Paragraph.paint. הפונקציה הזו שימושית כדי למנוע יצירה מיותרת של Paragraph. (I81689)

תיקוני באגים

  • הוסרו קריאות חזרה מסוג onFocusChanged מ-TextField. במקום זאת, צריך להשתמש ב-Modifier.focusObserver. (I51089, ‏ b/161297615)
  • ה-Modifier.drawBorder הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.border. מחלקת הנתונים של גבול הוחלפה ב-BorderStroke‏ (I4257d, ‏ b/158160576)
  • הוסרו קריאות ל-FrameManager שהוצאו משימוש.

    משקי ה-API הפנימיים של compose השתנו כדי לצמצם את כמות העלויות הנלוות למעקב אחרי אובייקטים של מצב כמו mutableStateof() (I80ba6)

  • הרכיבים VerticalScroller ו-HorizontalScroller הוסרו. במקום זאת, צריך להשתמש ב-ScrollableColumn/Row. ה-Modifier.drawBackground הוסר. שימוש ב-Modifier.background‏ (I73b0d, ‏ b/163019183)

  • תוקנה קריסה שנגרמה משימוש בתוך לולאת for במשהו ששומר את המצב. עכשיו מותר להשתמש באותו מפתח ב-savedInstanceState(), וה-API של UiSavedStateRegistry מותאם עכשיו לדרישות החדשות האלה (I4ab76, ‏ b/160042650, ‏ b/156853976, ‏ b/159026663, ‏ b/154920561)

  • ה-composable של state { ... } הוצא משימוש, ועכשיו מומלץ להשתמש בקריאות מפורשות ל-remember { mutableStateOf(...) } כדי לשפר את הבהירות. כך מקטינים את שטח ה-API הכולל ואת מספר המושגים לניהול המצב, והשיטה תואמת לדפוס by mutableStateOf() להענקת גישה לנכסי הכיתה. (Ia5727)

  • שינינו את השם של RRect ל-RoundRect כדי להתאים יותר לדפוסי השמות של compose. יצרנו קונסטרוקטורים של פונקציות דומים ל-RRect, וביטולנו את השימוש בקונסטרוקטורים של פונקציות RRect (I5d325)

גרסה 0.1.0-dev16

5 באוגוסט 2020

androidx.compose.ui:ui-*:0.1.0-dev16 משוחרר. גרסה 0.1.0-dev16 מכילה את ההצהרות האלה.

שינויים ב-API

  • האירוע OnChildPositioned הוצא משימוש. במקום זאת, צריך להשתמש ב-OnPositioned על הצאצא. (I87f95, ‏ b/162109766)
  • השיטה setViewContent הוצאה משימוש. במקום זאת, צריך להשתמש ב-setContent. (I7e497, ‏ b/160335130)
  • הוספנו את AndroidViewBinding API להנפה וליצירה של משאבי פריסה, על סמך ViewBinding. (I081c6)
  • KeyEvent2 מוחלף ב-KeyEvent‏ (I2d770, ‏ b/162097585)
  • נוספה תמיכה במפתח חומרה של Alt‏ (I9036b)
  • FocusManager הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.focus(),‏ Modifier.focusObserver() ו-Modifier.focusRequester(). (I74ae4, ‏ b/162211322)
  • loadVectorResource תומך במאפייני trimPath (I808fe)
  • העברת תיבת דו-שיח לממשק המשתמש (I47fa6)
  • הוסרו 2 PointerEventPasses שכבר לא נחוצים. (I33ca7)
  • הטמענו את PointerInteropModifier, שמאפשר לקבל MotionEvents ולקיים אינטראקציה עם Compose כאילו מדובר בהטמעה של View ב-Android. (Ieb08c)
  • הוסר המשתנה של התג שהוצא משימוש. במקום זאת, יש להשתמש ב-layoutId. (Idaa05, ‏ b/162023919)
  • ממשקי ה-API לתמיכה בכתיבה מימין לשמאל עודכנו. נוספה התכונה LayoutDirectionAmbient, שאפשר להשתמש בה כדי לקרוא ולשנות את כיוון הפריסה. האפשרויות Modifier.rtl ו-Modifier.ltr הוסרו. (I080b3)
  • תמיכה בקיצור נתיבים בפרטים גרפיים וקטורים (Ie16c9, ‏ b/158188351)
  • נוספה הפונקציה Modifier.layout() שמאפשרת ליצור פשוט פונקציית Modifier מותאמת אישית לפריסה (I73b69, ‏ b/161355194)
  • הוספנו ממשק AndroidView API חדש והוצאנו משימוש את הממשקים הקיימים. (I5bcfd)
  • ה-Modifier.plus הוצא משימוש. במקום זאת צריך להשתמש ב-Modifier.then. 'אחר כך' מבטא יותר בבירור את סדר הדברים, ומונע גם להקליד Modifier.padding().background() + anotherModifier, שגורם להפסקה בשרשרת וקשה יותר לקרוא אותו (Iedd58, ‏ b/161529964)
  • הוספת תת-כיתות של תצוגה [Abstract]ComposeView לאירוח תוכן של Compose בהיררכיית תצוגה. (I46357)
  • Row ו-Column הן עכשיו פונקציות שקופות, שמפחיתות באופן משמעותי את התקורה הכרוכה בשימוש בהן. (I75c10)
  • הוספה של SubcomposeLayout. זהו רכיב פרימיטיבי ברמה נמוכה שמאפשר ליצור את הצאצאים במהלך המדידה, אם רוצים להשתמש בערכים מסוימים שיהיו זמינים רק בשלב מאוחר יותר במהלך המדידה של הרכבת ההסתעפות המשנית. לדוגמה, הרכיב WithConstraints לא מוטמע באמצעות SubcomposeLayout. (I25cc8)
  • הוספנו את SemanticsNode.positionInRoot כדי לקבל את המיקום של SemanticsNode ביחס לשורש של היררכיית Compose‏ (Icdf26, ‏ b/161336532)
  • האירועים של MotionEvents עברו דרך Android, ל-Compose וחזרה ל-Android. (I14be8, ‏ b/158034713)
  • הוסר dropdownPopup. (I00430)
  • מיקום קבוע של חלון קופץ במסכים עם מגרעת. (Idd7dd)
  • הוספת פעולת נגישות כדי לקבל את TextLayoutResult (I9d6e6)
  • נוספה המאפיין RemeasurementModifier. הוא מאפשר למדוד מחדש את הפריסה באופן סינכרוני. באופן כללי, אף פעם לא צריך להשתמש באפשרות הזו כי המדידה מחדש או עיצוב מחדש מתבצעים באופן אוטומטי, אבל אנחנו משתמשים בה ב-LazyColumnItems במהלך הגלילה. (I5f331, ‏ b/160791058)
  • מסירים את getLineEllipsisOffset/getLineEllipsisCount. במקום זאת, צריך להשתמש ב-getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • מומלץ להוסיף כמה סימנים או הערות. (I66b20)
  • חשיפת ממשקי API נוספים של שורות ב-TextLayoutResult. (I79bd2)
  • מעכשיו אפשר לגשת לממירי וקטורים מובנים להמרת יחידות מובנות באמצעות Foo.VectorConverter. לדוגמה: Dp.VectorConverter,‏ Color.VectorConverter,‏ Float.VectorConverter וכו' (I3e273)

תיקוני באגים

  • תיקונים רחבים של ממשקי API (I077bc)
    1. הסרת הממשק OffsetBase שלא בשימוש
    2. התאמה של הכיתות Offset ו-IntOffset כדי ליצור ממשק API עקבי
    3. שינוי השם של IntOffset.Origin ל-IntOffset.Zero כדי להתאים ל-Offset API
    4. העברנו את השיטה nativeCanvas מממשק Canvas כדי לאפשר לצרכנים ליצור מכונות Canvas משלהם
    5. נוצרה קלאס טיוטה של EmptyCanvas כדי לשנות את ה-DrawScope למשתנה שאינו null במקום ל-lateinit, וכדי לוודא שהשדה לא יכול להיות null
    6. שינינו את השם של המשתנים המפורטים של ClipOp ל-Pascal Case
    7. שינוי השם של המאפיינים הקבועים של FilterQuality ל-Pascal Case
    8. שינינו את השם של המאפיינים המפורטים של StrokeJoin ל-Pascal Case
    9. שינוי השם של המאפיינים המפורטים של PointMode ל-Pascal Case
    10. שינוי השם של המאפיינים הקבועים מסוג PaintingStyle ל-Pascal Case
    11. שינוי השם של המאפיינים של PathFillType ל-Pascal Case
    12. שינוי השם של המאפיינים המפורטים של StrokeCap ל-Pascal Case
    13. עדכנו את ההטמעה של DrawCache כך שלא תשתמש יותר בפרמטרים של lateinit
    14. עדכנו את DrawScope כך שלא ישתמש יותר בהענקת גישה מושהה (lazy delegation) לפרממטרים הפנימיים של fillPaint ו-strokePaint
    15. עדכון של Image composable כדי להימנע משימוש ב-Box ולצמצם את התקורה
    16. עדכון של הכיתה Outline כך שתכלול את האנוטציות @Immutable
    17. עדכנו את PathNode כך שיכלול הערות מסוג @Immutable לכל הוראה בנתיב
    18. עדכון של רכיב המשנה של Vector כדי להסיר בדיקות מותנות מיותרות של שוויון, כי פונקציית ה-compose כבר מטפלת בהן
    19. שיטות ה-constructor של Rect שהוצאו משימוש לטובת פונקציות constructor
    20. עדכנו את הכיתות של המברשות ואת ה-constructors של הפונקציות באמצעות ממשקי API מסוג @Immutable ו-@Stable
    21. עדכנו את המאפיין המנוהל VertexMode ל-PascalCase
    22. שינוי השיטה selectPaint של DrawScope כדי לשנות באופן מותנה את הפרמטרים של הקו בצביעה אם הם השתנו
    23. עדכנו את Size כדי להוסיף API לניתוח מבנה, שיניתם את השם של UnspecifiedSize ל-Unspecified והסרתם שיטות שלא בשימוש
  • עדכנו את השימוש ב-API של BlendMode ב-Compose כדי למפות בצורה נכונה בין BlendModes של Android framework לבין מצבי PorterDuff, בהתאם לרמת ה-API. הוסף ממשק ה-API BlendMode#isSupported, שמאפשר לבצע שאילתה לגבי יכולות כדי לקבוע אם יש תמיכה ב-BlendMode במכשיר לפני שמשתמשים בו. (I0ef42)
  • הוספה של LazyItemScope לפרמטר itemContent של רשימות Lazy. הוא מספק משתני אופן פעולה (modifiers) למלא את הגודל המקסימלי של ההורה, וכך פותר את התרחיש שבו הפריט צריך למלא את אזור התצוגה, והפונקציה הרגילה Modifier.fillMaxSize() לא פועלת כי המדידה של הפריט מתבצעת באמצעות אילוצים של אינסוף. (Ibd3b2, ‏ b/162248854)
  • בוצעה הסרה של SemanticsNodeInteraction.performPartialGesture. במקום זאת, אתם צריכים להשתמש ב-SemanticsNodeInteraction.performGesture. (Id9b62)
  • השם של LazyColumnItems שונה לשם LazyColumnFor. השם של LazyRowItems השתנה ל-LazyRowFor (I84f84)
  • החבילה foundation.shape.corner עברה שטוח ל-foundation.share (I46491, ‏ b/161887429)
  • השם של AndroidComposeTestRule השתנה ל-createAndroidComposeRule. (I70aaf)
  • הוספנו ממשקי API נוספים ל-TextLayoutResult. (Id7e04)
  • השם של Material FilledTextField שונה ל-TextField והשם של הבסיס TextField שונה ל-BaseTextField כדי שיהיה קל למצוא את ממשק ה-API הרצוי הפשוט ביותר ולהשתמש בו (Ia6242, ‏ b/155482676)
  • השם של Modifier.drawBackground השתנה ל-Modifier.background (I13677)

גרסה 0.1.0-dev15

22 ביולי 2020

androidx.compose.ui:ui-*:0.1.0-dev15 משוחרר. גרסה 0.1.0-dev15 מכילה את ההצהרות האלה על ביצוע שינויים.

עדכון יחסי התלות

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

שינויים ב-API

  • FocusModifier הוצא משימוש והוחלף על ידי Modifier.focus,‏ Modifier.focusRequester ו-Modifier.focusObserver. הפונקציות FocusState ו-FocusDetailedState הוצאו משימוש לטובת FocusState2 (I46919, ‏ b/160822875, ‏ b/160922136)
  • הוספנו משתנה כדי לזהות שינויים במצב המיקוד. (I05866, ‏ b/160924455, ‏ b/160923326)
  • הוספנו משתנה כדי לבקש שינויים במוקד (I8dd73, ‏ b/161182057, ‏ b/160924778)
  • שינוי התפריט של סרגל הכלים כך שיוצגו בו האפשרויות 'העתקה', 'חיתוך' ו'הדבקה' בצורה תקינה. (Id3955)
  • בנכסי סמנטיקה עם ערך יחיד נעשה עכשיו שימוש בסגנון קריאה. לדוגמה, 'semantics { hidden = true }' נכתב עכשיו כך: semantics { hidden() }. (Ic1afd, ‏ b/145951226, ‏ b/145955412)
  • נוספה פונקציית Modifier.focus שמחליפה את FocusModifier. (Ib852a, ‏ b/160924778)
  • הוספת FloatingToolbar לבחירת TextField. (Ie8b07)
  • הוספנו הערה ניסיונית ל-API לממשק API שקשור להזנת מפתחות (I53c0a)
  • נוספה הערה ניסיונית ל-API לכל ממשקי ה-API שקשורים ל-Focus (I53b24, ‏ b/160903352)
  • נוספה FocusState2 שתחליף את FocusDetailedState (I0a3ba, ‏ b/160822595)
  • הוספנו את ExperimentalFocus, שהיא הערה מסוג @OptIn ל-Focus API. (I1544b, ‏ b/160820961)
  • נוספה יחידת הכיתה IntBounds, שמייצגת גבולות של מספרים שלמים של פיקסלים מהפריסה. ה-API של PopupPositionProvider עודכן כך שישתמש בו. (I0d8d0, ‏ b/159596546)
  • עכשיו נדרש למשתמש ב-Applier שיטה clear() כדי למחוק קומפוזיציות (Ibe697)
  • KeyEvent הוצא משימוש והוחלף ב-KeyEvent2 (I68730)
  • נוספה הדגל האופציונלי useUnmergedTree לבדיקה של כלי חיפוש. (I2ce48)
  • הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
  • הוספנו שיטות העתקה לסוגים שונים של כיתות בשורה, כולל:

    • היסט
    • גודל
    • רדיוס
    • תנועה
    • TransformOrigin

    • השיטה של אובייקט התלווה Size.copy הוצאה משימוש, ובמקומה מומלץ להשתמש בשיטת ההעתקה של המכונה (Ife290,‏ b/159905651)

  • חלונות קופצים, תיבות דו-שיח ומנות יורשים עכשיו את MaterialTheme לפי הקשר (Ia3665, b/156527485)

  • השם של TextDirection השתנה ל-ResolvedTextDirection‏ (I3ff38)

  • הוסר הפרמטר 'כיוון הפריסה' מבלוק המדידה של פונקציית Layout(). עם זאת, כיוון הפריסה זמין בתוך פונקציית הקריאה החוזרת (callback) דרך האובייקט של היקף המדידה (Ic7d9d).

  • שינוי מבנה של SelectionHandles לשימוש חוזר. (I420e0)

  • האפשרות לקליק הוסר. שימוש ב-Modifier.clickable‏ (I84bdf)

  • TestTag ו-Semantics נמחקו. במקום זאת, צריך להשתמש ב-Modifier.testTag וב-Modifier.semantics (I15ff0,‏ b/158841414)

  • לפני השינוי הזה, פלאגין המהדר של Compose היה מיירט קריאות ל-constructors בתוך פונקציה מסוג @Composable באופן לא פשוט, אם הייתה (I5205a, b/158123804)

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

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

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

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

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

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

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

  • כדי לצמצם את מספר הכיתות שבהן נעשה שימוש כדי לייצג את פרטי המיקום, מומלץ להשתמש בכיתה Offset במקום בכיתה PxPosition. כך אפשר ליהנות מהיתרונות של שימוש בכיתה מוטמעת כדי לארוז 2 ערכים מסוג float, שמייצגים את הזזות ה-x וה-y, כערכים מסוג float. (I3ad98)

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

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

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

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

  • הוצאנו משימוש את TestTag. במקום זאת, צריך להשתמש ב-Modifier.testTag. (If5110, ‏ b/157173105)

  • ההטמעה שמוגדרת כברירת מחדל של ParentDataModifier#modifyParentData, שהיא פעולה ללא תוצאה, הוסרה – היא הייתה זהה לאי הטמעה של הממשק מלכתחילה. (I0deaa)

  • האפשרות ScaleFit הוצאה משימוש. במקום זאת, צריך להשתמש ב-ContentScale. (Ifbc5b)

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

  • הוספת הרכיב DropdownMenu ב-ui-material, הטמעת תפריט של Material Design. (I9bb3d)

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

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

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

  • איחוד הטמעות של CanvasScope, כך שיש עכשיו רק DrawScope ו-ContentDrawScope.‏ CanvasScope עבר שם חדש: DrawScope. עדכנו את DrawScope כך שיטמיע את ממשק Density ויספק את LayoutDirection. מחקו את תת-הסוג של DrawScope ב-ContentDrawScope. עדכנו את Painter ו-PainterModifier כך שלא יכללו יותר מאפיין RTL בעצמם, כי DrawScope כבר מספק את זה בלי לספק אותו באופן ידני (I1798e)

  • עכשיו, DoubleTapGestureFilter מבצע את ההבחנה בין SingleTapGestureFilter בעץ. (If92b1)

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

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

  • עדכנו את ממשקי ה-API ברמה גבוהה יותר שמציגים את Canvas, כך שהם מציגים במקום זאת את CanvasScope. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם ב-Paint. לצרכנים שעדיין זקוקים לגישה ל-Canvas, אפשר להשתמש בשיטת התוסף drawCanvas, שמספקת קריאה חוזרת (callback) להנפקת פקודות ציור ב-Canvas הבסיסי. (I80afd)

  • ה-API של lambda עם הערך trailing של WithConstraints השתנה. עכשיו, במקום שני פרמטרים, יש לו היקף מקלט, שבנוסף למגבלות ול-layoutDirection מספק את המאפיינים minWidth,‏ maxWidth,‏ minHeight ו-maxHeight ב-Dp (I91b9a,‏ b/149979702)

  • השם של LayoutModifier2 השתנה ל-LayoutModifier. (Id29f3)

  • ממשק LayoutModifier הוצא משימוש. (I2a9d6)

  • לפונקציות של מדידות מובנות ב-Layout וב-LayoutModifier2 יש עכשיו מקלט IntrinsicMeasureScope שמספק ל-API של שאילתות מובנות כיוון פריסה שמופץ באופן משתמע. (Id9945)

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

  • הוספה של Modifier.zIndex() חדש כדי לשלוט בסדר הציור של הצאצאים באותו פריסה של הורה. שם המאפיין elevation ב-DrawLayerModifier השתנה ל-shadowElevation והוא לא שולט יותר בסדר הציור. הסדר של הפרמטרים של DrawShadow השתנה: הערך elevation הוא עכשיו הפרמטר הראשון והערך shape הוא הפרמטר השני עם ברירת מחדל של RectangleShape. (I20150, ‏ b/152417501)

  • הוסר onSizeChange ו-onPositionChange ב-Owner. (I5c718)

  • נוספה Constraints2, עותק של Constraints שתומך רק בערכים של אילוצים מסוג Int ולא בערכים של IntPx. הפונקציה IntPx תבוטל וכל האילוצים של מספרים שלמים ייחשבו כפיקסלים, כמו ב-Android.

    • הוספנו גם את IntSize, שיחליף בסופו של דבר את IntPxSize. (I4b43a)
  • אפשר ליצור את Alignment באופן מיידי עם ערכים שרירותיים. נוספו התאמות חד-ממדיות. (Ia0c05)

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

  • (I45f09, ‏ b/152842521)

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

  • API שפורסם להנפת תצוגות Android מ-XML. לפרטים נוספים, אפשר לעיין בדמו של ViewInCompose. (I42916)

  • שיפור DrawModifier API:

    • שינוי ההיקף של המקבל של draw() ל-ContentDrawScope
    • הסרת כל הפרמטרים ב-draw()
    • לממשק של DrawScope יש את אותן תכונות כמו לממשק הקודם של CanvasScope
    • ל-ContentDrawScope יש את השיטה drawContent()‎ (Ibaced, ‏ b/152919067)
  • נוספו positionInParent ו-boundsInParent ל-LayoutCoordinates. (Icacdd, ‏ b/152735784)

  • עכשיו, הערכים שמוגדרים כברירת מחדל לפונקציות DrawLayerModifier ו-drawLayer() הם false עבור clipToBounds ו-clipToOutline. (I0eb8b, ‏ b/152810850)

  • השם של LayoutResult שונה ל-MeasureResult. (Id8c68)

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

  • החלפת האופרטור 'פלוס' של המשתנה המשנה בפונקציות הרחבה של היצרן (I225e4)

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

  • הוספנו את הפרמטרים pivotX ו-pivotY ל-Layer APIs כדי לתמוך בסיבוב ובשינוי קנה מידה סביב נקודה מסוימת בשכבה (Icf7c3)

  • מוסיפים את OnPositionedModifier ואת OnChildPositionedModifier כדי להחליף את הפונקציות הניתנות ל-compose OnPositioned ו-OnChildPositioned. (I2ec8f)

  • הוספנו את LayerModifier, פונקציית מודיפיקטור שמאפשרת להוסיף RenderNode לפריסה. אפשר להגדיר בהם חיתוך, אטימות, סיבוב, שינוי קנה מידה וצללים. הקוד הזה יחליף את RepaintBoundary. (I7100d, b/150774014)

  • שינינו את כיוון הפריסה כך שיופץ מצומת הפריסה של ההורה לצאצאים. הוספנו שינוי לכיוון הפריסה. (I3d955)

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

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

  • Density ו-DensityScope מוזגו לממשק אחד. במקום ambientDensity() אפשר להשתמש עכשיו ב-DensityAmbient.current. במקום withDensity(density), פשוט with(density) (I11cb1)

  • שינינו את LayoutCoordinates כך ש-providedAlignmentLines תהיה קבוצה במקום מפה, והוספנו ל-LayoutCoordinates את האופרטור get()‎ כדי לאחזר ערך. כך קל יותר למשתני המשנה לשנות ערך אחד או יותר בקבוצה בלי ליצור אוסף חדש לכל משתנה. (I0245a)

  • לאובייקט LayoutCoordinates כבר אין מאפיין position. המאפיין position לא רלוונטי כשמשתמשים ב-LayoutModifiers, בכיוון או בשינוי קנה המידה. במקום זאת, המפתחים צריכים להשתמש ב-parentCoordinates וב-childToLocal() כדי לחשב את הטרנספורמציה מ-LayoutCoordinate אחד למשנהו.

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

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

  • יצירה של CanvasScope API שמקיף אובייקט Canvas כדי לחשוף ממשק API לציור בלי מצב (declarative) ועם סטטוס. הטרנספורמציות נכללות בהיקף של המקלט שלהן, ומידע על הגודל נכלל גם בהיקף של גבולות ההוספה המתאימים. הוא לא מחייב את הצרכן לנהל אובייקט מצב משלו של Paint כדי להגדיר פעולות ציור.

    • נוספה הדוגמה CanvasScopeSample, וגם עודכנה אפליקציית ההדגמה כך שתכלול הדגמה של גרפיקה מוצהרנית (Ifd86d)
  • הסרנו את MaskFilter API שלא בשימוש, כי השימוש בו מוגבל והוא לא מותאם לביצועים מואצים בחומרה ברוב תרחישי השימוש (I54f76)

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

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

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

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

  • הוספנו שיטות הרחבה של Canvas.rotate ו-Canvas.scale לשימוש בקואורדינטות ציר אופציונליות לטרנספורמציות. כברירת מחדל, הם מופיעים בפינה השמאלית העליונה של התרגום הנוכחי על קנבס.

    בנוסף, הועברה Canvas.rotateRad לשיטת תוסף לשמירה על עקביות (Ibaca6)

  • יצירה של PixelMap API כדי לתמוך בשאילתות לגבי מידע על פיקסלים מ-ImageAsset. (I69ad6)

  • השמות toFrameworkRect/toFrameworkRectF שונו ל-toAndroidRect/toAndroidRectF כדי להתאים למוסכמה למתן שמות להמרות אובייקטים בין compose לבין ממשקי ה-API של מסגרת Android שעליהן הם מבוססים. עדכנו גם את המסמכים של ממשקי ה-API האלה (I86337)

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

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

  • שינינו את השם של Image ל-ImageAsset כדי להבדיל טוב יותר בין נתוני Image לבין Image composable שיוצג בקרוב, וישמש לצורך עיצוב ותצוגה של תוכן. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework (Id5bbd)

  • נוספה TextDirection.Content‏ (I48f36)

  • נוסף אופרטור TextDecoration.plus‏ (I0ad1a)

  • הערך Force הוסר מערכי ה-enum של TextDirectionAlgorithm‏ (Icc944)

  • השם של TextDirectionAlgorithm השתנה ל-TextDirection (I75ce8)

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

  • נוספה פונקציית AnnotatedString.getStringAnnotations שמחזירה את כל ההערות בטווח. (I1fa00)

  • שינינו את שם החבילה של Locale ו-LocaleList מ-androidx.ui.text ל-androidx.ui.intl (I8132c)

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

  • שינוי ב-API: השם של AnnotatedString(builder: Builder) השתנה ל-annotatedString(builder: Builder). (Ia6377)

  • שינוי ב-API: השם של AnnotatedString.Item השתנה ל-AnnotatedString.Range. (I2d44d)

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

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

  • הוספנו אופרטור פלוס לסגנון (Text/Paragraph/Span) שמעביר את הטיפול לפונקציה merge(). (Ia1add)

  • הפונקציה FontWeight.lerp לא מתבצעת יותר. הוא עדיין סוג של נתונים. (I521c2)

  • ה-constructor של FontWeight הוא עכשיו ציבורי, הוא כבר לא סוג נתונים. (Id6b1f)

  • הוספת getLineStart, ‏ getLineEnd, ‏ getEllipsisOffset ו-getEllipsisCount ל-TextLayoutResult‏ (Ibc801)

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

  • הוסרה Size class שלא בשימוש כי יש Size class כפול במודול ui-geometry שנמצא בשימוש. (I1b602)

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

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

תיקוני באגים

  • שם הפונקציה הלא סטטית onFocusChange בשדות טקסט שונה ל-onFocusChanged (Ida4a1)
  • ה-API‏ VerticalScroller ו-HorizontalScroller הוצאו משימוש. אפשר להשתמש ב-ScrollableColumn וב-ScrollableRow כדי ליהנות מחוויית שימוש מובנית עם פרמטרים והתנהגות של עמודות/שורות, או ב-Modifier.verticalScroll וב-Modifier.horizontalScroll ברכיב משלכם. באופן דומה, הוחלפה הפונקציה ScrollerPosition בפונקציה ScrollState' (I400ce, ‏ b/157225838, ‏ b/149460415, ‏ b/154105299)
  • השם של runOnIdleCompose השתנה ל-runOnIdle (I83607)
  • השמות של כמה ממשקי API לבדיקות השתנו כדי להפוך אותם לאינטואיטיביים יותר. השם של כל ממשקי ה-API מסוג findXYZ השתנה ל-onNodeXYZ. השם של כל ממשקי ה-API מסוג doXYZ השתנה ל-performXYZ. (I7f164)
  • עכשיו אפשר ליצור ממשק משתמש של רכיבים בתוך קבוצות תצוגה (ViewGroups) בלי צורך ביצירת קומפוזיציה חדשה. דוגמה אפשר למצוא ב-ViewInteropDemo. (I9ab0b, ‏ b/160455080)
  • נוספו sortWith ו-removeRange ל-MutableVector‏ (Icccf7)
  • הטמעת רכיבי Drag Selection Handles כדי לשנות את הבחירה של TextField. (I27032)
  • הוסר הכיתה Shader inline שתחמה את הכיתה NativeShader expect. השם של NativeShader שונה ל-Shader. הכיתה המוטמעת של Shader לא הוסיפה שום דבר בעל ערך לממשק ה-API והיא הייתה כיתה מוטמעת, לכן צריך להשתמש בכיתה NativeShader ישירות. (I25e4d)
  • שינוי מבנה של PainterModifier כדי שלא יספק יותר שינוי קנה מידה על סמך האילוצים והפרמטר ContentScale. הטמעות של Painter צריכות לשנות את קנה המידה של תוכן הציור שלהן על סמך הגודל של DrawScope שאליו הן מציירות.

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

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

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

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

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

  • תוקנה בעיה שבה העברה של קלט מצביע עלולה לגרום לקריסה אם מסנני PointerInput הוסרו באמצעות תת-הרכבה במהלך ההעברה. בעיה זו כבר נפתרה. (I1f48b, ‏ b/157998762)

  • תוקנה בעיה שבה העברה של קלט מצביע עלולה לגרום לקריסה אם מסנני PointerInputFilters הוסרו באמצעות יצירת תת-הרכב במהלך ההעברה. בעיה זו כבר נפתרה. (Iab398, ‏ b/157998762)

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

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

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

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

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

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

    זה אמור להיות שינוי תואם למקור לכל השימוש ב-compose. רוב המשתמשים ב-Compose לא יצטרכו לעדכן קוד בעקבות השינוי הזה.

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

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

    שינויים התנהגותיים ידועים ומכוונים כתוצאה מכך:

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

    העבודה הזו כללה כמה פעולות אופטימיזציה: 1. התוצאה של השוואות הפרמטרים מועברת דרך תרשים הקריאות לפונקציות מורכבות אחרות. כך יתבצעו פחות השוואות במהלך זמן הריצה, גודל טבלת החריצים יצומצם ויהיו יותר דילוגים על פונקציות שניתנות ליצירה שלא דילגנו עליהן בעבר. 2 פרמטרים שנקבעו כ'סטטיים' בזמן הידור כבר לא מושווים או מאוחסנים בסביבת זמן הריצה. כך מקטינים את מספר ההשוואות ואת גודל טבלת החריצים. 3. מבנה זרימת הבקרה של גוף הפונקציות משמש לצמצום מספר הקבוצות שנוצרות. כך מקטינים את גודל טבלת החריצים, וכתוצאה מכך יש פחות עבודה בסביבת זמן הריצה 4. פרמטרים של שליחה וקבלה שלא בשימוש בפונקציות לא נכללים בקביעה אם אפשר לדלג על הפונקציה, אם לא נעשה בהם שימוש בגוף הפונקציה.

    רוב השינויים המשמעותיים היו בממשקי API שהמקודד מטרגט ישירות, והשימוש הרגיל ב-compose לא יושפע: 1. Composer::startExpr הוסר 2. Composer::endExpr הוסר 3. השיטה Composer::call הוצאה משימוש ב-4. הוסר הטעינה יתר של key ללא vararg. מעכשיו והלאה, צריך להשתמש בגרסה vararg. 5. ההערה של Pivotal הוצאה משימוש. משתמשים ב-key כתחליף. 6. ScopeUpdateScope::updateScope השתנה כך שיצפה ב-Function3 במקום ב-Function1 7. ‏restartableFunction ו-restartableFunctionN עודכנו כך שיכללו פרמטרים נוספים בזמן הידור (I60756, b/143464846)

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

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

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

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

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

  • שינינו את ההתנהגות של TextDirection שמוגדר כברירת מחדל, כך שהוא יקבע לפי LayoutDirection. כלומר, אם LayoutDirection הוא RTL, TextDirection שמוגדר כברירת מחדל יהיה RTL. בעבר הערך היה TextDirection.ContentOrLtr/Rtl‏ (I4e803)

  • תיקון באג: כשעובי הגופן וסגנון הגופן מוערמים ב-AnnotatedString, הטקסט לא מוצג בצורה נכונה. (I77a9d)

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

  • שם המודול ui-android-text השתנה ל-ui-text-android (I68cbe)