Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(מידע נוסף זמין במסמכי העזרה בנושא 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.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation: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.foundation:foundation-*:1.8.0-alpha06
משוחרר. גרסת 1.8.0-alpha06 מכילה את ההוספות האלה.
שינויים ב-API
- הוספת המשתנה
stylusHoverIcon
. (Iff20a, b/331289114) confirmValueChange
שלAnchoredDraggableState
הוצא משימוש. במקום לדחות שינויים במצב, לא צריך לכלול עוגנים אסורים בקבוצת העוגנים הפעילה, וצריך להשתמש ב-OverscrollEffect
כדי לציין את חוסר הזמינות של הפעולה המבוקשת. (Ia717f)- שינוי מנהל המילוי האוטומטי לממשק. (I84914, b/376080755)
- הוספת ממשקי ה-API
OverscrollEffect#withoutDrawing
ו-OverscrollEffect#withoutEventHandling
– ממשקי ה-API האלה יוצרים מופע עטוף של אפקט הגלילה החורגת שסופק, שלא מצייר או מטפל באירועים, בהתאמה. כך אפשר ליצור עיבוד גרפי של גלילה חורגת ברכיב נפרד מהרכיב שמפנה אירועים. לדוגמה, השבתת הציור של גלילה מעבר למטה בתוך רשימה עצלה, ולאחר מכן ציור של גלילה מעבר למטה בנפרד בחלק העליון או במקום אחר. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - הוספת תמיכה במילוי אוטומטי בסרגל הכלים של הטקסט. (Ie6a4c)
- הוצאה משימוש של
OverscrollConfiguration
ו-LocalOverscrollConfiguration
, והוספה שלrememberPlatformOverscrollFactory
כדי ליצור מופע של פרמטרים של הטמעת ברירת המחדל של גלילה מעבר לקצה המסך או להתאים אישית את הפרמטרים. כדי להשבית את האפשרות לגלילה מעבר לקצה המסך, במקוםLocalOverscrollConfiguration provides null
צריך להשתמש ב-LocalOverscrollFactory provides null
. כדי לשנות את צבע ההילה או את המילוי, במקוםLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
, משתמשים ב-LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - שינינו את המאפיין
effectModifier
ב-OverscrollEffect
ל-node: DelegatableNode
, בהתאם לממשקי API אחרים. (Ic0b46, b/255554340) - ה-API הניסיוני
GlobalAssertions
הוסר. השימוש המיועד בו היה להריץ בדיקות נגישות. לצורך זה, מומלץ להשתמש ב-enableAccessibilityChecks()
במקום זאת. (I59322)
גרסה 1.8.0-alpha05
30 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05
משוחרר. גרסת 1.8.0-alpha05 כוללת את ההוספות האלה.
תכונות חדשות
- תמיכה בגודל טקסט אוטומטי. מעבירים מופע של
AutoSize
(למשלAutoSize.StepBased
) ל-composable הטקסט המועדף עליכם (כמוBasicText
) ורואים שגודל הטקסט משתנה בהתאם למרחב הזמין. (Ice7e0, b/139320827) - הוספת ממשקי ה-API
OverscrollFactory
ו-LocalOverscrollFactory
כדי לאפשר הגדרת גלילה מעבר לקצה בתוך היררכיה. הערך שסופק דרךLocalOverscrollFactory
ישמש כברירת מחדל ליצירתOverscrollEffect
. כדי ליצור אפקט ולשמור אותו מהמפעל הנוכחי שסופק, משתמשים ב-rememberOverscrollEffect()
. (I51ca4, b/255554340)
שינויים ב-API
- הוספת
CompositionLocal
שאפשר להשתמש בו כדי לשנות את הגוון של ההדגשה של המילוי המוצלח של המילוי האוטומטי. (I32092) - הוסר
ScrollableDefaults.overscrollEffect
– במקום זאת, צריך להשתמש ב-rememberOverscrollEffect
. הפעולה הזו תיצור מופע של ההטמעה הנוכחית של גלילה מעבר לקצה המסך שסופקה עםLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516) - אנחנו משיקים ממשק
AutofillManager
חדש שאפשר להשתמש בו כדי לשפר את חוויית המילוי האוטומטי של המשתמשים, ודגלisSemanticAutofillEnabled
להפעלת הגרסה החדשה הזו של המילוי האוטומטי. (I9d484) - הסרה של
CombinedClickableNode
. ממשק ה-API הניסיוני הזה נחשף באופן זמני כדי לבטל את החסימה של עבודות בנושא ביצועים, אבל הוא כבר לא נדרש. במקום זאת, צריך להשתמש ישירות ב-Modifier.combinedClickable
כמו בממשקי API אחרים של מודификаторים. (I4b658) - הוספת עומסי יתר ל-
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
ו-VerticalPager
עם תמיכה בקביעה שלOverscrollEffect
בהתאמה אישית. ה-OverscrollEffect
שסיפקתם יקבל אירועים ויומר בתוך גבולות הרכיבים האלה. לתשומת ליבכם: אי אפשר לצייר את אותוOverscrollEffect
פעמיים – לכן אי אפשר לצייר את אותוOverscrollEffect
שסופק לאחד מהרכיבים האלה בנפרד באמצעותModifier.overscroll
. בעתיד נטפל בנפרד בתרחיש לדוגמה של ציור גלילה מעבר למסגרת של הרכיבים האלה. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
גרסה 1.8.0-alpha04
16 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04
משוחרר. גרסת 1.8.0-alpha04 כוללת את ההוספות האלה.
שינויים ב-API
- הוספת קריאות חזרה (callbacks) של
DelegatableNode#onDensityChange
ו-DelegatableNode#onLayoutDirectionChange
כדי לאפשר עדכון של מצב הצומת כשהשינויים האלה מתרחשים. (I04f3e, b/340662451) - עכשיו, האפשרויות Paragraph ו-
ParagraphIntrinsics
מקבלות רשימה של כל ההערות שהוחלו על ה-AnnotatedString
. בעבר, האפשרויות האלה קיבלו רק רשימה שלSpanStyles
. (I12f80) - הוספנו את
PointerInputModifierNode#touchBoundsExpansion
, שאפשר להשתמש בו כדי להגדיל את גבולות המגע של שינוי קלט של מצבית אצבע אחת. (Iccf02, b/335339283)
תיקוני באגים
- תוקן באג שבו ערכי הסף למיקום שהועברו אל
AnchoredDraggableDefaults.flingBehavior
לא נלקחו בחשבון בצורה נכונה בתרחישים מסוימים. (Ifdf0d, b/367660226) - תיקון לרכיבים נגללים בתצוגת עץ של צמתים, שמוסרים מהעץ במהלך תנועה רציפה. עכשיו הצמתים האלה יבטל את התנועה המהירה וישלחו בצורה נכונה את האירוע
onPostFling
עם המהירות שנותרה. אנחנו גם משיקים את הדגלNewNestedScrollFlingDispatchingEnabled
כדי לשלוט בהתנהגות במקרה של נסיגה (regression). הדגל יוסר לפני גרסת הבטא. (I05c37, b/371168883) - תוקן באג שבו
OverscrollEffects
שהועברו ל-Modifier.anchoredDraggable
קיבלו דלתאות 2D במקום 1D. (Ie52c0)
גרסה 1.8.0-alpha03
2 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03
משוחרר. גרסת 1.8.0-alpha03 כוללת את ההוספות האלה.
שינויים ב-API
- עדכון הגרסה של Kotlin ל-1.9 (I1a14c)
- הוסף הדגל
DraggableAddDownEventFixEnabled
(I848d5) - הוספנו תפקיד סמנטי חדש בשם Carousel (קרוסלה) כדי לדמות את התנהגות הרשימה ב-Pagers לשירותי נגישות. (Id354b, b/354109776, b/239672673)
- הוסר המשתנה המשתנה
graphicsLayer
מ-BasicText
composable. הוספנו את הדגל הניסיוניComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
כדי שתוכלו לחזור להתנהגות הישנה. (Ie478d) - הוספנו את
Modifier.recalculateWindowInsets()
כדי לאפשר לצאצאים בהיררכיה להשתמש ב-insetsPadding
גם כשההורים יישרקו אותם בליconsumeWindowInsets()
. (I7f9e4)
תיקוני באגים
- הטמעת איסוף תנועות ב-
detectDragGestures
, ברכיבים שניתן לגרור וברכיבים שניתן לגלול בהם. עכשיו, אם ילד או ילדה לא מצליחים לגרור אובייקט, ההורה יכול להרים אותו. כך אפשר לטפל בתנועות בצורה רציפה ומשולבת יותר. (Ic88fe) - עדכון התנהגות הביטול של תנועת ה-fling ברכיבים שניתן לגלול בהם. עכשיו, אם תוכן שאפשר לגלול בו יזוז במהירות גבוהה ויגיע לגבולות, הוא יעביר את מהירות ההזזה בצורה נכונה לתוכן הבא שאפשר לגלול בו בשרשרת, במקום להמשיך להניע את ההזזה. (I9326a)
גרסה 1.8.0-alpha02
18 בספטמבר 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02
משוחרר. גרסת 1.8.0-alpha02 כוללת את ההוספות האלה.
שינויים ב-API
- עכשיו אפשר להשתמש ב-
TextOverflow.StartEllipsis
וב-TextOverflow.MiddleEllipsis
כדי להציב נקודה-שלושה-נקודות בתחילת השורה או באמצע השורה של הטקסט בשורה אחת (I38913, b/185418980)
גרסה 1.8.0-alpha01
4 בספטמבר 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01
משוחרר. הגרסה 1.8.0-alpha01 כוללת את ההוספות האלה.
גרסה 1.7
גרסה 1.7.5
30 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.7.5
משוחרר. גרסה 1.7.5 כוללת את ההוספות האלה.
תיקוני באגים
- חשוב לוודא שפריטים מוצמדים לא מופיעים פעמיים באזור של הפס העליון של התוכן. (Ic6224)
גרסה 1.7.4
16 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.7.4
משוחרר. גרסה 1.7.4 מכילה את ההוספות האלה.
תיקוני באגים
- תוקן באג שגרם לקריסה נדירה בשדות טקסט. (I475c6, b/313010266)
- הוסר
ReusableContentHost
ברמה הבסיסית של פריטים בפריסה עצלה. זו הייתה סיבה אפשרית לקריסות מסוג 'מדידה נקראת בצומת מושבת'. (Id6e60)
גרסה 1.7.3
2 באוקטובר 2024
androidx.compose.foundation:foundation-*:1.7.3
משוחרר. גרסה 1.7.3 מכילה את ההוספות האלה.
תיקוני באגים
- תוקנה דליפת זיכרון ב-
BasicText
כשהערך של minLines מוגדר לערך שאינו ערך ברירת המחדל.
גרסה 1.7.2
18 בספטמבר 2024
androidx.compose.foundation:foundation-*:1.7.2
משוחרר. גרסה 1.7.2 מכילה את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה ברכיבים שניתן לגרור, שבהם חסרים אירועים של תנועה למטה, מה שגרם לתנועות מהירות להיראות איטיות מהרגיל.
גרסה 1.7.1
10 בספטמבר 2024
- אין שינויים בפריטי המידע שנוצרו בתהליך פיתוח (artifacts) של Android. הוסרו ארטיפקטים מסוג
-desktop
והתווספו ארטיפקטים מסוג-jvmStubs
ו--linuxx64Stubs
. אין להשתמש באף אחד מהיעדים האלה. הם משמשים כסמנים לעזרה במאמצים של Jetbrains Compose.
גרסה 1.7.0
4 בספטמבר 2024
androidx.compose.foundation:foundation-*:1.7.0
משוחרר. גרסת 1.7.0 כוללת את ההוספות האלה.
שינויים חשובים מאז גרסה 1.6.0
- הביצועים של
Modifier.clickable
, Modifier.focusable
, Modifier.indication
, Modifier.scrollable
ו-Modifier.draggable
השתפרו באופן משמעותי. כחלק מהמאמצים האלה, בנוסף לשינויים פנימיים, בוצעו השינויים הבאים ב-API:- נוספה אינדיקציה חדשה ל-API,
IndicationNodeFactory
. כך אפשר ליישם אינדיקציות בצורה יעילה יותר בהשוואה לממשק ה-API הקודם (שעבר הוצאה משימוש) rememberUpdatedInstance
. מידע נוסף על העברה זמין בכתובת developer.android.com. - עכשיו אפשר להעביר פרמטר
MutableInteractionSource
שיכול להיות null ל-clickable
/combinedClickable
/selectable
/toggleable
. אם הערך הוא null והאינדיקציה שצוינה היאIndicationNodeFactory
, אפשר ליצור את האינדיקציה באופן עצל רק כשצריך, וכך לשפר את הביצועים. אם לא מעלים אתMutableInteractionSource
ומשתמשים בו, מומלץ להעביר null במקום להעבירremember { MutableInteractionSource() }
. - האפשרות
Indication#rememberUpdatedInstance
הוצאה משימוש. יש לו פגיעה גבוהה ואי-אפשרת בביצועים, והוא מונע אופטימיזציות אחרות. במקום זאת, צריך להשתמש ב-IndicationNodeFactory
API החדש.
- נוספה אינדיקציה חדשה ל-API,
BasicTextField
באמצעותTextFieldState
יציב עכשיו, ואנחנו ממליצים לכל אתרי הקריאה להתחיל את ההעברה מ-BasicTextField(value, onValueChange)
ל-BasicTextField(TextFieldState)
.- האפשרות
ClickableText
הוצאה משימוש. כדי להוסיף לטקסט קישורים שניתן ללחוץ עליהם, משתמשים ב-BasicText
עם ההערה החדשהLinkAnnotation
ב-AnnotatedString
.LinkAnnotation
מאפשרת להגדיר עיצוב מותאם אישית על סמך מצב הקישור (למשל, ממוקד, מרחף). - חדש:
ContextualFlowRow
ו-Enhanced 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) - נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-
LazyColumn
וב-LazyRow
. בעבר אפשר היה להוסיף את המאפייןModifier.animateItemPlacement()
כדי לתמוך באנימציות של מיקומי מודעות (שינוי סדר). הוצאנו משימוש את המשתנה הזה והוספנו משתנה חדש שאינו ניסיוני בשםModifier.animateItem()
, שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (הבהרה), היעלמות (הכהה) ושינוי סדר. (I2d7f7, b/150812265) - הוספנו תמיכה ניסיונית בצילום מסך ארוך בקונטיינרים לגלילה ב-Compose באמצעות Android API הרשמי (
ScrollCaptureCallback
). - המקורות
NestedScroll
של 'גרירה' ו'השלכה' מוחלפים ב-UserInput
וב-SideEffect
כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו אנימציות (Side Effect) וגלגלת העכבר ומקלדת (UserInput
). - עכשיו אפשר לסמן בקשות
LazyLayout
של אחסון מראש כחשובות. המשמעות היא שאנחנו צופים שהפריט הזה יהיה נדרש בפריים הבא, ואנחנו רוצים להתעלם מתקציב הפריימים כדי לוודא שנבצע יותר עבודה מראש (Id513f) - תמיכה בתכונה 'כתיבה בסטיילוס' במכשירים עם Android מגרסה U ואילך. (I002e4)
- ממשקי API שונים הועברו לסטטוס יציב
- מכשירי קריאה, הצמדה, חלונות מוטמעים
גרסה 1.7.0-rc01
21 באוגוסט 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01
משוחרר. גרסת 1.7.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה נסיגה (regression) שבה קריסה התרחשה כשמיקוד הועבר לאלמנט כלשהו בתוך רכיב הורה שאפשר להעביר אליו את המיקוד (או ללחוץ עליו) והוא מושבת. (b/317561689)
גרסה 1.7.0-beta07
7 באוגוסט 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07
משוחרר. גרסת 1.7.0-beta07 כוללת את ההוספות האלה.
תיקוני באגים
- פונקציות
SemanticsNodeInteraction
שקשורות לקלט טקסט,performTextReplacement
,performTextInput
ו-performTextClearance
, יגרמו עכשיו לשגיאות טענת נכוֹנוּת (assertion) כשהן יישלחו ל-TextFields
לקריאה בלבד. (I4ae8f) - תוקנה בעיה חזותית בהיפר-קישורים. (I23311)
- תוקן באג שבו המקש המשנה
contentReceiver
לא עבד עם חלק מ-IME. - יצירת מהירות: מניעת התפשטות של ערכים NaN בממשק המשתמש וב-Foundation של Compose.
גרסה 1.7.0-beta06
24 ביולי 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06
משוחרר. גרסת 1.7.0-beta06 מכילה את ההוספות האלה.
גרסה 1.7.0-beta05
10 ביולי 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05
משוחרר. גרסת 1.7.0-beta05 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון לטיפול בערכים של Nan ב-
SnapFlingBehavior
וב-Pager.
גרסה 1.7.0-beta04
26 ביוני 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
משוחרר. גרסת 1.7.0-beta04 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון שגיאה שגרמה לקריסות בזמן מדידת שורות טקסט ארוכות מאוד (למשל, 10,000 תווים) (8157ab)
- תיקון למדידת טקסט גדול מאוד שגורם לקריסה ב-
BasicTextField
החדש (6b7575) - החזרה למצב הקודם של שינוי התנהגות במדידת שורה/עמודה שגורם לשיבושים בשימוש בטקסט בתרחישים מסוימים (69e8ba)
גרסה 1.7.0-beta03
12 ביוני 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
משוחרר. גרסת 1.7.0-beta03 מכילה את ההוספות האלה.
גרסה 1.7.0-beta02
29 במאי 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
משוחרר. גרסת 1.7.0-beta02 כוללת את ההוספות האלה.
שינויים ב-API
- הוספת ממשק API ניסיוני להגדרת התנהגות של
LazyGrids
לטעינת נתונים מראש, בדומה לממשק ה-API הניסיוני הקיים ל-LazyLists
. התמיכה הזו כוללת גם טעינה מראש של פריטים ב-LazyGrids
בתצוגת עץ. בדומה ל-LazyListPrefetchStrategy
, כברירת מחדל בהטמעה מתבצע אחסון מראש של 2 הפריטים הראשונים בתצוגת העץ של כל רשת, אבל אפשר להגדיר זאת באמצעות ממשקי ה-API החדשיםLazyGridPrefetchStrategy(nestedPrefetchItemCount)
ו-LazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) - השם של
SemanticsProperties.Editable
השתנה ל-IsEditable
ו-SemanticsPropertyReceiver.editable
השתנה לערךisEditable
. המאפיין הוא עכשיו בוליאני ותמיד מצוין באמצעות שדות טקסט. (I8acd8) - ערכי ברירת המחדל של
basicMarquee
הועברו לאובייקטMarqueeDefaults
. (I12ff6) - השם של הפרמטר
basicMarquee
delayMillis
השתנה ל-repeatDelayMillis
. (I12ff6) - עדכון ה-API לעיצוב הקישורים: העברת ה-
TextLinkStyles
אל ה-TextStyle
והסרת ה-TextDefaults
מהחומר (I5477b)
תיקוני באגים
- השם של
LayoutCoordinates.introducesFrameOfReference
שונה ל-LayoutCoordinates.introducesMotionFrameOfReference
כדי לשקף טוב יותר את המטרה שלו. שינוי השם של פונקציה קשורה כדי לחשב קואורדינטות על סמך הדגל הזה. (I3a330) - הוסר 'ברירת מחדל' מהנכסים
MarqueeDefaults
. (I1d8a0) - הוסרו 'מודעות Marquee' מהנכסים
MarqueeDefaults
. (Iad4f4) TextLinkStyles
הוסר מהכיתהTextStyle
. במקום זאת,TextLinkStyles
הוא חלק מהמגדיר (constructor) שלLinkAnntation
ומהשיטהAnnotatedString.fromHtml
(I90b2b)- תוקן באג שגרם לכך ש-Pager יקפוץ כשמחליקים לגבול מסוים בזמן שהוא כבר נמצא בגבול הזה. (I9f373, b/339171222)
- עכשיו יש ב-BTF2 תנועות בחירה תקינות בעכבר. (Ibe8c6)
תרומה חיצונית
- שליחת מחדש של 'שינוי סוג התוכן של חישוב הזמן ליצירה/מדידה על סמך אחסון מקדים כדי לשפר את הדיוק' (Iea622)
- שינוי החישוב של זמן הכתיבה/המדידה לפי סוג התוכן שמבוסס על אחסון מקדים (prefetch) כדי לשפר את הדיוק (Ibccb1)
- איך מגדירים את המשתנים
WindowInsetsPadding
כזמינים מקבוצת מקורות משותפת (I070b2)
גרסה 1.7.0-beta01
14 במאי 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
משוחרר. גרסת 1.7.0-beta01 כוללת את ההוספות האלה.
שינויים ב-API
- הוספנו מחדש את המאפיין
KeyboardOptions.shouldShowKeyboardOnFocus
כמאפיין מוסתר שהוצא משימוש לצורך תאימות לפורמט בינארי. (I15cfe) Modifier.anchoredDraggable
הופך עכשיו את ההפרשים בגרירה כברירת מחדל לרכיבים עם כיוון אופקי כשמשתמשים בפריסה ב-RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
הוא עכשיוhasEqualAnnotations
. (I685c0)- עדכנו את ה-API לקבלת קישורים בעיצוב Material בטקסט. באופן ספציפי, הוסרו מה-
TextDefaults
השיטות ליצירתLinkAnnotations
מעוצב ולניתוח HTML עם קישורים מעוצבים. במקום זאת, הוספנו את הכיתהTextLinkStyles
שמאפשרת לעצב את הקישורים כפרמטר ל-Text composable. (I31b93) - החלפתם את
onDragStarted
ו-onDragStopped
בקריאות חזרה ללא השהיה. (I59de8)
תיקוני באגים
- תוקן באג שגרם ל-Pager לקרוס כשהערך של
contentPadding
היה גדול מהאילוצים הנכנסים. מעכשיו, Pager מאלץ ערכים שליליים שמוחזרים מ-PageSize
להיות 0. (Iba5d8, b/314008560)
גרסה 1.7.0-alpha08
1 במאי 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
משוחרר. גרסת 1.7.0-alpha08 כוללת את ההוספות האלה.
תכונות חדשות
- הוספנו תפריט הקשר של לחיצה ימנית ל-
BasicTextField
ול-SelectionContainer
עם פעולות של חיתוך, העתקה, הדבקה ובחירת הכול. (If8c93, Ia2b49, I6f268)
שינויים ב-API
- עכשיו אפשר לסמן בקשות
LazyLayout
של אחסון מראש כחשובות. המשמעות היא שאנחנו צופים שהפריט הזה יהיה נדרש בפריים הבא, ואנחנו רוצים להתעלם מתקציב הפריימים כדי לוודא שנבצע יותר עבודה מראש (Id513f) - השם של
isPositionedByParentWithDirectManipulation
השתנה ל-introducesFrameOfReference
. הערה: עכשיו יש לו את ההשפעה ההפוכה, כלומר כברירת מחדל, רוב ה-LayoutCoordinates
מציבים מסגרת הפניה, ורק כשהם נתונים לטיפול ישיר, הערך של המאפיין יהיה שקר. כדי לשלוח שאילתה לגבי מיקום עם פריטים שמציגים רק מסגרת הפניה, משתמשים ב-positionInLocalFrameOfReference(...)
. אוpositionInLocalLookaheadFrameOfReference
מ-LookaheadScope
. (Ifc5f7) - השם של
onClicked
השתנה ל-onClick
בתוךLinkInteractionListener
(Iaa35c) - שינוי הפונקציה lambda של הפעולה עבור
getScrollViewportLength
בהתאם למשוב של ועדת ה-API. (Ibc74a) - שינוי השם של ממשקי ה-API להענקת גישה לכתיבה ידנית בסטיילוס. (Ica45f, b/327271923)
- משנים את השם של
TextInclusionStrategy.isInside
ל-isIncluded
. צריך להגדיר את סוג ההחזרה שלParagraph/MultiParagraph#getRangeForRect()
כבלתי ניתן לאפס. (I51f26)
תיקוני באגים
- הוספנו את האפשרות 'בחירת הכול' לכל התפריטים לפי הקשר של הטקסט ב-
SelectionContainer
. (Ib750e, b/240143283) - תוקנה בעיה בצילום מסך ארוך של קונטיינרים שגלול בהם באמצעות
reverseScrolling=true
. (I7c59c) - תוקנה בעיה שבה הערך של
currentValue
ב-AnchoredDraggableState
השתנה כשהתקרבתם לגבולות המדינה. (Iea30b, b/333846848)
תרומה חיצונית
- השם השתנה מ-
PrefetchExecutor
ל-PrefetchScheduler
כדי לשקף טוב יותר את האחריות שלו. (Ib9154) - הוספנו תמיכה בהטמעה מראש של פריטים ב-
LazyLists
בתצוגת עץ (למשל,LazyColumn
שמרינדרLazyRows
בתצוגת עץ). השינוי הזה צפוי לצמצם את ירידות הפריימים במהלך גלילה ב-LazyLists
האלה. כברירת מחדל, ההטמעה כוללת אחסון מראש של 2 הפריטים הראשונים בתצוגת העץ, אבל אפשר לשלוט בהתנהגות הזו באמצעות ממשקי ה-API החדשיםLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
ו-LazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
גרסה 1.7.0-alpha07
17 באפריל 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07
משוחרר. גרסת 1.7.0-alpha07 כוללת את ההוספות האלה.
תכונות חדשות
- נוספו אובייקט
TextDefaults
שמכיל שיטות ליצירתLinkAnnotation
ולניתוח מחרוזת עם תג HTML, שמחילה אתMaterialTheme
על הקישורים. (I98532, b/139312671) - נוספה תמיכה באנימציות של הופעה והיעלמות של פריטים ב-
LazyVerticalGrid
וב-LazyHorizontalGrid
. בעבר אפשר היה להוסיף את המאפייןModifier.animateItemPlacement()
כדי לתמוך באנימציות של מיקומי מודעות (שינוי סדר). הוצאנו משימוש את המשתנה הזה והוספנו משתנה חדש שאינו ניסיוני בשםModifier.animateItem()
, שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (הבהרה), היעלמות (הכהה) ושינוי סדר. (Ib7d12, b/330510929) - נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-
LazyVerticalStaggeredGrid
וב-LazyHorizontalStaggeredGrid
. בעבר אפשר היה להוסיף את המאפייןModifier.animateItemPlacement()
כדי לתמוך באנימציות של מיקומי מודעות (שינוי סדר). הוצאנו משימוש את המשתנה הזה והוספנו משתנה חדש שאינו ניסיוני בשםModifier.animateItem()
, שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (הבהרה), היעלמות (הכהה) ושינוי סדר. (I69bc9, b/330511290)
שינויים ב-API
- הוספת
ContextMenuColors
ו-LocalContextMenuTheme
ProvidableCompositionLocal
המשויך. אפשר לשנות את הצבעים של תפריט ההקשר בשדות טקסט ובטקסט שניתן לבחירה על ידי ציון ה-composition local. (Ifa154) - קישורי טקסט קיבלו אפשרות סגנון למצב לחיצה, בנוסף לסגנון הרגיל, למצב העברה עם העכבר ולמצב התמקדות. (I5f864, b/139312671)
- להציג את
ViewConfiguration.HandwritingGestureLineMargin
לתנועות כתב יד. תמיכה בתנועת כתיבה ידנית עבורBasicTextField
. (Ie6e13, b/325660505) - הוסר
DelegatableNode.scrollIntoView
במהדורה 1.7 כי לא היה לנו זמן לסיים את תהליך היציבות של שאר רכיבי ה-API הקשורים. הפונקציה הזו תושק מחדש בגרסה 1.8 (I6cf61, b/333421581, b/332900232) - כששולחים שאילתה לגבי קואורדינטות של פריסה, עכשיו אפשר להשתמש בארגומנט
excludeDirectManipulationOffset
כדי להחריג את ההיסט שהוגדר על ידי פריסות הורה שהציבו את הצאצאים שלהן באמצעותPlaceable.PlacementScope.withDirectManipulationPlacement
. באופן דומה, עיצוב שמשנה את המיקום של צאצאיו לעיתים קרובות יכול עכשיו למקם אותם באמצעותwithDirectManipulationPlacement
(למשל 'גלילה', שמוטמע כברירת מחדל). כך אפשר ליצור אנימציות מבוססות-approachLayout
באופן אינטואיטיבי יותר, כי עכשיו יש לכם אפשרות להבדיל בין ההיסט שרוצים להנפיש לבין מה שרוצים להחיל ישירות כשמחליטים להנפיש את הגישה שלכם. (I60ec7) - הצגת
requestScrollToItem
עבורLazyStaggeredGrid
. עכשיו, בכל סבב מדידה, הלקוח יכול לבטל את ההסכמה לניהול האינדקס על סמך המפתח באמצעות קריאה ל-requestScrollToItem
. הפעולה הזו לא משנה את ההתנהגות הקיימת בשום צורה, אלא אםrequestScrollToItem
נקרא. (I63983) - הצגת
requestScrollToPage
ב-Pager. עכשיו, בכל סבב מדידה, הלקוח יכול לבטל את ההסכמה לניהול האינדקס על סמך המפתח באמצעות קריאה ל-requestScrollToPage
. הפעולה הזו לא משנה את ההתנהגות הקיימת בשום צורה, אלא אםrequestScrollToPage
נקרא. (Ic4213) - הוצגה
requestScrollToItem
עבורLazyGrids
. עכשיו, בכל סבב מדידה, הלקוח יכול לבטל את ההסכמה לניהול האינדקס על סמך המפתח באמצעות קריאה ל-requestScrollToItem
. הפעולה הזו לא משנה את ההתנהגות הקיימת בשום צורה, אלא אםrequestScrollToItem
נקרא. (I0a7a0) - האפשרות
ClickableText
סומנה כמיושנת. כדי להוסיף קישורים לטקסט, יוצריםAnnotatedString
עםLinkAnnotation
שתואם לקישור ומעבירים את ה-AnnotatedString
הזה ל-composable שלText
(I34d4b, b/323346994) UrlAnnotation
הוצא משימוש. יש להשתמש ב-LinkAnnotation.Url
במקום זאת. אם אתם משתמשים בנושאים של Material Design, צריך להשתמש באובייקטTextDefaults
כדי ליצור את ההערה עם נושאים של Material Design שיוחלו עליה (I8d180, b/323346545)- השם של
String.parseAsHtml
השתנה ל-AnnotatedString.Companion.fromHtml
(I43dcd) - נוספו ארגומנטים של עיצוב (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) ומאזין לאינטראקציה עם קישורים לשיטהparseAsHtml
. כשמנתחים את המחרוזת המתויגת ב-HTML באמצעות תגי<a>
, השיטה יוצרתLinkAnnotation.Url
לכל תג כזה ומעבירה את אובייקטי הסטיילינג ואת הקשיב לאינטראקציה עם הקישור לכל הערה. (I7c977) LinkAnnotation
מקבל עכשיו את הארגומנטים של עיצוב המבוסס על המצב ואתLinkInteractionListener
. מוסיפים את ההערה הזו ל-AnnotatedString
כדי ליצור היפר-קישור. העברת הערכיםfocusedState
ו/אוhoveredState
מאפשרת להגדיר את ההגדרה החזותית של הקישורים כשהם במוקד או כשעובר מעליהם העכבר. (I81ce4, b/139312671)- ה-feature flag של צילומי מסך ארוכים הוסר. (I28648, b/329128246)
LazyColumn
ידפיס עכשיו כותרות מוצמדות בצורה נכונה בצילומי מסך ארוכים. (I8d239, b/329296635)- רוב ממשקי ה-API הניסיוניים שנותרו, שהוצגו עם
BasicTextField
החדש, התייצבו. (I714e2) - נוספו הפרמטרים
textObfuscationCharacter
ו-BasicSecureTextField
, שמאפשרים לקבוע את התווים שבהם יש להשתמש במהלך ערפול התוכן. (I0588b) - המקורות
NestedScroll
'גרירה' ו'השלכה' מוחלפים במקורותUserInput
ו-SideEffect
כדי להתאים להגדרה המורחבת של המקורות האלה, שכוללת עכשיו גם אנימציות (Side Effect) וגלגל עכבר ומקלדת (UserInput
). (I40579) - הצגת
LocalBringIntoViewSpec
, התנהגות גלילה של המיקוד שתלויה בפלטפורמה שחלה בשכבת המשתנה הניתנת לגלילה. (I27aa5, b/317453911) - בוצעה הסרה של
TextFieldCharSequence
. השדהTextFieldBuffer.originalValues
מוחלף בשדותTextFieldBuffer.originalText
ו-TextFieldBuffer.originalSelection
. (I2c7d6) - השדה
ImeOptions.hintLocales
לא יכול יותר להכיל ערך null. אם רוצים להעביר רשימת Locale ריקה, צריך להשתמש ב-LocaleList.Empty
. (Ic5bc4) - השם של
getOffsetFractionForPage
השתנה ל-getOffsetDistanceInPages
. (Ia05e2)
תיקוני באגים
- כש
InputTransformations
מצטרפים ל-next
, עכשיו ה-KeyboardOptions
שלהם מתמזגים כראוי לפי אפשרויות ספציפיות באמצעות השיטה החדשהKeyboardOptions.merge
. (Ie5304, b/295951492) - עכשיו
targetValue
שלAnchoredDraggableState
לא מתייחס יותר לסף מיקומים. עכשיו יש לו ערך סף משתמע של 50%, כלומר הערך שלtargetValue
משתנה בנקודת האמצע בין שני עוגנים. (I82c2c)
תרומה חיצונית
- שינינו את השם של 2 ממשקי API לגלילה (I56a75)
גרסה 1.7.0-alpha06
3 באפריל 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
משוחרר. גרסת 1.7.0-alpha06 מכילה את ההוספות האלה.
תכונות חדשות
- נוספה תמיכה באנימציה של הופעה והיעלמות של פריטים ב-
LazyColumn
וב-LazyRow
. בעבר אפשר היה להוסיף את המאפייןModifier.animateItemPlacement()
כדי לתמוך באנימציות של מיקומי מודעות (שינוי סדר). הוצאנו משימוש את המשתנה הזה והוספנו משתנה חדש שאינו ניסיוני בשםModifier.animateItem()
, שמאפשר לכם לתמוך בכל שלושת סוגי האנימציה: הופעה (הבהרה), היעלמות (הכהה) ושינוי סדר. (I2d7f7, b/150812265) - לקוחות של
LazyColumn/LazyRow
יכולים עכשיו לבטל את ההסכמה לניהול אינדקס על סמך המפתח של ה-measure-pass הקרוב, על ידי קריאה ל-LazyListState.requestToScroll
ללא השהיה. (I98036, b/209652366) - הוספנו את השיטה
parseAsHtml
למחרוזות עם סגנון: היא מאפשרת להמיר מחרוזת שמסומנת בתגי HTML ל-AnnotatedString
. לתשומת ליבכם, לא כל התגים נתמכים. לדוגמה, עדיין לא תוכלו להציג רשימות של נקודות. (I84d3d) - הוספנו תמיכה ניסיונית בצילומי מסך ארוכים בקונטיינרים לגלילה ב-Compose באמצעות Android API הרשמי (
ScrollCaptureCallback
). התכונה הזו היא ניסיונית, ויכול להיות שהיא לא מטפלת כרגע בכל המקרים בצורה נכונה. לכן, התכונה מושבתת כרגע כברירת מחדל. כדי להביע הסכמה, מגדירים את הדגלComposeFeatureFlag_LongScreenshotsEnabled
לערך true. הדגל הזה יוסר לפני גרסת הבטא 1.7. (I2b055, b/329296471) - הצגת
GraphicsLayer
API חדש כדי לספק גמישות רבה יותר במיקום ובעיבוד של מכונותGraphicsLayer
, ולתמוך בתכונות עיבוד פנימיות בלי צורך בתיאום עם הטמעות של Composable כדי לציין מכונותGraphicsLayer
של מודификаторים.
שינויים ב-API
- עכשיו, לכל הפרמטרים של
KeyboardOptions
יש ערך לא מוגדר כברירת מחדל. הוספנו את השיטהKeyboardOptions.merge
. - שינינו את השם של
KeyboardOptions.autoCorrect
ל-autoCorrectEnabled
והפכנו אותו לאפשרות nullable, כאשר null מציין שלא צוין ערך. (Ia8ba0, b/295951492) - השם של
outOfBoundsPageCount
השתנה ל-beyondViewportPageCount
. (I129c6) - הערך של
fun ClipEntry.getMetadata()
משתנה ל-val ClipEntry.clipMetadata
. (I50155) - בוצעה הסרה של
TextFieldState.valueAsFlow()
. עדיף להשתמש ב-snapshotFlow { state.text }
או ב-snapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - הפרמטרים של
InputTransformation.transformInput
אורגנו מחדש. הוסרoriginalValue: TextFieldCharSequence
. במקום זאת, הערך הזה מופיע עכשיו ב-TextFieldBuffer
עם אותו שם. הוסר גם הפרמטרvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
הוא עכשיו היקף הנמען בפונקציה. (I919cc) - בגרסה
BasicTextField(state)
ובגרסהBasicSecureTextField
, עכשיו נעשה שימוש ב-KeyboardActionHandler
במקום ב-KeyboardActions
כדי לעבד פעולות שבוצעו על ידי מקלדת התוכנה. (I58dda) - ממשקי API להענקת גישה לכתיבה ידנית בסטיילוס, כדי לתמוך בכתיבה ידנית בסטיילוס בשדות טקסט 'מזויפים' להזנה. (I9c09c, b/327271923)
- השם של
KeyboardOptions.shouldShowKeyboardOnFocus
השתנה ל-showKeyboardOnFocus
. (Ib4b7a, b/295951492) - הפרמטר
hintMediaTypes
הוסר מ-Modifier.contentReceiver
. כבר המלצנו למפתחים לבדוק את סוג המדיה שלTransferableContent
שהתקבל, כי יכול להיות שהוא לא תואם ל-hintMediaTypes
שהוגדר. (I82f99) - הפרמטרים של
BasicSecureTextField
שונו בסדר. הפרמטריםkeyboardType
ו-imeAction
הוסרו לטובת הכיתה המלאהKeyboardOptions
, תוך שמירה על אותם הגדרות ברירת המחדל שמתאימות ל-BasicSecureTextField
. הוסר גם הפרמטרscrollState
. (Ibbfa9) - הסוג של
TextFieldState.text
השתנה מ-TextFieldCharSequence
ל-CharSequence
בלבד. לכן הוספנו אתTextFieldState.selection: TextRange
ו-TextFieldState.composition: TextRange?
כדי לקרוא את ערכי הבחירה וההרכב הנוכחיים ישירות מאובייקט המצב. - בוצעה הסרה של
TextFieldState.forEachTextValue
. (Idb2a2) - הוסרו הפונקציות
ClipboardManager.getClipMetadata
ו-ClipboardManager.hasClip
. יש להשתמש ב-clipEntry.getMetadata()
כדי לקרוא את המטא-נתונים של הקליפ הנוכחי. צריך גם לבדוק אם התוצאה שלClipboardManager.getClip
היא null או לא, כדי להבין אם יש קליפ נוכחי בלוח העריכה. (I50498) - עכשיו אפשר להעביר ל-
ClipboardManager.setClip
ערך null כדי לנקות את הלוח. (I7d2e9) ReceiveContentListener
מומר לממשק פונקציה. בנוסף, הוסר עומס יתר שלModifier.receiveContent
שמקבל פונקציית lambda, כיReceiveContentListener
הוא עכשיו ממשק פונקציה.- השם של
Modifier.receiveContent
השתנה ל-Modifier.contentReceiver
. (I1e6af) - השם של
TransferableContent.consumeEach
השתנה ל-TransferableContent.consume
. (I1e462) rememberTextFieldState
עבר לממשק API יציב. (I37999)
תיקוני באגים
- תוקן באג שבו הווריאנט
BasicTextField(state)
לא עבד עם מקלדות CJK(מבוססות-הרכבה). (I54425) - תוקן באג שבו
Modifier.dragAndDropTarget()
יכול להפנות לנתונים לא עדכניים בתרחישים מסוימים עם שימוש חוזר ב-Modifier.Node
. (I05bb1) - החזרה לשינוי חוזה שהתבצע לאחרונה, שבו קריאות
AnchoredDraggableState#anchoredDrag
היו מסתיימות בסוף פעולתanchoredDrag
. (I95715)
גרסה 1.7.0-alpha05
20 במרץ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
משוחרר. גרסת 1.7.0-alpha05 כוללת את ההוספות האלה.
שינויים ב-API
- הוסר הניסוי של
LocalTextLinkStyle
composition local להוספת סגנון לקישורים היפר. (Iebfa7) - הוסר שינוי ניסיוני מברירת המחדל של
BasicText
באמצעות הארגומנטonLinkClicked
. בעתיד נוסיף ממשק API חלופי לתמיכה בהיפר-קישורים. (I107d5) - הוסרו שיטות ונכסים שקשורים לקודקודים בקטע
TextFieldState
ו-TextFieldBuffer
. כמו כן, הוסרו הסיומתinChars
משאר ממשקי ה-API שקשורים לבחירה ולעריכה. (Ief7ce) - עכשיו, הערך של
currentValue
ב-AnchoredDraggable
יתעדכן כשהמשתמשים יעברו דרך נקודת עגינה. משתמשים ב-settledValue
כדי לקבל את הסמנטיקה הקודמת שלcurrentValue
, ומעדכנים רק כשמגיעים לאובייקט עוגן. ההתקדמות מוצגת עכשיו כפונקציה (שדורשת נקודת התחלה ונקודת סיום) במקום כמאפיין. (Ibe6e8, b/318707189, b/298271489, b/294991954) - הגרסאות
BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
ו-TextFieldDecorator
הועברו למצב יציב. (I9582b) - הוספנו את
InterceptPlatformTextInput
כדי לעזור לכתוב בדיקות ברמה נמוכה שקשורות ל-IME ותרחישי שימוש אחרים ברמה נמוכה של IME. האפשרותPlatformTextInputTestOverride
הוצאה משימוש. (I862ed, b/322680547) - פיצול
restrictedConstraints()
לשתי שיטות:fitPrioritizingWidth()
ו-fitPrioritizingHeight()
(I6d7fd)
תרומה חיצונית
- נוספו 2 ממשקי API חדשים
isLastScrollForward
/isLastScrollBackward
כדי לבדוק את כיוון הגלילה של פעולת הגלילה האחרונה, והם מחזירים את הערך false אם עדיין לא בוצעה פעולת גלילה. (I63a0e)
גרסה 1.7.0-alpha04
6 במרץ 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
משוחרר. הגרסה 1.7.0-alpha04 כוללת את ההוספות האלה.
שינויים ב-API
- תמיכה בתכונה 'כתיבה בסטיילוס' במכשירים עם Android מגרסה U ואילך. (I002e4)
- הוספנו את
hintLocales
ל-KeyboardOptions
כדי לספק ל-TextFields
את היכולת להציע למערכות IME עם אזורים ספציפיים להגדיר מראש שפה מועדפת. (Id18c2) - הוסר עומס יתר ניסיוני של
BasicTextField2
ו-BasicSecureTextField
שקיבל פרמטרים שלvalue: String
ו-onValueChange: () -> String
. (I568b4) - מוסיפים פונקציית
applySemantics
אופציונלית ל-InputTransformation
כדי להשפיע על הסמנטיקה של ה-BasicTextField2
שאליו היא חלה. (I74a2f, b/170648072) - ב-CL הזה אנחנו מוסיפים את הפעולה הסמנטית
GetScrollViewportLength
כדי שנוכל להעביר למערכת הנגישות מידע על הרכיבים שגללו ב-Compose. ב-CL הזה חל גם שימוש בנכס הזה ברשימות גליליות של Foundation. (Ic5fa2) - השם של
BasicTextField2
השתנה ל-BasicTextField
. (Ie5713) FocusRequester.createRefs
יציבה עכשיו (I4d92c, b/261436820)- הוספנו את
DelegatableNode.scrollIntoView()
כדי לאפשר לצמתים של מודификаторים לשלוח בקשותscrollIntoView
ישירות. (I2b3b7, b/299939840) - הוספנו את
DelegatableNode.requireView()
כדי לאפשר לצמתים של משתני ערך לקבל אתView
הנוכחי של Android בלי לקרוא קומפוזיציה מקומית. (I40768) - אנחנו משיקים מידע על פריסה לפי הקשר ברמת השורה וברמת העמודה של התכונה 'זרימה לפי הקשר', כולל מדד שורה, מיקום ומגבלות על רוחב וגובה מקסימליים כדי להישאר במיקום שצוין. פריטים שחורגים מהרוחב או מהגובה המקסימליים עשויים לעבור לשורה הבאה או להימחק על סמך הגדרות של זליגת נתונים. (Id13f8, b/292114798)
תיקוני באגים
- תוקן באג שגרם לקריסה בתנאים מסוימים, כאשר משנים את המאפיינים
enabled
אוreadOnly
שלTextField
. (Iae17b)
גרסה 1.7.0-alpha03
21 בפברואר 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
משוחרר. גרסה 1.7.0-alpha03 כוללת את ההצהרות האלה.
שינויים ב-API
- הוספנו את
DelegatableNode.requireLayoutCoordinates()
כדרך לקבל אתLayoutCoordinates
הנוכחי שלModifier.Node
בלי שתצטרכו לשנות אתonPlaced
ולאחסן את הקואורדינטות בנכס בעצמכם. (Ia8657) - הוספנו את
DelegatableNode.currentLayoutCoordinates
כדרך לקבל אתLayoutCoordinates
הנוכחי שלModifier.Node
בלי שתצטרכו לשנות אתonPlaced
ולאחסן את הקואורדינטות בנכס בעצמכם. (Iaebaa) - אופטימיזציות של הביצועים ב-
DraggableAnchors
ש-AnchoredDraggable
משתמש בהן. (I89cff) BasicTextField2
וממשקי ה-API הקשורים בחבילהandroidx.compose.foundation.text2
מועברים אלandroidx.compose.foundation.text
. (I9f635)- הפרמטר
BasicTextField2
לא מקבל יותר פרמטרCodepointTransformation
. משתמשים ב-BasicSecureTextField
או ב-OutputTransformation
. (Id34ff) - הוספנו שיטה להשוואה של ההערות של שני
AnnotatedStrings
בלבד. (I32659) - חדש:
ContextualFlowRow
ו-FlowRow
/Column
משופר עםMaxLines
ו-Overflow
. אנחנו שמחים לבשר על שיפורים ב-FlowRow
וב-FlowColumn
הניסיוניים, שכוללים עכשיו תמיכה ב-maxLines
וב-overflow, לצד ההשקה שלContextualFlowRow
ו-ContextualFlowColumn
. העדכון הזה נועד לספק רכיבים עם ביצועים מיטביים.ContextualFlow*
מתאים למספר גדול של פריטים, עם הגדרה קטנה שלmaxLines
ולחצני 'עוד' דינמיים עם הסימן +N.FlowRow
ו-FlowColumn
מתאימים למספר קטן של פריטים, פחות מ-100 פריטים. חשוב: כדי לשמור על ההתנהגות הקיימת ב-FlowRow
או ב-FlowColumn
, שבה כל הפריטים מורכבים ללא קשר להתאמה שלהם למגבלה המקסימלית של הציר הרוחבי, צריך להגדיר אתoverflow
ל-FlowRowOverflow.Visible
או ל-FlowColumnOverflow.Visible
במהלך האינטליקציה. ב-ContextualFlowRowSample
וב-FlowRowSample
אפשר למצוא דוגמאות לתכונות החדשות האלה בפעולה. (Ib9135, b/293577082)
תיקוני באגים
- אנימציית הסמן לא שולחת יותר בקשות לפריימים בין המצבים 'מופעל' ו'מושבת'. (Ia2253)
KeyboardOptions
' יצירת קונסטרוקטור להעתקה שהוצאה משימוש תעתיק עכשיו בצורה נכונה את כל המאפיינים. (If12de)
גרסה 1.7.0-alpha02
7 בפברואר 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
משוחרר. גרסה 1.7.0-alpha02 מכילה את ההצהרות האלה.
שינויים ב-API
HorizontalPager
, VerticalPager
וגםPagerState
עוברים לגרסת 'יציבה'. (I67660, b/316966909)- הוספנו את הרכיב המקומי
LocalTextLinkStyle
שמאפשר לשנות את הסגנון של הקישורים בטקסט בכל האפליקציה. אם אתם משתמשים בנושא משלכם באפליקציה, עליכם להגדיר את הרכיב המקומי הזה בהתאם לנושא. כשמשתמשים בעיצוב Material, צבע הקישור יוגדר כברירת מחדל כצבע הראשי של Material. (I7eb10) - הוספנו את המשתנה
receiveContent
שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack Compose. receiveContent
משתלב עםBasicTextField2
כדי לקבל תוכן עשיר שמסופק על ידי מקלדת התוכנה, או באמצעות פעולת הדבקה מהלוח. (I81b72)- במסגרת השינוי הזה, אנחנו מחליפים את
SnapFlingBehavior
ב-TargetedFlingBehavior
ב-pager כדי לאפשר תרחישים לדוגמה אחרים ולספק גמישות רבה יותר. (I762ea) - במסגרת השינוי הזה, אנחנו הופכים את ממשקי ה-API של Snapping למצב יציב. אנחנו גם מנקים חלק מקוד הבדיקה ומוסיפים עוד דוגמאות ל-Snapping. (Id8da9)
- הצגת
TargetedFlingBehavior
,FlingBehavior
שמאפשר להפיץ מידע על המצב של האנימציה המתמשכת ועל ההיסט של גלילה היעד שלה. (I6a207)
תיקוני באגים
BasicTextField2
מעכשיו שומר את הסמן בטווח הראייה בזמן ההקלדה, גם אם הוא גלול מחוץ לתצוגה או אם הוא עומד לזוז מחוץ לתצוגה בגלל קלט. (Ieb856, b/237190748)
תרומה חיצונית
- הוספה של ממשק API ניסיוני להגדרת התנהגות של אחסון מראש ב-LazyLists. (I022a4)
גרסה 1.7.0-alpha01
24 בינואר 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
משוחרר. גרסה 1.7.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- נוסף
Indication API
חדש,IndicationNodeFactory
. כך אפשר להשיג ביצועים טובים יותר בהטמעות שלIndication
בהשוואה לממשק ה-API הקודם (שעבר עכשיו הוצאה משימוש) שלrememberUpdatedInstance
. מידע נוסף על העברה זמין בכתובת developer.android.com. - עכשיו אפשר להשתמש בפרמטר
MutableInteractionSource
עם אפשרות לאפס (nullable) ב-clickable / combinedClickable / selectable / toggleable
. אם הערך הוא null, ו-Indication
שסופק הואIndicationNodeFactory
, אפשר ליצור אתIndication
באופן עצלני רק כשיש צורך בכך, וכך לשפר את הביצועים. אם לא מעלים אתMutableInteractionSource
ומשתמשים בו, מומלץ להעביר ערך null.
שינויים ב-API
- הוספת
DecayAnimation
ל-AnchoredDraggable
. השינוי הזה מוסיף פרמטרdecayAnimationSpec
ל-AnchoredDraggable
ומאפשר להשתמש באנימציית דעיכה כשמגיעים לאחת מנקודות העגינה. השינוי כולל גם שינוי השם שלanimationSpec
הקיים ל-snapAnimationSpec
, כדי לעזור לכם להבין את תרחיש השימוש של כל מפרט. BasicTextField2
זמין לשימוש ניסיוני. הוא אמור להיות דומה ל-BasicTextField
מבחינת התכונות, וההתנהגות שלו אמורה להיות מוכנה לייצור. עם זאת, ה-API עדיין נמצא בשלב ניסיוני. לפני שהגרסה תהיה יציבה, השם שלה ישתנה ל-BasicTextField
והיא תועבר לאותה חבילה.- השקנו את הטיוטה הראשונה של ה-API של
OutputTransformation
עבורBasicTextField2
. ה-API הזה מחליף את רוב תרחישי השימוש שלVisualTransformation
ב-BasicTextField
הישן. עם זאת, הוא עדיין לא הושלם וחלק מהדברים לא יפעלו כמו שצריך. נשמח לקבל מכם משוב על נוחות השימוש ב-API בתרחישי לדוגמה. (aosp/2708848) - הוספנו את התג
LinkAnnotation
שמאפשר להוסיף קישורים ורכיבים שאפשר ללחוץ עליהם לטקסט. התכונה 'קישורים' עדיין לא הושלמה, ועוד שינויים ב-API יבואו בקרוב. - הוספנו את המשתנה
receiveContent
שמאפשר למפתחים לקבל תוכן עשיר ב-Jetpack Compose. receiveContent
משתלב עםBasicTextField2
כדי לקבל תוכן עשיר שמסופק על ידי מקלדת התוכנה, או באמצעות הדבקה מהלוח.KeyboardOptions.shouldShowKeyboardOnFocus
מאפשרת להשבית את התנהגות ברירת המחדל שלBasicTextField
, שמבקשת מקלדת תוכנה כשהיא מקבלת את המיקוד.- התכונות
TextInputService
וגםLocalTextInputService
הוצאו משימוש. במקום זאת, אפשר להשתמש ב-PlatformTextInputModifierNode
כדי לשלב ישירות עם ממשקי ה-API של IME בפלטפורמה. (aosp/2862698) - האפשרות
Indication#rememberUpdatedInstance
הוצאה משימוש. יש לו פגיעה גבוהה ואי-אפשרת בביצועים, והוא מונע אופטימיזציות אחרות. במקום זאת, צריך להשתמש ב-IndicationNodeFactory
API החדש.
תיקוני באגים
BasicTextField
יאמת מראש מבחר קטן של מיפויים של אופסים כשהערךVisualTransformation
יועבר. כך אפשר לזהות שגיאות נפוצות בקידוד שגורמות לחריגות שלא ניתן לשחזר במעברים מאוחרים יותר של מדידה או ציור. אם תשלחו את ההודעה במהלך היצירה, יש סיכוי גבוה יותר שהמפתחים יראו את השגיאות האלה במהלך הפיתוח, וכך תוכלו למנוע קריסות בסביבת הייצור. (I0fd42)VisualTransformation
לא תגרום להשלכת שגיאה אם תחזירו אינדקס לא חוקי לאינדקס לא חוקי (b/316401857 )
גרסה 1.6
גרסה 1.6.8
12 ביוני 2024
androidx.compose.foundation:foundation-*:1.6.8
משוחרר. גרסת 1.6.8 כוללת את ההוספות האלה.
גרסה 1.6.7
1 במאי 2024
androidx.compose.foundation:foundation-*:1.6.7
משוחרר. גרסה 1.6.7 מכילה את ההוספות האלה.
גרסה 1.6.6
17 באפריל 2024
androidx.compose.foundation:foundation-*:1.6.6
משוחרר. גרסת 1.6.6 מכילה את ההוספות האלה.
תיקוני באגים
- תוקן באג שגרם לקריסה בתנאים מסוימים, כאשר משנים את המאפיינים
enabled
אוreadOnly
שלTextField
. (Iae17b)
גרסה 1.6.5
3 באפריל 2024
androidx.compose.foundation:foundation-*:1.6.5
משוחרר. גרסת 1.6.5 כוללת את ההוספות האלה.
תיקוני באגים
- הוספת יומני ניפוי באגים לבאגים שקשה לשחזר בשורה/בעמודה: (b/300280216 ו-b/297974033)
גרסה 1.6.4
20 במרץ 2024
androidx.compose.foundation:foundation-*:1.6.4
משוחרר. גרסת 1.6.4 מכילה את ההוספות האלה.
תיקוני באגים
- תנועת בחירה של לחיצה ארוכה ואז גרירה, שמזיזה את הבחירה מחוץ לגבולות הפריסה של הטקסט בפריים הראשון של הגרירה, לא גורמת יותר לקריסה. (Icdf90, b/325307463)
גרסה 1.6.3
6 במרץ 2024
androidx.compose.foundation:foundation-*:1.6.3
משוחרר. גרסת 1.6.3 כוללת את ההוספות האלה.
גרסה 1.6.2
21 בפברואר 2024
androidx.compose.foundation:foundation-*:1.6.2
משוחרר. גרסה 1.6.2 כוללת את השמירות האלה.
תיקוני באגים
- פתרון בעיה שבה
AnimateContentSize
לא מתאפס כראוי. (I07051) - תיקון בעיה שבה
intrinsicHeight
של טקסט נשמרים במטמון יותר מדי במקרים מסוימים. (3cd398, b/217910352)
גרסה 1.6.1
7 בפברואר 2024
androidx.compose.foundation:foundation-*:1.6.1
משוחרר. גרסה 1.6.1 כוללת את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תיקון של המדידה של רשתות מרושתות כשגוללים מעבר למגבלה. (bffc39)
- מוסיפים בדיקה לפריסה עם מאפיינים גדולים. (e74af5)
- תיקון המיקום של פריטים בגודל 0 בתחילת הרשת המדורגת. (785f94)
- קוראים ל-onRelease באותו סדר שבו קוראים ל-onForgotten. (31ce3b)
גרסה 1.6.0
24 בינואר 2024
androidx.compose.foundation:foundation-*:1.6.0
משוחרר. גרסה 1.6.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 1.5.0
- מקש שינוי חדש
Modifier.anchoredDraggable
שמאפשר לגרור וליישם אנימציה בין קבוצות מוגדרות מראש של עוגנים. המאפיין הזה מיועד להחליף אתModifier.swipeable
. במדריך להעברה מוסבר איך להשתמש ב-Google Analytics 4 ולהעביר נתונים מ-Modifier.swipeable
. - נוספה פונקציונליות של גרירה ושחרור בין אפליקציות ורכיבים. כדי להתחיל, אפשר לעיין ב-
DragAndDropTarget
, ב-Modifier.dragAndDropSource
ובממשקי API אחרים. Modifier.draggable2D
הוא המשתנה המשנה החדש שמאפשר תמיכה בקלות בגרירה דו-מימדית. דוגמה- הוספנו את
AndroidExternalSurface
ואתAndroidEmbeddedExternalSurface
כדי שיהיה קל יותר להוסיף רכיבים מבוססי-משטח ב-Compose - שינויים ושיפורים שונים ב-API ב-
Pager
וב-snapFlingBehaviour
- ממשקי API שונים של התמקדות, טקסט ופריימים מוטמעים הועלו לממשקי API יציבים
גרסה 1.6.0-rc01
10 בינואר 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
משוחרר. גרסה 1.6.0-rc01 כוללת את השמירות האלה.
שינויים ב-API
- ה-constructor של התוסף
DragAndDropTarget()
הוסר. יוצרים מכונה חדשה באמצעותobject: DragAndDropTarget {}
. (I32318)
גרסה 1.6.0-beta03
13 בדצמבר 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03
משוחרר. גרסה 1.6.0-beta03 מכילה את ההצהרות האלה.
תיקוני באגים
- תיקון קריסה שפגעה בטקסט גדול מאוד שנמדד באמצעות אילוצים אינסופיים. (I1a7df, b/312294386)
PlatformImeOptions
היא עכשיו כיתה ספציפית במקום ממשק. (If40a4)
גרסה 1.6.0-beta02
29 בנובמבר 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
משוחרר. גרסה 1.6.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- תיקון לבעיה שבה
canScroll
לא מתעדכן אחרי גלילה לצורך עיצוב מחדש בלבד. (I60a86) - תיקון ל-
Modifier.animateItemPlacement()
ול-LookaheadScope
אחרי גלילות קצרות. (I3a2b7)
גרסה 1.6.0-beta01
15 בנובמבר 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
משוחרר. גרסה 1.6.0-beta01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- המשתנה המשנה
DragAndDropTarget
מקבל עכשיו אתDragAndDropTarget
המקבל באופן מפורש, ויש לו פונקציית lambda כדי להביע הסכמה לסשן גרירה ושחרור. עכשיו יש שתי פונקציות ברירת מחדל ל-DragAndDropModifierNode
. אחת לקבלת העברות ואחת להעברת נתונים (I69481) maximumFlingVelocity
עודכן כך שיוצג כ-Float. עדכנו את המסמכים כדי להבהיר את האחדות שלmaximumFlingVelocity
. (I8adc7)השם של
onDragAndDropStart
במפעלDragAndDropModifierNode
השתנה ל-acceptDragAndDropTransfer
.איש/אשת הקשר
acceptsDragAndDropTransfer
נוסף/ה ל-dragAndDropTarget
Modifier
לצורך אישור מתוך סשן גרירה ושחרור. פונקציית הלוגריתם מחזירהDragAndDropTarget
תקינה אם רוצים סשן גרירה ושחרור. פונקציות lambda אחרות לעיבוד אירועי גרירה הוחלפו בפונקציה הזו.נוספה פונקציית
DragAndDropTarget
מברירת המחדל כדי לקבל מפגשים של גרירה ושחרור (Iebf3a)חשיפת
startDragImmediately
ב-AnchoredDraggable
מאפשרת לשלוט בזיהוי תנועות גרירה בזמן השימוש בו. כדאי להגדיר אותו כשהווידג'ט נע באנימציה אל עוגן יעד. דוגמה (Ie6d13, b/285139987)ממשקי ה-API של הסבר קצר ב-Foundation הם עכשיו
@ExperimentalFoundationApi
(I30b0b)הוסרו
DragAndDropInfo
כסוג. עכשיוDragAndDropModifierNode.drag
מקבל פרמטרים עבורtransferData
, גודל הקישוט ופונקציית הלמהDrawScope
של קישוט הגרירהל-
DragAndDropTarget
יש שיטות לאירועים ספציפיים של גרירה ושחרור, במקום להיות שיטה מופשטת אחתהשם של
onDragAndDropEvent
בפונקציית המפעל שלDragAndDropModifierNode
השתנה ל-onDragAndDropStart
כדי להבהיר שה-DragAndDropTarget
שסופק תקף רק לסשן גרירה ושחרור נתון.ה-
DragAndDropEventType
הוסר (I645b1)השם של
PlatformTextInputModifierNode.runTextInputSession
השתנה ל-establishTextInputSession
. (I03cd0)מחליפים את
OriginalText
ב-TextSubstitution
. (Ifa5a8)השם של
PlatformTextInputModifierNode.textInputSession
השתנה ל-runTextInputSession
. (Ie9c6b)הצאצאים של
SubcomposeLayout
(ותבניות כמוLazyColumn
שמבוססות עליה) שנשמרים לשימוש חוזר בעתיד נחשבים כלא פעילים. הוספנו ממשק API חדש לבדיקה שלassertIsDeactivated()
כדי לבדוק צמתים כאלה. שאר ממשקי ה-API לבדיקה יסננו צמתים מושבתים כברירת מחדל. (I2ef84, b/187188981)השם של הפרמטר
clippingEnabled
שלModifier.magnifier
השתנה ל-clip
.הפרמטר
magnifierCenter
שלModifier.magnifier
הופך לאפשרי ל-null, תוך שמירה על אותה התנהגות ברירת המחדל. (I6aa66)ממשקי ה-API של
SwipeToReveal
ב-Material (לכרטיסים ולצ'יפים) מסתמכים עכשיו על ממשק API שמבוסס על חריצים (כמו שמומלץ על ידי Compose) במקום על מופעים שמבוססים על סיווג נתונים, כדי ליצור את החריצים האלה. זהו שינוי משמעותי. כדאי לעיין בדמו ובקוד לדוגמה כדי לראות דוגמאות לשימוש ב-API החדש. (Ia8943)
תיקוני באגים
- מטמיעים את equals ואת hashcode עבור
PageSize.Fixed
. (Ie3ede, b/300134276) - תוקן באג שגרם לכך שהפריסה של
BasicText
לא הצטמצמה כשהערך שלminWidth
השתנה ו-minWidth
היה קטן ממגבלות המידה הראשוניותmaxWidth
(Idb19c) - הוספת תמיכה במעבד גרפיקה ל-Sweep Gradient ב-
ArcLine
. (I4d5bb) - תיקון בעיית תאימות בינארית בעקבות שינוי ב-Window Inset (Iee695)
- כדאי להסיר את שכבת הליבה של Material3 עבור צ'יפ/לחצן של Material3, כי לפי בדיקות המיקרו-ביצועים הביצועים טובים יותר בלי שכבה זו. (I55555)
גרסה 1.6.0-alpha08
18 באוקטובר 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את ההצהרות האלה.
תכונות חדשות
Modifier.draggable2D
הוא המשתנה המשנה החדש שמאפשר תמיכה בקלות בגרירה דו-מימדית. דוגמה (Id95f5, b/214412658)
שינויים ב-API
- השם של פונקציית ה-lambda
onDrawDragShadow
ב-Modifier.dragAndDrawSource
השתנה ל-drawDragDecoration
, והשם של פרמטר הגודל ב-DragAndDropInfo
השתנה ל-dragDecorationSize
. (Id0e30, b/303904810) - השם של הפרמטר
decorationBox
שלBasicTextField2
משתנה ל-decorator
. גם הסוג שלו ישתנה לממשק 'ממשק משעשע' מקבילTextFieldDecorator
. (I23c1c)
תיקוני באגים
- שיפור במסמכים של
BasicTextField
לגבי הדרישות שלonValueChange
. (I90fc9, b/160257648)
גרסה 1.6.0-alpha07
4 באוקטובר 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
משוחרר. גרסה 1.6.0-alpha07 מכילה את ההוספות האלה.
שינויים ב-API
- הוספנו את
PlatformTextInputMethodTestOverride
לכתיבה של בדיקות עבור עורכי טקסט מותאמים אישית. (Id159b) - השם של
GraphicsSurface
השתנה ל-AndroidExternalSurface
(I11680) - נוספה הדגל הזמני
DisableNonLinearFontScalingInCompose
כדי להשבית שינוי גודל גופני לא לינארי. אם אתם צריכים זמן כדי לנקות את הבדיקות, תוכלו להגדיר את הערךDisableNonLinearFontScalingInCompose = true
בהן. הדגל הזה יוסר ב-Compose 1.6.0-beta01. (Ic9486) - נוספו קולקציות
ColorList
ו-ColorSet
שמאפשרות להימנע מהקצאות. (I744bd) - השינוי הזה מסיר את
shortSnapVelocityThreshold
, שהפך לפרט הטמעה של ההטמעות שלSnapLayoutInfoProvider
. (I65f6d) - הוספת המשתנה המשנה
dragAndDropSource
להתחלת סשנים של גרירה ושחרור, והוספת המשתנה המשנהdragAndDropTarget
לקבלה מסשנים של גרירה ושחרור (Ib7828, b/286038936) - מעדכנים את המסמכים של
SnapPositionInLayout
ואת שיטת המיקום. מוסיפים מרווחים לתוכן לשיטת המיקום ב-SnapPositionInLayout
. (Id7938, b/300116110) - הוספנו את
UndoState
ל-TextFieldState
כדי לספק אפשרות לבטל או לבצע מחדש את השינויים שהמשתמש ביצע. (Icc024)
תיקוני באגים
- תוקנה בעיה שבה לא הייתה אנימציה של
basicMarquee
אחרי שינוי המהירות. (Id2e77, b/297974036)
גרסה 1.6.0-alpha06
20 בספטמבר 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
משוחרר. גרסה 1.6.0-alpha06 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
- חבילות חדשות של Composable ל-
SurfaceView
ול-TextureView: GraphicsSurface()
ול-EmbeddedGraphicsSurface()
. זהו ממשק API ניסיוני שעשוי להשתנות ולהשתפר. (I9ddb2) Modifier.magnifier()
הוא עכשיו ממשק API יציב. ההבדלים כוללים את ההסרה שלMagnifierStyle
לטובת פרמטרים בתוך שורה בתוך המשנה עצמו. (I83bec, b/298381260, b/262367109, b/261438887)
שינויים ב-API
- השתמשנו ב-
updateCurrentPage
וב-updateTargetPage
ב-ScrollScope
, והם הרכיבים האחרונים הנדרשים כדי לאפשר התאמה אישית של גלילה עם אנימציה דרךPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - מסירים את הצפיפות מ-
SnapFlingBehavior
. לכל הטמעות שלSnapLayoutInfoProvider
כבר יש דרך לגשת לצפיפות, אפשר להסיר את היקף המקלט, וכך להוביל להטמעה פחות מורכבת שלSnapFlingBehavior
וגם שלSnapLayoutInfoProviders
. (I153c3) - עוד משתני אופן פעולה סומנו כיציבים. (I56af1, b/298046462)
SnapStepSize
הוסר מהרשימהSnapLayoutInfoProvider
. יש לבצע את החישוב באמצעות פרטי הפריסה, ולספק אותו באמצעות שיטת הגישה או ההזזות של הצמדה. (If320c)
שינויים בהתנהגות
- עכשיו, בחלונית הכתיבה נעשה שימוש בשינוי גודל גופן לא לינארי כדי לשפר את הקריאוּת והנגישות. כשהגדרת גודל הגופן היא יותר מ-100% בהגדרות המערכת, טקסט קטן יגדל באופן רגיל, אבל טקסט שכבר גדול יגדל רק מעט. בנוסף, גובה השורות שהוגדרו ב-SP יותאמו באופן אוטומטי כדי לשמור על פרופורציה לגובה המיועד של התמונה בקנה המידה 100%. מידע נוסף זמין במאמר שיטות מומלצות לשינוי גודל הגופן. (I11518)
תיקוני באגים
- להפסיק להשתמש ב-
rememberSaveable
להצגת הסברים קצרים. (Icc131, b/299500338)
גרסה 1.6.0-alpha05
6 בספטמבר 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
משוחרר. גרסה 1.6.0-alpha05 מכילה את ההצהרות האלה.
שינויים ב-API
- מוסיפים עומסי יתר ל-
BasicSecureTextField
שמקבלים ערך לא ניתן לשינוי ופונקציית קריאה חוזרת (callback) לשינוי הערך הזה, בדיוק כמו ב-API הנוכחי שלBasicTextField
. (Ia4882) - מוסיפים את הערך
Modifier.preferKeepClear()
כדי לסמן את הרכיב כרכיב שאפשר לשלב, מכיוון שעדיף להימנע מחלונות צפים ב-API 33 ואילך. (Ib51d5, b/297260115) - מהירות ההזזה ברכיבי תצוגה כמו
ScrollView
ו-RecyclerView
מוגבלת ל-ViewConfiguration.ScaledMaximumFlingVelocity
. ל-Compose יש עכשיו גרסה משלו שלmaximumFlingVelocity
שחלה עכשיו עלDraggable
. (Ibf974) - הוסר עומס יתר של
Pager
ו-PagerState
שהוצא משימוש. (Iea07e) - הוספנו את
BasicTooltipBox
ל-compose.foundation
ועדכנו אתPlainTooltipBox
ו-RichTooltipBox
כך שישתמשו ב-TooltipBox
עם רכיביPlainTooltip
ו-RichTooltip
חדשים. (I79e1d)
גרסה 1.6.0-alpha04
23 באוגוסט 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
משוחרר. גרסה 1.6.0-alpha04 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספת ממשק
ReusableComposition
לניהול מחזור החיים ולשימוש חוזר ברכיבי משנה. (I812d1, b/252846775) Modifier.focusGroup
הועברו לממשקי API יציבים. (I7ffa3)- מוסיפים עומסי יתר ל-
BasicTextField2
שמקבלים ערך לא ניתן לשינוי ופונקציית קריאה חוזרת (callback) לשינוי הערך הזה, בדיוק כמו ב-API הנוכחי שלBasicTextField
. (I3f2b8) GridItemSpan::currentLineSpan
הוא עכשיו ממשק API יציב. (Icc29c)- Canvas שתומך ב-
contentDescription
הוא עכשיו ממשק API יציב. (Ib3d29) viewportSize
הוצג ב-ScrollState
כדרך לדעת את הגודלviewPort
של הרכיב שמשתמש ב-ScrollState
אחרי שהמדידה מתבצעת. (I8b85a, b/283102682)- תוקנה בעיה שבה האחזור מראש ב-Pager לא תאם להתנהגות ב-Views. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
יציב עכשיו.- ממשק ה-API
Deprecated Modifier.consumedWindowInsets
הוסרה. במקום זאת, אתם צריכים להשתמש ב-Modifier.consumeWindowInsets
. (Id72bb)
- ממשק ה-API
גרסה 1.6.0-alpha03
9 באוגוסט 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
משוחרר. גרסה 1.6.0-alpha03 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספה של עומס יתר של
LazyLayout
, הוא מקבל פונקציית lambda שלLazyLayoutItemProvider
, ולא אובייקט רגיל כמו שהיה קודם. עומס יתר הקודם הוצא משימוש. (I42a5a) - נוספה תמיכה בהגדרה של
privateImeOptions
(Idb772)
תיקוני באגים
- תוקנו שדות טקסט שמוצגת בהם מקלדת ואפשר לערוך אותם כשהערך של
readOnly
הוא true. תוקנה גם בעיה שבה המקלדת לא מוצגת כשהערך שלreadOnly
משתנה מ-true ל-false בזמן המיקוד. (I34a19, b/246909589)
גרסה 1.6.0-alpha02
26 ביולי 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
משוחרר. גרסה 1.6.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- הוצג
PagerLayoutInfo
עם מידע שנאסף אחרי שהמדד עבר ב-Pager
. הוספנו גם אתPageInfo
, המידע על דף אחד שנמדד ב-Pager
. (Iad003, b/283098900) - הערות נוספות לציון הקלטות המותרות לרכיבים הניתנים לשילוב (I51109)
- הוספנו את
SemanticsNodeInteraction.requestFocus
כדרך נוחה יותר לגלות ולבקש התמקדות במבחנים. (Ie8722) - ממשק API של
PlatformTextInput*
שעוצב מחדש לחלוטין. (I6c93a, b/274661182, b/267235947, b/277380808) - האפשרויות
SoftwareKeyboardController
ו-LocalSoftwareKeyboardController
כבר לא ניסיוניות.LocalSoftwareKeyboardController
הוא עכשיו גםCompositionLocal
תקין. (I4c364) Modifier.transformable
מספק עכשיו את תנועת ההזזה (delta) בפרמטרcanPan
כדי לקבוע את כיוון ההזזה ולאפשר או לאסור אותה. (I692aa, b/266829800)- מעדכן את המשתנה
consumeWindowInsets
כדי להרחיב את הסוג ההורהAbstractComposeView
(Iacd74, b/269479941)
גרסה 1.6.0-alpha01
21 ביוני 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
משוחרר. גרסה 1.6.0-alpha01 מכילה את ההוספות האלה.
תכונות חדשות
- הוספנו ממשק API חדש של
AnchoredDraggable
ב-Foundation. אפשר להשתמש בו כדי ליצור רכיבים שאפשר לגרור בין מצבים נפרדים, כמו גיליונות תחתונים מודליים. ה-API הזה מחליף את ה-API Swipeable
של Material. (I4a2ed)
שינויים ב-API
- תמיכה
InputConnection#requestCursorUpdates
(I0c69b) - הוספנו את
scrollAnimationSpec
כדי לאפשר הגדרת מפרטי אנימציה בהתאמה אישית. עודכנה ההגדרהBringIntoViewCalculator
ועכשיו היאBringIntoViewScroller
. (Idb741) - הוספת סוג
ResourceResolutionException
כדי לעטוף את ה-throwables שנזרקים כשמנסים לטעון נכסי bitmap עם תיאור של נתיב הנכס שלא הצליח להיטען. (I19f44, b/230166331, b/278424788) - נוספו מאפיינים ופעולות סמנטיים כדי לתמוך בתרגום טקסט. (I4a6bc)
- השקנו את
BringIntoViewCalculator
API, שאפשר להשתמש בו כדי להתאים אישית את האופן שבו רכיבים כמוScrollable
מגיבים לבקשותbringIntoView
. שינינו את עומס יתר של scrollable כך שיאפשר לקבל אופציונלית מופע שלBringIntoViewCalculator
. (Iaf5af)
תיקוני באגים
- הוספנו בדיקת איתור שגיאות בקוד כדי להזהיר אם יוצרים
MutableInteractionSource
בהרכבה בלי לשמור אותו, בדומה לבדיקות האיתור שגיאות בקוד ליצירת מצב שאפשר לשנות /Animatable
. (I5daae) - נוספה תמיכה בבחירה בעזרת העכבר. אם תבחרו בטקסט באמצעות מגע, הבחירה תתרחב במילה ותתכווץ בתו. (Ic0c6c, b/180639271)
- נוספה ממשק
FocusTargetModifierNode
שאפשר להשתמש בו כדי ליצורFocusTarget
בהתאמה אישית. (I9790e)
גירסה 1.5
גרסה 1.5.4
18 באוקטובר 2023
androidx.compose.foundation:foundation-*:1.5.4
משוחרר. גרסה 1.5.4 מכילה את השמירות האלה.
גרסה 1.5.3
4 באוקטובר 2023
androidx.compose.foundation:foundation-*:1.5.3
משוחרר. אין שינויים בגרסה הזו.
גרסה 1.5.2
27 בספטמבר 2023
androidx.compose.foundation:foundation-*:1.5.2
משוחרר. גרסה 1.5.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג בטקסט שגרם לקריסות בתנאים מסוימים כשהסמנטיקה לא הייתה תקפה.
גירסה 1.5.1
6 בספטמבר 2023
androidx.compose.foundation:foundation-*:1.5.1
משוחרר. גרסה 1.5.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תוקנו שדות טקסט שמוצגת בהם מקלדת ואפשר לערוך אותם כשהערך של
readOnly
הוא true. תוקנה גם בעיה שבה המקלדת לא מוצגת כשהערך שלreadOnly
משתנה מ-true ל-false בזמן המיקוד. (I34a19, b/246909589)
גרסה 1.5.0
9 באוגוסט 2023
androidx.compose.foundation:foundation-*:1.5.0
משוחרר. גרסה 1.5.0 כוללת את השמירות האלה.
שינויים חשובים מאז גרסה 1.4.0
- נעשה העברה של רבים מהמודיפיקטורים הבסיסיים, כולל
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, מודификатор הפריסה ועוד, אלModifier.Node
API, כדי לצמצם את התקורה של הקומפוזיציה הראשונית. - שיפורים ביציבות של Pagers. טופלו הרבה באגים.
- הפרמטרים של
pageCount
נמצאים עכשיו ב-PagerState
במקום ב-Pager עצמו
גרסה 1.5.0-rc01
26 ביולי 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
משוחרר. גרסה 1.5.0-rc01 כוללת את השמירות האלה.
תיקוני באגים
יש בדיקה אופציונלית שממליצה להעביר קריאות
mutableStateOf()
לסוגי פרימיטיבים מתאימים. מזהה האיתור של השגיאות בקוד הואAutoboxingStateCreation
. בעבר, הבדיקה הזו הייתה מופעלת כברירת מחדל בכל הפרויקטים. כדי לראות את האזהרה הזו בעורך של Android Studio ובפלט של איתור השגיאות בקוד (lint) של הפרויקט, צריך לשנות את רמת החומרה שלה מ'מידע' ל'אזהרה' (או לרמה גבוהה יותר) על ידי הצהרה עלwarning "AutoboxingStateCreation"
בתוך ההגדרהbuild.gradle
אוbuild.gradle.kts
של המודול, כפי שמוצג (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
גרסה 1.5.0-beta03
28 ביוני 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
משוחרר. גרסה 1.5.0-beta03 מכילה את ההצהרות האלה.
גרסה 1.5.0-beta02
7 ביוני 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
משוחרר. גרסה 1.5.0-beta02 כוללת את ההצהרות האלה.
גרסה 1.5.0-beta01
24 במאי 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
משוחרר. גרסה 1.5.0-beta01 כוללת את ההצהרות האלה.
שינויים ב-API
- מטמיעים את
PlatformDataProvider
כדי לספק נתוני דופק וצעדים יומיים. ממשקSensorGateway
יוסר מה-API הציבורי. (I55b84)
תיקוני באגים
- הפחתת ההקצאות במהלך מדידות של רשימות/מרשימות/וכו' בזמן האטה (Iaf9e2)
- הפחתת ההקצאות כשמחילים קובצי snapshot (I65c09)
- הוסרו הקצאות מאנימציות קפיץ (Ie9431)
- הקצאה שהוסרה מ-
TextLayout
(I0fd11) - הסרה של מספר הקצאות במעקב אחר מהירות הסמן (I26bae)
גרסה 1.5.0-alpha04
10 במאי 2023
androidx.compose.foundation:foundation:1.5.0-alpha04
ו-androidx.compose.foundation:foundation-layout:1.5.0-alpha04
משוחררים. גרסה 1.5.0-alpha04 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספנו
TextStyle.merge(...)
מותאם עם רשימת פרמטרים מלאה. (Iad234, b/246961787) - הצגת
SnapLayoutInfoProvider
שאפשר להשתמש בו עםLazyGridState
. (I92134, b/269237141, b/260914964) - הוספנו את הערך הניסיוני
Modifier.animateItemPlacement()
להיקף הפריט של רשתות פסאודודינמיות מדורגות. אפשר להחיל אותו על הפריטים כדי ליצור אנימציות של שינוי מיקום או שינוי סדר אוטומטיים. (I4b62d, b/257034719) - קידום
GridCells.FixedSize
לגרסה היציבה.FixedSize
מגדירLazyGrid
שבו כל תא תופס את הגודל המדויק שלו בציר החוצה, והשטח שנותר מחולק לפי סידור בציר החוצה. (I8542f) - הוספנו את היקף הנמען
PagerScope
ל-Pager ופונקציית שירות לחישוב היסט נתון בדף. (If2577) - מוסיפים את
snapPositionalThreshold
כשיוצרים התנהגות של משיכה מהירה. אפשר להשתמש בפרמטר הזה כדי לציין סף מיקום לקיצור הזמן של הצמדה ב-Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
הוחלף בטקסטcalculateSnappingOffset
. בשיטה החדשה הזו, אנחנו פשוט מבקשים את ההיסט הבא להתחבר אליו. החישוב של הגבולות צריך להתבצע ברמת ההטמעה, כי הוא עשוי להשתנות בהתאם לאופן שבו רוצים שההצמדה תתבצע. (I923a4)- ממשקי ה-API של
LazyStaggeredGrid
הועלו לגרסה יציבה. (I633a5) - הסרת
pageCount
מהחשבוןHorizontal/VerticalPager
. צריך לספק את הפרטים האלה בזמן יצירת המצב. עודכנו ההגדרותPagerState
ו-rememberPagerState
כדי לאשר אתpageCount
. (Ieb52d, b/266965072) - הסרת
pageCount
מהחשבוןHorizontal/VerticalPager
. צריך לספק את הפרטים האלה בזמן יצירת המצב. עודכנו ההגדרותPagerState
ו-rememberPagerState
כדי לאשר אתpageCount
. (Ifa3cb, b/266965072) - הצגת
shortSnapVelocityThreshold
ב-SnapFlingBehavior
של Pager. (I7379e, b/275579012) - הוספת
FlowRowScope
ו-FlowColumnScope
. (I54fe2)
תיקוני באגים
- קריאות לקבלת סמנטיקה בטקסט כשהאילוצים כוללים את הערכים
minWidth
ו-minHeight
לא גורמות יותר לקריסה. (Ibd072) - תוקנה נסיגה (regression) שבה המקלדת לא הוצגה בשדות טקסט בתוך תיבות דו-שיח שלא נוצרו על ידי הרכיב הניתן לקישור
Dialog
. (I82551, b/262140644)
גרסה 1.5.0-alpha03
19 באפריל 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
ו-androidx.compose.foundation:foundation-layout:1.5.0-alpha03
משוחררים. גרסה 1.5.0-alpha03 מכילה את ההצהרות האלה.
בגרסה הזו מופעל סטאק חדש לעיבוד טקסט ב-Compose. הסטאק החדש עבר אופטימיזציה לביצועים, ולא אמורים להיות שינויים גלויים.
אם כן רואים שינויים בטקסט שעבר רינדור, אפשר לנפות באגים על ידי הגדרת NewTextRendering1_5 = false
כדי לאשר את ההבדל בהתנהגות. הגדרה כזו תגרום לאילוץ של יצירת קומפוזיציה מחדש. יש לדווח על הבדלים בהתנהגות כבאגים.
הדגל לניפוי באגים יוסר לפני השקת גרסת 1.5 beta01. (Iada23, b/246960758)
שינויים ב-API
- הופכים את
FlowColumn/FlowRow
לתוך השורה. (Idab37)
גרסה 1.5.0-alpha02
5 באפריל 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
ו-androidx.compose.foundation:foundation-layout:1.5.0-alpha02
משוחררים. גרסה 1.5.0-alpha02 כוללת את ההוספות האלה.
שינויים ב-API
- הוספנו תמיכה בתאים בגודל קבוע ב-
LazyGrid
וסידור שלהם עם סידור ציר חוצה. (I83ed9, b/235121277, b/267942510) - נוספה תמיכה בנתיבים בגודל קבוע ב-
LazyStaggeredGrid
וסידור שלהם עם סידור ציר חוצה. (I7d519) - עכשיו אפשר לפתוח
UrlAnnotation
ב-AnnotatedString
באמצעות שירותי נגישות כמוTalkBack
. (If4d82, b/253292081) - נוספה הפעולה
InsertTextAtCursor
semantics לשדות טקסט. (I11ed5) - פעולות בדיקה שקשורות לטקסט (למשל
performTextInput
) יבקשו עכשיו להתמקד ישירות, באמצעות פעולת הסמנטיקה, במקום ללחוץ על השדה. (I6ed05) - הוספת תמיכה במרווחים/סידורים של צירים חוצים באמצעות
verticalArrangement
ב-FlowRow
ו-horizontalArrangement
ב-FlowColumn
. אנחנו מסירים גם אתverticalAlignment
ו-horizontalAlignment
ברמה העליונה ב-FlowRow/FlowColumn
. מפתחים יכולים להשתמש ב-Modifier.align
במקום זאת. כך מפחיתים את הבלבול בין מוסכמות השמות שלverticalAlignment
ושלverticalArrangement
. (I87b60, b/268365538)
גרסה 1.5.0-alpha01
22 במרץ 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
ו-androidx.compose.foundation:foundation-layout:1.5.0-alpha01
משוחררים. גרסה 1.5.0-alpha01 כוללת את ההצהרות האלה.
שינויים ב-API
- הטקסט ו-
BasicText
עוברים עיבוד מחדש כדי להשתמש במערכת המשתנים החדשה. במקרים רבים, הפעולה הזו מובילה לשיפורים משמעותיים בביצועים. לא אמורים להיות שינויים גלויים. (If1d17, b/246961435) - נוספה הפעולה הסמנטית
PerformImeAction
כדי להפעיל את הפעולה של IME בצמתים של עורכי טקסט. (Ic606f, b/269633506)
תיקוני באגים
- עדכון הרכיבים הפנימיים של
Modifier.hoverable
. המשתנה המשנהhoverable
יופיע בבודק רק אם הוא מופעל. (I82103)
גרסה 1.4
גרסה 1.4.3
3 במאי 2023
הגרסאות androidx.compose.foundation:foundation:1.4.3
ו-androidx.compose.foundation:foundation-layout:1.4.3
פורסמו ללא שינויים (רק שדרוג גרסה).
גרסה 1.4.2
19 באפריל 2023
androidx.compose.foundation:foundation:1.4.2
ו-androidx.compose.foundation:foundation-layout:1.4.2
משוחררים. גרסה 1.4.2 כוללת את השמירות האלה.
גרסה 1.4.1
5 באפריל 2023
androidx.compose.foundation:foundation:1.4.1
ו-androidx.compose.foundation:foundation-layout:1.4.1
משוחררים. גרסה 1.4.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
גרסה 1.4.0
22 במרץ 2023
androidx.compose.foundation:foundation:1.4.0
ו-androidx.compose.foundation:foundation-layout:1.4.0
משוחררים. גרסה 1.4.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 1.3.0
- הוספנו שילוב של תאימות לסמלי אמוג'י ל-
Text
ול-TextField
, וגם לרכיב ברמה הנמוכה יותר Paragraph (פסקה). הוא מופעל כברירת מחדל כשמגדירים את emojicompat. - אפשר להגדיר את
EmojiCompat
בטקסט ספציפי באמצעותPlatformParagraphStyle
. - נוספה תמיכה בהיקף שורה מלא ל-
LazyStaggeredGrid
(I28252) - הוספת
onHover
הניסיוני אלClickableText
(I6938f) - הוספנו עומסי יתר ניסיוניים חדשים לפונקציה
runComposeUiTest
ולפונקציותcreate*ComposeRule
שמקבלות פרמטרים מסוגCoroutineContext
. ההקשר ישמש להרכבת הבדיקה לכל קריאה ל-LaunchedEffect
ול-rememberCoroutineScope()
בהרכבה. (I10614, b/265177763) FlowRow
ו-FlowColumn
זמינים עכשיו בתור@ExperimentalFoundationApi
, שמאפשרים פריסה גמישה יותר של רכיבים על סמך שורות ועמודות, שיעברו לשורה חדשה אם לא יהיה מספיק מקום בציר הראשי. (I3a7b2)Modifier.basicMarquee()
זמין כתכונה ניסיונית להצגת תוכן עם אפקט של מודעה נעה. (I2df44, b/139321650)
גרסה 1.4.0-rc01
8 במרץ 2023
androidx.compose.foundation:foundation:1.4.0-rc01
ו-androidx.compose.foundation:foundation-layout:1.4.0-rc01
משוחררים. גרסה 1.4.0-rc01 כוללת את השמירות האלה.
שינויים ב-API
- השקנו ממשק API חדש ברמה נמוכה של
PlatformTextInputAdapter
ליצירת הטמעות בהתאמה אישית של קלט טקסט, שמתקשרות ישירות לממשקי ה-API של הפלטפורמה. (I58df4) - הוספת תמיכה בפריסה הפוכה ל-
LazyStaggeredGrid
. (I3ef4a)
תיקוני באגים
- הפעולה
SetText
של סמנטיקה שלBasicTextField
תעדכן עכשיו את מאגר הטקסט באמצעות אותו נתיב קוד שבו מתבצעים עדכוני ה-IME ופונקציות הבדיקה (למשלperformTextReplacement
). - פונקציות בדיקת הטקסט
performTextClearance
,performTextReplacement
ו-performTextSelection
משתמשות עכשיו ב-SemanticsActions
. (I0807d, b/269633168, b/269624358)
גרסה 1.4.0-beta02
22 בפברואר 2023
androidx.compose.foundation:foundation:1.4.0-beta02
ו-androidx.compose.foundation:foundation-layout:1.4.0-beta02
משוחררים. גרסה 1.4.0-beta02 כוללת את ההצהרות האלה.
שינויים ב-API
- נוספה קריאה חוזרת חדשה מסוג
Modifier.Node.onReset()
שמאפשרת לאפס חלק מהמצב המקומי כדי לטפל כראוי במקרה שבוLayout
ישמש לשימוש חוזר (למשל, כפריט שלLazyColumn
). תוקנהFocusTargetModifierNode
כדי לאפס כראוי את המצב הממוקד. (I65495, b/265201972) - נוסף הפרמטר
BlendMode
לשיטותDrawScope.drawText
,Paragraph.paint
ו-MultiParagraph.paint
כדי לתמוך באלגוריתמים שונים של מיזוג כשמציירים טקסט ב-Canvas. (I57508) - הסרנו את ה-API של
modifierElementOf()
. במקום זאת, יש להרחיב ישירות מ-ModifierNodeElement
. (Ie6d21)
תיקוני באגים
- לא ניתן יותר לבחור תו חלקי על ידי שינוי ידני של ידני הבחירה. (Idedd1)
- תיקון קריסה כשמקישים על Ctrl+Backspace ב-
TextField
ריק (I0427f, b/244185537)
גרסה 1.4.0-beta01
8 בפברואר 2023
androidx.compose.foundation:foundation:1.4.0-beta01
ו-androidx.compose.foundation:foundation-layout:1.4.0-beta01
משוחררים. גרסה 1.4.0-beta01 מכילה את ההוספות האלה.
תכונות חדשות
- מאז גרסה 1.3, הוספנו תמיכה באמוג'י ל-
Text
ול-TextField
, וגם לרמה הנמוכה יותר Paragraph. הוא מופעל כברירת מחדל כשמגדירים את emojicompat. - אפשר להגדיר את
EmojiCompat
בטקסט ספציפי באמצעותPlatformParagraphStyle
.
שינויים ב-API
- הוספנו הטמעה משותפת של
PinnableContainer
API שמשמש בכלLazyLayouts
כדי לשמור פריטים שיוצאים מההרכב, אבל עדיין צריכים להיות פעילים. (If45a4) - השם של
PinnableContainer.PinnedHandle.unpin()
השתנה ל-release()
(I4667a)
תרומה חיצונית
- הנכס
mainAxisItemSpacing
נוסף ל-LazyListLayoutInfo
, ל-LazyGridLayoutInfo
ול-LazyStaggeredGridItemInfo
(I52fad)
גרסה 1.4.0-alpha05
25 בינואר 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
ו-androidx.compose.foundation:foundation-layout:1.4.0-alpha05
משוחררים. גרסה 1.4.0-alpha05 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
- נוספה תמיכה במרחק מלא בין שורות ב-
LazyStaggeredGrid
(I28252) - הוספת
onHover
הניסיוני ל-ClickableText
(I6938f) - הוספנו עומסי יתר ניסיוניים חדשים לפונקציה
runComposeUiTest
ולפונקציותcreate*ComposeRule
שמקבלות פרמטרים מסוגCoroutineContext
. ההקשר ישמש להרכבת הבדיקה לכל קריאה ל-LaunchedEffect
ול-rememberCoroutineScope()
בהרכבה. (I10614, b/265177763)
שינויים ב-API
- מיזוג ממשקי ה-API לפני/אחרי של
OverscrollEffect
לפונקציותapplyToScroll
ו-applyToFling
המשולבות של 'decorator'. בדוגמאות המעודכנות במסמך התיעוד מפורטות דוגמאות להטמעת אפקט של גלילה מעבר לקצה המסך באמצעות צורת ה-API החדשה. (I8a9c4, b/255554340) - עוד סוגים/אפשרויות של פונקציות מוסתרות בקוד או פונקציות מוסתרות שהוצאו משימוש (I24f91)
- ממשקי ה-API של
LineBreak
ו-Hyphens
ב-TextStyle
עוברים לשלב היציב. (Ic1e1d)
תיקוני באגים
- הסמן בשדות טקסט ימשיך להבהב גם כשהאנימציות מושבתות. (I95e70, b/265177763)
- עכשיו יש אנימציה ב-
Modifier.basicMarquee
גם כשהאנימציות מושבתות בהגדרות המערכת. (I23389, b/262298306, b/265177763)
תרומה חיצונית
- שיטות
notifyFocusedRect
ב-TextInputSession
וב-TextInputService
לא יוצאו שוב משימוש. (I23a04, b/262648050)
גרסה 1.4.0-alpha04
11 בינואר 2023
androidx.compose.foundation:foundation:1.4.0-alpha04
ו-androidx.compose.foundation:foundation-layout:1.4.0-alpha04
משוחררים. גרסה 1.4.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
FlowRow
ו-FlowColumn
זמינים עכשיו בתור@ExperimentalFoundationApi
, שמאפשרים פריסה גמישה יותר של רכיבים על סמך שורות ועמודות, שיעברו לשורה חדשה אם לא יהיה מספיק מקום בציר הראשי. (I3a7b2)Modifier.basicMarquee()
זמין כתכונה ניסיונית להצגת תוכן עם אפקט של מודעה נעה. (I2df44, b/139321650)
שינויים ב-API
- השדה
FocusRequesterModifier
הוצא משימוש לטובתFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - ה-constructor של
AndroidFont
עםvariationSettings
הוא עכשיו ממשק API יציב, וניתן להשתמש בו כדי ליצור סוגים חדשים של מתארי גופנים. (I5adcc, b/261565807) - הוספנו את ה-API של
PinnableContainer
שמופץ על ידי רשימות עצלניות באמצעות רכיב מקומי שמאפשר להצמיד את הפריט הנוכחי. המשמעות היא שהפריט לא יוסר כשגוללים ממנו מהתצוגה. לדוגמה,Modifier.focusable()
יקביע את הפריט הנוכחי שממוקד באמצעות המנגנון הזה. (Ib8881, b/259274257, b/195049010) - שינינו את האופן שבו רכיבים שניתנים לגלילה מגיבים ל-
bringIntoViewRequesters
ולרכיבים שניתן להתמקד בהם, כדי ליצור מודל טוב יותר של המורכבות של הפעולות האלה ולטפל במקרים קיצוניים נוספים. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - אפשרות נוספת לאפשרות האפס של טיפוס ההחזרה של פונקציות מוסתרות שהוצאו משימוש (Ibf7b0)
- הוספנו את
TextMotion
הניסיוני ל-TextStyle
כדי להגדיר טקסט כ-Static(default)
או כאנימציה. משתמשים ב-TextMotion.Animated
אם רוצים לשנות את הגודל, התרגום או הסיבוב של הטקסט באמצעות אנימציה. (I24dd7) - הוספת
TextFieldFocusModifier
כדי לתקן את התנהגות הניווט במצב התמקדות בפלטפורמת Android (I00303) - הארגומנט
maxSize: IntSize
בפונקציהdrawText
הוחלף ב-size: Size
כדי להתאים לפונקציות אחרות שלDrawScope
. כברירת מחדל,size
מוגדר כ-Size.Unspecified
, והוא לא אמור לשנות את התנהגות ברירת המחדל הקודמת. (Icd27d)
תיקוני באגים
- שינויים בפיזיקה של הצמדה ב-
SnapFlingBehaviour
כדי ליצור תחושה טבעית יותר.
בעיה ידועה
- כשמעדכנים מ-
androidx.compose.foundation:1.4.0-alpha03
ל-androidx.compose.foundation:1.4.0-alpha04
, יכול להיות שתופיע השגיאהjava.lang.NoSuchFieldError
. כאן דווחה הבעיה במקור. שלחנו תיקון והוא יהיה זמין בעדכון הבא של Compose. כפתרון זמני, אפשר לעדכן את הספריותandroidx.compose.material
ו-androidx.compose.material3
לגרסה האחרונה(1.1.0-alpha04) או לשדרג לאחור אתandroidx.compose.foundation
לגרסה 1.4.0-alpha03.
גרסה 1.4.0-alpha03
7 בדצמבר 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
ו-androidx.compose.foundation:foundation-layout:1.4.0-alpha03
משוחררים. גרסה 1.4.0-alpha03 כוללת את ההצהרות האלה.
שינויים ב-API
- בבדיקות ממשק משתמש שמשתמשות בכלל Compose, ההמשכות שהתחדשו במהלך קריאות חזרה (callbacks) של
withFrameNanos
לא יישלחו עד שכל הקריאות החוזרות של המסגרות יסתיימו. זה תואם להתנהגות של compose כשהוא פועל באופן רגיל. עם זאת, בדיקות שמסתמכות על ההתנהגות הישנה עשויות להיכשל. השינוי הזה אמור להשפיע רק על קוד שמפעיל אתwithFrameNanos
או אתwithFrameMillis
ישירות, ויש לו לוגיקה מחוץ לפונקציית הקריאה החוזרת שמועברת לפונקציות האלה, וייתכן שיהיה צורך להעביר אותה לתוך הפונקציות האלה. בדוגמאות האלה אפשר לראות את השינויים בבדיקת האנימציה. - נוספה פרמטר
onPerformTraversals: (Long) -> Unit
אופציונלי ל-constructor ולפונקציית ה-factory שלTestMonotonicFrameClock
כדי להריץ קוד אחרי קריאות חוזרות (callbacks) שלwithFrameNanos
, אבל לפני שממשיכים את רצפי הפעולות החוזרות (coroutines) של מבצעי הקריאה החוזרת. (Idb413, b/254115946, b/222093277, b/255802670) - הצגת פעולות של נגישות בדף:
PageUp
,PageDown
,PageLeft
,PageRight
. לתשומת ליבכם, האפשרויות האלה זמינות רק מ-API 29. (Ida4ab) - הצגת
HorizontalPager
ו-VerticalPager
, דרך להציג רכיבים מורכבים בפורמט של Pager. הוספנו אתPagerState
כדי לשלוט במכשירי ה-Pager, וגם כדי לשלוח שאילתות לגבי המצב הנוכחי של ה-Pager. הוספנו אתPageSize
, דרך לשלוט בגודל הדף של Pager. אפשר להשתמש בזה כדי ליצור קרוסלה כמו Pagers. הוספנו אתPagerSnapDistance
, דרך לשלוט באופן שבו הצמדה תפעל בהתנהגות ה-fling של Pager. (I01120) - הוספנו עומס יתר ב-
SnapFlingBehavior.performFling
כדי לעזור לכם להבין איפה ה-fling יתייצב. (I569f6) - בוצעה הסרה של
OverscrollEffect#isEnabled
. במקום לזכור את הדגל הזה ולהגדיר אותו, פשוט לא שולחים אירועים לאפקט הגלילה החוצה במקרים שבהם לא רוצים שהגלילה החוצה תוצג (לדוגמה, אם שני הפונקציותScrollableState#canScrollForward/backward
מחזירות את הערך false). (I1a4b0, b/255554340, b/255557085) - הוספנו את
ScrollableState#canScrollForward
ו-ScrollableState#canScrollBackward
לשאילתה כדי לבדוק אם יש ל-ScrollableState
מקום לגלילה בכל כיוון (אם הוא בטווח המינימלי או המקסימלי שלו). ברירת המחדל היא True, כדי לשמור על תאימות לאחור עם הטמעות קיימות שלScrollableState
. הצרכנים יכולים להשתמש בנתונים האלה כדי להציג למשתמש אינדיקציה לכך שעדיין יש מקום לגלילה. אפשר גם להשתמש בנתונים האלה כדי להימנע משליחת דלתא ל-ScrollableStates
שאין להם מקום לגלילה בכיוון נתון, כדי לצמצם את העבודה המיותרת. (Idf1a0, b/255557085) - הוספנו Modifier API לשליחת שאילתות לגבי פרטי גלילה של ישויות אב. (I2ba9d, b/203141462)
- משמש ב-
Clickable
כדי לעכב בצורה נכונה אינטראקציות של הקשה, כשתנועות עלולות להפוך לאירועי גלילה. - תוקנה בעיה שבה
Clickables
לא עכב את הרטט בצורה נכונה כשמשתמשים בו בתוךScrollable ViewGroup
. - עדכנו את התכונות 'תיבות הצירים' ו'גיליונות' כדי לעכב בצורה נכונה את הלחיצות במקרה שהתנועות עלולות להפוך לאירועי גלילה.
- מעדכנים את השמות של
snapStepSize
כך שיתאימו לשמות של שיטות אחרות ב-SnapLayoutInfoProvider
. (Ife67c) - הוספת
EmojiCompat
אלCompose
(Ibf6f9, b/139326806) - שינינו את השם של
consumedWindowInsets()
ל-consumeWindowInsets()
ואת השם שלwithConsumedWindowInsets()
ל-onConsumedWindowInsetsChanged()
, והפכנו את המודификаторים לציבוריים. (Ie44e1)
תיקוני באגים
- תוקנה הקריסה שקשורה ל-
Modifier.animateItemPlacement()
ולרשימות רשת 'עיכוב טעינה'. הבעיה התרחשה בתנאים מסוימים כשמספר הפריטים החדשים קטן ממספר הפריטים הקודם. (I0bcac, b/253195989)
גרסה 1.4.0-alpha02
9 בנובמבר 2022
androidx.compose.foundation:foundation:1.4.0-alpha02
ו-androidx.compose.foundation:foundation-layout:1.4.0-alpha02
משוחררים. גרסה 1.4.0-alpha02 מכילה את ההצהרות האלה.
שינויים ב-API
- עכשיו אפשר להשתמש ב-
PointerEventPass
ב-awaitFirstDown
וב-waitForUpOrCancellation
כדי לקבל גמישות רבה יותר. (I7579a, b/212091796) - החזרת ה-API של
beyondBoundCount
מ-Lazy* APIs (I12197) - הוספנו פרמטר לממשקי API עם טעינה איטית כדי ליצור ולמקם פריטים מחוץ למסך (I69e89, b/172029355)
- הפרמטר
minLines
נוסף ל-BasicText
ול-BasicTextField
. הוא מאפשר להגדיר את הגובה המינימלי של הרכיבים האלה במונחים של מספר שורות (I24294, b/122476634)
גרסה 1.4.0-alpha01
24 באוקטובר 2022
androidx.compose.foundation:foundation:1.4.0-alpha01
ו-androidx.compose.foundation:foundation-layout:1.4.0-alpha01
משוחררים. גרסה 1.4.0-alpha01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- נוספה שיטה חדשה,
awaitEachGesture()
, לזיהוי תנועות. הפונקציה פועלת באופן דומה ל-forEachGesture()
, אבל הלולאה על התנועות פועלת לגמרי בתוךAwaitPointerEventScope
, כך שאי אפשר לאבד אירועים בין איטרציות. - האפשרות
forEachGesture()
הוצאה משימוש לטובתawaitEachGesture()
כי היא עלולה לגרום לאיבוד אירועים בין תנועות. (Iffc3f, b/251260206) - נוספו
WindowInsets.imeAnimationSourc
e ו-WindowInsets.imeAnimationTarget
כדי לקבוע את התקדמות האנימציה ולדעת איפה IME יהיה אחרי שהאנימציה תושלם. (I356f1, b/217770337)
גרסה 1.3
גרסה 1.3.1
9 בנובמבר 2022
androidx.compose.foundation:foundation:1.3.1
ו-androidx.compose.foundation:foundation-layout:1.3.1
משוחררים. גרסה 1.3.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון בעיית ביצועים ב-
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
לא יקרא את קואורדינטות הפריסה אלא אם הן מצורפות (aosp/2241316)
גרסה 1.3.0
24 באוקטובר 2022
androidx.compose.foundation:foundation:1.3.0
ו-androidx.compose.foundation:foundation-layout:1.3.0
משוחררים. גרסה 1.3.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 1.2.0
- הושקנו גרסאות ניסיוניות של
LazyVerticalStaggeredGrid
ושלLazyHorizontalStaggeredGrid
. - ממשקי ה-API
SnapFlingBehavior
ו-rememberSnapFlingBehavior
וממשקי API תואמים נוספים נוספו כניסיוניים. - כשלוחצים על
Modifier.clickable
,Modifier.toggleable
ו-Modifier.selectable
במקלדת או בלחצן ה-D במכשיר השליטה מרחוק, מופיעות עכשיו תנודות.
גרסה 1.3.0-rc01
5 באוקטובר 2022
androidx.compose.foundation:foundation:1.3.0-rc01
ו-androidx.compose.foundation:foundation-layout:1.3.0-rc01
משוחררים. גרסה 1.3.0-rc01 כוללת את ההצהרות האלה.
שינויים ב-API
- הוספנו את הערך
lowVelocityAnimationSpec
שמשמש את שלב הגישה כשאין מספיק מהירות זריקה כדי לגרום לתנועה לדעוך. (Iaeb27) - נוספו מקפים ניסיוניים חדשים ל-API כדי לתמוך בהוספת מקפים אוטומטית בטקסט (Iaa869)
גרסה 1.3.0-beta03
21 בספטמבר 2022
androidx.compose.foundation:foundation:1.3.0-beta03
ו-androidx.compose.foundation:foundation-layout:1.3.0-beta03
משוחררים. גרסה 1.3.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- הוספת אפשרויות להתאמה אישית של חלוקת הטקסט לשורות. (I86907)
- עכשיו
BringIntoViewResponder
יכולים לקבל את הגבולות העדכניים ביותר של בקשה בזמן העיבוד שלה. (If86a5, b/241591211) - הוספת תמיכה במרווחים בין פריטים לגרסה הניסיונית של
Staggered Grid
(I10b82) - הוספת מילוי תוכן לגרסה הניסיונית
Staggered Grid
(I342ea) - שינינו את הארגומנט
size:IntSize
ל-constraints: Constraints
בשיטהTextMeasurer.measure
כדי לתמוך באילוצים של רוחב מינימלי. (I37530, b/242707525) - נוספה
Modifier.withConsumedWindowInsets()
לצורך שימוש ב-WindowInsets
מחוץ ל-windowInsetsPadding
. - הוספנו את
MutableWindowInsets
כדי לאפשר שינוי קל שלWindowInsets
בלי צורך בהרכבה מחדש. (I7fd28, b/237019262, b/243119659)
גרסה 1.3.0-beta02
7 בספטמבר 2022
androidx.compose.foundation:foundation:1.3.0-beta02
ו-androidx.compose.foundation:foundation-layout:1.3.0-beta02
משוחררים. גרסה 1.3.0-beta02 מכילה את ההצהרות האלה.
שינויים ב-API
- הגרסה הראשונית של
StaggeredGrid
הניסיוני (Ia48be) - השמות של
FocusDirection.In
ו-FocusDirection.Out
שונו ל-FocusDirection.Enter
ו-FocusDirection.Exit
(Ia4262, b/183746982) - הוספנו עומס יתר על
rememberSnapFlingBehavior
שמאפשר להפעיל הצמדה ב-LazyLists
במהירות. (Ifb48a) - החלפתם את המפעל
snapFlingBehavior
בכיתה ספציפית שלSnapFlingBehavior
. הרחבנו את ההיקף של השיטותSnapLayoutInfoProvider
ל-Density כדי להקל על משתמשי ה-API לבצע המרות מסוג Dp<->Px. (I54a11) - מעדכנים את
LazyLayoutMeasureScope.measure
כך שתחזיר רשימה של נכסי Placeable, ומדגישים את אי-האפשרות לשינוי של הערך המוחזר. (I48b7c) - הוספנו את
SnapLayoutInfoProvider
, שמקבלתLazyListState
כדי ליצור מכונה שלSnapLayoutInfoProvider
שאפשר להשתמש בה כדי להפעיל snapFlingBehavior
ל-LazyLists
. (I2dd10)
תיקוני באגים
- שינוי
AwaitPointerEventScope#awaitLongPressOrCancellation
כך שיתאים לפונקציות אחרות של await (I646e6)
גרסה 1.3.0-beta01
24 באוגוסט 2022
androidx.compose.foundation:foundation:1.3.0-beta01
ו-androidx.compose.foundation:foundation-layout:1.3.0-beta01
משוחררים. גרסה 1.3.0-beta01 מכילה את ההצהרות האלה.
שינויים ב-API
- הוסר
pointerPosition
מ-OverscrollEffect
– אפקטים שחשוב להם המיקום של הסמן יכולים להשתמש ב-Modifier.pointerInput { }
ב-effectModifier
כדי לקבל את המיקום הנוכחי של הסמן במקום זאת. (I9f606, b/241239306) - חשיפה של
AwaitPointerEventScope#awaitLongPressOrCancellation
כאבן בניין נוספת לזיהוי תנועות מורכב יותר (I04374, b/181577176) - הוספנו את
lazyListSnapLayoutInfoProvider
כדי לאפשר הצמדה ברשימות 'הוספה אוטומטית'. (I3ecdf) - הוספנו את
SnapFlingBehavior
, התנהגות של תנועה מהירה שמאפשרת הצמדה של רשימות. מספקים מופע שלSnapLayoutInfoProvider
עם מידע על פריסת הצמדה. (Ie754c)
גרסה 1.3.0-alpha03
10 באוגוסט 2022
androidx.compose.foundation:foundation:1.3.0-alpha03
ו-androidx.compose.foundation:foundation-layout:1.3.0-alpha03
משוחררים. גרסה 1.3.0-alpha03 מכילה את ההצהרות האלה.
שינויים ב-API
- הגדרות הגופן של משאבי הגופנים תומכות עכשיו בהגדרת הגדרות של וריאציות גופן (API מגרסה 26 ואילך). (I900dd, b/143703328)
- תמיכה בגופנים משתנים ב-
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - ההערה הניסיונית הוסרה מ-
PlatformTextStyle
ומ-LineHeightStyle
. (I64bef) - שדות טקסט יגרמו עכשיו להפעלת חריגות מפורטות יותר כשה-
OffsetMapping
שסופק על ידיVisualTransformation
מחזיר אינדקסים לא חוקיים. (Ie73f9, b/229378536) - הצגת ממשקי API ניסיוניים לשיתוף הלוגיקה של ספק הפריטים בין פריסות 'איטום'. (Ic891c)
ScrollableDefaults.reverseDirection()
כבר לא ניסיוני. (Iba646)- הוצאנו משימוש את
SemanticsModifier.id
והעברנו את מזהה הסמנטיקה ל-LayoutInfo.semanticsId
במקום זאת. (Iac808, b/203559524) checkScrollableContainerConstraints()
כבר לא ניסיוני. (I2c290)Modifier.clipScrollableContainer()
כבר לא ניסיוני. (Ia2b44)- הוצאה משימוש של
TextInputService.show|hideSoftwareKeyboard
. במקום זאת, צריך להשתמש ב-SoftwareKeyboardController
בקוד האפליקציה וב-TextInputSession
בקוד לניהול IME. (I14e4c, b/183448615)
גרסה 1.3.0-alpha02
27 ביולי 2022
androidx.compose.foundation:foundation:1.3.0-alpha02
ו-androidx.compose.foundation:foundation-layout:1.3.0-alpha02
משוחררים. גרסה 1.3.0-alpha02 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספנו את פונקציית התוסף
drawText
ל-DrawScope
כדי לספק דרך לצייר טקסט עם כמה סגנונות ברכיבים מורכבים ובמודיפיירים שפועלים עלDrawScope
, כמוCanvas
ו-drawBehind
. (I16a62, b/190787898)
תיקוני באגים
- מעכשיו, המקלדת במסך תוסתר כששדה טקסט מושבת בזמן שהוא ממוקד. (I6e3e4, b/237308379)
- כשמוסיפים אירועי
InputEventChange
למעקב אחר המהירות, מעכשיו נביא בחשבון דלתא במקום מיקומים. כך נבטיח שהמהירות מחושבת בצורה נכונה בכל המקרים, גם אם רכיב היעד זז (Icea9d, b/216582726, b/223440806, b/227709803) - כשיש רכיב שניתן לגלילה עם רכיב צאצא שממוקד, הגלילה תתבצע עכשיו בצורה נכונה כדי שהרכיב הממוקד יישאר בטווח הראייה כשהגודל שלו קטן, גם אם הגודל משתנה באמצעות אנימציה. (I80867, b/230756508, b/220119990)
- תוקנה קריסה שבה השדה
TextField
נמחק ונמלא מחדש בזמן שהבחירה פעילה. (I1235b, b/208655565, b/214253689)
גרסה 1.3.0-alpha01
29 ביוני 2022
androidx.compose.foundation:foundation:1.3.0-alpha01
ו-androidx.compose.foundation:foundation-layout:1.3.0-alpha01
משוחררים. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.
שינויים ב-API
- הוספנו את סוג ההערה
UrlAnnotation
ואת השיטות המשויכות כדי לתמוך בתמיכה בקישורTalkBack
ב-AnnotatedString
. (I1c754, b/231495122)
תיקוני באגים
- עכשיו אפשר להוסיף אנימציה ל-
BasicTextField
cursorBrush
בלי להפעיל מחדש את הטיימר של הסמן. (I812e6, b/236383522)
גרסה 1.2
גרסה 1.2.1
10 באוגוסט 2022
androidx.compose.foundation:foundation:1.2.1
ו-androidx.compose.foundation:foundation-layout:1.2.1
משוחררים. גרסה 1.2.1 מכילה את השמירות האלה.
גרסה 1.2.0
27 ביולי 2022
androidx.compose.foundation:foundation:1.2.0
ו-androidx.compose.foundation:foundation-layout:1.2.0
משוחררים. גרסה 1.2.0 מכילה את ההוספות האלה.
שינויים חשובים מאז גרסה 1.1.0
LazyVerticalGrid
וגםLazyHorizontalGrid
יציבות עכשיו.- עכשיו אפשר לציין סוג תוכן לפריטים ברשימות ובתצוגות רשת של Lazy. כך הרכיבים יוכלו לעשות שימוש חוזר ברכיבים בצורה יעילה יותר.
- לרשימות ולמרתפים בטעינה איטית יש עכשיו הפרמטר
userScrollEnabled
שמאפשר להשבית את הגלילה באמצעות תנועות המשתמש. - נוספה ממשק API ניסיוני חדש בשם
LazyLayout
. זהו ממשק ה-API שאנחנו משתמשים בו באופן פנימי כדי להפעיל רשימות וריבועים 'לא פעילים'. - ממשק ה-API
OverscrollEffect
הושק כגרסה ניסיונית. אפשר להגדיר אפקטים מותאמים אישית של גלילה מעבר לקצה המסך, וגם להוסיף אפקט סטנדרטי של פלטפורמה לקונטיינרים מותאמים אישית שניתנים לגלילה. - הוספנו ממשקי API ליכולת פעולה הדדית בגלילה בתצוגה עץ כדי לאפשר יכולת פעולה הדדית בין תצוגות לבין רכיבי גלילה מורכבים.
- הוספנו גלילה בעכבר ובמשטח מגע לכל מאגרי התגים שאפשר לגלול בהם.
גרסה 1.2.0-rc03
29 ביוני 2022
androidx.compose.foundation:foundation:1.2.0-rc03
ו-androidx.compose.foundation:foundation-layout:1.2.0-rc03
משוחררים. גרסה 1.2.0-rc03 כוללת את ההצהרות האלה.
- אין שינויים מאז 1.2.0-rc02.
גרסה 1.2.0-rc02
22 ביוני 2022
androidx.compose.foundation:foundation:1.2.0-rc02
ו-androidx.compose.foundation:foundation-layout:1.2.0-rc02
משוחררים. גרסה 1.2.0-rc02 כוללת את ההוספות האלה.
גרסה 1.2.0-rc01
15 ביוני 2022
androidx.compose.foundation:foundation:1.2.0-rc01
ו-androidx.compose.foundation:foundation-layout:1.2.0-rc01
משוחררים. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.
שינויים ב-API
- הוספנו
OverscrollEffect
ניסיוני כדי לאפשר אפקטים מותאמים אישית של גלילה מעבר לקצה המסך, לצד עומסי יתר שלModifier.scrollable
שמקבלים אותו. - הגרסה הניסיונית
LocalOverScrollConfiguration
הועברה מחבילהfoundation.gesture
לחבילת הבסיס, ושמה שונה ל-LocalOverscrollConfiguration
(If19fb, b/204650733) - ממשקים בספריות של compose נוצרים עכשיו באמצעות שיטות ברירת המחדל של ממשק jdk8 (I5bcf1)
- הוספנו ממשק API ניסיוני
checkScrollableContainerConstraints()
שמאפשר לבדוק שלא מוטמעים בתוך קונטיינרים שניתן לגלול. אפשר להשתמש בו כשיוצרים פריסות 'עיכוב טעינה' שניתנות לגלילה באמצעותLazyLayout
. (Id6fab, b/233352497) - הוסר
LazyVerticalGrid
שהוצא משימוש מחבילתandroidx.compose.foundation.lazy
. ה-API היציב החדש נמצא ב-androidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
גרסה 1.2.0-beta03
1 ביוני 2022
androidx.compose.foundation:foundation:1.2.0-beta03
ו-androidx.compose.foundation:foundation-layout:1.2.0-beta03
משוחררים. גרסה 1.2.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים.
שינויים ב-API
- נוספו
IntervalList
ו-MutableIntervalList
ניסיוניים חדשים. הוא מאפשר לייצג רשימה של ערכים באמצעות כמה מרווחים. האפשרות הזו שימושית כשרוצים להגדיר dsl משלכם, בדומה ל-DSL שבו נעשה שימוש ב-LazyColumn
, שבו אפשר להגדיר את הפריטים ברשימה באמצעות מספר קריאות ל-item/items. (I2d05e, b/228580728)
תיקוני באגים
- הבהרנו במסמכי העזרה של
WindowInsets.ime
שדיווח על תצוגות מפורטות שלime
מתבצע כבר מגרסה 23 של ה-API, אבל רק תצוגות מפורטות אנימציה מתבצע מגרסה 30 ואילך. (Ia7fc0, b/230756508) - לחיצה על מקש המחיקה קדימה כשהסמן נמצא בסוף שדה טקסט לא תגרום יותר לקריסה.
- עכשיו, הארגומנטים של ה-constructor של
DeleteSurroundingTextCommand
ו-DeleteSurroundingTextInCodePointsCommand
חייבים להיות לא שליליים. (Ica8e6, b/199919707)
גרסה 1.2.0-beta02
18 במאי 2022
androidx.compose.foundation:foundation:1.2.0-beta02
ו-androidx.compose.foundation:foundation-layout:1.2.0-beta02
משוחררים. גרסה 1.2.0-beta02 מכילה את ההצהרות האלה.
- רזולוציית גופן שניתן להורדה שלא משתנה בהתאם לגודל הפריסה של טקסט או
TextField
, לא הייתה מתבצעת ציור מחדש, וכתוצאה מכך התצוגה של הגופן הייתה מיושנת. תיקון הבאג הזה מבטיח שתמיד תתבצע ציור מחדש של פריסת הטקסט (b/229727404). (I1d49e, b/229727404)
גרסה 1.2.0-beta01
11 במאי 2022
androidx.compose.foundation:foundation:1.2.0-beta01
ו-androidx.compose.foundation:foundation-layout:1.2.0-beta01
משוחררים. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.
תכונות חדשות
- זוהי גרסת הבטא הראשונה של 1.2!
שינויים ב-API
- הוספנו את
BeyondBoundsInterval
הניסיוני, שאפשר להשתמש בו בהטמעות בהתאמה אישית שלLazyList
כשהן מתכננות את הפריסה של פריטים מעבר לגבולות הגלוי (Ifabfb, b/184670295) - השם של
LineHeightBehavior
השתנה ל-LineHeightStyle
- השם של
LineVerticalAlignment
השתנה ל-LineHeightStyle.Alignment
- שינוי שם השם של
LineHeightTrim
שונה ל-LineHeightStyle.Trim
- הערכים של מגדיר המבנה (constructor) שמוגדר כברירת מחדל ב-
LineHeightStyle
הוסרו (I582bf, b/181155707) - נוספו ערכי ברירת מחדל למאפיינים האופציונליים של ממשק
LazyLayoutItemProvider
. (Iba8a0) - ב-
LazyLayoutItemProvider
API, במקום מפעל שמחזיר את הפונקציה הניתנת לקיפול לפי אינדקס, יש עכשיו פריט פשוט יותר של פונקציה ניתנת לקיפול שמקבל את האינדקס. (Id2196) - השם של LazyLayoutItemsProvider השתנה ל-LazyLayoutItemProvider (I0638c)
- השם של
LazyLayoutItemsProvider.itemsCount
משתנה ל-itemCount
(Id409c) - הוספנו את האפשרות 'מכחול' ל-
TextStyle
ול-SpanStyle
כדי לספק דרך לצייר טקסט עם צבע פסטל. (I53869, b/187839528) - המאפיינים
trimFirstLineTop
ו-trimLastLineBottom
שלLineHeightBehavior
השתנו למאפיין enum יחיד:LineHeightTrim
. ל-LineHeightTrim
יש 4 מצבים מוגדרים על ידי שני ערכים בוליאנים:FirstLineTop
,LastLineBottom
, Both ו-None (Ifc6a5, b/181155707) הוספנו את
LineHeightBehavior
ל-TextStyle
ול-ParagraphStyle. LineHeightBehavior
כדי לקבוע אם גובה השורה יחול על החלק העליון של השורה הראשונה ועל החלק התחתון של השורה האחרונה. הוא גם מגדיר את היישור של השורה במרחב שסופק על ידיTextStyle
(lineHeight
).לדוגמה, אפשר לקבל התנהגות דומה לזו שמוגדרת ב-CSS באמצעות
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.ההגדרות של
trimFirstLineTop
ו-trimLastLineBottom
פועלות בצורה תקינה רק כש-includeFontPadding
שווה ל-false. (I97332, b/181155707)הוספנו את המשתנה הניסיוני
imeNestedScroll()
כדי שמפתחים יוכלו לשלוט ב-IME באמצעות גלילה. (I60759)
תיקוני באגים
- תוקנה נסיגה (regression) שבה שדות טקסט לא הסתירו את המקלדת כשהוסרו מהקומפוזיציה בזמן שהם היו במוקד. (I7a410, b/230536793, b/225541817)
- תמיכה בשלוש נקודות כשהגובה מוגבל ולא מתאים לכל שורות הטקסט (Ie528c, b/168720622)
- מעכשיו,
BringIntoViewRequester.bringIntoView
תמיד יושעה עד שהבקשה תושלם או תופרע על ידי בקשה חדשה יותר שלא חופפת לה. בקשות חופפות ייכנסו לתור. (I43e7f, b/216790855) - קריאות
BringIntoViewRequester.bringIntoView
בו-זמניות למלבנים חופפים לחלוטין יטפלו עכשיו רק בבקשה של המלבן הגדול יותר. (I34be7, b/216790855, b/184760918) - הפעלת ברירת המחדל
includeFontPadding
. אפשר להשבית אתincludeFontPadding
באמצעות המאפייןTextStyle.platformTextStyle
. בעתיד הקרוב נשנה את התנהגות ברירת המחדל, אבל עד אז זה יאפשר לנו לשלב בצורה טובה יותר שיפורים לגובה השורה (aosp/2058653) ולפתור בעיות של חיתוךTextField
. (I01423, b/171394808) Modifier.bringIntoViewRequester
כבר לא משתמש ב-onGloballyPositioned
. (I630f5)
תרומה חיצונית
- עכשיו,
MouseInjectionScope.scroll(delta = someDelta)
הפוך ב-Android אם גוללים אנכית (אם someDelta חיובי, הגלילה תהיה כלפי מטה) (Ifb697, b/224992993)
גרסה 1.2.0-alpha08
20 באפריל 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha08
משוחררים. גרסה 1.2.0-alpha08 מכילה את ההוספות האלה.
שינויים ב-API
- הצגת כל העיצובים הזמינים של גופנים מערכת ב-Android באמצעות
FontFamily.SansSerif
. ב-API 21-28, המערכת תשתמש בשמות גופנים חלופיים כמו sans-serif-medium באופן פנימי. זהו שינוי בהתנהגות, כי בעבר הייתה תמיכה רק במשקלים 400 ו-700 ב-API 21-28. (I380fe, b/156048036, b/226441992) - עכשיו אפשר להשתמש בפרמטר Constraints ב-Paragraph וב-MultiParagraph. העברת
Constraints.maxHeight
היא פעולה ללא תוצאה כרגע, אבל היא תאפשר לבצע חישובים מסוימים בעתיד, כמו חיתוך אליפטי על סמך הגובה. (I6afee, b/168720622) - עכשיו אפשר להשתמש ב-
SubcomposeSlotReusePolicy.getSlotsToRetain()
עם סוג של MutableSet בהתאמה אישית, שלא מאפשר להוסיף אליו פריטים חדשים. (Icd314) - האפשרות 'צריכה חלקית (מצב מושבת או מיקום)' הוצאה משימוש ב-
PointerInputChange
. אפשר להשתמש ב-consume()
כדי לצרוך את השינוי באופן מלא. אפשר להשתמש ב-isConsumed
כדי לקבוע אם מישהו אחר כבר נצל את השינוי. PointerInputChange::copy()
יוצרת עכשיו תמיד עותק שטחי. המשמעות היא שעותקים שלPointerInputChange
ייצרכו ברגע שאחד מהעותקים ינוצל. אם רוצים ליצורPointerInputChange
ללא קישור, משתמשים במקום זאת ב-constructor. (Ie6be4, b/225669674)- השקנו ממשק API ניסיוני חדש של
LazyLayout
. כך תוכלו ליצור רכיבים משלכם, כמוLazyColumn
שלLazyVerticalGrid
. חשוב לזכור שממשק ה-API נמצא בשלבים מוקדמים, ויכול להיות שיחולו בו שינויים בגרסאות עתידיות. (Iba2bc, b/166591700) - עכשיו
AndroidFont
מקבל אתtypefaceLoader
כפרמטר של ה-constructor. (I2c971) WindowInsets
companion חושף עכשיו את החשיפה (אם הם מופיעים במסך, ללא קשר אם הם חופפים לחלון) ואת הגודל שהם יכולים להיות אם הם זמינים במכשיר אבל לא פעילים כרגע. (I65182, b/217770337)
גרסה 1.2.0-alpha07
6 באפריל 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha07
משוחררים. גרסה 1.2.0-alpha07 מכילה את ההצהרות האלה.
שינויים ב-API
- נוספה ממשק API מסוג
PinnableParent
שמאפשר לצאצאים של פריסות מושבתות למנוע את השלכת הפריטים שנוצרו כרגע (Ibbdd0, b/184670295) - השדות
LazyListLayoutInfo
ו-LazyGridLayoutInfo
כוללים עכשיו את השדותbeforeContentPadding
ו-afterContentPadding
(I3b628, b/200920410) - הוספנו את
KeyboardType.Decimal
כחלופה ל-Keyboard.Number
כדי לכלול באופן ספציפי את המפריד העשרוני ב-IME. (Iec4c8, b/209835363) - הוספת מתאר גופן חדש Font(DeviceFontFamilyName) כדי לחפש גופנים שמותקנים במערכת במהלך רשתות גיבוי של גופנים. (I30468, b/219754572)
PointerEventType.Scroll
ו-PointerEvent.scrollDelta
הם עכשיו ממשקי API יציבים (I574c5, b/225669674)- אפשר לשנות את ההגדרות הזמניות של התאימות שנוספו ל-
includeFontPadding
ב-TextStyle/ParagraphStyle. includeFontPadding
באמצעותTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. זוהי אפשרות תצורה זמנית להפעלת ההעברה, והיא תוסר. (If47be, b/171394808) - עדכנו את
FontFamily.Resolver
כדי לשלב הגדרת נגישות של טקסט מודגש ברמת המערכת (I6c1e7) - מאפיין התוסף
consumeWindowInsets
שלComposeView
מאפשר למפתחים להשבית את השימוש ב-Android WindowInsets. כך אפשר להחילWindowInsets
בנפרד על כלComposeViews
בהיררכיה, בלי שהם יפריעו זה לזה. (I0ef08, b/220943142)
גרסה 1.2.0-alpha06
23 במרץ 2022
androidx.compose.foundation:foundation:1.2.0-alpha06
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha06
משוחררים. גרסה 1.2.0-alpha06 מכילה את ההצהרות האלה.
שינויים ב-API
- נוספה פעולת סמנטיקה
RequestFocus
לבקשת מיקוד ביעד שניתן להתמקד בו. (I17b71) FocusOrder
מוזג עכשיו ל-FocusProperties
, ו-focusProperties()
כולל עכשיו את כל היכולות שלfocusOrder()
. התכונותFocusOrder
ו-focusOrder()
הוצאו משימוש. צריך להחליף אתfocusOrder()
שמקבלfocusRequester
במשתנהfocusRequester()
בשילוב עםfocusProperties()
. כך אפשר להפריד בצורה טובה יותר בין הבעיות של המשתנים המשתנים. (I601b7)WindowInsets.asPaddingValues(Density)
נוסף כדי לאפשר למפתחים לבצע את ההמרה בלי צורך להיות במצב composition. (I94c35)- עדכון הניתוח של רכיבי drawable וקטוריים כדי לתמוך בהשתקפות אוטומטית של התוכן של
VectorPainter
אם כיוון הפריסה הנוכחי הוא RTL. (I79cd9, b/185760237)
תיקוני באגים
- מעכשיו, אם תשנו את גודל אזור הגלילה והרכיב הממוקד היה גלוי קודם, תוכלו להשתמש ב-
Modifier.verticalScroll()
, ב-Modifier.horizontalScroll()
וב-Modifier.scrollable()
כדי לגלול ולשמור על הרכיב הממוקד גלוי. - שדות טקסט יישארו עכשיו מעל המקלדת כשהם מודגשים והמקלדת מוצגת, כשהם נמצאים בתוך רכיב שאפשר לגלול בו ללא עיכוב ומצב הקלט הרך הוא
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
גרסה 1.2.0-alpha05
9 במרץ 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha05
משוחררים. גרסה 1.2.0-alpha05 מכילה את ההוספות האלה.
שינויים ב-API
LazyVerticalGrid
וגםLazyHorizontalGrid
יציבות עכשיו. (I307c0)- השדה
LazyGridItemInfo.Unknown
הוחלף בשדות נפרדיםLazyGridItemInfo.UnknownRow
ו-LazyGridItemInfo.UnknownColumn
(I56d51) LazyVerticalGrid
/LazyHorizontalGrid
וכל ממשקי ה-API הקשורים הועברו לחבילת המשנה.grid
. יש לעדכן את הייבוא מ-androidx.compose.foundation.lazy
ל-androidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- טקסט:
includeFontPadding
מושבת עכשיו כברירת מחדל. המערכת מטפלת בבעיות החיתוך שנובעות מ-includeFontPadding=false
, ולא אמורה להתרחש בעיית חיתוך בסקריפטים ארוכים. (I31c84, b/171394808) - הממשק למדידת ביצועים חושף עכשיו את המאפיין parentData (I3313f)
- הוספנו את האפשרות הניסיונית
Modifier.onFocusedBoundsChanged
כדי לאפשר לצפות בגבולות של רכיבי focusable צאצאים. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - נוספה האפשרות LazyHorizontalGrid. (I61ae7, b/191238807)
- הוספנו ממשק API חדש של
LazyVerticalGrid
כדי להגדיר גדלים של צירים חופפים (I17723) - נוספ המשתנה FocusGroup (I64bc0, b/213508274, b/184670295)
תיקוני באגים
- עכשיו יוצגו ב-
WindowInsets.toString()
הערכים הנכונים. (I1585d)
תרומה חיצונית
- העדכון כולל שימוש ב-Kotlinx coroutines 1.6.0 (I3366d)
גרסה 1.2.0-alpha04
23 בפברואר 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha04
משוחררים. גרסה 1.2.0-alpha04 מכילה את ההוספות האלה.
שינויים ב-API
BringIntoViewResponders
כבר לא נדרשים להעביר בקשות באופן ידני אל הגורמים המגיבים ברמה ההורה, אלא צריכים להחזיר מיד את המלבן שהם רוצים שההורה יציג. (I8e66a)- תמיכה בטעינת גופן אסינכרוני בטקסט (I77057, b/214587005)
LazyVerticalGrid
תומך עכשיו ב-line breaking
לפני פריטים עם רוחב שאינם נכנסים לשורה הנוכחית. (I05c40, b/207462103)- השם של
excludeFromSystemGestures
השתנה ל-systemGesturesExclusion
(I19526) LazyVerticalGrid
תומך עכשיו ב-reverseLayout. (I6d7d7, b/215572963, b/211753558)- הוספת השיטה
WindowInsets.only()
כדי לאפשר למפתחים לכלול רק מאפיינים מ-WindowInsets. (I14c94, b/217768486) נוספו
ComposableTarget
, ComposableTargetMarker
ו-ComposableOpenTarget
שמאפשרים לדווח בזמן הידור על קריאה של פונקציה הניתנת להגדרה שמטרגטת מחולל שמטרגט אחר לא תוכנן להשתמש בו.ברוב המקרים, התוסף של ה-compiler של compose יכול להסיק את ההערות, ולכן השימוש בהערות האלה באופן ישיר צריך להיות נדיר . במקרים שבהם אי אפשר להסיק את הערך, המערכת יוצרת ומשתמשת ב-applier בהתאמה אישית, בפונקציות קומפוזביליות מופשטים (כמו שיטות ממשק), בשדות או במשתנים גלובליים שהם פונקציות lambda קומפוזביליות (משתנים מקומיים ופרמטרים מוסקים), או כשמשתמשים ב-
ComposeNode
או בפונקציות קומפוזביליות קשורות.למפעילים מותאמים אישית, הפונקציות הניתנות לקיפול שמפעילות את
ComposeNode
או אתReusableComposeNode
צריכות להוסיף הערהCompoableTarget
לפונקציה ולסוגי הפרמטרים של lambda שניתן לקיפול. עם זאת, מומלץ ליצור הערה עם הערהComposableTargetMarker
, ואז להשתמש בהערה המסומנת במקום ב-ComposableTarget
ישירות. הערה שניתנת ליצירה ולשימוש מחדש שמסומנת ב-ComposableTargetMarker
זהה ל-ComposbleTarget
עם השם המלא של סיווג המאפיין כפרמטר של הגורם המפעיל. דוגמה לשימוש ב-ComposableTargetMarker
מופיעה במאמרanroidx.compose.ui.UiComposable
. (I38f11)
תיקוני באגים
- עכשיו מותר להעביר ערכי אופסט של גלילה שליליים אל
LazyGridState.scrollToItem()
ו-LazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - תמיכה בטעינת גופנים אסינכרונית ל-TextField. (Icc4bf, b/214587005)
גרסה 1.2.0-alpha03
9 בפברואר 2022
androidx.compose.foundation:foundation:1.2.0-alpha03
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha03
משוחררים. גרסה 1.2.0-alpha03 כוללת את ההוספות האלה.
שינויים ב-API
- השיטות של
notifyFocusedRect
ב-TextInputSession
וב-TextInputService
הוצאו משימוש ולא יתבצעו קריאות אליהן. במקום זאת, אתם צריכים להשתמש ב-BringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - הופעלו אנימציות לפריטים של רשתות 'עיכוב טעינה' באמצעות Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
מעביר עכשיו בקשות לתצוגת Android המארחת. (Ia7a51)FontFamilyResolver
זמין עכשיו דרךLocalFontFamilyResolver.current
- הוספנו את
createFontFamilyResolver(context)
ו-createFontFamilyResolver(context, coroutineScope)
כדי ליצור פותרי FontFamily חדשים מחוץ לשימוש ב-Compose. - הרכיבים Paragraph ו-MultiParagraph מקבלים עכשיו את הערך
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
מכיל עכשיו את המפַתח שמשמש לפריסה הזו, והוא מחליף אתTextLayoutResult.layoutInput.resourceLoader
שכבר לא בשימוש. (Id5a45, b/174162090)
- הוספנו את
- הוספנו את
AndroidFont
, ממשק API חדש ברמה נמוכה שמאפשר לספק סוגים חדשים של מתארי משאבי גופנים ב-Android. לדוגמה, טעינת גופנים מקצוות עורפיים ספציפיים לאפליקציה, איתור אופציונלי של גופנים שהותקנו מראש במכשיר או טעינת גופן ממשאב שלא מסופק על ידי מפעלי הגופנים הנוכחיים.- הרחבנו את ה-API של
Font.ResourceLoaded
כדי לתמוך בחיוב אופציונלי ואסינכרוני של גופנים. לא מומלץ למפתחי אפליקציות להשתמש ב-API הזה ישירות. כדי להוסיף סוגים חדשים של גופנים, אפשר לעיין במאמר AndroidFont. - פונקציית ההרחבה
Font.AndroidResourceLoader
מאפשרת ליצורFont.ResourceLoader
מחוץ להרכבה. - הוספה של הפרמטר
loadingStrategy
לגופנים שמבוססים על משאבים, כדי לאפשר טעינת נתונים אסינכרונית כשגופן המשאב מפנה ל-XML של גופנים שניתן להורדה. (Ie5aea, b/174162090)
- הרחבנו את ה-API של
- ה-constructor של
Typeface(FontFamily)
הוצא משימוש. בעבר השתמשו ב-data: כדי לטעון מראש גופנים. הטעינה מראש של גופנים שניתן להוריד עשויה להימשך עד 10 שניות. כשמשתמשים בגופנים שניתן להורדה, הקריאה הזו עשויה לחסום את האתר למשך 10 שניות. במקום זאת, צריך להשתמש ב-FontFamilyResolver.preload
- האפשרות
fontResource(FontFamily): Typeface
הוצאה משימוש. בעבר השתמשו ב-data: כדי לטעון מראש גופנים. הטעינה מראש של גופנים שניתן להוריד עשויה להימשך עד 10 שניות. במקום זאת, צריך להשתמש ב-FontFamilyResolver.preload
(If8e7c, b/174162090)
- האפשרות
- עכשיו אפשר לציין את סוג התוכן של הפריטים ב-
LazyVerticalGrid
– הפונקציות item/items ב-LazyGridScope
מקבלות עכשיו פרמטר כזה. הצגת מידע כזה עוזרת לשימוש חוזר בלוגיקה של רכיבי הפריטים, כדי לשפר את היעילות שלהם ולהשתמש שוב בתוכן רק בין פריטים מסוג דומה. (I7b355, b/215372836) - עכשיו יש למאפיינים
LazyListLayoutInfo
ו-LazyGridLayoutInfo
מאפיינים חדשים:viewportSize
, orientation
, reverseLayout
(Ifc8ed, b/200920410) - עכשיו אפשר לציין את סוג התוכן של הפריטים ב-LazyColumn/LazyRow – הפונקציות item/items ברמת LazyListScope מקבלות עכשיו פרמטר כזה. הצגת מידע כזה עוזרת לשימוש חוזר בלוגיקה של רכיבי הפריטים, כדי לשפר את היעילות שלהם ולהשתמש שוב בתוכן רק בין פריטים מסוג דומה. (I26506)
- ה-constructor של
SubcomposeLayoutState
שמקבל אתmaxSlotsToRetainForReuse
הוצא משימוש. במקום זאת, יש קונסטרוקטור חדש שמקבל אתSubcomposeSlotReusePolicy
– ממשק חדש שמאפשר שליטה פרטנית יותר על החריצים שצריך לשמור לשימוש חוזר בעתיד. (I52c4d) - הוספת מודיפיקרים ל-WindowInsets, גם למרווחים וגם לגודל. כך תוכלו להציג תוכן מסוים באזור הקטן, ועדיין להציג את התוכן הראשי מחוץ לאזור הקטן. לדוגמה, אפשר להשתמש ב-windowInsetsPadding כדי להוסיף מרווח לאזור התוכן כדי למנוע אזורים שעשויים להיות מכוסים באופן מלא או חלקי. (Id0395, b/213942085)
תיקוני באגים
- שדות טקסט יישארו מעל המקלדת כשהם יהיו מוקדשים והמקלדת תוצג, אם מצב הקלט הרך הוא
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - במחשב נעשה שימוש בהרכבה מקומית עבור
FontFamily.Resolver
FontLoader
למחשב הוצא משימוש- מפעל
createFontFamilyResolver
חדש במחשב (I6bbbb, b/174162090)
- סוג הקלט של המקלדת הווירטואלית לא מהבהב יותר כשמשנים את המיקוד בין שדות הטקסט. (I1bf50, b/187746439)
- בשדות טקסט, כבר לא צריך ללחוץ שוב על לחצן החזרה אחורה כשידית הסמן מוצגת. (Ideb4b, b/205726883)
- שיפרנו את ההתנהגות של זכוכית המגדלת לבחירת טקסט כך שתתאים לזכוכית המגדלת בפלטפורמה. (Idd918, b/206833278)
גרסה 1.2.0-alpha02
26 בינואר 2022
androidx.compose.foundation:foundation:1.2.0-alpha02
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha02
משוחררים. גרסה 1.2.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- הוספנו את
NonRestartableComposable
לשיטות שהן עומס יתר של שיטות קיימות ללא לוגיקה מורכבת. כך מפחיתים את מספר הבדיקות לזיכרון (equals) שנוצרות על ידי המהדר עבור כל הפרמטרים שחוזרים על עצמם בפונקציה הפנימית שנקראת. (I90490) - נוספו גורמי שינוי מסוג
excludeFromSystemGesture
לגישה נוחה ל-setSystemGestureExclusionRects
של Android (I46f07)
תיקוני באגים
- שיפרנו את ההתנהגות של זכוכית המגדלת לבחירת טקסט כך שתתאים לזכוכית המגדלת בפלטפורמה. (Idd918, b/206833278)
LazyColumn
, LazyRow
, Modifier.verticalScroll
ומארזים אחרים שמשתמשים ב-Modifier.scrollable
תומכים עכשיו בגלילה באמצעות גלגל העכבר. (I2b5e1, b/198214718)
גרסה 1.2.0-alpha01
12 בינואר 2022
androidx.compose.foundation:foundation:1.2.0-alpha01
ו-androidx.compose.foundation:foundation-layout:1.2.0-alpha01
משוחררים. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.
שינויים ב-API
- הפרמטר החדש
userScrollEnabled
נוסף ל-LazyColumn
, ל-LazyRow
ול-LazyVerticalGrid
כדי לאפשר למשתמשים להשבית באופן זמני או קבוע את הגלילה שהמשתמש יזם באמצעות תנועות מגע או פעולות נגישות. עדיין יהיה מותר לגלול באופן פרוגרמטי באמצעות השיטות במצב. (I7eae9, b/201150093) - מוסיפים קריאה חוזרת (callback) מסוג
onSizeChanged
למעבד של הגדלת המסך. (I6879f) - ווידג'ט המגדיל מוצג עכשיו כשגוררים את פקדי הבחירה ב-
SelectionContainer
. (I30b38, b/139320979)
תיקוני באגים
- תוקנה בעיה שבה ידית הסמן
TextField
לא נסתרת כשגוללים מחוץ לתצוגה. (I14552, b/208883748)
עדכוני יחסי תלות
- עכשיו תלוי ב-Kotlin
1.6.10
.
גרסה 1.1
גרסה 1.1.1
23 בפברואר 2022
androidx.compose.foundation:foundation:1.1.1
ו-androidx.compose.foundation:foundation-layout:1.1.1
משוחררים. גרסה 1.1.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תיקון
NullPointerException
ב-androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - תיקון קריסה שנגרמה על ידי תוכן הלוח בזמן קריאה מהלוח ב-Android. (I06020, b/197769306)
- תוקנה בעיית RTL ב-
LazyVerticalGrid
(aosp/1931080, b/207510535)
גרסה 1.1.0
9 בפברואר 2022
androidx.compose.foundation:foundation:1.1.0
ו-androidx.compose.foundation:foundation-layout:1.1.0
משוחררים. גרסה 1.1.0 כוללת את השמירות האלה.
שינויים חשובים מאז גרסה 1.0.0
- תמיכה יציבה באפקט גלילה מעבר למסגרת ב-Android 12
- שיפורים בגודל של משטח המגע
- שימו לב שבגרסה 1.0 של Compose, רכיבי Material ירחיבו את שטח הפריסה שלהם כדי לעמוד בהנחיות הנגישות של Material לגבי גודל יעד המגע. לדוגמה, יעד המגע של הלחצן יתרחב לגודל מינימלי של 48x48dp, גם אם תגדירו את הגודל של הלחצן לגודל קטן יותר. כך Compose Material תואם לאותו התנהגות של רכיבי Material Design, ומספק התנהגות עקבית אם משלבים בין Views לבין Compose. השינוי הזה גם מבטיח שכשיוצרים את ממשק המשתמש באמצעות רכיבי Material של Compose, מתקיימים הדרישות המינימליות לנגישות של יעדי מגע.
- תמיכה יציבה בפס ניווט
- מספר ממשקי API שהיו בעבר ניסיוניים מקבלים סטטוס יציב
- תמיכה בגרסאות חדשות יותר של Kotlin
גרסה 1.1.0-rc03
26 בינואר 2022
androidx.compose.foundation:foundation:1.1.0-rc03
ו-androidx.compose.foundation:foundation-layout:1.1.0-rc03
משוחררים. גרסה 1.1.0-rc03 כוללת את ההוספות האלה.
תיקוני באגים
- העדכון תומך ב-Compose Material 1.1.0-rc03
גרסה 1.1.0-rc01
15 בדצמבר 2021
androidx.compose.foundation:foundation:1.1.0-rc01
ו-androidx.compose.foundation:foundation-layout:1.1.0-rc01
משוחררים. גרסה 1.1.0-rc01 כוללת את השמירות האלה.
תיקוני באגים
- עכשיו מותר להעביר ערכי אופסט של גלילה שליליים אל
LazyListState.scrollToItem()
ו-LazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - תוקן באג שגרם לפעולות גלילה של נגישות חסרות (I7cbfb)
גרסה 1.1.0-beta04
1 בדצמבר 2021
androidx.compose.foundation:foundation:1.1.0-beta04
ו-androidx.compose.foundation:foundation-layout:1.1.0-beta04
משוחררים. גרסה 1.1.0-beta04 כוללת את ההצהרות האלה.
תכונות חדשות
- עודכן כך שיהיה תואם ל-Kotlin
1.6.0
שינויים ב-API
- ניקוי של nullability ב-
androidx.core.view
(I7078a, b/204917439) - נוספו ממשקי API ניסיוניים שמאפשרים לצרוך את PointerInputchange באופן מלא או לבדוק אם הוא נצרך או לא. (I2e59d)
- הצגת ווידג'ט של זכוכית מגדלת כשגוררים את הסמן או את פקדי הבחירה בתוך שדות טקסט. (I5391e, b/203781358)
תיקוני באגים
- תוקנה בעיה שבה קטעי הטקסט לא זזו כשהשינויים בחשיפה של IME. (I25f2e)
גרסה 1.1.0-beta03
17 בנובמבר 2021
androidx.compose.foundation:foundation:1.1.0-beta03
ו-androidx.compose.foundation:foundation-layout:1.1.0-beta03
משוחררים. גרסה 1.1.0-beta03 כוללת את ההצהרות האלה.
שינויים ב-API
- נוספה תמיכה בפריסת רכיבים אופקית ל-LazyVerticalGrid. (I7e2fa, b/176758183)
נוספה יכולת ניסיונית להוסיף אנימציה למיקומי הפריטים ברשימות עם טעינת פריטים בזמן אמת. יש משתנה חדש שזמין ב-LazyItemScope שנקרא
Modifier.animateItemPlacement()
. דוגמה לשימוש:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- כשמציינים מפתח דרך
LazyListScope.item
אוLazyListScope.items
, המאפיין הזה מפעיל אנימציות של שינוי סדר הפריטים. בנוסף לסדר מחדש של פריטים, כל שינויי המיקום האחרים שנגרמים על ידי אירועים כמו שינויים בסידור או בהתאמה יתבצעו גם הם עם אנימציה. (I59e7b, b/150812265)
- כשמציינים מפתח דרך
גרסה 1.1.0-beta02
3 בנובמבר 2021
androidx.compose.foundation:foundation:1.1.0-beta02
ו-androidx.compose.foundation:foundation-layout:1.1.0-beta02
משוחררים. גרסה 1.1.0-beta02 כוללת את השמירות האלה.
תיקוני באגים
- עכשיו, תנודות (ripples) ואינדיקציות אחרות יושהו רק אם הן נמצאות בתוך מאגר
Modifier.scrollable()
, במקום להשהות אותן תמיד בגלל אירוע 'לא פעיל'. (Ibefe0, b/203141462) - הוספנו את BringIntoView API הניסיוני, שמאפשר לשלוח בקשה להורים כדי שהם יגללו כדי להציג פריט (Ib918d, b/195353459)
תרומה חיצונית
- נוספה
Modifier.pointerHoverIcon
(I95f01)
גרסה 1.1.0-beta01
27 באוקטובר 2021
androidx.compose.foundation:foundation:1.1.0-beta01
ו-androidx.compose.foundation:foundation-layout:1.1.0-beta01
משוחררים. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.
תיקוני באגים
- הוספנו את BringIntoView API הניסיוני, שמאפשר לשלוח בקשה להורים כדי שהם יגללו כדי להציג פריט (Ib918d, b/195353459)
גרסה 1.1.0-alpha06
13 באוקטובר 2021
androidx.compose.foundation:foundation:1.1.0-alpha06
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha06
משוחררים. גרסה 1.1.0-alpha06 מכילה את ההוספות האלה.
שינויים ב-API
- נוספה עומס יתר ללא צאצאים ל-Layout, עם יעילות משופרת (Ib0d9a)
- עכשיו הפונקציה
SemanticsNodeInteraction.performSemanticsAction
מחזירה אתSemanticsNodeInteraction
שאליו הופעלה הפונקציה. (I9e5db) - נוספה הפונקציה
performScrollToNode(matcher: SemanticsMatcher)
שמגלגלת מאגר שניתן לגלילה אל התוכן שמתאים למתאמת הנתון. (Ic1cb8)
גרסה 1.1.0-alpha05
29 בספטמבר 2021
androidx.compose.foundation:foundation:1.1.0-alpha05
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha05
משוחררים. גרסה 1.1.0-alpha05 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספנו למאפיין PointerEventChange נקודות היסטוריות ניסיוניות. (Ic1fd8, b/197553056, b/199921305)
תיקוני באגים
- תיקון בתמיכת הנגישות לגבי גלילה ברכיבים שניתן לגלול בהם (גם רכיבים עם טעינה איטית וגם רכיבים ללא טעינה איטית) (I6cdb0)
גרסה 1.1.0-alpha04
15 בספטמבר 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha04
משוחררים. גרסה 1.1.0-alpha04 מכילה את ההוספות האלה.
שינויים ב-API
performGesture
ו-GestureScope
שהוצאו משימוש, והוחלפו ב-performTouchInput
וב-TouchInjectionScope
. (Ia5f3f, b/190493367)- הוספנו את
touchBoundsInRoot
ל-SemanticsNode
, שמכיל את הגודל המינימלי של יעד המגע, כדי שמפתחים יוכלו לוודא יעדים של מגע עומדים בדרישות המינימליות של נגישות. (I2e14b, b/197751214)
תיקוני באגים
- נוספה תמיכה בגלילה מורחבת במכשירי Android 12. (Iccf3c, b/171682480)
גרסה 1.1.0-alpha03
1 בספטמבר 2021
androidx.compose.foundation:foundation:1.1.0-alpha03
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha03
משוחררים. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.
תכונות חדשות
- עדכנו את Compose
1.1.0-alpha03
כך שיהיה תלוי ב-Kotlin1.5.30
. (I74545)
שינויים ב-API
- נוספה אפקט זוהר לגלילה. נוספה גרסה ניסיונית של OverScrollConfiguration API שמאפשרת להגדיר את האפקט החזותי של גלילה מעבר לקצה המסך. כדי להשבית את אפקט הגלילה החוזרת, צריך לספק ערך null. (I0c304, b/171682480)
- ל-AwaitPointerEventScope יש עכשיו את השיטות withTimeout() ו-withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- נוספה שיטת בדיקה כדי לקבל את גבולות החיתוך. (I6b28e)
- הוספנו גודל מינימלי של יעד מגע ל-ViewConfiguration לשימוש בסמנטיקה ובקלט של סמן כדי להבטיח נגישות. (Ie861c)
גרסה 1.1.0-alpha02
18 באוגוסט 2021
androidx.compose.foundation:foundation:1.1.0-alpha02
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha02
משוחררים. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- נוספו גרסאות DpSize עבור
Modifier.size
ו-requiredSize
(I3fc7e, b/194219828)
גרסה 1.1.0-alpha01
4 באוגוסט 2021
androidx.compose.foundation:foundation:1.1.0-alpha01
ו-androidx.compose.foundation:foundation-layout:1.1.0-alpha01
משוחררים. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.
שינויים ב-API
- עדכון של השיטה
DrawScope#drawImage
, שמשתמשת ב-rects של המקור והיעד כדי להשתמש בפרמטר אופציונלי של FilterQuality. האפשרות הזו שימושית לגרפיקה שמורכבת מפיקסלים, שנועדה להיראות מפורטת יותר כשהיא מוגדלת. עודכנו הרכיבים BitmapPainter ו-Image composable כך שיכללו גם את הפרמטר האופציונלי FilterQuality (Ie4fb0, b/180311607) - עכשיו, כשמקישים על לחצן החזרה לאחור ב-TextField, הבחירה נמחקת, בדומה להתנהגות של EditText ב-Android. (I3ca16, b/174173645)
- מוסיפים את הכינוי של הסמן. (I07a82, b/173016579)
תיקוני באגים
- גלילה באמצעות פעולות סמנטיות ברשימות עם טעינה איטית וברכיבי גלילה רגילים כוללת עכשיו אנימציה (Id9066, b/190742024)
תרומה חיצונית
- עכשיו אפשר להשתמש ב-
LazyVerticalGrid
גם עם פרמטרים של סידור אופקי וגם עם פרמטרים של סידור אנכי. (If9c92)
גירסה 1.0
גרסה 1.0.5
3 בנובמבר 2021
androidx.compose.foundation:foundation:1.0.5
ו-androidx.compose.foundation:foundation-layout:1.0.5
משוחררים. גרסה 1.0.5 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תוקנה קריסה במעקב אחר מכונות של derivedStateOf. (aosp/1792247)
גרסה 1.0.4
13 באוקטובר 2021
androidx.compose.foundation:foundation:1.0.4
ו-androidx.compose.foundation:foundation-layout:1.0.4
משוחררים. גרסה 1.0.4 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
עדכוני יחסי תלות
- העדכון נעשה כך שיהיה תלוי ב-Kotlin
1.5.31
גרסה 1.0.3
29 בספטמבר 2021
androidx.compose.foundation:foundation:1.0.3
ו-androidx.compose.foundation:foundation-layout:1.0.3
משוחררים. גרסה 1.0.3 מכילה את ההוספות האלה.
עדכוני יחסי תלות
- העדכון נעשה כך שיהיה תלוי ב-Kotlin
1.5.30
גרסה 1.0.2
1 בספטמבר 2021
androidx.compose.foundation:foundation:1.0.2
ו-androidx.compose.foundation:foundation-layout:1.0.2
משוחררים. גרסה 1.0.2 כוללת את השמירות האלה.
עודכן כדי לתמוך במהדורה 1.0.2
של Compose. Compose 1.0.2
עדיין תואם ל-Kotlin 1.5.21
.
גרסה 1.0.1
4 באוגוסט 2021
androidx.compose.foundation:foundation:1.0.1
ו-androidx.compose.foundation:foundation-layout:1.0.1
משוחררים. גרסה 1.0.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
עדכוני יחסי תלות
- העדכון נעשה כך שיהיה תלוי ב-Kotlin
1.5.21
.
גרסה 1.0.0
28 ביולי 2021
androidx.compose.foundation:foundation:1.0.0
ו-androidx.compose.foundation:foundation-layout:1.0.0
משוחררים. גרסה 1.0.0 כוללת את ההצהרות האלה.
תכונות עיקריות בגרסה 1.0.0
זוהי הגרסה היציבה הראשונה של Compose. פרטים נוספים זמינים בבלוג הרשמי של Compose 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.foundation:foundation:1.0.0-rc02
ו-androidx.compose.foundation:foundation-layout:1.0.0-rc02
משוחררים. גרסה 1.0.0-rc02 כוללת את ההצהרות האלה.
- עדכנו את העיבוד של שוליים בצורות כלליות כדי לטפל בבעיות שקשורות לנתיבים שמוגדרים במימדים קבועים. (aosp/1748871, b/191817116)
גרסה 1.0.0-rc01
1 ביולי 2021
androidx.compose.foundation:foundation:1.0.0-rc01
ו-androidx.compose.foundation:foundation-layout:1.0.0-rc01
משוחררים. גרסה 1.0.0-rc01 כוללת את השמירות האלה.
שינויים ב-API
- התכונה Canvas תומכת עכשיו בפרמטר contentDescription לשיפור הנגישות. (Ib547c)
תיקוני באגים
- אם האפשרויות 'לחצן', 'כרטיס', 'תיבות סימון' ו-
Modifier.clickable(enabled=false)
מושבתות, הקליקים לא יועברו אל הרכיב ההורה. (Ic2c3b, b/183908811)
גרסה 1.0.0-beta09
16 ביוני 2021
androidx.compose.foundation:foundation:1.0.0-beta09
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta09
משוחררים. גרסה 1.0.0-beta09 מכילה את ההתחייבויות האלה.
שינויים ב-API
- בוצעה הסרה של
ManualFrameClock
. אם אתם צריכים לשלוט באנימציות, השתמשו ב-composeTestRule.mainClock
במקום זאת. (I3c3e8, b/189951065) - שינוי המאפיינים Role ו-LiveRegionMode של enum לכיתות מוטמעות עם קונסטרוקטור פרטי (Id1890)
- האפשרות KeyboardCapitalization מועברת לכיתה בתוך שורה. (Id5a1c)
- TextOverflow הופך לכיתה בתוך שורה. (I433af)
תיקוני באגים
- עכשיו, כשמציינים את המפתחות הייחודיים לפריטים של LazyColumn/Row, מיקום הגלילה נשמר על סמך המפתח. כלומר, אם מוסיפים או מסירים פריטים לפני הפריט הגלוי הנוכחי, הפריט עם המפתח הנתון יישאר כפריט הגלוי הראשון. (Id263f, b/184257857)
- ערכי הקבועים של המפתחות הם @ExperimentalComposeUiApi בשלב הזה. אפשר להצהיר על קבועים פרטיים בקוד שמשתמש ב-API לפני שהם מגיעים למצב יציב. (Ia5d48)
- הוספנו את IdlingStrategy ל-AndroidComposeTestRule, שאפשר להשתמש בו במסגרות בדיקה כדי להתקין מנגנון חלופי להמתנה או להשגת מצב רגיעה. לפני שמתחילים את הבדיקה, משתמשים ב-
AndroidComposeTestRule.setIdlingStrategyFactory()
כדי להתקין את האסטרטגיה שלכם. (I608fa)
נוספו כללי פרופיל
בגרסה הזו נוספו כללי פרופיל למודול ה-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.foundation:foundation:1.0.0-beta08
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta08
משוחררים. גרסה 1.0.0-beta08 כוללת את ההצהרות האלה.
שינויים ב-API
- המאפיין NestedScrollSource הוחלף בכיתה בתוך שורה. (Ie321b, b/187055290)
- שינינו את השימוש ב-enum לכיתות מוטמעות כדי למנוע בעיות עם הצהרות exhaustive when כשמוסיפים ערכים חדשים ל-enum. (I2b5eb)
- הוספת זמן קצוב לתפוגה של הקשה על רכיבים שניתן ללחוץ עליהם או להחליף את המצב שלהם, כדי למנוע הצגת תנודות במהלך גלילה או גרירה (Ia2704, b/168524931)
- המאפיינים ContentDescription ו-Text semantics הם עכשיו רשימות ולא ערכים בודדים. כך אפשר למזג אותם כפי שהם, במקום כשרשימות מחוברות. בנוסף, הוספנו ממשקי API טובים יותר לבדיקה כדי לנצל את השינויים האלה (Ica6bf, b/184825850)
- האפשרות
Modifier.focusModifier()
הוצאה משימוש והוחלפה באפשרותModifier.focusTarget()
(I6c860) - המאפיין KeyboardType enum מוחלף בכיתה מוטמעת. (I73045, b/187055290)
- החלפת המאפיין המסווג
FocusState
בממשקFocusState
(Iccc1a, b/187055290) - המאפיין enum של ImeAction הוחלף בכיתה מוטמעת. (I18be5, b/187055290)
- הפונקציות של
AnnotatedString.withAnnotation
הן עכשיו ExperimentalTextApi במקום ExperimentalComposeApi. (I0cd0a)- ה-constructor של TextUnit עם TextUnitType הוא עכשיו ExperimentalTextApi במקום ExperimentalComposeApi.
- הערך של PaddingValues הוא עכשיו
@Stable
במקום@Immutable
(I88c50)
תיקוני באגים
- תיקון קריסות שנגרמו כתוצאה מלחיצה ארוכה על אזור ריק בטקסט לא ריק. (I33ab5, b/187437299)
- הצגת סרגל הכלים אחרי בחירת הכול (I495d9, b/185919613)
- תיקון לקונטיינרים שניתן לגלול בהם, שמקצצים את הצאצאים שלהם בציר העובר. אפשר לשחזר את הבעיה בקלות אם יש לכם LazyRow עם פריטים מסוג Card. עכשיו הצל לא ייחתך. (Icb635, b/186318448)
- תוקנה בעיה שבה לפעמים תנודות או אינדיקציות אחרות נתקעו בקליק ארוך כשמשתמשים ב-Modifier.combinedClickable (I2298c, b/186223077)
- עכשיו
detectDragGesures
,detectVerticalGestures
ו-detectHorizontalGestures
יעבדו את שינוי המיקום באופן אוטומטי, ללא צורך לקרוא ל-change.consumePositionChange בקריאות החזרה (callbacks) של onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
השתנה כדי לדווח על הקואורדינטות של המשתנה הזה בשרשרת המשתנים, ולא על קואורדינטות הפריסה אחרי החלת כל המשתנים. המשמעות היא שהסדר של המשתנים המשתנים משפיע עכשיו על הקואורדינטות שידווחו. (Ieb67d, b/177926591)
גרסה 1.0.0-beta07
18 במאי 2021
androidx.compose.foundation:foundation:1.0.0-beta07
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta07
משוחררים. גרסה 1.0.0-beta07 מכילה את ההוספות האלה.
שינויים ב-API
- הלוגיקה של האחזור המקדים של הפריט הבא שגלוי נוספה ל-LazyColumn/Row (I8a4bc, b/184940225)
- נוספה ידית לבחירת קליפים (Iff80d, b/183408447)
תיקוני באגים
- LazyColumn/Row יישאר פעיל (לא יוסר) עד 2 פריטים שגלויים בעבר, גם אם כבר גוללו החוצה. כך הרכיב יכול לעשות שימוש חוזר ברכיבי המשנה הפעילים כשנצטרך ליצור פריט חדש, וכך לשפר את ביצועי הגלילה. (Ie5555)
- מסירים את paintBackground. (I38660)
- ציור הרקע של הבחירה באמצעות DrawScope. (I73c61, b/186674472)
- תוקנה רגרסיה בגרסת beta06 שמשפיעה על Row/Column באמצעות סידורים של spacedBy לפריסה של צאצאים עם משקל. (Ifaf8c, b/187326588)
גרסה 1.0.0-beta06
5 במאי 2021
androidx.compose.foundation:foundation:1.0.0-beta06
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta06
משוחררים. גרסה 1.0.0-beta06 כוללת את ההתחייבויות האלה.
שינויים ב-API
- פתרון התנגשויות עם תנועת ניווט (I1145e)
- נוספו ממשקי API לנגישות של CollectionInfo ו-CollectionItemInfo שמאפשרים לסמן את האוסף ואת הפריטים שלו לשירותי נגישות (Id54ef, b/180479017)
- נוספה הפונקציה
SemanticsActions.ScrollToIndex
כדי לגלול ברשימה עם פריטים שנוספו לאינדקס אל הפריט עם אינדקס מסוים, והפונקציהSemanticsProperties.IndexForKey
כדי לקבל את האינדקס של פריט ברשימה עם פריטים שמקושרים למפתח. שתי הפעולות מיושמות על ידי LazyList.- נוספה הפונקציה
SemanticsNodeInteraction.performScrollToIndex
שמגלגלת רשימה לאינדקס שצוין, והפונקציהSemanticsNodeInteraction.performScrollToKey
שמגלגלת רשימה לפריט עם המפתח שצוין. (I4fe63, b/178483889, b/161584524)
- נוספה הפונקציה
- תמיכה בשמירת AnnotatedString ב-TextFieldValue.Saver. נוספו פונקציות השירות addTtsAnnotation ו-withAnnotation ל-AnnotatedString.Builder (I8cbdc, b/178446304)
- ערכי ברירת המחדל של הפרמטר
0.dp
נוספו ל-PaddingValues(horizontal, vertical)
(I05571, b/181336792)
תיקוני באגים
- ילדים של שורה ועמודה עם
weight(fill = false)
כבר לא גורמים לרכיב ההורה למלא את כל שטח הציר הראשי הזמין. (Ied94d, b/186012444, b/184355105)
גרסה 1.0.0-beta05
21 באפריל 2021
androidx.compose.foundation:foundation:1.0.0-beta05
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta05
משוחררים. גרסה 1.0.0-beta05 כוללת את ההתחייבויות האלה.
שינויים ב-API
- ממשק FlingBehavior מסומן עכשיו בתווית @Stable. כל ההטמעות צריכות לעמוד בדרישות של חוזה
@Stable
. (I93354, b/184830577)
תיקוני באגים
- תוקנו פעולות הגלילה של הנגישות
ACTION_SCROLL_FORWARD
, ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
, accessibilityActionScrollUp
,accessibilityActionScrollRight
ו-accessibilityActionScrollDown
. במקום לגלול עד סוף התוכן שניתן לגלילה, הוא יגלול עכשיו מסך אחד בכיוון הרצוי. (Ieccb0) - קובצי AndroidManifest מ-ui-test-manifest ומ-ui-tooling-data תואמים עכשיו ל-Android 12 (I6f9de, b/184718994)
גרסה 1.0.0-beta04
7 באפריל 2021
androidx.compose.foundation:foundation:1.0.0-beta04
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta04
משוחררים. גרסה 1.0.0-beta04 מכילה את ההצהרות האלה על ביצוע שינויים.
שינויים ב-API
- משנים את השם של hideSoftwareKeyboard ושל showSoftwareKeyboard ב-SoftwareKeyboardController ל-
hide()
ו-show()
, בהתאמה.- לספק את הממשק המלא של CompositionLocal ל-LocalSoftwareKeyboardController, כדי לאפשר להגדיר אותו (שימושי במיוחד בבדיקות) (I579a6)
TextOverflow.Visible
מוצג. (Ic8f89)- מכונות ציבוריות של
RowScope
,ColumnScope
,BoxScope
ו-BoxWithConstraintsScope
הוסרו. (I4e83e, b/181869067)
תיקוני באגים
- תוקנה הבעיה שבה פריטים של
LazyColumn
/LazyRow
שנמצאים בקצוות ממוקמים באופן שגוי אחרי תנועה מהירה (Ie4d13, b/183877420) לפני השינוי הזה, אפשר היה לדלג על פונקציות מקומיות שניתנות לקיפול על סמך הפרמטרים שלהן. אחרי השינוי הזה, לא יהיו דילוגים על פונקציות מקומיות שניתנות לקיפול. השינוי הזה נעשה כי מקובל ופועלים לפי ציפייה שפונקציות מקומיות יתעדו פרמטרים מההורה, והחרגה שלהם היא מקור נפוץ לבאגים.
לסיכום, הנה דוגמה:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
לפני השינוי הזה, הפונקציה הניתנת לקיבוץ
ShowCount
תמיד דלגה, גם אחרי שהפרמטרcount
עודכן. המצב הזה השתנה. (I5648a)
גרסה 1.0.0-beta03
24 במרץ 2021
androidx.compose.foundation:foundation:1.0.0-beta03
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta03
משוחררים. גרסה 1.0.0-beta03 מכילה את ההצהרות האלה.
שינויים ב-API
- האפשרות
DefaultMonotonicFrameClock
הוצאה משימוש. קריאה ל-withFrameNanos
או ל-Recomposer.runRecomposeAndApplyChanges
ללאMonotonicFrameClock
תגרום להפעלתIllegalStateException
. (I4eb0d)
תיקוני באגים
- הפונקציה
FlingBehavior.performFling()
נקראת עכשיו גם כשהמהירות היא 0 (I0b6e5, b/181237123)
גרסה 1.0.0-beta02
10 במרץ 2021
androidx.compose.foundation:foundation:1.0.0-beta02
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta02
משוחררים. גרסה 1.0.0-beta02 מכילה את ההצהרות האלה.
שינויים ב-API
- נוספו כמה אופטימיזציות קטנות בלוגיקה למדידת LazyColumn (Ic6889)
- נוספה רכיב API מקומי חדש של
LocalSoftwareKeyboardController
כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I5951e, b/168778053) - נוספה רכיב API מקומי חדש של
LocalSoftwareKeyboardController
כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I84472, b/168778053)
תיקוני באגים
- אכיפה של הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
גרסה 1.0.0-beta01
24 בפברואר 2021
androidx.compose.foundation:foundation:1.0.0-beta01
ו-androidx.compose.foundation:foundation-layout:1.0.0-beta01
משוחררים. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.
זוהי הגרסה הראשונה של Compose 1.0.0 Beta.
שינויים ב-API
- הוספה של קריאה חוזרת מסוג onStart אל
detectDragGestures
(I67269, b/179995594) - המשתנים המתאימים לשינוי הגודל בהתאם למאפיינים המובנים כבר לא נחשבים לניסיוניים. (I15744)
- הוסר dp assertions (I798d2)
- הסרנו את הקריאה החוזרת (callback) של SoftwareKeyboardController מכל שדות הטקסט, והיא תוחלף בקרוב ב-API חדש. (Iae869, b/168778053)
- השם של MeasureBlocks השתנה ל-MeasurePolicy, והוא הפך לממשק מהנה. ממשקי Layout API עודכנו או פשוטו כדי להשתמש ב-MeasurePolicy. (Icab48, b/167662468, b/156751158)
- הערך
InteractionState
הוחלף ב-[Mutable]InteractionSource
- ממשקים אחראים להפעלה או לאיסוף של אירועי אינטראקציה.
- במקום להעביר את
interactionState = remember { InteractionState() }
לרכיבים כמוButton
ו-Modifier.clickable()
, משתמשים ב-interactionSource = remember { MutableInteractionSource() }
. - במקום:
Interaction.Pressed in interactionState
צריך להשתמש בפונקציות התוסף ב-InteractionSource, כמו InteractionSource.collectIsPressedAsState(). - בתרחישי שימוש מורכבים, אפשר להשתמש ב-InteractionSource.interactions כדי לצפות בזרם של האינטראקציות. מידע נוסף זמין במסמכי התיעוד ובדוגמאות של InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- הוסרו השיטות LayoutCoordinates שהוצאו משימוש. יש להשתמש בפונקציה במקום במאפיין עבור positionInParent ו-boundsInParent (I580ed, b/169874631, b/175142755)
- נוצר TextInputSession חדש לסשנים של קלט מרכיבי טקסט ברמה נמוכה, כמו CoreTextField. (I8817f, b/177662148)
- עכשיו רכיב ה-Placeable חושף את measuredSize, שמייצג את הגודל שבו הפריסה של הצאצא נמדדה בפועל. יכול להיות שהגודל הזה לא יעמוד באילוצים של המדידה. (Ib2729, b/172560206, b/172338608)
- הוספת המשתנה selectionGroup שמאפשר לסמן אוסף של כרטיסיות או לחצני בחירה למטרות נגישות (Ie5c29)
הוספת LazyListState.animateScrollToItem
השיטה הזו מאפשרת גלילה חלקה לפריט ספציפי ברשימה. (I4bfd7)
השם של ScrollableState.smoothScrollBy() השתנה ל-animateScrollBy() השם של LazyListState.snapToItemIndex() השתנה ל-scrollToItem() השם של ScrollState.smoothScrollTo() השתנה ל-animateScrollTo() (I35ded)
Modifier.zoomable הוחלף ב-Modifier.transformable. smoothPanBy ו-smoothRotationBy נוספו כפונקציונליות. (Ifc32b, b/175294473)
השדה
defaultFactory
עבורcompositionLocalOf
ו-staticCompositionLocalOf
הוא חובה עכשיו במקום אופציונלי.השינויים האלה מסירים שגיאת סוג פוטנציאלית עבור סוגים שלא מאפשרים ערך null, שבהם לא סופק מפעל ברירת מחדל. בעבר, הפונקציה הזו הייתה מספקת הפניה ל-null לסוג שאינו יכול להכיל null.
לסוגי nullable, כדאי לספק את
{ null }
כמפעל ברירת המחדל.אנחנו לא ממליצים להשתמש במשתנים מקומיים עם סוגים שלא מאפשרים ערך null, אלא אם אפשר לספק ברירת מחדל הגיונית. אם אין ברירת מחדל הגיונית, הפונקציה הלוגרית
defaultFactory
צריכה להוציא חריגה. עם זאת, השלכת חריגה תגרום לכך שלצרכנים של המשתנה המקומי תהיה תלות משתמעת בכך שהוא יסופק, ולא תהיה אכיפה של הדרישה הזו על ידי מערכת הסוגים. (Ifbd2a)הערך של
Indication#createIndication()
השתנה ל-Indication#rememberUpdatedIndication(InteractionState)
והפרמטרInteractionState
הוסר מ-IndicationInstance#drawIndication()
. ה-IndicationInstance צריך להיות אחראי רק על ציור אפקטים חזותיים, ולא על הפעלת אנימציות או כתיבת סטטוס בתגובה לשינויים ב-InteractionState. במקום זאת, האנימציות והכתיבה בסטטוס צריכות להתרחש ב-rememberUpdatedIndication()
. גם הפרמטרindication
ב-Modifier.indication
השתנה לפרמטר חובה. (Ic1764, b/152525426)פעולות בטקסט בודקות עכשיו את המיקוד באופן אוטומטי (I13777, b/179648629)
הוסר
runBlockingWithManualClock
(I15cdc, b/179664814)מיקום הגלילה ב-Modifier.verticalScroll()/horizontalScroll() מיוצג עכשיו באמצעות מספרים שלמים (I81298)
החבילות של השיטות smoothScrollBy ו-scrollBy השתנו ל-
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)השם של FlingConfig השתנה ל-FlingBehavior, והוא מאפשר עכשיו להתאים אישית את אנימציית ההשהיה במקום תנודות מותנות מראש. (I02b86, b/175294473)
השם של מגברי הגודל השתנה. השמות של Modifier.width/height/size שונו ל-requiredWidth/requiredHeight/requiredSize. השמות של Modifier.preferredWidth/Modifier.preferredHeight/Modifier.preferredSize שונו ל-width/height/size. (I5b414)
השם של defaultMinSizeConstraints השתנה ל-defaultMinSize. (I4eaae)
ה-Modifier.tapGestureFilter הוסר. במקום זאת, אתם צריכים להשתמש ב-
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)צריכה חלקית הוסרה ממערכת הקלט של הסמן. הדרך המומלצת לתיאום של צריכה חלקית היא Modifier.nestedScroll. (Ie9c9b)
ההגדרה 'כיוון' הועברה לחבילת הבסיס. VelocityTracker הועבר מ-ui.gesture אל ui.input.pointer. (Iff4a8, b/175294473)
ה-AnimationClockObservable והתת-כיתות שלו הוסרו. AnimatedFloat הוסר. (Icde52, b/177457083)
drawerState.open() ו-drawerState.close() הן עכשיו פונקציות השהיה. משתמשים ב-rememberCoroutineScope() כדי לקבל את ההיקף של הקומפוזיציה כדי לקרוא להן (I16f60, b/175294473)
השם של 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)
Modifier.scrollable עוצב מחדש. עכשיו הוא משתמש בממשק Scrollable במקום בכיתה ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable מקבל עכשיו DraggableState במקום פונקציית lambda פשוטה. אפשר ליצור מצב באמצעות
rememberDraggableState { delta -> }
כדי לקבל את אותו התנהגות כמו קודם (Ica70f, b/175294473)הוספנו את המטא-פרמטרים requiredWidth(IntrinsicSize) ו-requiredHeight(IntrinsicSize) כדי להגדיר את הגודל הנדרש לגודלים מובנים. (I0a6b4)
הממשק הוצא משימוש
emptyContent()
הוסר. במקום זאת, אתם צריכים להשתמש ב-{}
. (Idb33f, b/179432510)מחקו ממשקי API שהוצאו משימוש בעבר (Ice5da, b/178633932)
תיקוני באגים
- נוספה רכיב API מקומי חדש של LocalSoftwareKeyboardController כדי להחליף את הממשק הקודם של SoftwareKeyboardController ב-TextField. (I658b6, b/168778053)
גרסה 1.0.0-alpha12
10 בפברואר 2021
androidx.compose.foundation:foundation:1.0.0-alpha12
ו-androidx.compose.foundation:foundation-layout:1.0.0-alpha12
משוחררים. גרסה 1.0.0-alpha12 מכילה את ההוספות האלה.
שינויים ב-API
- עכשיו נדרש ל-Modifier.pointerInput לזכור מפתחות כדי לציין מתי צריך להפעיל מחדש את פונקציית ה-coroutine לזיהוי קלט של סמן עבור יחסי תלות חדשים. (I849cd)
- עדכון לבדיקה: הפונקציה hasText() תבדוק גם טקסטים של קלט וגם טקסטים של תוויות/רמזים/סמלי placeholder בשדה הטקסט (Iab803)
- נוספה PaddingValues.Absolute, וניתן להשתמש בה בממשקי API שמקבלים PaddingValues. (Ia5f30)
- השימוש ב-onImeActionPerformed הוצא משימוש. במקום זאת, צריך להשתמש ב-KeyboardActions (If0bbd, b/179071523)
- כדי להתאים את שם השיטה למוסכמות של מתן שמות ל-ImageBitmap ול-ImageVector, השם של ImagePainter השתנה ל-BitmapPainter כדי להתאים ל-VectorPainter. (Iba381, b/174565889)
- שיפור בממשקי ה-API לבדיקת מחרוזות משנה, כאשר מחרוזת המשנה משמשת עכשיו כארגומנטים (Icbe78)
- הוספנו את רכיב ההקשר של קורוטין
InfiniteAnimationPolicy
, שייושם באנימציות אינסופיות. כברירת מחדל, לא מותקנת מדיניות, אלא אם מריצים בדיקות באמצעותComposeTestRule
. (I50ec4, b/151940543) - הפונקציות Animatable.snapTo ו-Animatable.stop הן עכשיו פונקציות השהיה (If4288)
- ComponentActivity.setContent הועבר אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
- שיטות Destructuring ו-copy() הוסרו מכמה כיתות שבהן הן שימשו לעיתים רחוקות. (I26702, b/178659281)
נוספה תמיכה במפתחות מותאמים אישית ל-LazyColumn/LazyRow. כך נוכל לטפל בצורה חכמה יותר בהזמנה מחדש של פריטים. לכן המצב ששמרתם בבלוק remember {} יעבור יחד עם הפריט כשמשנים את סדר הרכיבים או מסירים את הפריט מהאמצע.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
- (Ia50ef, b/164901852)
שינינו את Indication#createInstance ל-@Composable, ושינינו את LocalIndication כך שיכיל Indication, ולא () -> Indication. (I5eeea, b/157150564)
Constraints.enforce
הוחלף ב-Constraints.constrain
. (I8b8ea)loadFontResource הוצא משימוש. צריך להשתמש ב-fontResource במקום זאת. הפונקציות imageResource, loadImageResource, vectorResource ו-loadVectorResource הוצאו משימוש. במקום זאת, צריך להשתמש ב-painterResource. (I6b809)
מסיבות ביצועים, סמנטיקה של ScrollAxisRange מקבלת עכשיו פונקציות lambda שמחזירות ערכים מסוג Float במקום ערכים ישירים מסוג Float. (If4a35, b/178657186)
נוספה סמנטיקה של EditableText כדי לסמן טקסט קלט שניתן לעריכה בשדה הטקסט לצורכי נגישות, ושיטות בדיקה תואמות כדי לבדוק את הסמנטיקה (I8e07a)
עכשיו אין תמיכה ב-Modifier.clickable בלחיצה כפולה ובלחיצה ארוכה. כדי להשיג את הפונקציונליות הזו, משתמשים ב-Modifier.combinedClickable. (Iafad1)
השם של toIntPx() שונה ל-roundToPx(). (I9b7e4, b/173502290)
השם של IntBounds השתנה ל-IntRect וה-API השתפר. (I1f6ff)
ה-API Modifier.dragGestureFilter הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-
Modifier.pointerInput { detectDragGestures (...)}
. לחלופין, אפשר להשתמש ב-Modifier.draggable כדי לגרור ציר אחד (I0ba93, b/175294473)השם של Ambients שונה כך שיתאים לשם של Ambient -> CompositionLocal rename. בעבר, השם של סביבות האווירה היה AmbientFoo, עכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)
הבחירה הועברה ל-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)
זמן ההפעלה באנימציה לא מוגבל יותר לננו-שניות (If776a)
הערה @ComposableContract הוצאה משימוש לטובת שלוש הערות ספציפיות יותר.
@ComposableContract(restartable = false)
הפך ל-@NonRestartableComposable
@ComposableContract(readonly = true)
הפך ל-@ReadOnlyComposable
@ComposableContract(preventCapture = true)
הפך ל-@DisallowComposableCalls
@ComposableContract(tracked = true)
הוסר. (I60a9d)השירותים
emptyContent()
ו-(@Composable () -> Unit).orEmpty()
הוצאו משימוש כי אין להם יותר השפעה חיובית על הביצועים או ערך מוסף (I0484d)עכשיו אפשר לסגור את הכלי ליצירת קומפוזיציות מחדש. מרכיבי קומפוזיציה סגורים ימשיכו את היצירה מחדש עד שה-coroutines של צאצאי הקומפוזיציה יסתיימו. השם של Recomposer.shutDown השתנה ל-cancel כדי להבדיל אותו מ-close. (Ib6d76)
ממשקי ה-API שקשורים ל-LazyVerticalGrid מסומנים כניסיוניים (Ia53e3, b/178519862)
השם של rememberSavedInstanceState() השתנה ל-rememberSaveable() והוא הועבר לחבילה androidx.compose.runtime.saveable. (I1366e, b/177338004)
השם של RestorableStateHolder השתנה ל-SaveableStateHolder והוא הועבר לחבילה androidx.compose.runtime.saveable. השם של השיטה הפנימית RestorableStateProvider השתנה ל-SaveableStateProvider. הסוג הגנרי הוסר, כך שאפשר פשוט להעביר Any כמפתח. אין יותר צורך בהערות ניסיוניות. (I0902e, b/174598702)
הפונקציות Saver, listSaver(), mapSaver() ו-autoSaver הועברו מ-androidx.compose.runtime.savedinstancestate אל androidx.compose.runtime.saveable (I77fe6)
שמו של הארטיפקט androidx:compose:runtime:runtime-saved-instance-state שונה ל-androidx:compose:runtime:runtime-saveable (I6dcac)
הרבה ממשקי API שהוצאו משימוש מזמן בחבילת UI נמחקים. (I2f2dc)
פריט המידע (artifact) compose:runtime-dispatch הוצא משימוש. MonotonicFrameClock נמצא עכשיו ב-compose:runtime ו-AndroidUiDispatcher נמצא ב-compose:ui. (Ib5c36)
השמות של הפרמטרים ב-RounderCornerShape, CutCornerShape ו-CornerBasedShape שונו מ-left/right ל-start/end כדי לתמוך בהשתקפות האוטומטית של הצורה בכיוון RTL. הערכים AbsoluteRounderCornerShape ו-AbsoluteCutCornerShape נוספו למקרים שבהם לא רוצים שיבוצע שיקוף אוטומטי. (I61040, b/152756983)
האפשרות canDrag הוסרה מ-Modifier.scrollable. (Id66e7, b/175294473)
ה-API שאליו פונה הפלאגין של המהדר של Compose עבר שינוי מבני כך שישתמש בממשק במקום בכיתה ספציפית. בנוסף, הממשק לא משתמש יותר בפרמטר מסוג.
זהו שינוי פנימי שאמור לא להשפיע על התאימות של קוד המקור, אבל הוא שינוי שגורם לשבירה של קובץ הבינארי. (I3b922, b/169406779)
ה-Modifier.scaleGestureFilter הוסר. במקום זאת, צריך להשתמש ב-Modifier.zoomable. לחלופין, אפשר להשתמש ב-
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)הוצאנו משימוש את AnimatedValue/Float. במקום זאת, צריך להשתמש ב-Animatable. (I71345, b/177457083)
- CoreText ו-CoreTextField הוסרו מ-API הציבורי
- הוסרה עומס יתר של SelectionContainer שהוצא משימוש (I99c19)
הסרה של פונקציות גלילה ללא השהיה שהוצאו משימוש בהמשך לשינויים מהגרסה הקודמת, פונקציות הגלילה ללא השהיה הוסרו לגמרי. צריך להמיר את הפונקציות להשהיה עם אותם שמות. אפשר לקבל היקף של שגרת המשך באמצעות rememberCoroutineScope(). (I3d39c, b/178169563)
הוצאנו משימוש את androidx.compose.foundation.layout.ConstraintLayout והחלפנו אותו ב-androidx.constraintlayout.compose.ConstraintLayout. צריך להוסיף תלות ב-
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)ה-API tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter ו-pressIndicaitonGestureFilter הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.clickable או ב-Modifier.pointerInput עם הפונקציה detectTapGestures. (I6baf9, b/175294473)
בוצעה הסרה של
Recomposer.current()
. [Abstract]ComposeView עכשיו מוגדר כברירת מחדל ל-Recomposers ברמת החלון שנוצרים באופן עצלני ומנוהלים על ידי ViewTreeLifecycleOwner של החלון. הטיקים של האנימציה המבוססת על Recomposition ו-withFrameNanos מושהים בזמן שה-Lifecycle של המארח מושהה. (I38e11)Recomposer.runningRecomposers מציע עכשיו StateFlow גלובלי של RecomposerInfo לקריאה בלבד, כדי לעקוב אחרי מצב ההרכבה המתמשך בתהליך. מומלץ להשתמש ב-API הזה במקום ב-Recomposer.current(), שעבר עכשיו לשימוש מוגבל. (If8ebe)
גרסה 1.0.0-alpha11
28 בינואר 2021
androidx.compose.foundation:foundation:1.0.0-alpha11
ו-androidx.compose.foundation:foundation-layout:1.0.0-alpha11
משוחררים. גרסה 1.0.0-alpha11 מכילה את ההצהרות האלה.
שינויים ב-API
הוצאה משימוש של scrollBy ללא השהיה, הסרה של scrollTo ללא השהיה
עכשיו מומלץ להשתמש בפונקציות השהיה כדי לשלוט בגלילה ולהמתין לסיום הגלילה. כחלק מהמעבר, אנחנו מוציאים משימוש או מסירים את הגרסאות ללא השהיה של הפונקציות האלה. (Ie9ced)
הוצאה משימוש של smoothScrollBy ללא השהיה אנחנו ממליצים עכשיו להשתמש בפונקציות השהיה כדי לשלוט בגלילה ולהמתין עד שהגלילה תסתיים. כחלק מהמעבר הזה, אנחנו מוציאים משימוש את הגרסאות ללא השהיה של הפונקציות האלה. (I12880)
הפרמטר 'תיאור התוכן' נוסף לתמונה ולסמל. הוא משמש לספק תיאור לשירותי הנגישות (I2ac4c)
ל-BasicTextField נוספה פרמטר חדש בשם 'decorationBox'. הוא מאפשר להוסיף קישוטים כמו סמלים, תוספי placeholder, תוויות ופריטים דומים לשדה הטקסט, ולהגדיל את אזור היעד להיטים שלו. (I16996)
הפרמטר canDrag הוסר מ-Modifier.draggable (Ic4bec, b/175294473)
הוסרה הפונקציה AnimatedFloat.fling שמקבלת FlingConfig. במקום זאת, צריך להשתמש ב-suspend Animatable.animateDecay. (I4659b, b/177457083)
הוסר
data class
מהכיתות הבאות:- InlineTextContent
- LocaleList
- (I605c7)
אפשר ליצור עכשיו רכיבים שניתנים ללחיצה, להפעלה/השבתה ולבחירה מחוץ ליצירה (I0a130, b/172938345, b/175294473)
הרכיבים 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)ה-AbsoluteArrangement שהוצא משימוש הוסר. (Iffa96, b/177641870)
הפרמטר propagateMinConstraints נוסף ל-Box כדי לציין אם יש להעביר את אילוצי המינימום הנכנסים לתוכן של Box או לא. ברירת המחדל היא FALSE. (I0125b, b/152613457)
תיקוני באגים
- הפונקציות onCommit, onDispose ו-onActive הוצאו משימוש לטובת ממשקי ה-API SideEffect ו-DisposableEffect (If760e)
- הרכיב WithConstraints עוצב מחדש כ-BoxWithConstraints והועבר ל-foundation.layout. (I9420b, b/173387208)
שינויים בפונקציות המקוריות של Font/FontFamily/Typeface
- נוספו פונקציות ברירת מחדל שמתחילות באות רישית
- פונקציות קודמות של מפעל עם אותיות קטנות בתחילת השם
- פונקציות המפעל החדשות מחזירות את 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)
עכשיו אפשר להגדיר את הצפיפות ברמת המכשיר המקבל בממשקי Arrangement. (I18aad)
ה-TextFieldValue מקבל AnnotatedString. עם זאת, זהו שינוי ב-API בלבד ועריכת טקסט במספר סגנונות עדיין לא הופעלה.
- הפרמטר
initial
הוסר מהפרמטרים של ה-constructor של EditingBuffer. (I326d5)
- הפרמטר
הפונקציות invalidate ו-compositionReference() הוצאו משימוש, והן הוחלפו בפונקציות currentRecomposeScope ו-rememberCompositionReference, בהתאמה. (I583a8)
השינוי ב-AnnotatedString הוא הרחבה של kotlin.CharSequence. לכן, הפונקציות length ו-subSequence הן עכשיו פונקציות של מופעים, ופונקציות ההרחבה הוסרו. (Iaf429)
משך הזמן וזמן הפעולה התקינה יוחלפו ב-Long milliseconds, והשלב הזה מסיר את התלות של קלט הסמן בקטגוריות האלה. (Ia33b2, b/175142755, b/177420019)
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)שינוי השם של TransformedText.transformedText ל-TransformedText.text
- TransformedText כבר לא מוגדר כסוג נתונים (Ie672a)
הכיתות הבאות כבר לא הן כיתות נתונים:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
הוסר השימוש בשיטות הניסיוניות monotonicFrameAnimationClockOf (Ib753f, b/170708374)
הוצאנו משימוש שיטות של קואורדינטות גלובליות והוספנו שיטות חדשות של קואורדינטות שמבוססות על חלון. (Iee284)
צריך להשתמש ב-ImeAction.None במקום ב-ImeAction.NoAction
- יש להשתמש ב-ImeAction.Default במקום ב-ImeAction.Unspecified (Ie1bcc)
FocusRequester.createRefs מסומן עכשיו כניסיוני כי הוא עשוי להשתנות. (I2d898, b/177000821)
השם של SemanticsPropertyReceiver.hidden השתנה ל-invisibleToUser והוא סומן בתווית @ExperimentalComposeUiApi. השם של AccessibilityRangeInfo השתנה ל-ProgressBarRangeInfo. השם של stateDescriptionRange השתנה ל-progressBarRangeInfo. השם של AccessibilityScrollState השתנה ל-ScrollAxisRange. השם של horizontalAccessibilityScrollState השתנה ל-horizontalScrollAxisRange. השם של verticalAccessibilityScrollState השתנה ל-verticalScrollAxisRange. (Id3148)
שינוי VisualTransformation לממשק פונקציונלי (I3bba4)
שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)
הסרנו את PointerInputData ושינינו את PointerInputChange כדי לתת לו את כל השדות של PointerInputData. הפכנו את PointerInputEvent ו-PointerInputEventData לרכיבים פנימיים כי הם לא משמשים באף ממשק API ציבורי. (Ifff97, b/175142755)
שינוי השם של TextInputService.onStateUpdated ל-updateState (Id4853)
מסירים את displaySize כי אסור להשתמש בו. בדרך כלל עדיף להשתמש בגודל של onRoot() או לפחות בגודל החלון. (I62db4)
גרסה 1.0.0-alpha10
13 בינואר 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
ו-androidx.compose.foundation:foundation-layout:1.0.0-alpha10
משוחררים. גרסה 1.0.0-alpha10 מכילה את ההצהרות האלה.
שינויים ב-API
- ImeOptions ו-KeyboardOptions כבר לא סוג נתונים (I3c898, b/168684531)
- שינויים ב-VisualTransformation API
- השם של OffsetMap השתנה ל-OffsetMapping
- השם של OffsetMapping.identityOffsetMap השתנה ל-OffsetMapping.Identity
- PasswordTransformation כבר לא שייך ל-data-class
- העברת OffsetMapping לקובץ משלו
- (I0bdf3)
- שינויים ב-EditOperations API
- שינוי השם של EditOperation ל-EditCommand
- הוספת סיומת פקודות להטמעות ספציפיות של EditOperation
- EditCommand כבר לא הן כיתות נתונים
- שינוי השם של הפונקציה EditOperation.process ל-applyTo
- שינוי השם של InputEventListener ל-InputEventCallback
- (I0a366)
- שינוי המהירות כך שתכלול רכיבים ופעולות מתמטיות. (Ib0447)
- שינינו את השם של @ExperimentalTesting ל-@ExperimentalTestApi כדי לשמור על עקביות עם הערות דומות לממשקי API ניסיוניים (Ia4502, b/171464963)
- נוספה שיטה ניסיונית של stickyHeader ל-LazyColumn/LazyRow (I0a81d)
- שינינו את השם של Color.useOrElse() ל-Color.takeOrElse() (Ifdcf5)
- הוצא משימוש TestUiDispatcher. במקום זאת, צריך להשתמש ב-Dispatchers.Main (Ic171f, b/175385255)
- הוספת מתג ל-Strings.kt ב-foundation (I4a5b7, b/172366489)
- הועבר nativeClass למודול UI והוגדר כפנימי. עדכנו את השימוש ב-nativeClass בהטמעות של equals, והחליפו אותו ב-'is MyClass'. (I4f734)
- ה-FlowRow וה-FlowColumn הוצאו משימוש. במקום זאת, יש להשתמש בפריסה מותאמת אישית. (I09027)
- Modifier.focus() ו-Modifier.focusRequester() הוצאו משימוש. במקום זאת, צריך להשתמש ב-Modifier.focusModifier() וב-Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- הוספנו את SelectionRegistrar.notifySelectableChange כדי לעדכן את SelectionManager על עדכונים של Selectable. (I6ff30, b/173215242)
fun Dp.isFinite()
השתנה ל-val Dp.isFinite
(I50e00)- השם של Constraints#satisfiedBy השתנה ל-isSatisfiedBy. (I9cf5c)
- נוספו הפונקציות isSpecified, isUnspecified ו-useOrElse לכיתות בקוד שמוצג בשורה אחת עם קבוע Unspecified. (I93f7b, b/174310811)
תיקוני באגים
- ממשק API חדש מבוסס-קורוטינה
Animatable
שמבטיח שהאנימציות יהיו בלעדיות זו לזו. DecayAnimationSpec חדש לתמיכה באנימציית דהייה בממדים מרובים (I820f2, b/168014930) - נוספה תמיכה בשדות טקסט מושבתים ובשדות טקסט לקריאה בלבד (I35279, b/171040474, b/166478534)
animate()
הוחלף עכשיו ב-animateAsState()
, שמחזירState<T>
במקוםT
. כך אפשר לשפר את הביצועים, כי היקף ביטול התוקף יכול להצטמצם למקום שבו נקרא ערך המצב. (Ib179e)- מוסיפים את Semantics role API ומוסיפים את Role כפרמטר ל-SemanticsModifier שניתן ללחוץ עליו, לבחור בו ולהפעיל או להשבית אותו. שינינו את Modifier.progressSemantics כדי שגם Slider יוכל להשתמש בו. (I216cd)
- עכשיו אפשר לגשת ל-keyEvent המקורי דרך keyEvent.nativeKeyEvent (I87c57, b/173086397)
גרסה 1.0.0-alpha09
16 בדצמבר 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
ו-androidx.compose.foundation:foundation-layout:1.0.0-alpha09
משוחררים. גרסה 1.0.0-alpha09 מכילה את ההוספות האלה.
שינויים ב-API
הוספת ממשק לגלילה
כך אפשר להתייחס ל-ScrollState ול-LazyListState כאל סוג משותף, וכך אפשר להטמיע גלילה בהתאמה אישית בשני הסוגים.
הפעולה הזו גם מעבירה את smoothScrollBy לפונקציית תוסף ב-Scrollable, שמאפשרת לנצל את הפונקציונליות הזו. (I2153b)
הקוד LazyVerticalGrid נוסף. (I17267, b/162213211)
הוצאה משימוש של LazyColumnFor, LazyRowFor, LazyColumnForIndexed ו-LazyRowForIndexed. במקום זאת, צריך להשתמש ב-LazyColumn וב-LazyRow (I5b48c)
בממשקי ה-API להשהיית קלט של סמן, שינינו את השם של HandlePointerInputScope ל-AwaitPointerEventScope ואת handlePointerInput() ל-awaitPointerEventScope(). (Idf0a1, b/175142755)
נוספה LazyListState.layoutInfo, שמציגה את רשימת הגדלים וההיסטים של הפריטים שגלויים כרגע (If8678, b/170472532)
הוסר ההערה ExperimentalPointerInput (Ia7a24)
הוספנו תמיכה ב-InteractionState בשדות טקסט. (I61d91)
הוספת הפרמטר reverseLayout ל-LazyColumn/Row. כשהערך הוא
true
, הפריטים יתוכננו מלמטה למעלה, והערךLazyListState.firstVisibleItemIndex == 0
יעיד שהפריט הראשון נמצא בתחתית. (I552ae, b/166589935)הפרמטר verticalArrangement נוסף ל-LazyColumn. הפרמטר horizontalArrangement נוסף ל-LazyRow. בעזרת האפשרות 'סידור' אנחנו יכולים להוסיף רווח בין הפריטים ולציין את הסידור שלהם כשאין מספיק פריטים כדי למלא את כל המידה המינימלית. (Icf79a, b/170394300)
ב-detectMultitouchGestures נעשה עכשיו שימוש בקריאה חוזרת אחת עם פרמטרים משולבים של מרכז כובד, תנועת פאן, שינוי מרחק התצוגה ותנועת סיבוב. (Ie6e1c)
הועבר ContentDrawScope למודול ui-graphics כדי שיהיה לצד DrawScope. (Iee043, b/173832789)
תיקוני באגים
- פונקציות 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)
Modifier.focusObserver הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.onFocusChanged או ב-Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Autofill API הוא עכשיו ממשק API ניסיוני, ונדרש הסכמה מפורשת לשימוש בו (I0a1ec)
הוספת הצהרות לפירוק מבנה כדי ליצור מכונות של FocusRequester (I35d84, b/174817008)
השם של accessibilityLabel השתנה ל-contentDescription. השם של accessibilityValue השתנה ל-stateDescription. (I250f2)
הוספנו כמה פונקציות חדשות ל-SelectionRegistrar ושינינו את השם של onPositionChange ל-notifyPositionChange. (Ifbaf7)
AndroidOwner הפך את הבעיה לבעיה פנימית (Ibcad0, b/170296980)
פונקציה חדשה מסוג infiniteRepeatable ליצירת InfiniteRepeatableSpec (I668e5)
ממשק
Applier
השתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.השם של השיטה
insert()
השתנה ל-insertTopDown()
.נוספה שיטה חדשה,
insertBottomUp()
.הכלי להטמעה יכול להוסיף צמתים לעץ שהוא עורך באמצעות
insertTopDown()
אוinsertBottomUp()
, בהתאם למה שמניב ביצועים טובים יותר.בחלק מהעצים, כמו
LayoutNode
ו-View
, יעיל יותר לבנות מלמטה למעלה מאשר מלמעלה למטה. לפני השינוי הזה, היה צורך בסטאק של תוספים כדי להטמיע מלמטה למעלה, וצריכים היה להעתיק אותו לכל מחבר (applier) שדרושה לו בנייה מלמטה למעלה לשיפור הביצועים. בעקבות השינוי הזה,Applier
מבטל אתinsertBottomUp()
כדי ליצור עץ מלמטה למעלה, ו-insertTopDown()
כדי ליצור את העץ מלמעלה למטה. (Icbdc2)הוספנו את painterResource API כדי לטפל בחיבור אובייקטים של Painter מפורמטים של נכסים רסטריים (כמו קובצי PNG) או מ-VectorDrawables. הצרכנים כבר לא צריכים לקבוע מראש את סוג הנכס, והם יכולים להפעיל את השיטה הזו כדי לקבל אובייקט Painter לשימוש ב-Image composables או במודיפיקציות של Painter. (I2c703, b/173818471)
נוספה פונקציית המפעל buildAnnotatedString כדי ליצור AnnotatedString. פונקציית ה-builder של annotatedString הוצאה משימוש. (Idfe0b)
גרסה 1.0.0-alpha08
2 בדצמבר 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
ו-androidx.compose.foundation:foundation-layout:1.0.0-alpha08
משוחררים. גרסה 1.0.0-alpha08 מכילה את ההצהרות האלה.
שינויים ב-API
- הפרמטר
maxLines
הוסר מה-CoreTextField
. אם רוצים להגביל את הגובה של שדה הטקסט לפי מספר השורות, צריך להשתמש במקום זאת ב-BasicTextField
. (Iec002) - שינינו את השיטות של
await*TouchSlop()
כך שלא יזהו את הסמן למטה, ושמנו להן את השם*OrCancellation
. בנוסף, אין צורך בפרמטרorientationLock
. (Ie96e1) - הוספנו בדיקת איתור שגיאות בקוד לשמות ולמיקום של פרמטרים של lambda שניתנים ליצירה, כדי לבדוק את העקביות עם ההנחיות של Compose.
בנוסף, העברנו חלק מממשקי ה-API שמשתמשים ב-
children
בתור השם של פונקציית ה-lambda שבסוף ל-content
, בהתאם לבדיקת האיתור של שגיאות בקוד ולהנחיות. (Iec48e) - ממשקי ה-API של
foundation:foundation-text
הועברו אלfoundation:foundation
. מבנה החבילה נשאר ללא שינוי (Id3eb2) - גלאי תנועות חדש עם תמיכה במגע רב-משתמש, כולל כלי עזר לזיהוי סיבוב, שינוי מרחק התצוגה ותנועת פנורמה. (Ic459d)
- גלאי תנועות גרירה חדש להשעיית API של קלט סמן, כולל נעילת כיוון. (Icef25)
- שינינו את השם של VectorAsset ל-ImageVector, והעברנו את VectorAsset ושינינו את השם שלו ל-Builder כדי שיהיה כיתה פנימית של ImageVector, בהתאם להנחיות של מועצת ה-API. הוספנו סוג חלופי של VectorAssetBuilder כדי לקשר ל-ImageVector.Builder לצורך תאימות. (Icfdc8)
- השם של ImageAsset והשיטות הקשורות השתנה ל-ImageBitmap. (Ia2d99)
- העברת מאפייני סמנטיקה בסיסיים ל-UI (I6f05c)
הוספת ממשקי API לגלילה שמבוססים על קורוטינים:
נוספו LazyListState.snapToItem ו-LazyListState.smoothScrollBy, וכן ממשקי API ברמה נמוכה יותר לצורך בקרת גלילה. ממשקי ה-API האלה מספקים ממשק השהיה לצורך בקרה על גלילה, שממתין עד שהגלילה מסתיימת לפני שהוא חוזר. (Ie5642)
נוספה פרמטר singeLine ל-BasicTextField, ל-TextField ול-OutlinedTextField. מגדירים את הפרמטר הזה כ-true כדי שהשדה יכיל שורה אחת שניתן לגלול בה אופקית. (I57004, b/168187755)
הוספנו גלאי תנועות להקשה, להקשה כפולה, ללחיצה ארוכה ולחיוויית לחיצה באמצעות הקלט החדש של סמן ההשהיה. הוספנו גם כמה כלי עזר, כדי להקל על המפתחים לכתוב גלאי תנועות משלהם. (I00807)
צריך להוסיף את Modifier.focusable ב-Foundation. אפשר להשתמש ב-focusable כדי להוסיף לרכיב התנהגות שניתן להתמקד בה, עם סמנטיקה ונגישות נכונות. (I41eb9, b/152525426, b/162865824)
ממשקי API שהוצאו משימוש בעבר הוסרו: Border הוצא משימוש, במקום זאת צריך להשתמש ב-BorderStroke. ה-Modifier.drawBorder הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.border. Modifier.gravity הוסרה. במקום זאת, צריך להשתמש ב-Modifier.align. Stack הוסר, יש להשתמש ב-Box במקום זאת (I32c2b, b/172470874)
השם של AbsoluteArrangement השתנה ל-Arrangement.Absolute. (If26f2)
תיקוני באגים
- העברנו את ממשקי ה-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)
<T>
הוסר מהצהרת SubcomposeLayout. עכשיו אפשר להשתמש בו בלי לציין סוג. (Ib60c8)- השדות 'זמן פעולה תקינה' ו'מיקום' של PointerInputData לא יכולים להיות ריקים. (Id468a)
- עכשיו MaterialTheme מגדיר את הצבעים הנכונים לידני הבחירה ולרקע הבחירה. אפליקציות שאינן ב-Material Design יכולות להשתמש באופן ידני ב-AmbientTextSelectionColors כדי להתאים אישית את הצבעים שבהם נעשה שימוש לבחירה. (I1e6f4, b/139320372, b/139320907)
- שם הפרמטר של Box שונה ל-contentAlignment. (I2c957)
- השם של המשתנים offsetPx השתנה ל-offset. עכשיו הם מקבלים פרמטרים של lambda במקום State. (Ic3021, b/173594846)
- נוספה הפונקציה WindowManager.isWindowFocused כדי לבדוק אם חלון המארח נמצא במוקד, ונוסף WindowFocusObserver שמספק קריאה חוזרת (callback) של onWindowFocusChanged. (I53b2a, b/170932874)
- הוספנו את הפרמטר resetInput ל-TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- עדכון של TextFieldValue API
- הפכנו את TextFieldValue.composition לקריאה בלבד
- הוסר חריג שהופעל בגלל טווח בחירה לא תקין (I4a675, b/172239032)
- הוצאנו משימוש את הסביבות של Ambients עם הסיומת
Ambient
והחלפנו אותן בנכסים חדשים עם התחילית Ambient, בהתאם להנחיות אחרות לגבי Ambients ו-Compose API. (I33440) - נוספה חבילה של Android Typeface. אפשר לטעון גופן Android באמצעות הפונקציה
typeface
, למשלtypeface(Typeface.DEFAULT)
. השם שלtypefaceFromFontFamily()
השתנה גם ל-typeface()
(I52ab7) - נוספה בדיקת איתור שגיאות בקוד כדי לבדוק שמפעלי מודיפיקטור משתמשים ב-
androidx.compose.ui.composed {}
באופן פנימי, במקום להיות מסומנים כ-@Composable
. (I3c4bc) - הוספנו בדיקת איתור שגיאות בקוד כדי לבדוק שפונקציות של מפעל Modifier מוגדרות כתוספים ל-Modifier, כדי שאפשר יהיה לשרשר אותן יחד בצורה חלקה. (I07981)
- שם הארגומנט הסמנטי mergeAllDescendants שונה ל-mergeDescendants. (Ib6250)
- שליטה בזמן בבדיקות (TestAnimationClock והשימושים שלו) היא עכשיו ניסיונית (I6ef86, b/171378521)
- הסרת המודול הישן של בדיקת ממשק המשתמש והסטאבים שלו (I3a7cb)
- השם של TextUnit.Inherit השתנה ל-TextUnit.Unspecified בהתאם ליחידות אחרות. (Ifce19)
- ממשק ההתאמה עודכן והפך לפונקציונלי. (I46a07, b/172311734)
- המודול
foundation:foundation-text
מוזג ל-foundation:foundation
(Idac0f) - הוצאה משימוש של place(Offset) ו-placeRelative(Offset). במקום זאת, משתמשים בהעמסת יתר עם אופסים של int (I4c5e7)
- השם של
id
שונה ל-layoutId
עבורLayoutIdParentData
. השם שלMeasurable.id
שונה לשםMeasurable.layoutId
. (Iadbcb, b/172449643)
גרסה 1.0.0-alpha07
11 בנובמבר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha07
משוחררות. גרסה 1.0.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- בדומה ל-
Modifier.fillMaxSize[Width|Height]
, עכשיו יש תמיכה ב-Modifier.fillParentMaxSize[Width|Height]
בתחום שלLazyColumn/Row
(I797e2, b/166586426) - הוסר
KeyboardOptions.toImeOptions
מה-API הציבורי. (Ic2e45) - הנכסים הבסיסיים AmbientTextStyle, ProvideTextStyle ו-AmbientContentColor הוצאו משימוש. במקום זאת, השתמשו בגרסאות החדשות שזמינות בספריית Material. באפליקציות שאינן של Material, במקום זאת צריך ליצור סביבות נושא ספציפיות למערכת העיצוב שלכם, שאפשר להשתמש בהן ברכיבים שלכם. (I74acc, b/172067770)
- ה-foundation.Text הוצא משימוש והוחלף ב-material.Text. ל-API טקסט בסיסי ללא דעה מוצגת, שלא צורך ערכים מעיצוב, אפשר לעיין ב-androidx.compose.foundation.BasicText. (If64cb)
- הוספנו את maxLines ל-TextFields (Ib2a5b)
- עדכון של TextFields כדי לקבל KeyboardOptions (Ida7f3)
- נוספו אפשרויות מקלדת לשימוש בשדות טקסט (I9ca32)
- הוספת BasicText כ-API לטקסט ללא דעה מוקדמת לגבי עיצוב, במקביל ל-BasicTextField. (I28268)
- ההערה ExperimentalLazyDsl הוסרה. עכשיו אפשר להשתמש ב-LazyColumn/LazyRow בלי להוסיף את @OptIn (Idab7a, b/166584730)
- ה-BaseTextField הוצא משימוש. במקום זאת, צריך להשתמש ב-BasicTextField. (I896eb)
- הוספנו את BasicTextField כתחליף ל-CoreTextField ול-BaseTextField (Id4cea)
- הסרה של LazyColumnItems/LazyRowItems שהוצאו משימוש (I1d8a8)
- הוסר הרכיב המודולרי הישן לבחירת גודל לפי מדידות מובנות. (I18537, b/171811496)
- השם של relativePaddingFrom השתנה ל-paddingFrom. המאפיין paddingFromBaseline נוסף כדי להקל על ציון המרחקים בין גבולות הפריסה לבין קווים בסיסיים של טקסט. (I0440a, b/170633813)
- הפרמטר matchHeightConstraintsFirst נוסף למשתנה aspectRatio, שאפשר להשתמש בו כדי לציין את המשתנה לגודל בהתאם לאילוצים לגובה לפני שמנסים את התאמות הרוחב. (Ie7c43, b/155290593)
- ה-DpConstraints הוצא משימוש. (I87884, b/171702471)
תיקוני באגים
- הוספנו את הכיתה ScaleFactor ברמת השורה, כדי לייצג גורמי שינוי לצייר האנכי והציר האופקי בנפרד, כדי לתמוך בתרחישי שימוש עם שינוי לא אחיד של קנה המידה.
- נוספה השיטה computeScaleFactor ל-ContentScale
- הוספנו את ContentScale.FillBounds כדי לבצע שינוי קנה מידה לא אחיד כדי למתוח את גבולות המקור כך שיתפסו את היעד במלואו.
- נוספו שיטות של אופרטורים לחישוב פרמטרים של ScaleFactor עם פרמטרים של Size.
- (Ic96a6, b/172291582)
- השיטה captureToBitmap הועברה ל-captureToImage. (I86385)
- סימון CoreText בתור @InternalTextApi. במקום זאת, צריך להשתמש ב-BasicText. (I6aaeb)
- שינוי השם של KeyboardOptions ל-ImeOptions (I82f36)
- הועברו KeyboardType ו-ImeAction אל KeyboardOptions (I910ce)
- CoreTextField סומן כ-@InternalTextApi. במקום זאת, צריך להשתמש ב-BasicTextField (Ie2469)
- ההערה ExperimentalSubcomposeLayoutApi הוסרה. עכשיו אפשר להשתמש ב-SubcomposeLayout בלי להוסיף את @OptIn (I708ad)
- הצגת המודול ui-test-junit4 (Ib91f8)
- עדכנו את Icon API כך שיכלול את Color.Unspecified כצבע גוון אפשרי, שיצייר את הנכס או את הצייר שסופקו ללא ColorFilter. בעבר, ניסיונות להתעלם מהגוון באמצעות Color.Unspecified היו גורמים לגוון שקוף, וכתוצאה מכך לא היה רינדור בכלל. (I049e2, b/171624632)
- MeasureResult הועבר מ-MeasureScope. (Ibf96d, b/171184002)
- כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, b/170475424)
- androidx.ui.test הועבר ל-androidx.compose.ui.test (I9ffdb)
- FirstBaseline ו-LastBaseline הועברו לחבילה androidx.compose.ui.layout (Ied2e7)
- נוספה SelectionContainer ללא קריאה חוזרת (Ibfadb)
- מוסיפים בדיקות למיקומים של SelectionHandles ב-SelectionContainer. (Ie93db)
- נוספה אפשרות IME לתיקון אוטומטי במקלדת (I57b8d)
גרסה 1.0.0-alpha06
28 באוקטובר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha06
משוחררות. גרסה 1.0.0-alpha06 מכילה את ההוספות האלה.
שינויים ב-API
- androidx.compose.foundation.Icon הועבר ל-androidx.compose.material.Icon. אם אתם לא רוצים להשתמש בספריית Material, אתם יכולים גם להשתמש ברכיב Image או ב-Modifier.paint() עם Painter. (I9f622)
- הוספנו את interactionState ל-Modifier.scrollable, ל-ScrollableColumn ול-LazyColumnFor (I81566, b/169509805)
- הוספה של alignByBaseline ל-RowScope ושם חדש של alignWithSiblings ל-alignBy (I06503, b/170628732)
- Box הפך לפונקציה מוטמעת. (Ibce0c, b/155056091)
- הוספנו את maxLines ל-CoreTextField (Ibee58, b/143687793)
- נוספה תכונת softwrap ל-CoreTextField. (I21a4b)
תיקוני באגים
- הוצאנו משימוש את VectorPainter והחלפנו אותו ב-rememberVectorPainter כדי לציין בצורה טובה יותר שה-API הניתן ליצירה משתמש בפנים ב-'remember' כדי לשמור נתונים במהלך קומפוזיציות. (Ifda43)
- מפעילים את המעברים ב-ComposeTestRule ומסירים את האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)
- נוספה אפשרות מקלדת לשורה אחת ל-CoreTextField (I72e6d)
- שינינו את השם של Radius API ל-CornerRadius כדי לשקף טוב יותר את אופן השימוש בו ב-Compose. עדכנו את המסמכים כדי לציין שרדיאנים של פינות שליליים מוגבלים לאפס. (I130c7, b/168762961)
- הוספת היכולת לציין פרטי ביקורת במשנה מורכב (Idee08, b/163494569)
- נוספה אפשרות IME של האותיות הגדולות במקלדת (I8ac38)
- תיקון המיקום של נקודת האחיזה ב-RTL. (I6e1e0)
- שינוי שפוגע בתאימות לאחור: הוסר ערך ההחזרה מ-PointerInputFilter.onPointerEvent(...), מאחר שהערך היחיד שאפשר לשנות באירועי מצביע הוא נתוני צריכה. במקום להחזיר נתונים מ-PointerInputFilter.onPointerEvent(...), עכשיו אפשר פשוט לשנות את נתוני הצריכה של PointerEvents שהועברו. (I6acd0)
- הוספה של האפשרות 'בחירת הכול' לתפריט הבחירה (Ief02b)
גרסה 1.0.0-alpha05
14 באוקטובר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha05
משוחררות. גרסה 1.0.0-alpha05 מכילה את ההוספות האלה.
שינויים ב-API
- CoreTextField תומך עכשיו בפונקציונליות של הסמן (Id23aa)
הוצאה משימוש של ממשקי ה-API contentColor() ו-currentTextStyle(), והחלפתם ב-AmbientContentColor וב-AmbientTextStyle, בהתאמה. כדי לגשת לערך הנוכחי, משתמשים ב-
.current
במאפיין הסביבה, כמו בכל מאפיין סביבה אחר. השינוי הזה בוצע כדי לשמור על עקביות וכדי למנוע מצב שבו יש כמה דרכים להשיג את אותו הדבר. בנוסף, השמות של חלק מהמאפיינים הסביבתיים שונו כדי לתאר טוב יותר את המטרה שלהם:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
תיקוני באגים
- כחלק מהסטנדרטיזציה של ערכי סנטינל לכיתות בקוד, שינינו את השם של Color.Unset ל-Color.Unspecified כדי לשמור על עקביות עם כיתות אחרות בקוד (I97611, b/169797763)
- נוספו פעולות נגישות של העתקה/הדבקה/חיתוך (I6db4f)
- האפשרות TextOverflow.None לא מופיעה. כש-overflow הוא None, הרכיב Text לא מטפל יותר בחריגה מעבר לגבולות, והוא מדווח על הגודל בפועל שלו ל-LayoutNode. (I175c9, b/158830170)
- העדכנו את הפרמטרים של Size.Unspecified ל-Float.NaN במקום ל-Float.POSITIVE_INFINITY. עדכנו את הטמעות Painter כך שיבדקו את הערך Size.Unspecified וגם ערכים של Sizes לא סופיים. (I95a7e)
- נוספו מודול 'כתיבה בחלוקה לדפים' ושילוב של חלוקה לדפים (Ib85da)
- שינוי LazyListScope כדי לקבל ערכים nullable (I1765b)
- השם של OnPositionedModifier השתנה ל-OnGloballyPositionedModifier, והשם של onPositioned() השתנה ל-onGloballyPositioned(). (I587e8, b/169083903)
- נוספו דוגמאות ל-LazyColumn/Row (Idc16d)
- תיקון לשיטות items ו-itemsIndexed כדי לאפשר emptyList (I06647)
- הוספת שפת DSL לציון פרטי המפקח (Ic9a22)
- מעבירים את 'לחיצה ארוכה' אל 'טקסט'. (Iff2bc)
- השבתת האפשרות 'בחירה בטקסט' ודגמה. (Ie7e97)
- תמיכה בהמרה של AnnotatedString ל-SpannableString לצורכי נגישות. (Ief907)
- בוצעה הסרה של
PointerInputFilter.onPointerInput(...)
. צריך להשתמש ב-PointerInputFilter.onPointerEvent(...)
במקומו. (I6f04a)
גרסה 1.0.0-alpha04
1 באוקטובר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha04
משוחררות. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- השם של Stack השתנה ל-Box. הרכיב הקודם foundation.Box יוסר משימוש לטובת הרכיב החדש Box ב-compose.foundation.layout. ההתנהגות של Box החדש היא להציב את הצאצאים זה על גבי זה כשיש לו כמה צאצאים – בניגוד ל-Box הקודם, שההתנהגות שלו הייתה דומה לזו של Column. (I94893, b/167680279)
- הפרמטרים של עיטור התיבה הוצאו משימוש. אם רוצים להוסיף לקובייה קישוטים או שוליים, צריך להשתמש במקום זאת ב-Modifiers (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- מוסיפים את המחלקה LazyListState. כך אפשר לעקוב אחרי מיקום הגלילה של הרכיבים LazyRow ו-LazyColumn ולשלוט בו. אפשר ליצור מופעים באמצעות rememberLazyListState() ולהעביר אותם לפרמטר המצב של הרכיב. נכון לעכשיו, אפשר לראות את הפריט הראשון וההיסטים הגלויים בגרסה הראשונית הזו. (Ic7cb7, b/159307669)
- המיקום של רשימת פריטים שהוגדרה כ'לא פעילה' וההיסט של הגלילה נשמרים עכשיו ומוחזר במהלך יצירת מחדש של פעילות (Ie045f, b/166589058)
- הוספת פעולה לפי סמנטיקה של לחיצה ארוכה (I6281b, b/156468846)
- נוספה השירות MutatorMutex, שמאפשר לשמור על mutator יחיד של מצב משותף לאורך זמן ולבטל mutators מתנגשים לפי תעדוף (I3f975)
- הוספת הערה למאפיינים rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled ו-textInputServiceFactory באמצעות @VisibleForTesting, הפיכת המאפיינים ל-API פנימי והסתרת ה-kdoc שלהם (I554eb, b/168308412)
- הוסר הפרמטר inlineContent מהקלט של טקסט עם מחרוזת. לא נעשה בו שימוש כי ה-inlineContent חייב לפעול עם AnnotatedString. (Ief403)
- ממשקי ה-API המותאמים אישית של Arrangement שהוצאו משימוש הוסרו. (Ic576d, b/168297922, b/168297923)
- הפרמטר
unbounded
נוסף למשתני wrapContentSize, שמאפשרים למדוד את רכיב הפריסה עם מגבלות מקסימום אינסופיות. (I77951, b/158559319) - חסמנו ייבוא סטטי של תוכן של היקפי פריסה (למשל alignWithSiblings ב-RowScope). במקום זאת, צריך להשתמש באפשרות החלופית ברמת ההיקף המפורשת:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
תיקוני באגים
- עדכנו הרבה ממשקי 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)
- אופטימיזציות ביצועים לגלילה ב-LazyColumnFor/LazyRowFor, על ידי הימנעות מיצירה מחדש מיותרת בכל גלילה (I64f65, b/168293643, b/167972292, b/165028371)
- תוקן קריסה ב-LazyColumnFor/LazyRowFor אחרי גלילה ואז שינוי פריטים, והוטמעה גלילה אוטומטית למעלה כשהפריט שגלוי קודם הוסר, כדי שלא יוצגו יותר פערים ריקים בסוף (I220ab, b/161480164, b/167855468)
- אסור יותר להטמיע בתוך קונטיינרים שניתנים לגלילה באותו כיוון, כמו ScrollableContainer ו-LazyColumnFor. הוא אף פעם לא נתמך והוא מפר את ה-fling ואת כל העצלות של הרכבת הפריטים של LazyColumnFor (I6e101)
- עדכנו הרבה ממשקי 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)
- מוסיפים את AccessibilityScrollState למאפייני הסמנטיקה. (Ifeda9)
- כדי למנוע יצירת אובייקט, צריך להגדיר את TextRange בשורה. (Id034b)
- הרכיב ParagraphConstraints הוסר. עכשיו הרוחב מועבר ישירות ל-Paragraph. (Ica712)
גרסה 1.0.0-alpha03
16 בספטמבר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha03
משוחררות. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.
שינויים ב-API
- השם של InnerPadding שונה ל-PaddingValues. (I195f1, b/167389171)
- השמות של השימושים ב-gravity שונו באופן עקבי ל-align או ל-alignment בממשקי ה-API של הפריסה. (I2421a, b/164077038)
- נוספו ל-Stack פרמטרים של יישור, שמאפשרים לציין את יישור ברירת המחדל לכל הצאצאים של Stack. (Ie80ca, b/164085265)
תיקוני באגים
- DpConstraints וממשקי ה-API שמשתמשים בהם הוצאו משימוש. (I90cdb, b/167389835)
- השם של הפרמטרים
minWidth
ו-maxWidth
שלwidthIn
השתנה ל-min
ול-max
. באופן דומה, עבורpreferredWidthIn
,heightIn
,preferredHeightIn
. (I0e5e1, b/167389544) - הוספנו את onNode ושיטות גלובליות אחרות ל-ComposeTestRule, כי השיטות הגלובליות הנוכחיות יוצאו משימוש. (Ieae36)
- חישובים קבועים של מיקום וגודל ב-GestureScope, שגרמו בין היתר ליצירה של תנועות החלקה לא חוקיות (Iaf358, b/166589947)
createAndroidComposeRule
ו-AndroidInputDispatcher
הועברו מ-androidx.ui.test.android
ל-androidx.ui.test
(Idef08, b/164060572)
גרסה 1.0.0-alpha02
2 בספטמבר 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha02
משוחררות. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.
תיקוני באגים
- TestUiDispatcher מסומן כניסיוני (Iae99d, b/161247083)
נוספו הפונקציות
ManualFrameClock.hasAwaiters
כדי לבדוק אם יש משהו שממתין לפריים מהשעון הזה,runWithManualClock
כתחליף ל-runBlocking
כשמריצים בדיקות שצריכות ManualFrameClock, ו-TestUiDispatcher.Main
שמספקת גישה קלה למפזר הראשי של ממשק המשתמש בבדיקות.לדוגמה:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
(I0a85b, b/161247083)
גרסה 1.0.0-alpha01
26 באוגוסט 2020
התכונות androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
וגם androidx.compose.foundation:foundation-text:1.0.0-alpha01
משוחררות. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.
גרסה 0.1.0-dev
גרסה 0.1.0-dev17
19 באוגוסט 2020
התכונות androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
וגם androidx.compose.foundation:foundation-text:0.1.0-dev17
משוחררות. גרסה 0.1.0-dev17 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- הוספה של הפריסת spacedBy עבור שורה ועמודה, כדי לאפשר מיקום של רכיבי פריסה צאצאים עם רווח קבוע. הוספנו גם את האפשרות 'סידור ביישור', כדי לאפשר מיקום של רכיבי פריסה צאצאים זה לצד זה, ויישור שלהם בשורה או בעמודה בהתאם לאפשרות היישור. השיטות הקודמות Arrangement.Vertical#arrange ו-Arrangement.Horizontal#arrange הוצאו משימוש, ובעתיד לא תהיה תמיכה בכתיבת עיצובים מותאמים אישית. (I6733d, b/161985975)
- ההיסט הפך לכיתה בתוך שורה (Iaec70)
- הוסרו קריאות חזרה מסוג onFocusChanged מ-TextField. במקום זאת, צריך להשתמש ב-Modifier.focusObserver. (I51089, b/161297615)
- ה-Modifier.drawBorder הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.border. מחלקת הנתונים של גבול הוחלפה ב-BorderStroke (I4257d, b/158160576)
- הרכיבים VerticalScroller ו-HorizontalScroller הוסרו. במקום זאת, צריך להשתמש ב-ScrollableColumn/Row. ה-Modifier.drawBackground הוסר. שימוש ב-Modifier.background (I73b0d, b/163019183)
- הסרת המשתנים fillMax* שסומנו כמיושנים מ-LazyItemScope, כי הם מקשים על הוספה נכונה של משתנים כאלה לפריטים שאינם צאצאים ישירים של LazyColumnFor (Ifa78d)
- הוספה של הטמעה של LazyColumn/LazyRow כ-DSL (I93cc6)
- Constraints הוא עכשיו סוג בקוד (inline) (I88736)
- הוספנו את היכולת לקבוע את הגודל של פריסה לפי חלק מהמרחב הזמין, באמצעות המשתנים fillMaxWidth, fillMaxHeight ו-fillMaxSize. (I945bb, b/161562591)
תיקוני באגים
- נוספה פרמטר של שינוי ל-SelectionContainer (I4aada, b/161487952)
- נוספה פונקציית lambda של mergePolicy ל-SemanticsPropertyKey. אפשר להשתמש בזה כדי להגדיר מדיניות מותאמת אישית למיזוג של סמנטיקה של mergeAllDescendants. מדיניות ברירת המחדל היא להשתמש בערך ההורה אם הוא כבר קיים, אחרת בערך הצאצא. (Iaf6c4, b/161979921)
- השם של
PlacementScope.placeAbsolute()
שונה ל-PlacementScope.place()
, והשם הקודם שלPlacementScope.place()
שונה ל-PlacementScope.placeRelative()
. כתוצאה מכך, השיטהPlacementScope.place()
לא תשקף יותר באופן אוטומטי את המיקום בהקשרים מימין לשמאל. אם רוצים לעשות זאת, צריך להשתמש במקום זאת ב-PlacementScope.placeRelative()
. (I873ac, b/162916675) - הרכיב FilledTextField הוצא משימוש. במקום זאת, צריך להשתמש ב-TextField כדי לקבל את ההטמעה של שדה הטקסט המלא ב-Material Design. (I5e889)
- הוספנו את הפרמטר backgroundColor ל-LinearProgressIndicator והסרנו את המילוי הפנימי מ-CircularProgressIndicator. נוספה פונקציית ProgressIndicatorConstants.DefaultProgressAnimationSpec חדשה שאפשר להשתמש בה כברירת המחדל של AnimationSpec כשמפעילים אנימציה של התקדמות בין ערכים (If38b5, b/161809914, b/161804677)
- ה-composable של
state { ... }
הוצא משימוש, ועכשיו מומלץ להשתמש בקריאות מפורשות ל-remember { mutableStateOf(...) }
כדי לשפר את הבהירות. כך מקטינים את שטח ה-API הכולל ואת מספר המושגים לניהול המצב, והשיטה תואמת לדפוסby mutableStateOf()
להענקת גישה לנכסי הכיתה. (Ia5727) - שינינו את השם של RRect ל-RoundRect כדי להתאים יותר לדפוסי השמות של compose. יצרנו קונסטרוקטורים של פונקציות דומים ל-RRect, וביטולנו את השימוש בקונסטרוקטורים של פונקציות RRect (I5d325)
- הוסר onChildPositioned ו-OnChildPositionedModifier. במקום זאת, המפתחים צריכים להשתמש ב-onPositioned וב-OnPositionedModifier בפריסה של הצאצא. (I4522e, b/162109766)
- IntSize היא עכשיו כיתה מוטמעת (I2bf42)
- לוחצים לחיצה ארוכה על האזור הריק כדי לערוך אותו. (Ib1e5b)
- הסתרת סרגל הכלים הצף אחרי הקשה על הטקסט. (If4525)
- הסתרת FloatingToolbar כשמעדכנים את הבחירה. (I8444c)
- מבטלים את הבחירה באפשרות 'כשמתבצעת פעולת טשטוש'. (I781a2)
גרסה 0.1.0-dev16
5 באוגוסט 2020
התכונות androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
וגם androidx.compose.foundation:foundation-text:0.1.0-dev16
משוחררות. גרסה 0.1.0-dev16 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספה של LazyItemScope לפרמטר itemContent של רשימות Lazy. הוא מספק משתני אופן פעולה (modifiers) למלא את הגודל המקסימלי של ההורה, וכך פותר את התרחיש שבו הפריט צריך למלא את אזור התצוגה, והפונקציה הרגילה Modifier.fillMaxSize() לא פועלת כי המדידה של הפריט מתבצעת באמצעות אילוצים של אינסוף. (Ibd3b2, b/162248854)
- העברת תיבת דו-שיח לממשק המשתמש (I47fa6)
- נוספו LazyColumnForIndexed/LazyRowForIndexed – גרסאות של LazyColumnFor/LazyRowFor שמספקות גם את האינדקס וגם את הפריט ב-itemCallback. האפשרות הזו שימושית כשצריך לדעת אינדקס נוכחי בנוסף לפריט נוכחי. (I65ff3)
- השם של Modifier.deternimateProgress השתנה ל-Modifier.progressSemantics (I9c0b4)
- השם של LazyColumnItems השתנה ל-LazyColumnFor. השם של LazyRowItems שונה ל-LazyRowFor (I84f84)
- מומלץ להוסיף כמה סימנים או הערות. (I66b20)
- החבילה foundation.shape.corner עברה שטוח ל-foundation.share (I46491, b/161887429)
- נוספו פרמטרים של כוח משיכה בציר ל-LazyRowItems/LazyColumnItems. עכשיו יש תמיכה בהתנהגות של תוכן כרוך ב-LazyRowItems/LazyColumnItems. (Ib39fc)
- השם של ZoomableState השתנה ל-ZoomableController. נוספה תמיכה בעקומות בהתאמה אישית ל-smoothScale. נוספה פונקציונליות של
enabled
ו-onZoomStarted
(If8b8f) - שינינו את השם של Material FilledTextField ל-TextField, ואת השם של TextField הבסיסי ל-BaseTextField, כדי שיהיה קל למצוא את ממשק ה-API הרצוי הפשוט ביותר ולהשתמש בו (Ia6242, b/155482676)
- ה-AdapterList שהוצא משימוש הוסר. במקום זאת, צריך להשתמש ב-LazyColumnItems (I12b9b)
- השם של Modifier.drawBackground השתנה ל-Modifier.background (I13677)
- ה-DSL הישן של ConstraintLayout הוסר. השם של ConstraintSet2 השתנה ל-ConstraintSet. (If58d1, b/162450908)
- נוספו Modifier.absoluteOffset() ו-Modifier.absoluteOffsetPx(). בניגוד למשתני שינוי של אופסט, משתני שינוי של אופסט מוחלט לא ישתקפו באופן אוטומטי בהקשר מימין לשמאל (I3aa21)
Row
ו-Column
הן עכשיו פונקציות שקופות, שמפחיתות באופן משמעותי את התקורה הכרוכה בשימוש בהן. (I75c10)
תיקוני באגים
- תיקונים רחבים של ממשקי API (I077bc)
- הסרת הממשק 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 והסרתם שיטות שלא בשימוש
נוספה פונקציית MonotonicFrameAnimationClock שמאפשרת להשתמש ב-MonotonicFrameClock בתור AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על קורוטינים לבין ממשקי ה-API שעדיין משתמשים בשעונים הישנים שמבוססים על קריאה חוזרת (callback).
המקבילה של MonotonicFrameClock ל-ManualAnimationClock היא עכשיו ManualFrameClock. (I111c7, b/161247083)
בוצעה הסרה של
SemanticsNodeInteraction.performPartialGesture
. במקום זאת, אתם צריכים להשתמש ב-SemanticsNodeInteraction.performGesture
. (Id9b62)שינית את השם של
SemanticsNodeInteraction.getBoundsInRoot()
ל-SemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)ממשקי ה-API לתמיכה בכתיבה מימין לשמאל עודכנו. נוספה התכונה LayoutDirectionAmbient, שאפשר להשתמש בה כדי לקרוא ולשנות את כיוון הפריסה. האפשרויות Modifier.rtl ו-Modifier.ltr הוסרו. (I080b3)
ה-Modifier.plus הוצא משימוש. במקום זאת צריך להשתמש ב-Modifier.then. 'אחר כך' מבטא יותר בבירור את סדר הדברים, ומונע גם להקליד
Modifier.padding().background() + anotherModifier
, שגורם להפסקה בשרשרת וקשה יותר לקרוא אותו (Iedd58, b/161529964)נוספו
isFocused()
ו-isNotFocused()
SemanticsMatcher. (I0b760)נוספה RemeasurementModifier. היא מאפשרת למשתמשים למדוד מחדש את הפריסה באופן סינכרוני. באופן כללי, אף פעם לא צריך להשתמש בו כי המדידה מחדש או עיצוב מחדש מתבצעים באופן אוטומטי, אבל אנחנו משתמשים בו ב-LazyColumnItems במהלך הגלילה. (I5f331, b/160791058)
הפונקציה isSystemInDarkTheme תמיד מביאה עכשיו בחשבון את ההגדרה של העיצוב הכהה ברמת המערכת, ומתעלם מהסטטוס של חיסכון באנרגיה לפני Q, בהתאם להנחיות העדכניות. (I0c10c)
האירוע OnChildPositioned הוצא משימוש. במקום זאת, צריך להשתמש ב-OnPositioned על הצאצא. (I87f95, b/162109766)
שינינו את השם של AndroidComposeTestRule ל-createAndroidComposeRule. (I70aaf)
הוספת פעולת נגישות כדי לקבל את TextLayoutResult (I9d6e6)
גרסה 0.1.0-dev15
22 ביולי 2020
התכונות androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
וגם androidx.compose.foundation:foundation-text:0.1.0-dev15
משוחררות. גרסה 0.1.0-dev15 מכילה את ההצהרות האלה על ביצוע שינויים.
כדי להשתמש בגרסה 0.1.0-dev15
של Compose, צריך:
עדכון יחסי התלות
- כדי להשתמש בגרסה
0.1.0-dev15
של Compose, תצטרכו לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרת יחסי תלות.
שינויים ב-API
- בדומה לפרמטר החדש ב-ScrollableColumn/ScrollableRow, ל-LazyColumnItems/LazyRowItems יש עכשיו גם את הפרמטר contentPadding שמאפשר להוסיף רווח לתוכן אחרי שהוא נחתך, דבר שלא ניתן לעשות רק באמצעות פרמטר שינוי. אפשר גם להוסיף רווח רק לפני הפריט הראשון או אחרי הפריט האחרון. (Ibc24e)
- שם הפונקציה הלא סטטית onFocusChange בשדות טקסט שונה ל-onFocusChanged (Ida4a1)
- ה-API VerticalScroller ו-HorizontalScroller הוצאו משימוש. אפשר להשתמש ב-ScrollableColumn וב-ScrollableRow כדי ליהנות מחוויית שימוש מובנית עם פרמטרים והתנהגות של עמודות/שורות, או ב-Modifier.verticalScroll וב-Modifier.horizontalScroll ברכיב משלכם. באופן דומה, הוחלפה הפונקציה ScrollerPosition בפונקציה ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- ממשקי ה-API Modifier.draggable ו-Modifier.scrollable עברו עריכה מחדש. המאפיין DragDirection הוסר לטובת Orientation. הסטטוס הנדרש לגלילה פשוט יותר. השם של ScrollableState שונה ל-ScrollableController (Iab63c, b/149460415)
- בנכסי סמנטיקה עם ערך יחיד נעשה עכשיו שימוש בסגנון קריאה.
לדוגמה, 'semantics { hidden = true }' נכתב עכשיו כך:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - עכשיו אפשר להגדיר לגודל הפינות של RoundedCornerShape ו-CutCornerShape ערך גדול מ-50% (Id2340, b/160400213)
- שינינו את הפרמטר ברירת המחדל של ContentScale ל-Image composable מ-Inside ל-Fit. המטרה של השינוי הזה היא לגרום ל-Painter הבסיסי להגדיל את עצמו אם גודל הפריסה גדול מהגודל הפנימי של ה-Painter, תוך שמירה על יחס הגובה-רוחב. ההתנהגות הזו תואמת יותר לציפיות של מתן גדלים קבועים ל-Image, בלי להשפיע על התנהגות ברירת המחדל אם נעשה שימוש רק בגודל הפנימי לחישוב הגודל של ה-Composable. (I40ae3, b/159838006)
- שימוש ב-AnimationSpec במקום ב-AnimationBuilder ב-API ברמה העליונה כדי להבהיר את המושג של מפרט אנימציה סטטי. שיפור של transition DSL על ידי הסרת הדרישה ל-lambda ליצירת AnimationSpecs כמו tween, spring. במקום זאת, הם מקבלים את הפרמטרים של ה-constructor ישירות. -שיפור נוחות השימוש הכוללת של AnimationSpec, ופתיחת המשתנים של ה-constructor במקום להסתמך על ה-builders. -שינוי משך הזמן וההשהיה של KeyFrames ו-Tween ל-Int. כך תוכלו להימנע מטרנספורמציות מיותרות של סוגים ומעומסי יתר של שיטות (כדי לתמוך גם ב-Long וגם ב-Int). (Ica0b4)
- האפשרות לקליק הוסר. שימוש ב-Modifier.clickable (I84bdf)
- נוספו LazyRowItems – רכיבים מקבילים ל-LazyColumnItems עם גלילה אופקית (Ibbcf7)
- השקנו ממשקי API ללא מצב (stateless) ליצירת אנימציות ברמה נמוכה. ממשקי ה-API האלה (I63bf7)
- ה-API androidx.ui.foundation.TextFieldValue ו-androidx.ui.input.EditorValue הוצאו משימוש. גם הרכיבים הניתנים לקישור מסוג TextField, FilledTextField ו-CoreTextField שמשתמשים בסוג הזה הוצאו משימוש. במקום זאת, צריך להשתמש ב-androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- החלפת השימוש ב-IntPx ב-Int. החלפת IntPxPosition ב-IntOffset. הוחלף IntPxSize ב-IntSize. (Ib7b44)
- ה-androidx.ui.foundation.shape.RectangleShape הוסר. צריך להשתמש ב-androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- כדי לצמצם את מספר הכיתות שבהן נעשה שימוש לייצוג נתוני גודל, כדאי להשתמש בכיתה Size במקום בכיתה PxSize. כך אפשר ליהנות מהיתרונות של שימוש ב-inline class כדי לארוז 2 ערכים מסוג float שמייצגים את הרוחב והגובה כערכים מסוג float. (Ic0191)
- כדי לצמצם את מספר הכיתות שבהן נעשה שימוש כדי לייצג את פרטי המיקום, מומלץ להשתמש בכיתה Offset במקום בכיתה PxPosition. כך אפשר ליהנות מהיתרונות של שימוש בכיתה מוטמעת כדי לארוז 2 ערכים מסוג float, שמייצגים את הזזות ה-x וה-y, כערכים מסוג float. (I3ad98)
- הוספנו את Modifier.zoomable לצורך פונקציונליות של צביטה להגדלת התצוגה (Id5d63)
- הרכיב שניתן להפעלה/השבתה הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.toggleable (I35220, b/157642842)
- MutuallyExclusiveSetItem הוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.selectable. (I02b47, b/157642842)
- הוצאנו משימוש את TestTag. במקום זאת, צריך להשתמש ב-Modifier.testTag. (If5110, b/157173105)
- הוספת הפרמטר fontWeight לטקסט, שלא נוסף בטעות בעבר (I56937)
- החלפת השימוש בכיתה Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגי נתונים פרימיטיביים לפרמטר של פיקסלים (I19d02)
- VerticalScroller מספק עכשיו את האפשרות 'עמודה' מתוך האריזה. הרכיב HorizontalScroller מספק עכשיו את Row כברירת מחדל. (Ieca5d, b/157020670)
- החלפת השימוש בכיתה Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטר של פיקסלים (Iede0b)
- השדה Modifier.indication נוסף לחבילת הבסיס. אפשר להשתמש בו כדי להציג אינדיקציה של לחיצה/גרירה/פעולה אחרת על רכיבים מותאמים אישית שאפשר לקיים איתם אינטראקציה (I8425f, b/155287131)
- VerticalScroller ו-HorizontalScroller תומכים עכשיו בגלילה הפוכה אם הערך isReversed מוגדר ב-ScrollerPosition (I953bd)
- תמיכה בהוספת רכיבים מורכבים לפריסת טקסט. (I1373c)
- איחוד הטמעות של CanvasScope, כך שיש עכשיו רק DrawScope ו-ContentDrawScope. CanvasScope עבר שם חדש: DrawScope. עדכנו את DrawScope כך שיטמיע את ממשק Density ויספק את LayoutDirection. מחקו את תת-הסוג של DrawScope ב-ContentDrawScope. עדכנו את Painter ו-PainterModifier כך שלא יכללו יותר מאפיין RTL בעצמם, כי DrawScope כבר מספק את זה בלי לספק אותו באופן ידני (I1798e)
- הוסרה גרסת ה-API הקודמת של DrawBackground, והוחלפו בה ממשקי ה-API של התוסף drawBackground ב-Modifier. שיפרנו את ההטמעות של drawBackground של צבע, מברשת וצבע כדי לצמצם את נתיבי הקוד, וגם כדי להסיר את הדרישה ליצירת Modifier כחלק מההרכב. (I0343a)
- עדכנו את ממשקי ה-API ברמה גבוהה יותר שמציגים את Canvas, כך שהם מציגים במקום זאת את CanvasScope. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם ב-Paint. לצרכנים שעדיין זקוקים לגישה ל-Canvas, אפשר להשתמש בשיטת התוסף drawCanvas, שמספקת קריאה חוזרת (callback) להנפקת פקודות ציור ב-Canvas הבסיסי. (I80afd)
- רכיבי HorizontalScroller ו-VerticalScroller לא משחזרים את מיקום הגלילה שלהם באמצעות מצב המכונה השמור. (Ia0fae, b/155075048)
- FocusManagerAmbient הוסר. משתמשים ב-FocusModifier.requestFocus כדי לקבל את המיקוד. (Ic4826)
- פריסת הטבלה הוסרה באופן זמני עד שנציג אותה שוב עם ממשק API מעודכן. (Id88a7)
יצירה של CanvasScope API שמקיף אובייקט Canvas כדי לחשוף ממשק API לציור בלי מצב (declarative) ועם סטטוס. הטרנספורמציות נכללות בהיקף של המקלט שלהן, ומידע על הגודל נכלל גם בהיקף של גבולות ההוספה המתאימים. הוא לא מחייב את הצרכן לנהל אובייקט מצב משלו של Paint כדי להגדיר פעולות ציור.
נוספה הדוגמה CanvasScopeSample, וגם עודכנה אפליקציית ההדגמה כך שתכלול הדגמה של גרפיקה מוצהרנית (Ifd86d)
ה-ColoredRect הוסר. User Box עם המשתנה drawBackground במקום זאת (I983c7, b/152753731)
הוספת התאמה אישית של צבע הסמן ל-TextField (I6e33f)
עכשיו אפשר להסתיר או להציג את המקלדת הווירטואלית באמצעות SoftwareKeyboardController, שמסופק על ידי הפונקציה החוזרת onTextInputStarted (I8dc44, b/151860051)
עכשיו אפשר להשתמש ב-TextFieldValue עם TextField כך שיישמר לאחר יצירת מחדש של פעילות:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)הוספת פרמטרים נפוצים ל-Text(). אם אתם יוצרים כרגע סגנון טקסט מקומי כדי להעביר מספר קטן של הפרמטרים האלה, כמו
Text(style = TextStyle(textAlign = TextAlign.Center))
, עכשיו אתם יכולים פשוט לספק את הפרמטרים ישירות:Text(textAlign = TextAlign.Center)
(I82768)הפרמטר focusIdentifier של CoreTextField/TextField הוחלף ב-FocusNode כדי לשלב עם מערכת המשנה של המיקוד. (I7ea48)
עדכון של TextField – במאפיין הרוחב, הוא יאכלס את כל המרחב הזמין שהוקצה לו (Ib08df, b/154638552)
הוספנו את InteractionState ואת Interaction, כדי שיהיה קל יותר ליצור רכיבים שתגובתם משתנה בהתאם לשינויים במצב של ממשק המשתמש, כמו לחיצה וגרירה (Icfe25, b/152525426)
RectangleShape הועבר מ-androidx.ui.foundation.shape.* אל androidx.ui.graphics.* (Ia74d5, b/154507984)
החלפת כל השימושים ב-Color ב-API עם nullable ב-non-nullable, והשימוש ב-Color.Unset במקום null (Iabaa7)
עדכון API של TextField – מיזוג של פונקציות ה-onFocus ו-onBlur לפונקציית onFocusChange(Boolean) יחידה עם פרמטר (I66cd3)
שינינו את השם של ScaleFit ל-ContentScale. עברנו את ContentScale מהמודול ui-graphics למודול ui-core כדי שהוא יהיה באותו מודול כמו Alignment API. שינינו את השם של FillMaxDimension ל-Crop, שינינו את השם של FillMinDimension ל-Fit, שינינו את השם של Fit ל-Inside כדי להתאים טוב יותר למקבילים של ImageView.ScaleType, והוספנו מסמך שמציין שהשילוב של Crop ו-Alignment.Center מניב את אותה תוצאה כמו ImageView.ScaleType.CENTER_CROP, ושהשימוש ב-Fit עם Alignment.Center מניב את אותה תוצאה כמו ImageView.ScaleType.FIT_CENTER, ושהשימוש ב-Inside עם Alignment.Center מניב את אותה תוצאה כמו ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
הוסרה של ProvideContentColor. במקום זאת, צריך להשתמש ב-ContentColorAmbient ישירות עם
Providers
(Iee942)הוספת פרמטר צבע לטקסט, שמאפשר לשנות את הצבע של סגנון הטקסט בלי צורך למזג אותו באופן ידני עם הסגנון שסופק בעיצוב. (I41a66)
שיפור DrawModifier API:
- שינוי ההיקף של המקבל של draw() ל-ContentDrawScope
- הסרת כל הפרמטרים ב-draw()
- לממשק של DrawScope יש את אותן תכונות כמו לממשק הקודם של CanvasScope
- ל-ContentDrawScope יש את השיטה drawContent() (Ibaced, b/152919067)
ה-ColoredRect הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)מערכת הנושאים של Shape מתעדכנת בהתאם למפרט של העיצוב החדשני. עכשיו אפשר לספק צורות קטנות, בינוניות וגדולות לשימוש ברוב הרכיבים (Ifb4d1)
החלפת האופרטור 'פלוס' של המשתנה המשנה בפונקציות הרחבה של היצרן (I225e4)
האפשרות 'ניתן לגרירה' הועברה למאפיין שינוי (Id9b16, b/151959544)
הועבר
Text
לחבילה androidx.ui.foundation, מ-androidx.ui.core. (I87ce5)הוספת הפרמטר
enabled
לתיבת סימון, למתג ולמתג הפעלה/השבתה (I41c16)'אדווה' הוא עכשיו 'מפעיל'. בזמן ש-Clickable עדיין לא הומר, השימוש המומלץ הוא
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)הוספנו את VectorPainter API כדי להחליף את ממשק ה-API הקיים של רכיבי משנה לגרפיקה וקטורית. התוצאה של הרכבת המשנה היא אובייקט VectorPainter במקום DrawModifier. הוצאנו משימוש את הרכיבים הקודמים של DrawVector לטובת VectorPainter.
שינוי השם של
Image(Painter)
API ל-PaintBox(Painter)
יצירת רכיב מורכב מסוג Vector שמתנהג כמו רכיב מורכב מסוג Image, אלא עם VectorAsset במקום ImageAsset (I9af9a, b/149030271)רכיב מורכב של תמונה שנוצר כדי לטפל בגודל או בפריסה, בנוסף לציור של נכס תמונה נתון במסך. הרכיב הניתן ליצירה מחדש תומך גם באיור של כל מופע שרירותי של Painter בהתאם לגודל המובנה שלו, וגם בגודל קבוע או גודל מינימלי נתון (Ibcc8f)
ל-Button, ל-FloatingActionButton ול-Clickable יש עכשיו פרמטר
enabled
נפרד. השמות של חלק מהפרמטרים ב-Button השתנו או שהם שונו בסדר. (I54b5a)שינינו את השם של Image ל-ImageAsset כדי להבדיל טוב יותר בין נתוני Image לבין Image composable שיוצג בקרוב, וישמש לצורך פריסה וציור תוכן.
יצרתם שיטה מורחבת ב-android.graphics.Bitmap,
Bitmap.asImageAsset()
, כדי ליצור מופע של ImageAsset ששימושי לשילוב של פיתוח אפליקציות Android מסורתי עם מסגרת Compose. (Id5bbd)ה-composable DrawImage הוסר. משתמשים ב-ImagePainter כדי לצייר תמונה בפריסת קיימת, או ב-SimpleImage כדי להציג תמונה שמשתמשת במרחב (I595e1, b/149827027)
רכיב הערימה תומך בכיוון מימין לשמאל (Ic9e00)
נוספו Icon, IconButton ו-IconToggleButton, והוסרו AppBarIcon. אפשר להחליף ישירות את השימושים הקיימים של AppBarIcon ב-IconButton, ועכשיו יהיה להם יעד המגע הנכון. במאמרים לדוגמה מפורט מידע על השימוש בסמלים, ובקטע 'סמלים' מפורט מידע על סמלי Material Icons שאפשר להשתמש בהם ישירות עם הרכיבים האלה. (I96849)
הרכיב הניתן לקישור DrawShape הוסר. במקום זאת, צריך להשתמש במשתנה DrawBackground. (I7ceb2)
נוספה AdapterList, רכיב של רשימה עם גלילה שמרכיב ומציג רק את הפריטים הגלויים. בין הבעיות הידועות כרגע: האפשרות הזו זמינה רק לקטגוריות ספציפיות, והיא לא מטפלת באופן מלא בכל המקרים של שינויים בקטגוריות הילדים. (Ib351b)
נוספו רכיבים שניתן לגלול בהם, שמאפשרים ליצור גלילות או רשימות בהתאמה אישית (I5fd37)
שינית את שם הרקע ל-DrawBackground והגדרת אותו לזכירה כברירת מחדל (Ia0bd3)
הוספת פרמטרים של שוליים, גבול, צורה ורקע לתיבת Box (I05027, b/148147281)
הוסף רכיב Canvas. הרכיב הניתן לקיבוץ הזה תופס מקום מסוים (המשתמשים מציינים את הגודל) ומאפשר לצייר באמצעות CanvasScope (I0d622)
שינוי השם של המשתנה
Border
למשתנהDrawBorder
(I8ffcc)נוספו רכיבי Box שאפשר לשלב בהם את הפונקציונליות המשותפת של פריסה וציור. (I6e2a7)
גלילות מוצגות עכשיו עם התנהגות תנועה מקורית של Android. (I922af, b/147493715)
החלפת DrawBorder ב-Border Modifier (Id335a)
השם של Modifier.tag השתנה ל-Modifier.layoutId, כדי למנוע בלבול עם Modifier.testTag. (I995f0)
השם של הפרמטר percent כשיוצרים הנחיות ל-ConstraintLayout השתנה ל-fraction. (Ida2db)
נוספה תמיכה בשוליים של מחסומי ConstraintLayout. (I47ffe)
תוקנה התמיכה ב-RTL ב-ConstraintLayout. נוספו ממשקי API שלא תומכים ב-RTL. (I3b1c7)
נוספה שפת DSL חדשה ל-ConstraintLayout. פרטים נוספים זמינים בדוגמאות. (Icaa9a)
נוספה ההערה @ExperimentalLayout. ConstraintLayout, FlowRow ו-FlowColumn מתויגים עכשיו בתווית הזו כדי לסמן שממשקי ה-API שלהם עומדים להשתנות. (I412a8)
Modifier.padding(InnerPadding)
נוסף (I94985, b/157133803)הוסר השימוש ב-RowAlign וב-ColumnAlign בשורות ובעמודות. (If60d4, b/155858731)
הוצאנו משימוש את LayoutTag(), צריך להשתמש ב-Modifier.tag() במקום זאת. הוצאנו את Modifier.matchParent() שהוצא משימוש. במקום זאת, צריך להשתמש ב-Modifier.matchParentSize(). (If8044)
הוספנו את המשתנה layout offsetPx, שאפשר להשתמש בו כדי להגדיר סטיות (דינמיות) ב-px. (I5af57)
ה-composable AlignmentLineOffset הוצא משימוש. במקום זאת, צריך להשתמש במטא-פרמטר relativePaddingFrom(). הרכיב CenterAlignmentLine הוסרה. (I60107)
נוספה פונקציית עיצוב defaultMinSizeConstraints שמגדירה אילוצים של גודל לעיצוב המגובל רק כשהאילוצים התואמים הנכנסים לא צוינו (0 לאילוצים מינימלייים ואין סוף לאילוצים מקסימליים). (I311ea, b/150460257)
הקונטיינר הוסר. במקום זאת, משתמשים ב-Box (Ibbc2b, b/151407926)
הוסר המשתנה LayoutWidth/Height/Size שהוצא משימוש. (Ib0bc1)
נוספו ערכי ברירת מחדל לפרמטר של המנגנון לשינוי המיקום. (I37f06)
נוסף משתנה של ריבועיות סימטרית. (I39840)
הוסר המשתנה LayoutAspectRatio שהוצא משימוש. (I65a74)
הוסרו המשתנים LayoutAlign שהוצאו משימוש. (I10877)
תוקן באג במשתני הרוחב והגובה שגרם למדידה של הפריסה המכוונת ללא אילוצים על ציר הפוך. (I210b8, b/154797971)
נוספו הפרמטרים verticalGravity ו-horizontalGravity ל-Row ול-Column, בהתאמה. (I7dc5a)
עודכנו wrapContentWidth ו-wrapContentHeight כך שיצפו ליישור אנכי או אופקי במקום לכל יישור. המשתנה של כוח המשיכה עודכן כך שיאפשר שימוש באישור אנכי או אופקי. התכונות Row (שורה), Column (עמודה) ו-Stack (ערימה) עודכנו כדי לתמוך בהתאמות אישיות רצפות. (Ib0728)
אפשר ליצור את Alignment באופן מיידי עם ערכים שרירותיים. נוספו התאמות חד-ממדיות. (Ia0c05)
השם של EdgeInsets השתנה ל-InnerPadding. שינוי השם של הפרמטר innerPadding של לחצני Material ל-padding. (I66165)
עכשיו אפשר להשתמש ב-alignToSiblings עם Measured במקום עם Placeable. (I5788d)
הוספנו משתני שינוי לצורך התאמה למדידות מובנות, והוצאנו משימוש את הרכיבים שמיועדים למטרה הזו. (I8295d)
נוספה תמיכה בהתאמה אישית של המאפיינים של צאצאים של ConstraintLayout (Idb1a5)
הוסרו הרכיבים הקודמים של Wrap ו-Center. (I29e23)
נוספה LayoutModifier2, ממשק API חדש להגדרת מודפי פריסה. הוצא משימוש LayoutModifier (If32ac)
עכשיו אפשר לגשת לחברים של RowScope ו-ColumnScope מחוץ ל-Row ול-Column. (I3a641)
הקונטיינר יצא משימוש. במקום זאת, משתמשים ב-Box. (I675ce, b/151407926)
נוספה המשתנה LayoutOffset להזזה של מיקום הפריסה (I0b8a3)
תמיכה ראשונית ב-RTL בפריסת כתיבת ההודעה (Ia5519)
עדכנו את LayoutAlign כך שלא ימלא יותר את כל המרחב הזמין (I2b14f)
הוסר הרכיב הניתן לקישור של AspectRatio לטובת שינוי. נמחקו הרכיבים הלא רלוונטיים FlexColumn, FlexRow ו-Spacing modifier (Iec8a7)
הוסר המשתנה LayoutInflexible עבור Row ו-Column (I0d820)
הטמעת רכיבי Drag Selection Handles כדי לשנות את הבחירה של TextField. (I27032)
הטמעת LongPressAndDrag לבחירה של TextField. (I17919)
תיקוני באגים
- FocusModifier הוצא משימוש והוחלף על ידי Modifier.focus, Modifier.focusRequester ו-Modifier.focusObserver. הפונקציות FocusState ו-FocusDetailedState הוצאו משימוש לטובת FocusState2 (I46919, b/160822875, b/160922136)
- השם של
runOnIdleCompose
השתנה ל-runOnIdle
(I83607) - השמות של כמה ממשקי API לבדיקות השתנו כדי להפוך אותם לאינטואיטיביים יותר. השם של כל ממשקי ה-API מסוג findXYZ השתנה ל-onNodeXYZ. השם של כל ממשקי ה-API מסוג doXYZ השתנה ל-performXYZ. (I7f164)
- הסרה של Modifier.ripple שהוצא משימוש. ב-Clickable נעשה עכשיו שימוש בתנודות כסימן ברירת המחדל (אם הגדרתם את MaterialTheme {} באפליקציה), כך שברוב המקרים אפשר פשוט להשתמש ב-Clickable ולקבל את התנודות בחינם. אם אתם צריכים להתאים אישית את הצבע, הגודל או הפרמטר המוגבל של הרטט, אתם יכולים ליצור באופן ידני את RippleIndication ולהעביר אותו ל-clickable כפרמטר ההנחיה. (I663b2, b/155375067)
- הוסרו ממשקי API מיושנים לבדיקת גודל. (Iba0a0)
- הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
- גרסה 1 של נעילת כיוון הגלילה מוטמעת בכל Compose. (I1ce7a, b/150289741)
- חלונות קופצים, תיבות דו-שיח ומנות יורשים עכשיו את MaterialTheme לפי הקשר (Ia3665, b/156527485)
- הוסר הפרמטר 'כיוון הפריסה' מבלוק המדידה של פונקציית Layout(). עם זאת, כיוון הפריסה זמין בתוך פונקציית הקריאה החוזרת (callback) דרך האובייקט של היקף המדידה (Ic7d9d).
- הוספת AbsoluteArrangement – מאפשרת לסדר את הצאצאים בתוך השורה בלי שיקרה שיקוף אוטומטי ב-RTL (I3a1df)
- ההערה @Untracked הוצאה משימוש. החלפה ב-@ComposableContract(tracked=false) (Id211e)
- לפני השינוי הזה, פלאגין המהדר של Compose היה מיירט קריאות ל-constructors בתוך פונקציה מסוג @Composable באופן לא פשוט, אם הייתה (I5205a, b/158123804)
- הוספת רכיב
viewModel()
composable שמאפשר ליצור ViewModel או לקבל ViewModel שכבר נוצר, בדומה לאופן שבו הוא פועל ב-Activity או ב-Fragment (I5fdd1) שינוי מבנה של הכיתה Radius לכיתה בקוד. הוסרו שיטות יצירת שותפים לטובת מגדיר פונקציה עם פרמטר ברירת מחדל, כדי שהרדיוס בציר y יתאים לפרמטר הרדיוס החובה בציר x.
עדכנו את DrawScope.drawRoundRect כך שישתמש בפרמטר Radius יחיד במקום בשני ערכים נפרדים מסוג float לרדיוס בציר x ובציר y (I46d1b)
החלפת השימוש במחלקת Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של עיבוד מחדש, כדי להסתמך רק על Dp ועל סוגי נתונים פרימיטיביים עבור פרמטרים של פיקסלים. מחקת את הכיתה Px במלואה (I3ff33)
החלפת השימוש בכיתה Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של שינוי מבנה הקוד, כדי להסתמך רק על Dp ועל סוגי נתונים פרימיטיביים עבור פרמטרים של פיקסלים (I086f4)
החלפת השימוש בכיתה Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של עיבוד מחדש (refactoring) כדי להסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטרים של פיקסלים (Id3434)
החלפת השימוש במחלקת Px במחלקות שונות של compose, כחלק מהמאמץ הגדול של עיבוד מחדש (refactoring) כדי להסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטר של פיקסלים (I97a5a)
לסמן של TextField יש אנימציה מהבהבת (Id10a7)
לא צריך יותר להעביר GestureToken (Id7ae5) כדי לבצע תנועות חלקיות.
החלפת השימוש במחלקת Px בכיתות שונות של compose, כחלק מהמאמץ הגדול של עיבוד מחדש (refactoring) כדי להסתמך רק על Dp ועל סוגים פרימיטיביים לפרמטרים של פיקסלים (I57bff)
הוסרה ההודעה על ההוצאה משימוש של Modifier.semantics כדי לאפשר שימוש ברכיבים ברמה גבוהה. (I4cfdc)
משנים את השם של AnnotatedString.Builder.addAnnotationString ל-addStringAnnotation. (I5059e)
עדכנו את Alignment API והוסיפה תמיכה ביישור מוחלט (שלא מבצע שיקוף אוטומטי בהקשר RTL) (I38cd3)
אפשר למדוד צאצאים של Layout ו-LayoutModifier עם כיוון פריסה שונה. (Ibd731)
הוספת פרמטר אופציונלי נוסף מסוג rect ל-ImagePainter כדי לתמוך באיור של קטעים משנה של ImageAsset הבסיסי (I0ea9e)
תוקנה קריסה ב-AdapterList בזמן הסרת פריטים (Ic64b0, b/153195921)
שינינו את האופן שבו אנחנו מודדים את הפריסה הראשונה שמוסיפים לתוך הבלוק activity.setContent { }. בעבר היא הייתה צריכה למלא את כל מסך הפעילות, ועכשיו היא פועלת כאילו שמכניסים את הפריסה ל-Stack: היא יכולה להיות קטנה יותר ממסך ותוצג בפינה הימנית העליונה של המסך. אם רוצים את ההתנהגות הישנה, אפשר להחיל את Modifier.fillMaxSize() על הפריסה. (Ie88a7, b/153453714)
שם המודול ui-text-compose השתנה ל-ui-text. המודול ui-text מכיל עכשיו רכיבים של CoreText ו-CoreTextField (Ib7d47)
שם המודול ui-text השתנה ל-ui-text-core (I57dec)
הרכיבים הניתנים לקישור של ui-framework/CoreText ו-CoreTextField הועברו אל ui-text-compose. כדאי לכלול את ui-text-compose בפרויקט. (I32042)
runOnIdleCompose
ו-runOnUiThread
הן עכשיו פונקציות גלובליות במקום שיטות ב-ComposeTestRule. (Icbe8f)אופרטורים של הענקת גישה למאפייני מצב [לשינוי]הועברו לתוספים כדי לתמוך באופטימיזציות של הענקת גישה למאפיינים ב-Kotlin 1.4. כדי להמשיך להשתמש ב-
by state { ... }
או ב-by mutableStateOf(...)
, מבצעי הקריאה החוזרת צריכים להוסיף ייבוא. (I5312c)עכשיו, הערכים שמוגדרים כברירת מחדל לפונקציות DrawLayerModifier ו-drawLayer() הם false עבור clipToBounds ו-clipToOutline. (I0eb8b, b/152810850)
השם של LayoutResult שונה ל-MeasureResult. (Id8c68)
רכיב 'מרכז' שהוצא משימוש. צריך להחליף אותו במשתנה LayoutSize.Fill + LayoutAlign.Center או באחד מהרכיבים הקומפוזיציוניים Box או Stack עם משתנים מתאימים (Idf5e0)
השם של LayoutFlexible שונה ל-LayoutWeight. שינוי השם של הפרמטר tight ל-fill. (If4738)
הפונקציה DrawVector שונתה מפונקציה רגילה שאפשר לשלב, לפונקציה שמחזירה את ה-Modifier drawVector(), שידפיס את הווקטור כרקע של פריסה. (I7b8e0)
מחליפים את הפונקציה הניתנת לקיבוץ Clip במשתנה drawClip(). DrawClipToBounds הוא משתנה נוח לשימוש כשצריך רק לחתוך את השכבה לגבולות שלה בצורת מלבן. (If28eb)
הפונקציה הניתנת לקיבוץ DrawShadow הוחלפה במנגנון drawShadow(). עכשיו הצללים נוצרים כחלק מ-LayerModifier. (I0317a)
androidx.compose.ViewComposer הועבר ל-androidx.ui.node.UiComposer androidx.compose.Emittable הוסר. הוא היה יתיר ביחס ל-ComponentNode. androidx.compose.ViewAdapters הוסר. הם כבר לא נתמכים בתרחיש לדוגמה. האפשרות Compose.composeInto הוצאה משימוש. במקום זאת, צריך להשתמש ב-
setContent
או ב-setViewContent
. השיטה Compose.disposeComposition הוצאה משימוש. במקום זאת, צריך להשתמש בשיטהdispose
ב-Composition
שמוחזר על ידיsetContent
. androidx.compose.Compose.subcomposeInto הועבר אל androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt עבר לשם ComponentNode#insertAt ComponentNode#emitRemoveAt עבר לשם ComponentNode#removeAt ComponentNode#emitMode עבר לשם ComponentNode#move (Idef00)רכיב Wrap שהוצא משימוש. אפשר להחליף אותו במשתנה LayoutAlign או ב-composable של Stack (Ib237f)
שינינו את כיוון הפריסה כך שיופץ מצומת הפריסה של ההורה לצאצאים. הוספנו שינוי לכיוון הפריסה. (I3d955)
צריך לשנות את השם של Painter.toModifier ל-Painter.asModifier, כי ל-Modifier החדש שנוצר יש הפניה ל-Painter המקורי שאפשר לשתף בין כמה מכונות של Modifier (I7195b)
תמיכה בכיוון מימין לשמאל במשתנה LayoutPadding (I9e8da)
Density ו-DensityScope מוזגו לממשק אחד. במקום ambientDensity() אפשר להשתמש עכשיו ב-DensityAmbient.current. במקום withDensity(density), פשוט with(density) (I11cb1)
הכיתה ValueHolder הוסרה. שינוי המבנה של הכיתות AnimatedValue ו-AnimatedFloat כדי להפוך את השדה של ערך האנימציה למופשט, כך שסיווגים משנה יוכלו לעקוב אחרי עדכון הערך.
- נוספו סוגים של מודלים ל-AnimatedValue, AnimatedFloat וכו'.
- הוספנו קבוצה חדשה של ממשקי API קלים ל-@Composable ליצירת אנימציה בין ערכים.
- (I79530)
שינויים משמעותיים ב-ambients API. פרטים נוספים זמינים ביומן ובמסמכי התיעוד של
Ambient<T>
(I4c7ee, b/143769776)מיקומי Int של קוי היישור שמוחזרים מ-Placeable#get(AlignmentLine) הם עכשיו לא null. אם קו היישור שאליו בוצעה השאילתה חסר, תוחזר הערך AlignmentLine.Unspecified. (I896c5, b/158134875)
תוקן באג ב-ConstraintLayout שגרם לקריסה במהלך יצירת קומפוזיציות מחדש. (Ibee5a, b/158164341)
ה-API של lambda עם הערך trailing של WithConstraints השתנה. עכשיו, במקום שני פרמטרים, יש לו היקף מקלט, שבנוסף למגבלות ול-layoutDirection מספק את המאפיינים minWidth, maxWidth, minHeight ו-maxHeight ב-Dp (I91b9a, b/149979702)
השם של LayoutModifier2 השתנה ל-LayoutModifier. (Id29f3)
לפונקציות של מדידות מובנות ב-Layout וב-LayoutModifier2 יש עכשיו מקלט IntrinsicMeasureScope שמספק ל-API של שאילתות מובנות כיוון פריסה שמופץ באופן משתמע. (Id9945)
האפשרות LayoutDirectionAmbient הוצאה משימוש. כדי לקרוא את כיוון הפריסה שמוגדר לפי הלוקאל, משתמשים ב-localeLayoutDirection ב-ConfigurationAmbient (I851b1)
נוספו positionInParent ו-boundsInParent ל-LayoutCoordinates. (Icacdd, b/152735784)
הרכיב הניתן לקישור של ParentData הוצא משימוש. אם אתם צריכים רק לתייג צאצאים של פריסה כדי לזהות אותם בתוך בלוק המדידה, עליכם ליצור משתנה שמטמיע את הממשק ParentDataModifier או להשתמש במשתנה LayoutTag. (I51368, b/150953183)
מוסיפים את OnPositionedModifier ואת OnChildPositionedModifier כדי להחליף את הפונקציות הניתנות ל-compose OnPositioned ו-OnChildPositioned. (I2ec8f)
איסור על מרווחים שליליים ב-LayoutPadding. במקום זאת, צריך להשתמש ב-LayoutOffset עבור סטיות שליליות במיקום. (Ifb5b1)
ל-WithConstraints הוענק הפרמטר LayoutDirection (I6d6f7)
עדכנו את הדגל
ComposeFlags.COMPOSER_PARAM
ל-true
, שיגרום לשינוי בשיטת יצירת הקוד של הפלאגין compose. ברמה גבוהה, הפעולה הזו גורמת ליצירת פונקציות @Composable עם פרמטר סינתטי נוסף, שמוענק לקריאות הבאות של @Composable כדי שסביבת זמן הריצה תוכל לנהל את הביצועים בצורה תקינה. זהו שינוי בינארי משמעותי שעלול לשבור את התאימות, אבל הוא אמור לשמור על תאימות ברמת המקור בכל שימוש מורשה ב-compose. (I7971c)שינינו את LayoutCoordinates כך ש-providedAlignmentLines תהיה קבוצה במקום מפה, והוספנו ל-LayoutCoordinates את האופרטור get() כדי לאחזר ערך. כך קל יותר למשתני המשנה לשנות ערך אחד או יותר בקבוצה בלי ליצור אוסף חדש לכל משתנה. (I0245a)
לאובייקט LayoutCoordinates כבר אין מאפיין position. המאפיין position לא רלוונטי כשמשתמשים ב-LayoutModifiers, בכיוון או בשינוי קנה המידה. במקום זאת, המפתחים צריכים להשתמש ב-parentCoordinates וב-childToLocal() כדי לחשב את הטרנספורמציה מ-LayoutCoordinate אחד למשנהו.
ב-LayoutCoordinates נעשה שימוש ב-IntPxSize למאפיין הגודל במקום ב-PxSize. בפריסות נעשה שימוש בגדלים שלמים של פיקסלים, לכן כל גדלי הפריסות צריכים לכלול מספרים שלמים ולא ערכים של נקודה צפה. (I9367b)
שיפורים בממשק ה-API של Constraints (I0fd15)
נוספה TextDirection.Content (I48f36)
שינוי התפריט של סרגל הכלים כך שיוצגו בו האפשרויות 'העתקה', 'חיתוך' ו'הדבקה' בצורה תקינה. (Id3955)
הוספת FloatingToolbar לבחירת TextField. (Ie8b07)
השם של TextDirectionAlgorithm השתנה ל-TextDirection (I75ce8)
השם של TextDirection השתנה ל-ResolvedTextDirection (I3ff38)
מוסיפים את HapticFeedback לבחירה של TextField. (I58050)
הוספת שיטות להעתקה, לגזירה ולהדבקה לבחירת TextField. (Idb70b)
TestTag ו-Semantics נמחקו. במקום זאת, צריך להשתמש ב-Modifier.testTag וב-Modifier.semantics (I15ff0, b/158841414)
שינינו את שם החבילה של Locale ו-LocaleList מ-androidx.ui.text ל-androidx.ui.intl (I8132c)
שינוי ב-API: השם של
AnnotatedString(builder: Builder)
השתנה ל-annotatedString(builder: Builder)
. (Ia6377)שינוי ב-API: השם של
AnnotatedString.Item
השתנה ל-AnnotatedString.Range
. (I2d44d)הוספת סרגל כלים לפעולות שקשורות לטקסט. (I49d53)
האפשרות החדשה LifecycleOwnerAmbient זמינה עכשיו. עכשיו, פעילות שבה אתם משתמשים עם Compose UI צריכה להרחיב את androidx.activity.ComponentActivity (או AppCompatActivity). השימוש ב-setContent ב-android.app.Activity הוצא משימוש (Idb25a, b/153141084)
שם החבילה ui-android-text (androidx.text) הוחלף בשם androidx.ui.text.platform כדי להתאים למדיניות של androidx. (I42711)