ממשק המשתמש של Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(במסמכי העזר בנושא API מפורטים כל חבילות ה-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)
- עכשיו
TestDispatcher
s שהועברו כ-effectContext
לבדיקות Compose ישמשו ליצירת שעוני הבדיקה והפריימים. (Ia7178)
גרסה 1.6.0-alpha08
18 באוקטובר 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את ההצהרות האלה.
שינויים ב-API
- השם של פונקציית ה-lambda
onDrawDragShadow
ב-Modifier.dragAndDrawSource
השתנה ל-drawDragDecoration
, והשם של פרמטר הגודל ב-DragAndDropInfo
השתנה ל-dragDecorationSize
. (Id0e30, b/303904810) - אפשר להשתמש ב-
SemanticsNodeInteraction.isDisplayed()
וב-SemanticsNodeInteraction.isNotDisplayed()
כדי לבדוק אם צומת תואם גלוי או לא, בלי לבצע גם טענת נכוֹנוּת (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
. אפשר לעשות זאת באמצעות ממשקי ה-APIdelegate
ו-undelegate
. לפני השינוי הזה, כל ממשק API מהצומת שמעניק את הגישה היה צריך להוענק במפורש לצומת שמקבל את הגישה. אחרי השינוי הזה, ממשקי הצמתים יוענקו באופן משתמע, אלא אםDelegatingNode
יבטל אותם באופן מפורש. (67352bc)
שינויים ב-API
NestedScrollModifierNode
הואNestedScroll Modifier.Node
שאפשר להקצות אליו. (I69513)- הוספנו את הפרמטרים
onReset
ו-onRelease
ל-composableAndroidViewBinding
, שמשקף את ה-composableAndroidView
ומאפשר תמיכה בשימוש חוזר ב-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
, והרחבנו את ממשק ה-APIwaitUntil
כך שיקבל כל בודק התאמה וכל מספר של צמתים. מידע נוסף זמין בכתובת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
. יש להשתמש ב-constructorTextMeasurer
כדי לספק ערכים מותאמים אישית לפרמטר האלה. (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 הליבה החדש
ממשקי 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
מאפשר למפתחים להשבית את השימוש ב-AndroidWindowInsets
. כך אפשר להחיל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
, עם שני פרטים קטנים:- כששולחים אירוע down בזמן שהעכבר נע בלי לשלוח אירוע move (כלומר, נעשה שימוש ב-
updatePointerTo()
אבל לא ב-move()
, ואזdown()
מופעל), ההטמעה הקודמת הייתה מקדימה את זמן האירוע ושולחת אירוע move לפני שליחת האירוע down. ההטמעה החדשה עדיין שולחת את אירוע ההעברה, אבל לא מקדמת את מועד האירוע בתרחיש הספציפי הזה. - כששולחים אירוע 'מעלה' בזמן שהעכבר נע בלי לשלוח אירוע 'תנועה' (בדומה למקרה שלמעלה), ההטמעה הקודמת הייתה מקדימה את זמן האירוע ושולחת אירוע 'תנועה' לפני שליחת אירוע 'מעלה'. ההטמעה החדשה לא עושה אף אחת מהפעולות האלה: המיקומים החדשים של הסמן יופיעו רק דרך האירוע up.
לבסוף, ב-
TouchInjectionScope
נוספה שיטה חדשהcurrentPosition(pointerId: Int)
כדי לקבל את המיקום הנוכחי של הסמן הנתון. (If1191, b/190493367)- כששולחים אירוע down בזמן שהעכבר נע בלי לשלוח אירוע move (כלומר, נעשה שימוש ב-
תיקוני באגים
- מאפשרים לקליפ להרחיב את גבולות יעד המגע מעבר לאזור הקליפ, למטרות של יעד מגע מינימלי. (I43e10, b/171509422)
- נוספה תמיכה בגלילה מורחבת במכשירי Android 12. (Iccf3c, b/171682480)
גרסה 1.1.0-alpha03
1 בספטמבר 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
משוחרר. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.
תכונות חדשות
- עדכנו את Compose
1.1.0-alpha03
כך שיהיה תלוי ב-Kotlin1.5.30
. (I74545)
שינויים ב-API
- הוספנו את
Modifier.inspectable
כדי לעטוף מודיפיקרים אחרים. (I1909b, b/191017532) - הוספנו את ה-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 ו-AGP7.1
. (b/194289155)
גרסה 1.0.0-rc02
14 ביולי 2021
androidx.compose.ui:ui-*:1.0.0-rc02
משוחרר. גרסה 1.0.0-rc02 כוללת את ההצהרות האלה.
תיקוני באגים
- תיבת הדו-שיח פועלת עכשיו בהתאם להתנהגות של הגדרת הגודל בפלטפורמה. כדי לשנות את ההתנהגות הזו, מגדירים את
usePlatformDefaultWidth
לערך false. (Iffaed, b/192682388)
גרסה 1.0.0-rc01
1 ביולי 2021
androidx.compose.ui:ui-*:1.0.0-rc01
משוחרר. גרסה 1.0.0-rc01 כוללת את ההוספות האלה.
תכונות חדשות
- פיצול המודול ui-tooling ל-
ui-tooling
ול-ui-tooling-preview
(Iefa28, b/190649014)
שינויים ב-API
- הוסר המאפיין הניסיוני
FocusManager#moveFocusIn
והמאפיין הניסיוניFocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) - התכונה Canvas תומכת עכשיו בפרמטר contentDescription לשיפור הנגישות. (Ib547c)
- השם של
useDefaultMaxWidth
ב-PopupProperties
השתנה ל-usePlatformDefaultWidth
. (I05710) - עכשיו אפשר להשתמש בחלונות הדו-שיח ברוחב המסך כולו. (I83929, b/190810877)
- הוספה של תמיכה ניסיונית בייצוגים של צבעים בפורמט HSV ו-HSL. (Id7cf8, b/180731008)
שינויים בהתנהגות
- Compose
@Preview
כולל עכשיו את הפקודהLocalActivityResultRegistryOwner
שמאפשרת להציג תצוגה מקדימה של רכיבים מורכבים שמשתמשים ב-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)
- אין bitmap מקורי, ולכן
נוספו כללי פרופיל
בגרסה הזו נוספו כללי פרופיל למודול ה-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) - הוסרו
SemanticsMatcher
s הבאים:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- סימנתי את
SemanticsMatchers
הבא בתור @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- נוספו
SemanticsMatcher
s הבאים: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 ב-
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
גרסה 1.0.0-beta01
24 בפברואר 2021
androidx.compose.ui:ui-*:1.0.0-beta01
משוחרר. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.
זוהי הגרסה הראשונה של Compose 1.0.0 Beta.
שינויים ב-API
- הוספה של קריאה חוזרת מסוג 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()
מ-Owner
–OwnedLayer
מטפל בביטול התוקף. (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)
- הסרת הממשק OffsetBase שלא בשימוש
- התאמה של הכיתות Offset ו-IntOffset כדי ליצור ממשק API עקבי
- שינוי השם של IntOffset.Origin ל-IntOffset.Zero כדי להתאים ל-Offset API
- העברנו את השיטה nativeCanvas מממשק Canvas כדי לאפשר לצרכנים ליצור מכונות Canvas משלהם
- נוצרה קלאס טיוטה של EmptyCanvas כדי לשנות את ה-DrawScope למשתנה שאינו null במקום ל-lateinit, וכדי לוודא שהשדה לא יכול להיות null
- שינינו את השם של המשתנים המפורטים של ClipOp ל-Pascal Case
- שינוי השם של המאפיינים הקבועים של FilterQuality ל-Pascal Case
- שינינו את השם של המאפיינים המפורטים של StrokeJoin ל-Pascal Case
- שינוי השם של המאפיינים המפורטים של PointMode ל-Pascal Case
- שינוי השם של המאפיינים הקבועים מסוג PaintingStyle ל-Pascal Case
- שינוי השם של המאפיינים של PathFillType ל-Pascal Case
- שינוי השם של המאפיינים המפורטים של StrokeCap ל-Pascal Case
- עדכנו את ההטמעה של DrawCache כך שלא תשתמש יותר בפרמטרים של lateinit
- עדכנו את DrawScope כך שלא ישתמש יותר בהענקת גישה מושהה (lazy delegation) לפרממטרים הפנימיים של fillPaint ו-strokePaint
- עדכון של Image composable כדי להימנע משימוש ב-Box ולצמצם את התקורה
- עדכון של הכיתה Outline כך שתכלול את האנוטציות @Immutable
- עדכנו את PathNode כך שיכלול הערות מסוג @Immutable לכל הוראה בנתיב
- עדכון של רכיב המשנה של Vector כדי להסיר בדיקות מותנות מיותרות של שוויון, כי פונקציית ה-compose כבר מטפלת בהן
- שיטות ה-constructor של Rect שהוצאו משימוש לטובת פונקציות constructor
- עדכנו את הכיתות של המברשות ואת ה-constructors של הפונקציות באמצעות ממשקי API מסוג @Immutable ו-@Stable
- עדכנו את המאפיין המנוהל VertexMode ל-PascalCase
- שינוי השיטה selectPaint של DrawScope כדי לשנות באופן מותנה את הפרמטרים של הקו בצביעה אם הם השתנו
- עדכנו את 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 פרמטרים שנקבעו כ'סטטיים' בזמן הידור כבר לא מושווים או מאוחסנים בסביבת זמן הריצה. כך מקטינים את מספר ההשוואות ואת גודל טבלת החריצים. 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)