เขียน Foundation

เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งานและขยายรากฐานเพื่อสร้างชิ้นส่วนระบบออกแบบของคุณเอง
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
11 ธันวาคม 2024 1.7.6 - - 1.8.0-alpha07

โครงสร้าง

คอมโพซคือชุดค่าผสมของรหัสกลุ่ม Maven 7 รายการภายใน androidx กลุ่มแต่ละกลุ่มประกอบด้วยชุดฟังก์ชันการทำงานย่อยที่กำหนดเป้าหมายไว้ โดยแต่ละกลุ่มจะมีชุดหมายเหตุการเผยแพร่ของตัวเอง

ตารางนี้จะอธิบายกลุ่มและลิงก์ไปยังชุดบันทึกประจำรุ่นแต่ละชุด

กลุ่มคำอธิบาย
compose.animationสร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อมอบประสบการณ์การใช้งานที่ดีขึ้นให้แก่ผู้ใช้
compose.compilerเปลี่ยนรูปแบบฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin
compose.foundationเขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งานและขยายรากฐานเพื่อสร้างชิ้นส่วนระบบออกแบบของคุณเอง
compose.materialสร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design ที่พร้อมใช้งาน นี่เป็นจุดแรกเข้าระดับที่สูงขึ้นของ Compose ซึ่งออกแบบมาเพื่อจัดหาคอมโพเนนต์ที่ตรงกับที่อธิบายไว้ใน www.material.io
compose.material3สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นวิวัฒนาการขั้นถัดไปของ Material Design Material 3 ประกอบด้วยธีมและคอมโพเนนต์ที่อัปเดต รวมถึงฟีเจอร์การปรับแต่งในแบบของคุณของ Material You เช่น สีแบบไดนามิก และออกแบบมาให้สอดคล้องไปกับสไตล์ภาพและ UI ของระบบ Android 12 เวอร์ชันใหม่
compose.runtimeองค์ประกอบพื้นฐานของรูปแบบการเขียนโปรแกรมและการจัดการสถานะของ Compose รวมถึงรันไทม์หลักสำหรับกำหนดเป้าหมายปลั๊กอินคอมไพเลอร์ Compose
compose.uiองค์ประกอบพื้นฐานของ UI การเขียนที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ ภาพวาด และอินพุต

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ 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"
    }
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 1.8

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha07 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ลบการแจ้งว่าไม่เหมาะสม ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled ที่ช่วยยกเลิกการนำ graphicsLayer ภายในออกจาก BasicText หากคุณใช้การแจ้งว่าไม่เหมาะสมนี้ โปรดแจ้งเหตุผลให้เราทราบโดยการรายงานข้อบกพร่อง นอกจากนี้ คุณยังส่ง Modifier.graphicsLayer() ไปยังการเรียก BasicText เพื่อให้ได้ผลลัพธ์แบบเดิมได้ (Id9f90)
  • เพิ่มการใช้งานเริ่มต้นสําหรับ stickyHeader DSL ใหม่ (I68986)
  • มีองค์ประกอบ LocalAutofillHighlightColor ที่ใช้ประเภทสีในเครื่อง (I0e05b)
  • เปลี่ยนชื่อ OverscrollEffect#withoutDrawing เป็น OverscrollEffect#withoutVisualEffect แล้ว (I1a154)

การแก้ไขข้อบกพร่อง

  • การแก้ไขเพิ่มเติมสำหรับปัญหาในการคํานวณเป้าหมายของ AnchoredDraggable ซึ่งอาจหยุดอยู่ที่จุดยึดที่ไม่ถูกต้องสำหรับการปัดบางรายการ (I23b87, b/367660226)

การมีส่วนร่วมจากภายนอก

  • เพิ่ม BringIntoViewResponderModifierNode ลงใน UI ซึ่งจะเป็นวิธีใหม่ในการใช้ฟังก์ชันการทำงาน "นำโฆษณามาสู่มุมมอง" รวมถึงช่วยให้ใช้งานในระดับแพลตฟอร์มได้ (Ia6dd8)
  • เราเปลี่ยนแปลงลักษณะการแสดงเคอร์เซอร์เล็กน้อยอยู่เสมอ คุณสามารถใช้ LocalCursorBlinkEnabled เพื่อปิดใช้การวาดเคอร์เซอร์ในการทดสอบได้ (I4c697)

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha06 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มตัวปรับแต่ง stylusHoverIcon (Iff20a, b/331289114)
  • confirmValueChange ของ AnchoredDraggableState ที่เลิกใช้งาน ไม่ควรใช้การโต้แย้งการเปลี่ยนแปลงสถานะ แต่ไม่ควรมีจุดยึดที่ไม่ได้รับอนุญาตในชุดจุดยึดที่ใช้งานอยู่ และควรใช้ OverscrollEffect เพื่อระบุว่าการดำเนินการที่ขอไม่พร้อมใช้งาน (Ia717f)
  • เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
  • เพิ่ม OverscrollEffect#withoutDrawing และ OverscrollEffect#withoutEventHandling API - API เหล่านี้จะสร้างอินสแตนซ์ที่รวมไว้ของเอฟเฟกต์การเลื่อนผ่านขอบที่ระบุซึ่งไม่วาด / จัดการเหตุการณ์ตามลำดับ ซึ่งช่วยให้สามารถแสดงผลของการเลื่อนผ่านขอบในคอมโพเนนต์แยกต่างหากจากคอมโพเนนต์ที่ส่งเหตุการณ์ เช่น การปิดใช้การวาดการเลื่อนผ่านรายการแบบ Lazy จากนั้นก็วาดการเลื่อนผ่านแยกต่างหากที่ด้านบน / ที่อื่น (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • การเพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
  • เลิกใช้งาน OverscrollConfiguration และ LocalOverscrollConfiguration และเพิ่ม rememberPlatformOverscrollFactory เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนผ่านหน้าจอโดยอัตโนมัติเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้ LocalOverscrollFactory provides null แทน LocalOverscrollConfiguration provides null หากต้องการเปลี่ยนสีเรืองแสง / ระยะห่างจากขอบ ให้ใช้ LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) แทน LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) (Ie71f9, b/255554340, b/234451516)
  • เปลี่ยนพร็อพเพอร์ตี้ effectModifier ใน OverscrollEffect เป็น node: DelegatableNode เพื่อให้สอดคล้องกับ API อื่นๆ (Ic0b46, b/255554340)
  • นํา GlobalAssertions API เวอร์ชันทดลองออก วัตถุประสงค์ของเครื่องมือนี้คือเพื่อเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดู enableAccessibilityChecks() เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)

เวอร์ชัน 1.8.0-alpha05

30 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • รองรับการปรับขนาดข้อความอัตโนมัติ ส่งอินสแตนซ์ AutoSize (เช่น AutoSize.StepBased) ไปยังคอมโพสิชันข้อความที่ชื่นชอบ (เช่น BasicText) แล้วดูว่าขนาดข้อความปรับตามพื้นที่ว่างที่มีอยู่ (Ice7e0, b/139320827)
  • เพิ่ม OverscrollFactory และ LocalOverscrollFactory API เพื่ออนุญาตให้กําหนดค่าการเลื่อนผ่านภายในลําดับชั้น ระบบจะใช้ค่าที่ระบุผ่าน LocalOverscrollFactory เพื่อสร้าง OverscrollEffect โดยค่าเริ่มต้น หากต้องการสร้างและจดจำเอฟเฟกต์จากโรงงานปัจจุบันที่ระบุ ให้ใช้ rememberOverscrollEffect() (I51ca4, b/255554340)

การเปลี่ยนแปลง API

  • แนะนำ CompositionLocal ที่สามารถใช้เพื่อแก้ไขสีของไฮไลต์การป้อนข้อมูลสำเร็จของการป้อนข้อความอัตโนมัติ (I32092)
  • นำ ScrollableDefaults.overscrollEffect ออกแล้ว คุณควรใช้ rememberOverscrollEffect แทน ซึ่งจะสร้างอินสแตนซ์ของการใช้งานการเลื่อนผ่านหน้าจอที่มากเกินไปในปัจจุบันซึ่งมาพร้อมกับ LocalOverscrollFactory (I1651a, b/255554340),(b/234451516)
  • เปิดตัวอินเทอร์เฟซ AutofillManager ใหม่ที่ใช้เพื่อปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ และ Flag isSemanticAutofillEnabled เพื่อเปิดฟีเจอร์ป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484)
  • นำ CombinedClickableNode ออก API เวอร์ชันทดลองนี้แสดงชั่วคราวเพื่อปลดบล็อกงานด้านประสิทธิภาพ แต่ตอนนี้ไม่จําเป็นต้องใช้แล้ว แต่คุณควรใช้ Modifier.combinedClickable โดยตรงเช่นเดียวกับ API ตัวแก้ไขอื่นๆ (I4b658)
  • เพิ่มการโอเวอร์โหลดให้กับ horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager และ VerticalPager โดยรองรับการระบุ OverscrollEffect ที่กำหนดเอง OverscrollEffect ที่ระบุจะรับเหตุการณ์และแสดงผลภายในขอบเขตของคอมโพเนนต์เหล่านี้ โปรดทราบว่าระบบไม่รองรับการวาด OverscrollEffect เดียวกัน 2 ครั้ง คุณจึงวาด 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

  • เพิ่มการเรียกกลับ DelegatableNode#onDensityChange และ DelegatableNode#onLayoutDirectionChange เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลงเหล่านี้ (I04f3e, b/340662451)
  • ตอนนี้ย่อหน้าและ ParagraphIntrinsics จะใช้รายการคำอธิบายประกอบทั้งหมดที่ใช้กับ AnnotatedString ก่อนหน้านี้มีเพียงรายการ SpanStyles เท่านั้น (I12f80)
  • เปิดตัว PointerInputModifierNode#touchBoundsExpansion ซึ่งสามารถใช้เพื่อขยายขอบเขตการสัมผัสของตัวแก้ไขอินพุตเคอร์เซอร์แบบใช้นิ้วเดียว (Iccf02, b/335339283)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ระบบพิจารณาเกณฑ์ตำแหน่งที่ส่งไปยัง AnchoredDraggableDefaults.flingBehavior ไม่ถูกต้องในบางกรณี (Ifdf0d, b/367660226)
  • เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากต้นไม้โหนดระหว่างการฟลิงก์ที่ดำเนินอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการแตะแล้วส่งเหตุการณ์ onPostFling พร้อมความเร็วที่เหลืออย่างถูกต้อง นอกจากนี้ เรายังเปิดตัว Flag NewNestedScrollFlingDispatchingEnabled เพื่อควบคุมลักษณะการทํางานในกรณีที่เกิดการทำงานซ้ำ ระบบจะนำการแจ้งว่าไม่เหมาะสมออกก่อนการเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883)
  • แก้ไขข้อบกพร่องที่ OverscrollEffects ที่ส่งไปยัง Modifier.anchoredDraggable จะได้รับค่า Delta แบบ 2 มิติแทนที่จะเป็น 1 มิติ (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)
  • เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่าภาพสไลด์เพื่อจําลองลักษณะการทํางานของรายการในโปรแกรมเลื่อนหน้าสำหรับบริการการช่วยเหลือพิเศษ (Id354b, b/354109776, b/239672673)
  • นำตัวแก้ไข graphicsLayer ที่ไม่ชัดแจ้งออกจากคอมโพสิชัน BasicText เพิ่ม Flag ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled เวอร์ชันทดลองเพื่อให้เปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเก่าได้ (Ie478d)
  • เพิ่ม Modifier.recalculateWindowInsets() เพื่ออนุญาตให้รายการย่อยในลําดับชั้นใช้ insetsPadding ได้แม้ว่ารายการหลักจะจัดแนวรายการย่อยโดยไม่มี consumeWindowInsets() ก็ตาม (I7f9e4)

การแก้ไขข้อบกพร่อง

  • ใช้การเริ่มการโต้ตอบด้วยท่าทางสัมผัสใน detectDragGestures, รายการที่ลากได้ และรายการที่เลื่อนได้ ตอนนี้หากรายการที่ลากได้ของบุตรหลานยกเลิกการใช้ท่าทางสัมผัส ผู้ปกครองก็มีโอกาสที่จะใช้ท่าทางสัมผัสนั้น ซึ่งช่วยให้การจัดการท่าทางสัมผัสเป็นไปอย่างต่อเนื่องและผสานรวมมากขึ้น (Ic88fe)
  • อัปเดตลักษณะการยกเลิกการปัดในรายการที่เลื่อนได้ ตอนนี้หากองค์ประกอบที่เลื่อนได้พลิ้วและชนขอบเขต ระบบจะส่งผ่านความเร็วของการพลิ้วไปยังองค์ประกอบที่เลื่อนได้ถัดไปในเชนอย่างถูกต้องแทนที่จะขับการพลิ้วต่อไป (I9326a)

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ TextOverflow.StartEllipsis และ TextOverflow.MiddleEllipsis พร้อมใช้งานแล้ว ซึ่งช่วยให้คุณวางจุดไข่ปลาไว้ที่ต้นหรือกลางบรรทัดของข้อความบรรทัดเดียวได้ (I38913, b/185418980)

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.7

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

androidx.compose.foundation:foundation-*:1.7.6 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.6 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขเนื้อหาในบรรทัดของข้อความที่บริการการช่วยเหลือพิเศษมองไม่เห็น
  • แก้ไขปัญหาที่ AndroidEmbeddedExternalSurface รีเซ็ตไม่ถูกต้องและค้างเมื่อนํามาใช้ซ้ำในรายการแบบ Lazy

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.5 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.5 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตรวจสอบว่ารายการที่ปักหมุดไว้ไม่ได้คอมโพสิชันย่อย 2 ครั้งในพื้นที่ระยะห่างจากขอบเนื้อหา (Ic6224)

เวอร์ชัน 1.7.4

16 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.4 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.4 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องในช่องข้อความนานๆ ครั้ง (I475c6, b/313010266)
  • นำ ReusableContentHost ที่รูทของรายการเลย์เอาต์แบบ Lazy ออก ปัญหานี้อาจเป็นสาเหตุที่ทําให้ "การวัดผลที่เรียกใช้บนโหนดที่ปิดใช้งาน" ขัดข้อง (Id6e60)

เวอร์ชัน 1.7.3

2 ตุลาคม 2024

androidx.compose.foundation:foundation-*:1.7.3 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.3 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาการรั่วไหลของหน่วยความจำใน BasicText เมื่อตั้งค่า minLines เป็นค่าที่ไม่ใช่ค่าเริ่มต้น

เวอร์ชัน 1.7.2

18 กันยายน 2024

androidx.compose.foundation:foundation-*:1.7.2 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.2 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเกี่ยวกับรายการที่ลากได้ซึ่งไม่มีเหตุการณ์การกดแป้นลง ซึ่งทำให้การลากดูช้ากว่าปกติ

เวอร์ชัน 1.7.1

10 กันยายน 2024

  • ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android นําอาร์ติแฟกต์ -desktop รายการออกและเพิ่มอาร์ติแฟกต์ -jvmStubs และ -linuxx64Stubs รายการ เป้าหมายเหล่านี้ไม่ได้มีไว้เพื่อใช้งาน แต่เป็นตัวยึดตําแหน่งเพื่อช่วยในการใช้งาน 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 ต่อไปนี้เกิดขึ้นนอกเหนือจากการเปลี่ยนแปลงภายในเพื่อเป็นส่วนหนึ่งของความพยายามนี้
    • เพิ่ม Indication API ใหม่ IndicationNodeFactory ซึ่งส่งผลให้การติดตั้งใช้งานการระบุมีประสิทธิภาพมากขึ้นเมื่อเทียบกับ rememberUpdatedInstance API เวอร์ชันเก่า (เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com
    • ตอนนี้ clickable / combinedClickable / selectable / toggleable ยอมรับพารามิเตอร์ MutableInteractionSource ที่อนุญาตค่า Null แล้ว หากเป็นค่า Null และ Indication ที่ระบุคือ IndicationNodeFactory ระบบจะสร้าง Indication แบบเลื่อนเวลาไว้เมื่อจําเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้ยกระดับและใช้ MutableInteractionSource เราขอแนะนำให้ส่งค่า Null แทนการส่ง remember { MutableInteractionSource() }
    • Indication#rememberUpdatedInstance เลิกใช้งานแล้ว รูปแบบนี้มีบทลงโทษด้านประสิทธิภาพที่สูงและหลีกเลี่ยงไม่ได้ และป้องกันการเพิ่มประสิทธิภาพอื่นๆ คุณควรใช้ IndicationNodeFactory API ใหม่แทน
  • BasicTextField ที่ใช้ TextFieldState นั้นเสถียรแล้วในตอนนี้ เราจึงแนะนำให้เว็บไซต์การโทรทั้งหมดเริ่มย้ายข้อมูลจาก BasicTextField(value, onValueChange) ไปยัง BasicTextField(TextFieldState)
  • เราเลิกใช้งาน ClickableText แล้ว หากต้องการเพิ่มลิงก์ที่คลิกได้ลงในข้อความ ให้ใช้ BasicText กับคำอธิบายประกอบ LinkAnnotation ใหม่ใน AnnotatedString LinkAnnotation กำหนดสไตล์เองตามสถานะของลิงก์ได้ (เช่น โฟกัสอยู่ โฮเวอร์อยู่)
  • ขอแนะนำ ContextualFlowRow และ Enhanced FlowRow/Column กับ MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และการแสดงผลที่ล้น พร้อมเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์มีประสิทธิภาพสูงสุด โดย ContextualFlow* เหมาะสำหรับรายการจํานวนมากที่ใช้การกําหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วน FlowRow และ FlowColumn เหมาะสำหรับรายการจํานวนน้อยที่น้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ใน FlowRow หรือ FlowColumn ซึ่งจะคอมโพสรายการทั้งหมดโดยไม่คำนึงว่าจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่าการเลื่อนออกเป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ไปที่ ContextualFlowRowSample และ FlowRowSample เพื่อดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ (Ib9135, b/293577082)
  • เพิ่มการรองรับภาพเคลื่อนไหวของรายการที่ปรากฏและหายไปใน LazyColumn และ LazyRow ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไข Modifier.animateItemPlacement() เพื่อรองรับภาพเคลื่อนไหวของตําแหน่ง (การจัดเรียงใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองชื่อ Modifier.animateItem() ซึ่งจะช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การแสดง (การค่อยๆ ปรากฏขึ้น) การหายไป (การค่อยๆ หายไป) และการจัดเรียงใหม่ (I2d7f7, b/150812265)
  • รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนแบบเวอร์ชันทดลองโดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback)
  • เราจะแทนที่แหล่งที่มา NestedScroll Drag และ Fling ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมภาพเคลื่อนไหว (Side Effect) และแป้นพิมพ์และเมาส์ (UserInput) ไว้ด้วย
  • ตอนนี้คุณทำเครื่องหมายคำขอ LazyLayout prefetch ว่า "เร่งด่วน" ได้แล้ว ซึ่งหมายความว่าเราคาดว่าจะต้องมีรายการนี้ในเฟรมถัดไปและต้องการละเว้นงบประมาณเฟรมเพื่อให้แน่ใจว่าจะได้ทํางานเพิ่มเติมล่วงหน้า (Id513f)
  • รองรับฟีเจอร์การเขียนด้วยสไตลัสในอุปกรณ์ที่อัปเดตเป็น Android U ขึ้นไป (I002e4)
  • เราได้เลื่อนระดับ API ต่างๆ เป็นเวอร์ชันเสถียรแล้ว
    • การเลื่อนหน้า การยึด การเว้นที่ในหน้าต่าง

เวอร์ชัน 1.7.0-rc01

21 สิงหาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขการถดถอยที่ทำให้เกิดข้อขัดข้องเมื่อโฟกัสองค์ประกอบใดก็ตามภายในองค์ประกอบหลักที่โฟกัสได้ (หรือคลิกได้) และปิดอยู่ (b/317561689)

เวอร์ชัน 1.7.0-beta07

7 สิงหาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-beta07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta07 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ฟังก์ชัน SemanticsNodeInteraction ที่เกี่ยวข้องกับการป้อนข้อความอย่าง performTextReplacement, performTextInput และ performTextClearance จะแสดงข้อผิดพลาดการยืนยันเมื่อเรียกใช้ใน TextFields แบบอ่านอย่างเดียว (I4ae8f)
  • แก้ไขข้อบกพร่องด้านภาพในไฮเปอร์ลิงก์ (I23311)
  • แก้ไขข้อบกพร่องที่ตัวแปรบ contentReceiver ไม่ทำงานกับ IME บางรายการ
  • การสร้างความเร็ว: ป้องกันไม่ให้ค่า NaN แพร่กระจายใน Compose UI และ Foundation

เวอร์ชัน 1.7.0-beta06

24 กรกฎาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-beta06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta06 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.7.0-beta05

10 กรกฎาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-beta05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta05 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขการจัดการค่า Nan ใน SnapFlingBehavior และ Pager

เวอร์ชัน 1.7.0-beta04

26 มิถุนายน 2024

androidx.compose.foundation:foundation-*:1.7.0-beta04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta04 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • หลีกเลี่ยงข้อขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น อักขระ 10,000 ตัว) (8157ab)
  • แก้ไขการวัดข้อความขนาดใหญ่มากที่ทําให้ข้อขัดข้องใน BasicTextField เวอร์ชันใหม่ (6b7575)
  • เปลี่ยนการเปลี่ยนแปลงลักษณะการทํางานในการวัดแถว/คอลัมน์ที่ทําให้การใช้งานข้อความใช้งานไม่ได้ในบางสถานการณ์กลับ (69e8ba)

เวอร์ชัน 1.7.0-beta03

12 มิถุนายน 2024

androidx.compose.foundation:foundation-*:1.7.0-beta03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta03 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.7.0-beta02

29 พฤษภาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม API เวอร์ชันทดลองสําหรับการกําหนดค่าลักษณะการโหลดล่วงหน้าของ LazyGrids ซึ่งคล้ายกับ API เวอร์ชันทดลองที่มีอยู่สําหรับ LazyLists ซึ่งรวมถึงการรองรับการอ่านล่วงหน้าของรายการใน LazyGrids ที่ฝังไว้ เช่นเดียวกับ LazyListPrefetchStrategy ค่าเริ่มต้นของการใช้งานคือการโหลดรายการที่ฝังไว้ 2 รายการแรกของแต่ละตารางกริดล่วงหน้า แต่สามารถกําหนดค่าได้ด้วย LazyGridPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch API ใหม่ (I591c4)
  • เปลี่ยนชื่อ SemanticsProperties.Editable เป็น IsEditable และเปลี่ยน SemanticsPropertyReceiver.editable เป็น val isEditable ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุด้วยช่องข้อความเสมอ (I8acd8)
  • ย้ายค่าเริ่มต้น basicMarquee ไปยังออบเจ็กต์ MarqueeDefaults แล้ว (I12ff6)
  • เปลี่ยนชื่อพารามิเตอร์ basicMarquee delayMillis เป็น repeatDelayMillis (I12ff6)
  • อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย TextLinkStyles ไปยัง TextStyle และนำ TextDefaults ออกจากวัสดุ (I5477b)

การแก้ไขข้อบกพร่อง

  • เปลี่ยนชื่อ LayoutCoordinates.introducesFrameOfReference เป็น LayoutCoordinates.introducesMotionFrameOfReference เพื่อให้สอดคล้องกับวัตถุประสงค์มากขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตาม Flag นั้น (I3a330)
  • นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults แล้ว (I1d8a0)
  • นำ "Marquee" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults แล้ว (Iad4f4)
  • นำ TextLinkStyles ออกจากชั้นเรียน TextStyle แล้ว แต่ TextLinkStyles เป็นส่วนหนึ่งของตัวสร้าง LinkAnntation และเมธอด AnnotatedString.fromHtml (I90b2b)
  • แก้ไขข้อบกพร่องที่ตัวเลื่อนจะหยุดกะทันหันเมื่อเลื่อนไปยังขอบเขตขณะที่อยู่ที่ขอบเขตแล้ว (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 จะเปลี่ยนค่า Delta ของการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations เปลี่ยนชื่อเป็น hasEqualAnnotations แล้ว (I685c0)
  • อัปเดต API สำหรับการรับลิงก์ธีม Material ในข้อความ กล่าวโดยละเอียดคือ นําเมธอดออกจาก TextDefaults เพื่อสร้าง LinkAnnotations ตามธีม และแยกวิเคราะห์ HTML ด้วยลิงก์ตามธีม แต่เพิ่มคลาส TextLinkStyles ที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยังคอมโพสิชันข้อความแทน (I31b93)
  • แทนที่ onDragStarted และ onDragStopped ด้วยคอลแบ็กแบบไม่ระงับ (I59de8)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ทำให้ Pager ขัดข้องเมื่อ contentPadding ใหญ่กว่าข้อจำกัดขาเข้า ตอนนี้ตัวแบ่งหน้าจะบังคับค่าลบที่แสดงผลจาก PageSize เป็น 0 (Iba5d8, b/314008560)

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha08 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มเมนูตามบริบทของคลิกขวาลงใน BasicTextField และ SelectionContainer พร้อมรายการสำหรับการดำเนินการตัด คัดลอก วาง และเลือกทั้งหมด (If8c93, Ia2b49, I6f268)

การเปลี่ยนแปลง API

  • ตอนนี้คุณทำเครื่องหมายคำขอ LazyLayout prefetch ว่า "เร่งด่วน" ได้แล้ว ซึ่งหมายความว่าเราคาดว่าจะต้องมีรายการนี้ในเฟรมถัดไปและต้องการละเว้นงบประมาณเฟรมเพื่อให้แน่ใจว่าจะได้ทํางานเพิ่มเติมล่วงหน้า (Id513f)
  • เปลี่ยนชื่อ isPositionedByParentWithDirectManipulation เป็น introducesFrameOfReference แล้ว โปรดทราบว่าตอนนี้จะมีผลย้อนกลับ ซึ่งหมายความว่าโดยค่าเริ่มต้น LayoutCoordinates ส่วนใหญ่จะแสดงกรอบอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จก็ต่อเมื่ออยู่ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่ระบุกรอบอ้างอิง ให้ใช้ positionInLocalFrameOfReference(...) หรือ positionInLocalLookaheadFrameOfReference จาก LookaheadScope (Ifc5f7)
  • เปลี่ยนชื่อ onClicked เป็น onClick ใน LinkInteractionListener (Iaa35c)
  • เปลี่ยน Lambda การดําเนินการสําหรับ getScrollViewportLength ตามความคิดเห็นของ API Council (Ibc74a)
  • เปลี่ยนชื่อ API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัส (Ica45f, b/327271923)
  • เปลี่ยนชื่อ TextInclusionStrategy.isInside เป็น isIncluded ทำให้ประเภทผลลัพธ์ของ Paragraph/MultiParagraph#getRangeForRect() เป็นประเภทที่ไม่ใช่ Null (I51f26)

การแก้ไขข้อบกพร่อง

  • เพิ่ม "เลือกทั้งหมด" ลงในเมนูตามบริบทของข้อความทั้งหมดใน SelectionContainer (Ib750e, b/240143283)
  • แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนด้วย reverseScrolling=true (I7c59c)
  • แก้ไขปัญหาที่ currentValue ของ AnchoredDraggableState จะเปลี่ยนแปลงเมื่อเข้าใกล้ขอบเขตของรัฐ (Iea30b, b/333846848)

การมีส่วนร่วมจากภายนอก

  • เปลี่ยนชื่อจาก PrefetchExecutor เป็น PrefetchScheduler เพื่อให้สอดคล้องกับความรับผิดชอบมากขึ้น (Ib9154)
  • เพิ่มการรองรับการเรียกข้อมูลรายการล่วงหน้าใน LazyLists ที่ฝังอยู่ (เช่น LazyColumn ที่แสดงผล LazyRows ที่ฝังอยู่) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมที่ลดลงขณะเลื่อนดู LazyLists เหล่านี้ ค่าเริ่มต้นของการใช้งานคือการโหลดรายการที่ฝังไว้ 2 รายการแรกล่วงหน้า แต่คุณควบคุมลักษณะการทํางานนี้ได้ด้วย LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch API ใหม่ (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() ซึ่งจะช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การแสดง (การค่อยๆ ปรากฏขึ้น) การหายไป (การค่อยๆ หายไป) และการจัดเรียงใหม่ (Ib7d12, b/330510929)
  • เพิ่มการรองรับภาพเคลื่อนไหวของรายการที่ปรากฏและหายไปใน LazyVerticalStaggeredGrid และ LazyHorizontalStaggeredGrid ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไข Modifier.animateItemPlacement() เพื่อรองรับภาพเคลื่อนไหวของตําแหน่ง (การจัดเรียงใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองชื่อ Modifier.animateItem() ซึ่งจะช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การแสดง (การค่อยๆ ปรากฏขึ้น) การหายไป (การค่อยๆ หายไป) และการจัดเรียงใหม่ (I69bc9, b/330511290)

การเปลี่ยนแปลง API

  • เพิ่ม ContextMenuColors และ LocalContextMenuTheme ProvidableCompositionLocal ที่เชื่อมโยง คุณแก้ไขสีของเมนูตามบริบทในช่องข้อความและข้อความที่เลือกได้โดยระบุการคอมโพสิชันในเครื่อง (Ifa154)
  • ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะ "กด" นอกเหนือจากการจัดรูปแบบปกติ วางเมาส์เหนือ และโฟกัส (I5f864, b/139312671)
  • แนะนำ ViewConfiguration.HandwritingGestureLineMargin สำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัสการเขียนด้วยลายมือสำหรับ BasicTextField (Ie6e13, b/325660505)
  • นํา DelegatableNode.scrollIntoView ออกสําหรับรุ่น 1.7 เนื่องจากเราไม่มีเวลาทำให้แพลตฟอร์ม API ที่เกี่ยวข้องที่เหลือมีเสถียรภาพ เราจะเปิดตัวฟังก์ชันนี้อีกครั้งในเวอร์ชัน 1.8 (I6cf61, b/333421581, b/332900232)
  • เมื่อค้นหาพิกัดของเลย์เอาต์ ตอนนี้คุณใช้อาร์กิวเมนต์ excludeDirectManipulationOffset เพื่อยกเว้นออฟเซตที่ตั้งค่าโดยเลย์เอาต์หลักซึ่งวางเลย์เอาต์ย่อยโดยใช้ Placeable.PlacementScope.withDirectManipulationPlacement ได้ ในทํานองเดียวกัน เลย์เอาต์ที่เปลี่ยนตําแหน่งองค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้ withDirectManipulationPlacement (เช่น Scroll ซึ่งติดตั้งใช้งานโดยค่าเริ่มต้น) วิธีนี้ช่วยให้ภาพเคลื่อนไหวที่อิงตาม approachLayout ใช้งานได้ง่ายขึ้น เนื่องจากตอนนี้คุณมีตัวเลือกในการแยกแยะว่าจะใช้ออฟเซ็ตใดในการแสดงภาพเคลื่อนไหว และจะใช้อะไรโดยตรงเมื่อตัดสินใจที่จะแสดงภาพเคลื่อนไหว (I60ec7)
  • แนะนำ requestScrollToItem สำหรับ LazyStaggeredGrid ตอนนี้สําหรับการวัดผลแต่ละครั้ง ลูกค้าสามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์ได้โดยเรียกใช้ requestScrollToItem ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่ เว้นแต่จะมีการเรียกใช้ requestScrollToItem (I63983)
  • แนะนำ requestScrollToPage ใน Pager ตอนนี้สําหรับการวัดผลแต่ละครั้ง ลูกค้าสามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์ได้โดยเรียกใช้ requestScrollToPage ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่ เว้นแต่จะมีการเรียกใช้ requestScrollToPage (Ic4213)
  • เปิดตัว requestScrollToItem สำหรับ LazyGrids ตอนนี้สําหรับการวัดผลแต่ละครั้ง ลูกค้าสามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์ได้โดยเรียกใช้ requestScrollToItem ซึ่งจะไม่เปลี่ยนแปลงลักษณะการทำงานที่มีอยู่ เว้นแต่จะมีการเรียกใช้ requestScrollToItem (I0a7a0)
  • มีการทำเครื่องหมาย ClickableText ว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ลงในข้อความ ให้สร้าง AnnotatedString ที่มี LinkAnnotation สอดคล้องกับลิงก์ของคุณ แล้วส่ง AnnotatedString นี้ไปยังคอมโพสิชัน Text (I34d4b, b/323346994)
  • UrlAnnotation เลิกใช้งานแล้ว ให้ใช้ LinkAnnotation.Url แทน หากคุณใช้ธีม Material ให้ใช้ออบเจ็กต์ TextDefaults เพื่อสร้างคำอธิบายประกอบที่มีการใช้ธีม Material (I8d180, b/323346545)
  • เปลี่ยนชื่อ String.parseAsHtml เป็น AnnotatedString.Companion.fromHtml (I43dcd)
  • เพิ่มอาร์กิวเมนต์การจัดสไตล์ (linkStyle, focusedLinkStyle, hoveredLinkStyle) และโปรแกรมรับฟังการโต้ตอบกับลิงก์ลงในเมธอด parseAsHtml เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก <a> วิธีการนี้จะสร้าง LinkAnnotation.Url สําหรับแท็กแต่ละรายการดังกล่าว และส่งออบเจ็กต์การจัดสไตล์และผู้ฟังการโต้ตอบกับลิงก์ไปยังคําอธิบายประกอบแต่ละรายการ (I7c977)
  • ตอนนี้ LinkAnnotation ใช้อาร์กิวเมนต์การจัดสไตล์ตามสถานะและ LinkInteractionListener เพิ่มคำอธิบายประกอบนี้ลงใน AnnotatedString เพื่อรับไฮเปอร์ลิงก์ การส่ง focusedState และ/หรือ hoveredState จะช่วยให้คุณกำหนดการกำหนดค่าภาพสำหรับลิงก์ได้เมื่อโฟกัสและ/หรือวางเมาส์เหนือลิงก์ (I81ce4, b/139312671)
  • นำ Flag ฟีเจอร์สําหรับภาพหน้าจอแบบยาวออกแล้ว (I28648, b/329128246)
  • ตอนนี้ LazyColumn จะแสดงผลส่วนหัวที่ติดแน่นอย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)
  • ปรับปรุง API ทดลองที่เหลือส่วนใหญ่ซึ่งเปิดตัวพร้อมกับ BasicTextField เวอร์ชันใหม่ให้ทำงานได้อย่างเสถียร (I714e2)
  • เพิ่มพารามิเตอร์ textObfuscationCharacter ลงใน BasicSecureTextField ซึ่งควบคุมอักขระที่จะใช้ขณะสร้างความสับสนให้กับเนื้อหา (I0588b)
  • เราจะแทนที่แหล่งที่มา NestedScroll Drag และ Fling ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมภาพเคลื่อนไหว (ผลข้างเคียง) และแป้นพิมพ์และเมาส์ (UserInput) ไว้ด้วย (I40579)
  • แนะนำ LocalBringIntoViewSpec ซึ่งเป็นลักษณะการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มซึ่งใช้กับเลเยอร์ตัวแก้ไขที่เลื่อนได้ (I27aa5, b/317453911)
  • นำ TextFieldCharSequence ออกแล้ว TextFieldBuffer.originalValues แทนที่ด้วย TextFieldBuffer.originalText และ TextFieldBuffer.originalSelection (I2c7d6)
  • ImeOptions.hintLocales ไม่สามารถเป็นค่า Null ได้อีกต่อไป หากต้องการส่งรายการภาษาว่าง โปรดใช้ LocaleList.Empty (Ic5bc4)
  • เปลี่ยนชื่อ getOffsetFractionForPage เป็น getOffsetDistanceInPages แล้ว (Ia05e2)

การแก้ไขข้อบกพร่อง

  • เมื่อรวม InputTransformations เข้ากับ next แล้ว ระบบจะผสาน KeyboardOptions ของ InputTransformations กับ next อย่างเหมาะสมตามตัวเลือกแต่ละรายการโดยใช้วิธีการ KeyboardOptions.merge ใหม่ (Ie5304, b/295951492)
  • ตอนนี้ targetValue ของ AnchoredDraggableState ไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 50% ซึ่งหมายความว่า targetValue จะเปลี่ยนแปลงที่จุดกึ่งกลางระหว่างจุดยึด 2 จุด (I82c2c)

การมีส่วนร่วมจากภายนอก

  • เปลี่ยนชื่อ 2 scroll 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() ซึ่งจะช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 3 ประเภท ได้แก่ การแสดง (การค่อยๆ ปรากฏขึ้น) การหายไป (การค่อยๆ หายไป) และการจัดเรียงใหม่ (I2d7f7, b/150812265)
  • ตอนนี้ลูกค้าของ LazyColumn/LazyRow สามารถเลือกไม่ใช้การบำรุงรักษาดัชนีตามคีย์สําหรับการวัดผลที่กําลังจะมาถึงได้โดยเรียกใช้ LazyListState.requestToScroll ที่ไม่ระงับ (I98036, b/209652366)
  • เพิ่มเมธอด parseAsHtml สำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่มีการทำเครื่องหมายด้วยแท็ก HTML เป็น AnnotatedString ได้ โปรดทราบว่าระบบรองรับแท็กบางรายการเท่านั้น เช่น คุณยังแสดงลิสต์หัวข้อไม่ได้ (I84d3d)
  • รองรับภาพหน้าจอแบบยาวในคอนเทนเนอร์การเลื่อนของเครื่องมือเขียนโดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้อยู่ในขั้นทดลองและอาจจัดการกับบางกรณีอย่างไม่ถูกต้องในขณะนี้ ด้วยเหตุนี้ ระบบจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น หากต้องการเลือกใช้ ให้ตั้งค่า Flag ComposeFeatureFlag_LongScreenshotsEnabled เป็น "จริง" เราจะนำการแจ้งว่า "ไม่รองรับ" นี้ออกก่อนเวอร์ชันเบต้า 1.7 (I2b055, b/329296471)
  • เปิดตัว GraphicsLayer API ใหม่เพื่อเพิ่มความยืดหยุ่นในตำแหน่งและการแสดงผลของอินสแตนซ์ GraphicsLayer และรองรับฟีเจอร์การแสดงผลโดยเนื้อแท้โดยไม่ต้องประสานงานกับการใช้งาน Composable เพื่อระบุอินสแตนซ์ตัวแก้ไข GraphicsLayer

การเปลี่ยนแปลง API

  • ตอนนี้พารามิเตอร์ KeyboardOptions ทั้งหมดมีค่าที่ไม่ระบุโดยค่าเริ่มต้น เพิ่มวิธีการ KeyboardOptions.merge แล้ว
  • เปลี่ยนชื่อ KeyboardOptions.autoCorrect เป็น autoCorrectEnabled และกำหนดให้มีค่า Null ได้ ซึ่ง 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 ว่ามีค่าว่างหรือไม่เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (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 เวอร์ชันทดลองในเครื่องออกสำหรับการจัดสไตล์ไฮเปอร์ลิงก์ (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 และ Use Case อื่นๆ ระดับต่ำของ IME PlatformTextInputTestOverride เลิกใช้งานแล้ว (I862ed, b/322680547)
  • แยก restrictedConstraints() เป็น 2 วิธีการ ได้แก่ fitPrioritizingWidth() และ fitPrioritizingHeight() (I6d7fd)

การมีส่วนร่วมจากภายนอก

  • เพิ่ม API ใหม่ 2 รายการ isLastScrollForward/isLastScrollBackward เพื่อตรวจสอบทิศทางการเลื่อนสำหรับการเลื่อนล่าสุด โดยจะแสดงผลเป็นเท็จหากยังไม่มีการเลื่อน (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การดำเนินการตามความหมายเพื่อให้ส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่เลื่อนในคอมโพสิทไปยังระบบ a11y ได้ 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 2 รายการ (I32659)
  • ขอแนะนํา ContextualFlowRow และ FlowRow/Column ที่ปรับปรุงแล้วพร้อม MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และการแสดงผลที่ล้น พร้อมเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์มีประสิทธิภาพสูงสุด โดย ContextualFlow* เหมาะสำหรับรายการจํานวนมากที่ใช้การกําหนดค่า maxLines ขนาดเล็กและปุ่ม "ดูเพิ่มเติม" แบบไดนามิก +N และ FlowRow และ FlowColumn เหมาะสำหรับรายการจํานวนน้อยที่น้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ใน FlowRow หรือ FlowColumn ซึ่งจะคอมโพสรายการทั้งหมดโดยไม่คำนึงว่าจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ไปที่ ContextualFlowRowSample และ FlowRowSample เพื่อดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ (Ib9135, b/293577082)

การแก้ไขข้อบกพร่อง

  • ภาพเคลื่อนไหวเคอร์เซอร์จะไม่ขอเฟรมระหว่างสถานะเปิดและปิดอีกต่อไป (Ia2253)
  • ตอนนี้ตัวสร้างโค้ดคัดลอกที่เลิกใช้งานของ KeyboardOptions จะคัดลอกพร็อพเพอร์ตี้ทั้งหมดอย่างถูกต้องแล้ว (If12de)

เวอร์ชัน 1.7.0-alpha02

7 กุมภาพันธ์ 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • HorizontalPager, VerticalPager และ PagerState ได้รับการเลื่อนเป็นเวอร์ชันเสถียร (I67660, b/316966909)
  • เพิ่ม LocalTextLinkStyle composition local ที่ให้คุณเปลี่ยนสไตล์ของลิงก์ในข้อความในแอปได้ หากคุณใช้ธีมของคุณเองในแอป คุณควรตั้งค่า composition local นี้ตามธีมของคุณ เมื่อใช้ธีม Material ระบบจะตั้งค่าสีของลิงก์เป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10)
  • เปิดตัวตัวแก้ไข receiveContent ที่ให้นักพัฒนาแอปมีวิธีรับเนื้อหาแบบริชมีเดียใน Jetpack Compose
  • receiveContent ผสานรวมกับ BasicTextField2 เพื่อยอมรับเนื้อหาแบบริชมีเดียที่แป้นพิมพ์ซอฟต์แวร์ให้ หรือผ่านการดำเนินการวางคลิปบอร์ด (I81b72)
  • ในการเปลี่ยนแปลงนี้ เราจะแทนที่ SnapFlingBehavior ด้วย TargetedFlingBehavior ในโปรแกรมเลื่อนหน้าเพื่อปลดล็อกกรณีการใช้งานอื่นๆ และเพิ่มความยืดหยุ่นมากขึ้น (I762ea)
  • การเปลี่ยนแปลงนี้จะทำให้ Snapping API เป็นเวอร์ชันเสถียร นอกจากนี้ เรายังล้างโค้ดการทดสอบบางส่วนและเพิ่มตัวอย่างไปยังการจับคู่ด้วย (Id8da9)
  • แนะนำ TargetedFlingBehavior ซึ่งเป็น FlingBehavior ที่อนุญาตให้เผยแพร่ข้อมูลเกี่ยวกับสถานะของภาพเคลื่อนไหวที่กำลังดำเนินอยู่และระยะเลื่อนเป้าหมาย (I6a207)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ BasicTextField2 จะแสดงเคอร์เซอร์ขณะพิมพ์ต่อไปแม้ว่าจะเลื่อนออกไปนอกมุมมองหรือจะเลื่อนออกไปนอกมุมมองเนื่องจากอินพุต (Ieb856, b/237190748)

การมีส่วนร่วมจากภายนอก

  • เพิ่ม API เวอร์ชันทดลองสําหรับการกําหนดค่าลักษณะการโหลดล่วงหน้าของ LazyList (I022a4)

เวอร์ชัน 1.7.0-alpha01

24 มกราคม 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม Indication API ใหม่ IndicationNodeFactory ซึ่งส่งผลให้การติดตั้งใช้งาน Indication มีประสิทธิภาพมากขึ้นเมื่อเทียบกับ rememberUpdatedInstance API เวอร์ชันเก่า (ซึ่งเลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com
  • ตอนนี้ clickable / combinedClickable / selectable / toggleable ยอมรับพารามิเตอร์ MutableInteractionSource ที่อนุญาตค่า Null แล้ว หากเป็นค่า Null และ Indication ที่ระบุเป็น IndicationNodeFactory ระบบจะสร้าง Indication แบบเลื่อนเวลาไว้เมื่อจําเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากคุณไม่ได้ยกระดับและใช้ MutableInteractionSource เราขอแนะนำให้ส่งค่า Null

การเปลี่ยนแปลง API

  • เปิดตัว DecayAnimation ใน AnchoredDraggable การเปลี่ยนแปลงนี้จะเพิ่มพารามิเตอร์ decayAnimationSpec ลงใน AnchoredDraggable ซึ่งช่วยให้ใช้ภาพเคลื่อนไหวแบบเสื่อมสลายได้เมื่อยึดตามจุดยึดใดจุดหนึ่ง การเปลี่ยนแปลงนี้ยังรวมถึงการเปลี่ยนชื่อ animationSpec ที่มีอยู่เป็น snapAnimationSpec เพื่อช่วยให้คุณเข้าใจกรณีการใช้งานของแต่ละข้อกำหนดเฉพาะ
  • BasicTextField2 พร้อมใช้งานสำหรับการทดสอบ โดยควรมีฟีเจอร์เทียบเท่า BasicTextField และลักษณะการทํางานควรพร้อมใช้งานจริง อย่างไรก็ตาม API นี้ยังอยู่ระหว่างการทดสอบ ก่อนที่จะมีเวอร์ชันที่ใช้งานได้อย่างสมบูรณ์ ระบบจะเปลี่ยนชื่อเป็น BasicTextField และย้ายไปไว้ในแพ็กเกจเดียวกัน
  • เปิดตัวฉบับร่างแรกของ OutputTransformation API สำหรับ BasicTextField2 API นี้มาแทนที่ Use Case ส่วนใหญ่ของ VisualTransformation ใน BasicTextField เวอร์ชันเก่า อย่างไรก็ตาม API นี้ยังไม่สมบูรณ์และบางอย่างอาจทำงานไม่ถูกต้อง แต่เรายินดีรับฟังความคิดเห็นเกี่ยวกับความสามารถในการใช้งาน API สำหรับกรณีการใช้งานของคุณ (aosp/2708848)
  • เปิดตัว LinkAnnotation ที่ช่วยให้เพิ่มลิงก์และรายการที่คลิกได้ในข้อความ ฟีเจอร์ลิงก์ยังไม่สมบูรณ์และจะมีการเปลี่ยนแปลง API เพิ่มเติม
  • เปิดตัวตัวแก้ไข receiveContent ที่ให้นักพัฒนาแอปมีวิธีรับเนื้อหาแบบริชมีเดียใน Jetpack Compose
  • receiveContent ผสานรวมกับ BasicTextField2 เพื่อยอมรับเนื้อหาแบบริชมีเดียที่แป้นพิมพ์ซอฟต์แวร์ให้ หรือผ่านการวางจากคลิปบอร์ด
  • KeyboardOptions.shouldShowKeyboardOnFocus ให้คุณปิดใช้ลักษณะการทำงานเริ่มต้นของ BasicTextField ในการส่งคำขอแป้นพิมพ์ซอฟต์แวร์เมื่อโฟกัส
  • TextInputService และ LocalTextInputService เลิกใช้งานแล้วในตอนนี้ ให้ใช้ PlatformTextInputModifierNode เพื่อผสานรวมกับ IME API ของแพลตฟอร์มโดยตรงแทน (aosp/2862698)
  • Indication#rememberUpdatedInstance เลิกใช้งานแล้ว รูปแบบนี้มีบทลงโทษด้านประสิทธิภาพที่สูงและหลีกเลี่ยงไม่ได้ และป้องกันการเพิ่มประสิทธิภาพอื่นๆ คุณควรใช้ IndicationNodeFactory API ใหม่แทน

การแก้ไขข้อบกพร่อง

  • ตอนนี้ BasicTextField จะตรวจสอบการแมปออฟเซตจำนวนเล็กน้อยก่อนส่ง VisualTransformation วิธีนี้ช่วยจับข้อผิดพลาดในการเขียนโค้ดที่พบบ่อยซึ่งทําให้เกิดข้อยกเว้นที่กู้คืนไม่ได้ในการวัดผลหรือวาดในภายหลัง การโยนข้อผิดพลาดระหว่างการคอมโพสิชันจะทำให้นักพัฒนาแอปเห็นข้อผิดพลาดเหล่านี้ในระหว่างการพัฒนาได้มากขึ้น ซึ่งจะช่วยหลีกเลี่ยงข้อขัดข้องในเวอร์ชันที่ใช้งานจริง (I0fd42)
  • VisualTransformation จะไม่แสดงข้อผิดพลาดหากคุณแสดงผลดัชนีที่ไม่ถูกต้องสําหรับดัชนีที่ไม่ถูกต้อง (b/316401857 )

เวอร์ชัน 1.6

เวอร์ชัน 1.6.8

12 มิถุนายน 2024

androidx.compose.foundation:foundation-*:1.6.8 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.8 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.6.7

1 พฤษภาคม 2024

androidx.compose.foundation:foundation-*:1.6.7 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.7 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.6.6

17 เมษายน 2024

androidx.compose.foundation:foundation-*:1.6.6 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.6 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ในบางเงื่อนไข การเปิด/ปิดแอตทริบิวต์ enabled หรือ readOnly ของ TextField จะทําให้ระบบขัดข้อง (Iae17b)

เวอร์ชัน 1.6.5

3 เมษายน 2024

androidx.compose.foundation:foundation-*:1.6.5 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.5 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • เพิ่มบันทึกการแก้ไขข้อบกพร่องไปยังข้อบกพร่องที่จำลองได้ยากในแถว/คอลัมน์: (b/300280216 และ b/297974033)

เวอร์ชัน 1.6.4

20 มีนาคม 2024

androidx.compose.foundation:foundation-*:1.6.4 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.4 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ท่าทางสัมผัสแบบกดค้างแล้วลากเพื่อเลือกซึ่งย้ายออกจากขอบเขตเลย์เอาต์ของข้อความในเฟรมแรกของการลากจะไม่ทำให้แอปขัดข้องอีกต่อไป (Icdf90, b/325307463)

เวอร์ชัน 1.6.3

6 มีนาคม 2024

androidx.compose.foundation:foundation-*:1.6.3 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.3 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.6.2

21 กุมภาพันธ์ 2024

androidx.compose.foundation:foundation-*:1.6.2 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไข AnimateContentSize รีเซ็ตไม่ถูกต้อง (I07051)
  • แก้ไขปัญหาที่ระบบจะแคชข้อความ intrinsicHeight มากเกินไปในบางกรณี (3cd398, b/217910352)

เวอร์ชัน 1.6.1

7 กุมภาพันธ์ 2024

androidx.compose.foundation:foundation-*:1.6.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขการวัดตารางกริดแบบสลับกันเมื่อเลื่อนเกินขีดจํากัด (bffc39)
  • เพิ่มการตรวจสอบเลย์เอาต์ที่มีมิติข้อมูลขนาดใหญ่ (e74af5)
  • แก้ไขตำแหน่งของรายการขนาด 0 ที่จุดเริ่มต้นของตารางกริดแบบสลับ (785f94)
  • เรียกใช้การเรียกกลับ onRelease ในลําดับเดียวกับ onForgotten (31ce3b)

เวอร์ชัน 1.6.0

24 มกราคม 2024

androidx.compose.foundation:foundation-*:1.6.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.5.0

  • ตัวแก้ไขใหม่ Modifier.anchoredDraggable ที่ปลดล็อกความสามารถในการลากและสร้างภาพเคลื่อนไหวระหว่างชุดจุดยึดที่กำหนดไว้ล่วงหน้า ตัวควบคุมนี้มีไว้เพื่อแทนที่ Modifier.swipeable ดูวิธีใช้และย้ายข้อมูลจาก Modifier.swipeable ในคู่มือการย้ายข้อมูล
  • เพิ่มฟังก์ชันการลากและวางระหว่างแอปและคอมโพเนนต์ โปรดดู DragAndDropTarget, Modifier.dragAndDropSource และ API อื่นๆ เพื่อเริ่มต้นใช้งาน
  • Modifier.draggable2D เป็นแป้นกดร่วมใหม่ที่รองรับการลาก 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง
  • เพิ่ม AndroidExternalSurface และ AndroidEmbeddedExternalSurface เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนโดยแพลตฟอร์มในคอมโพเซอร์ได้ง่ายขึ้น
  • การเปลี่ยนแปลงและการปรับปรุง API ต่างๆ ใน Pager และ snapFlingBehaviour
  • เราได้เลื่อนระดับ API ต่างๆ สำหรับโฟกัส ข้อความ และส่วนแทรกให้เป็น API ที่เสถียรแล้ว

เวอร์ชัน 1.6.0-rc01

10 มกราคม 2024

androidx.compose.foundation:foundation-*:1.6.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-rc01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นําตัวสร้างส่วนขยาย DragAndDropTarget() ออกแล้ว สร้างอินสแตนซ์ใหม่โดยใช้ object: DragAndDropTarget {} (I32318)

เวอร์ชัน 1.6.0-beta03

13 ธันวาคม 2023

androidx.compose.foundation:foundation-*:1.6.0-beta03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-beta03 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องที่ส่งผลกระทบต่อข้อความขนาดใหญ่มากซึ่งวัดด้วยข้อจำกัดแบบไม่จำกัด (I1a7df, b/312294386)
  • PlatformImeOptions เป็นคลาสที่เฉพาะเจาะจงแทนที่จะเป็นอินเทอร์เฟซแล้ว (If40a4)

เวอร์ชัน 1.6.0-beta02

29 พฤศจิกายน 2023

androidx.compose.foundation:foundation-*:1.6.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-beta02 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไข canScroll ไม่อัปเดตหลังจากเลื่อนเพื่อจัดเรียงใหม่เท่านั้น (I60a86)
  • แก้ไขสำหรับ Modifier.animateItemPlacement() และ LookaheadScope หลังจากเลื่อนเล็กน้อย (I3a2b7)

เวอร์ชัน 1.6.0-beta01

15 พฤศจิกายน 2023

androidx.compose.foundation:foundation-*:1.6.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-beta01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ตัวแก้ไข DragAndDropTarget จะรับ DragAndDropTarget ที่รับอย่างชัดแจ้ง และมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชันเริ่มต้น 2 รายการสําหรับ DragAndDropModifierNode 1 รายการสำหรับรับการโอนและอีก 1 รายการสำหรับการโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น Float อัปเดตเอกสารประกอบให้ชัดเจนยิ่งขึ้นเกี่ยวกับ maximumFlingVelocity unity (I8adc7)
  • onDragAndDropStart ใน DragAndDropModifierNode factory เปลี่ยนชื่อเป็น acceptDragAndDropTransfer แล้ว

    เพิ่ม acceptsDragAndDropTransfer ลงใน dragAndDropTarget Modifier เพื่อยอมรับจากเซสชันการลากและวางแล้ว Lambda นี้จะแสดงผล DragAndDropTarget ที่ใช้งานได้หากสนใจเซสชันการลากและวาง เราได้แทนที่ Lambda อื่นๆ สําหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้

    เพิ่มฟังก์ชัน DragAndDropTarget ของโรงงานเพื่อรับจากเซสชันการลากและวาง (Iebf3a)

  • การแสดง startDragImmediately ใน AnchoredDraggable จะให้การควบคุมในการตรวจจับท่าทางลากเมื่อใช้ ซึ่งมีประโยชน์เมื่อวิดเจ็ตแสดงภาพเคลื่อนไหวไปยังจุดยึดเป้าหมาย ดูตัวอย่าง (Ie6d13, b/285139987)

  • ตอนนี้ Foundation Tooltip API เป็น @ExperimentalFoundationApi (I30b0b) แล้ว

  • นำ DragAndDropInfo ออกเนื่องจากตอนนี้ DragAndDropModifierNode.drag จะใช้พารามิเตอร์สำหรับ transferData, ขนาดการตกแต่ง และการตกแต่งแบบลาก DrawScope lambda

    DragAndDropTarget มีเมธอดสําหรับเหตุการณ์การลากและวางที่เฉพาะเจาะจงแทนที่จะเป็นเมธอดนามธรรมเดียว

    onDragAndDropEvent ในฟังก์ชันแฟกทอรีสําหรับ DragAndDropModifierNode ได้เปลี่ยนชื่อเป็น onDragAndDropStart เพื่อสื่อให้เข้าใจได้ดีขึ้นว่า DragAndDropTarget ที่ระบุใช้ได้กับเซสชันการลากและวางที่ระบุเท่านั้น

    ระบบนำ DragAndDropEventType ออกแล้ว (I645b1)

  • เปลี่ยนชื่อ PlatformTextInputModifierNode.runTextInputSession เป็น establishTextInputSession แล้ว (I03cd0)

  • แทนที่ OriginalText ด้วย TextSubstitution (Ifa5a8)

  • เปลี่ยนชื่อ PlatformTextInputModifierNode.textInputSession เป็น runTextInputSession แล้ว (Ie9c6b)

  • รายการย่อยของ SubcomposeLayout (และเลย์เอาต์อย่าง LazyColumn ที่อิงตาม SubcomposeLayout) ซึ่งเก็บไว้เพื่อใช้ซ้ำในอนาคตจะถือว่าปิดใช้งาน เราได้เปิดตัว assertIsDeactivated() test API ใหม่เพื่อทดสอบโหนดดังกล่าว ส่วน API การทดสอบที่เหลือจะกรองโหนดที่ปิดใช้งานออกโดยค่าเริ่มต้น (I2ef84, b/187188981)

  • เปลี่ยนชื่อพารามิเตอร์ clippingEnabled ของ Modifier.magnifier เป็น clip

  • พารามิเตอร์ magnifierCenter ของ Modifier.magnifier เป็นแบบ Null ได้เพื่อรักษาลักษณะการทำงานเริ่มต้นเดิม (I6aa66)

  • ตอนนี้ Material SwipeToReveal API (สําหรับการ์ดและชิป) จะใช้ API ตามช่อง (ตามที่ Compose แนะนํา) แทนอินสแตนซ์ตามคลาสข้อมูลเพื่อสร้างช่องเหล่านั้น การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่ส่งผลต่อการใช้งาน โปรดดูตัวอย่างวิธีใช้ API ใหม่ในเดโมและโค้ดตัวอย่าง (Ia8943)

การแก้ไขข้อบกพร่อง

  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์ BasicText ไม่หดเมื่อ minWidth เปลี่ยนแปลงและ minWidth น้อยกว่าข้อจำกัดการวัดเริ่มต้น maxWidth (Idb19c)
  • เพิ่มการรองรับโปรแกรมแสดงผลสําหรับการไล่สีแบบไล่เฉดใน ArcLine (I4d5bb)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลงระยะขอบหน้าต่าง (Iee695)
  • นําเลเยอร์หลักของ Material ออกสําหรับชิป/ปุ่ม Material3 เนื่องจากการทดสอบประสิทธิภาพแบบไมโครเบนช์มาร์กแสดงประสิทธิภาพที่ดีขึ้นเมื่อไม่มีเลเยอร์นี้ (I55555)

เวอร์ชัน 1.6.0-alpha08

18 ตุลาคม 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha08 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • Modifier.draggable2D เป็นแป้นกดร่วมใหม่ที่รองรับการลาก 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง (Id95f5, b/214412658)

การเปลี่ยนแปลง API

  • Modifier.dragAndDrawSource ได้เปลี่ยนชื่อ lambda onDrawDragShadow เป็น drawDragDecoration และ DragAndDropInfo ได้เปลี่ยนชื่อพารามิเตอร์ size เป็น 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)
  • เพิ่ม Flag ชั่วคราว DisableNonLinearFontScalingInCompose เพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า DisableNonLinearFontScalingInCompose = true ในการทดสอบหากต้องการเวลาในการแก้ไข เราจะนำ Flag นี้ออกใน 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 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • Wrapper แบบคอมโพสได้ใหม่สำหรับ 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 ที่ยอมรับค่าแบบคงที่และฟังก์ชันการเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ BasicTextField API ปัจจุบัน (Ia4882)
  • เพิ่ม Modifier.preferKeepClear() เพื่อทําเครื่องหมายว่าคอมโพสิเบิลเนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API ระดับ 33 ขึ้นไป (Ib51d5, b/297260115)
  • ความเร็วในการปัดในคอมโพเนนต์มุมมอง เช่น ScrollView และ RecyclerView จะจำกัดอยู่ที่ ViewConfiguration.ScaledMaximumFlingVelocity ตอนนี้เครื่องมือเขียนมี 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 ที่ยอมรับค่าแบบคงที่และฟังก์ชันการเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ BasicTextField API ปัจจุบัน (I3f2b8)
  • ตอนนี้ GridItemSpan::currentLineSpan เป็น API ที่เสถียรแล้ว (Icc29c)
  • ตอนนี้ Canvas ที่ยอมรับ contentDescription เป็น API ที่เสถียรแล้ว (Ib3d29)
  • เปิดตัว viewportSize ใน ScrollState ซึ่งเป็นวิธีดูขนาด viewPort ของคอมโพเนนต์ที่ใช้ ScrollState หลังจากการวัด (I8b85a, b/283102682)
  • แก้ไขปัญหาที่การเรียกข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานในมุมมอง (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) ทำงานได้อย่างเสถียรแล้ว
    • ระบบนำ Deprecated Modifier.consumedWindowInsets API ออกแล้ว ให้ใช้ Modifier.consumeWindowInsets แทน (Id72bb)

เวอร์ชัน 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 เป็นจริง และแก้ไขแป้นพิมพ์ที่ไม่แสดงเมื่อเปลี่ยน readOnly จาก true เป็น false ขณะที่มีโฟกัส (I34a19, b/246909589)

เวอร์ชัน 1.6.0-alpha02

26 กรกฎาคม 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปิดตัว PagerLayoutInfo ด้วยข้อมูลที่รวบรวมหลังจากการวัดผลใน Pager นอกจากนี้ เรายังได้เปิดตัว PageInfo ซึ่งเป็นข้อมูลเกี่ยวกับหน้าเว็บที่วัดได้หน้าเดียวใน Pager (Iad003, b/283098900)
  • คําอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตสําหรับคอมโพสิเบิล (I51109)
  • เพิ่ม SemanticsNodeInteraction.requestFocus เพื่อเป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722)
  • PlatformTextInput* API ที่ได้รับการออกแบบใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController และ LocalSoftwareKeyboardController ไม่ได้อยู่ในขั้นทดลองอีกต่อไป ตอนนี้ LocalSoftwareKeyboardController ก็เป็น CompositionLocal อย่างเต็มรูปแบบแล้ว (I4c364)
  • ตอนนี้ Modifier.transformable มีพารามิเตอร์ Pan Delta ใน canPan เพื่อช่วยกำหนดทิศทางของ Pan เพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800)
  • อัปเดตตัวแก้ไข consumeWindowInsets เพื่อขยายซุปเปอร์คลาส AbstractComposeView (Iacd74, b/269479941)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เปิดตัว AnchoredDraggable API ใหม่ใน Foundation สามารถใช้เพื่อสร้างคอมโพเนนต์ที่ลากไปมาระหว่างสถานะที่แยกกัน เช่น ชีตด้านล่างแบบโมดอล API นี้จะมาแทนที่ Swipeable API ของ Material (I4a2ed)

การเปลี่ยนแปลง API

  • การสนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เปิดตัว scrollAnimationSpec เพื่ออนุญาตให้ระบุข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตBringIntoViewCalculatorเป็น BringIntoViewScroller แล้ว (Idb741)
  • เพิ่มประเภท ResourceResolutionException เพื่อรวมรายการที่โยนเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคําอธิบายเส้นทางชิ้นงานที่โหลดไม่สําเร็จ (I19f44, b/230166331, b/278424788)
  • เพิ่มพร็อพเพอร์ตี้และการดำเนินการเชิงความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
  • เปิดตัว BringIntoViewCalculator API ที่สามารถใช้เพื่อปรับแต่งวิธีที่คอมโพเนนต์ เช่น Scrollable ตอบสนองต่อคําขอ bringIntoView เปลี่ยนการโอเวอร์โหลดของ scrollable ให้ยอมรับอินสแตนซ์ของ BringIntoViewCalculator (ไม่บังคับ) (Iaf5af)

การแก้ไขข้อบกพร่อง

  • เพิ่มการตรวจสอบ Lint เพื่อเตือนหากคุณสร้าง MutableInteractionSource ในคอมโพสิชันโดยไม่จดจำ คล้ายกับการตรวจสอบ Lint สำหรับการสร้างสถานะที่เปลี่ยนแปลงได้ / Animatable (I5daae)
  • เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกด้วยการสัมผัสจะขยายตามคำและย่อตามอักขระ (Ic0c6c, b/180639271)
  • เพิ่มอินเทอร์เฟซ FocusTargetModifierNode ที่ใช้สร้าง FocusTarget ที่กำหนดเองได้ (I9790e)

รุ่น 1.5

เวอร์ชัน 1.5.4

18 ตุลาคม 2023

androidx.compose.foundation:foundation-*:1.5.4 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้

เวอร์ชัน 1.5.3

4 ตุลาคม 2023

androidx.compose.foundation:foundation-*:1.5.3 ได้รับการปล่อยแล้ว เวอร์ชันนี้ไม่มีการเปลี่ยนแปลง

รุ่น 1.5.2

27 กันยายน 2023

androidx.compose.foundation:foundation-*:1.5.2 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องในข้อความที่ทําให้เกิดความขัดข้องในบางกรณีเมื่อความหมายไม่ถูกต้อง

รุ่น 1.5.1

6 กันยายน 2023

androidx.compose.foundation:foundation-*:1.5.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.1 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขช่องข้อความที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ readOnly เป็นจริง และแก้ไขแป้นพิมพ์ที่ไม่แสดงเมื่อเปลี่ยน 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 เพื่อลดค่าใช้จ่ายเพิ่มเติมในการคอมโพสิชันเริ่มต้น
  • การปรับปรุงความเสถียรของ Pager แก้ไขข้อบกพร่องจำนวนมากแล้ว
  • ตอนนี้พารามิเตอร์ pageCount อยู่ใน PagerState แทนที่จะเป็นใน Pager

เวอร์ชัน 1.5.0-rc01

26 กรกฎาคม 2023

androidx.compose.foundation:foundation-*:1.5.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • การตรวจสอบที่ไม่บังคับเพื่อแนะนำให้ย้ายข้อมูลการเรียก mutableStateOf() ไปยังประเภทเฉพาะที่เกี่ยวข้องสำหรับองค์ประกอบพื้นฐานมีให้ใช้งาน รหัส Lint ของโปรเจ็กต์คือ AutoboxingStateCreation ก่อนหน้านี้ การตรวจสอบนี้จะเปิดใช้โดยค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ หากต้องการดูคำเตือนนี้ในเครื่องมือแก้ไขของ Android Studio และเอาต์พุตของ Lint ของโปรเจ็กต์ ให้เปลี่ยนระดับความรุนแรงจากข้อมูลเป็นคำเตือน (หรือสูงกว่า) ด้วยการประกาศ warning "AutoboxingStateCreation" ภายในการกำหนดค่า build.gradle หรือ build.gradle.kts ของโมดูลดังที่แสดง (I34f7e)

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

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

androidx.compose.foundation:foundation-*:1.5.0-beta03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-beta03 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

androidx.compose.foundation:foundation-*:1.5.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-beta02 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

androidx.compose.foundation:foundation-*:1.5.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.5.0-beta01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ใช้ PlatformDataProvider เพื่อระบุอัตราการเต้นของหัวใจและจำนวนก้าวรายวัน นำอินเทอร์เฟซ SensorGateway ออกจาก API สาธารณะ (I55b84)

การแก้ไขข้อบกพร่อง

  • ลดการจัดสรรระหว่างการวัดรายการ/ตารางกริด/ฯลฯ แบบ Lazy (Iaf9e2)
  • การจัดสรรที่ลดลงเมื่อใช้สแนปชอต (I65c09)
  • นำการจัดสรรออกจากภาพเคลื่อนไหวสปริง (Ie9431)
  • นำการจัดสรรออกจาก TextLayout (I0fd11) แล้ว
  • นำการจัดสรรหลายรายการในการติดตามความเร็วเคอร์เซอร์ออก (I26bae)

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

androidx.compose.foundation:foundation:1.5.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพแล้วพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • แนะนำ SnapLayoutInfoProvider ที่สามารถใช้กับ LazyGridState (I92134, b/269237141, b/260914964)
  • เพิ่ม Modifier.animateItemPlacement() เวอร์ชันทดลองสำหรับขอบเขตรายการตารางกริดแบบแสดงเฉพาะรายการที่ผู้ใช้เรียกดู คุณสามารถใช้คำสั่งนี้กับรายการเพื่อให้ได้ภาพเคลื่อนไหวการเปลี่ยนแปลงตำแหน่ง/การจัดเรียงใหม่แบบอัตโนมัติ (I4b62d, b/257034719)
  • โปรโมต GridCells.FixedSize เป็นเวอร์ชันเสถียร FixedSize กำหนด LazyGrid โดยที่แต่ละเซลล์มีขนาดที่แน่นอนในแกนตามขวาง โดยพื้นที่ที่เหลือจะกระจายตามการจัดเรียงในแกนตามขวาง (I8542f)
  • เปิดตัวขอบเขตตัวรับ PagerScope สำหรับ Pager และฟังก์ชันยูทิลิตีสําหรับคํานวณออฟเซตหน้าเว็บที่ระบุ (If2577)
  • แนะนำ snapPositionalThreshold เมื่อสร้างลักษณะการแตะเพื่อเลื่อน ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการจับภาพแบบสั้นใน Pager (If8f7f)
  • แทนที่ SnapLayoutInfoProvider.calculateSnappingOffsetBounds ด้วย calculateSnappingOffset แล้ว ในวิธีการใหม่นี้ เราเพียงแค่ขอออฟเซ็ตถัดไปเพื่อใช้ยึด การคำนวณขอบเขตควรดำเนินการที่ระดับการติดตั้งใช้งาน เนื่องจากอาจแตกต่างกันไปตามวิธีที่ต้องการให้เกิดการจับคู่ (I923a4)
  • เราได้เลื่อนระดับ LazyStaggeredGrid API เป็นเวอร์ชันเสถียรแล้ว (I633a5)
  • นำ pageCount ออกจาก Horizontal/VerticalPager ซึ่งควรระบุไว้เมื่อสร้างสถานะ อัปเดต PagerState และ rememberPagerState เพื่อยอมรับpageCount (Ieb52d, b/266965072)
  • นำ pageCount ออกจาก Horizontal/VerticalPager ซึ่งควรระบุไว้เมื่อสร้างสถานะ อัปเดต PagerState และ rememberPagerState เพื่อยอมรับpageCount (Ifa3cb, b/266965072)
  • แนะนำ shortSnapVelocityThreshold ใน SnapFlingBehavior ของ Pager (I7379e, b/275579012)
  • เพิ่ม FlowRowScope และ FlowColumnScope (I54fe2)

การแก้ไขข้อบกพร่อง

  • การเรียกใช้เพื่อรับความหมายของข้อความเมื่อข้อจำกัดมี minWidth และ minHeight จะไม่ขัดข้องอีกต่อไป (Ibd072)
  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงในช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดยคอมโพสิเบิล Dialog (I82551, b/262140644)

เวอร์ชัน 1.5.0-alpha03

19 เมษายน 2023

androidx.compose.foundation:foundation:1.5.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha03 มีการคอมมิตเหล่านี้

เวอร์ชันนี้เปิดใช้สแต็กการแสดงผลข้อความแบบใหม่สำหรับเครื่องมือเขียน สแต็กใหม่ได้รับการเพิ่มประสิทธิภาพและคุณไม่ควรเห็นการเปลี่ยนแปลงที่เห็นได้ชัด

หากเห็นการเปลี่ยนแปลงในข้อความที่แสดงผล คุณสามารถแก้ไขข้อบกพร่องได้โดยตั้งค่า NewTextRendering1_5 = false เพื่อยืนยันความแตกต่างของลักษณะการทำงาน การตั้งค่านี้จะบังคับให้จัดองค์ประกอบใหม่ โปรดรายงานความแตกต่างของลักษณะการทำงานเป็นข้อบกพร่อง

ระบบจะนำ Flag การแก้ไขข้อบกพร่องออกก่อนการเผยแพร่ 1.5 beta01 (Iada23, b/246960758)

การเปลี่ยนแปลง API

  • ทำให้ FlowColumn/FlowRow อยู่ภายในบรรทัด (Idab37)

เวอร์ชัน 1.5.0-alpha02

5 เมษายน 2023

androidx.compose.foundation:foundation:1.5.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการรองรับเซลล์ขนาดคงที่ใน LazyGrid และการจัดเรียงด้วยการจัดเรียงตามแนวทแยง (I83ed9, b/235121277, b/267942510)
  • เพิ่มการรองรับเลนขนาดคงที่ใน LazyStaggeredGrid และการจัดเรียงเลนด้วยการจัดเรียงตามแนวทแยง (I7d519)
  • ตอนนี้คุณสามารถเปิด UrlAnnotation ใน AnnotatedString ผ่านบริการการช่วยเหลือพิเศษ เช่น TalkBack ได้แล้ว (If4d82, b/253292081)
  • เพิ่มInsertTextAtCursorการดำเนินการตามความหมายสําหรับช่องข้อความ (I11ed5)
  • ตอนนี้การดําเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดําเนินการตามความหมายแทนการคลิกที่ช่อง (I6ed05)
  • เพิ่มการรองรับระยะห่าง/การจัดเรียงข้ามแกนโดยใช้ verticalArrangement ใน FlowRow และ horizontalArrangement ใน FlowColumn นอกจากนี้ เรายังนำ verticalAlignment และ horizontalAlignment ระดับบนสุดใน FlowRow/FlowColumn ออกด้วย นักพัฒนาแอปสามารถใช้ Modifier.align แทนได้ วิธีนี้ช่วยลดความสับสนระหว่างรูปแบบการตั้งชื่อของ verticalAlignment กับ verticalArrangement (I87b60, b/268365538)

เวอร์ชัน 1.5.0-alpha01

22 มีนาคม 2023

androidx.compose.foundation:foundation:1.5.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ข้อความและ BasicText ได้รับการแยกส่วนใหม่เพื่อใช้ระบบตัวแก้ไขใหม่ ซึ่งจะทําให้ประสิทธิภาพดีขึ้นอย่างมากในหลายกรณี คุณไม่ควรเห็นการเปลี่ยนแปลงใดๆ (If1d17, b/246961435)
  • เพิ่มการดำเนินการตามความหมาย PerformImeAction เพื่อเรียกการดำเนินการ IME ในโหนดเครื่องมือแก้ไขข้อความ (Ic606f, b/269633506)

การแก้ไขข้อบกพร่อง

  • อัปเดตข้อมูลภายในของ Modifier.hoverable ตัวแก้ไข hoverable จะแสดงในเครื่องมือตรวจสอบก็ต่อเมื่อเปิดใช้เท่านั้น (I82103)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.3

3 พฤษภาคม 2023

androidx.compose.foundation:foundation:1.4.3 และ androidx.compose.foundation:foundation-layout:1.4.3 เผยแพร่โดยไม่มีการเปลี่ยนแปลง (ยกเว้นการอัปเกรดเวอร์ชัน)

เวอร์ชัน 1.4.2

19 เมษายน 2023

androidx.compose.foundation:foundation:1.4.2 และ androidx.compose.foundation:foundation-layout:1.4.2 เผยแพร่แล้ว เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้

เวอร์ชัน 1.4.1

5 เมษายน 2023

androidx.compose.foundation:foundation:1.4.1 และ androidx.compose.foundation:foundation-layout:1.4.1 เผยแพร่แล้ว เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้

เวอร์ชัน 1.4.0

22 มีนาคม 2023

androidx.compose.foundation:foundation:1.4.0 และ androidx.compose.foundation:foundation-layout:1.4.0 เผยแพร่แล้ว เวอร์ชัน 1.4.0 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.3.0

  • เพิ่มการผสานรวมความเข้ากันได้ของอีโมจิลงใน Text และ TextField รวมถึงย่อหน้าระดับล่าง ซึ่งจะเปิดใช้โดยค่าเริ่มต้นเมื่อกําหนดค่า emojicompat
  • EmojiCompat สามารถกําหนดค่าในข้อความที่เฉพาะเจาะจงได้โดยใช้ PlatformParagraphStyle
  • เพิ่มการรองรับการครอบคลุมบรรทัดเต็มใน LazyStaggeredGrid(I28252)
  • เพิ่ม onHover เวอร์ชันทดลองลงใน ClickableText (I6938f)
  • เปิดตัวการโอเวอร์โหลดแบบใหม่เวอร์ชันทดลองสำหรับฟังก์ชัน runComposeUiTest และฟังก์ชัน create*ComposeRule ที่ยอมรับพารามิเตอร์ CoroutineContext ระบบจะใช้บริบทนี้สําหรับการคอมโพสิชันการทดสอบและการเรียกใช้ LaunchedEffect และ rememberCoroutineScope() ทั้งหมดในการคอมโพสิชัน (I10614, b/265177763)
  • ตอนนี้ FlowRow และ FlowColumn มีให้บริการเป็น @ExperimentalFoundationApi ซึ่งช่วยให้คอมโพเนนต์มีเลย์เอาต์ตามแถวและคอลัมน์ที่ยืดหยุ่นมากขึ้น โดยจะแบ่งบรรทัดใหม่หากมีพื้นที่ไม่เพียงพอในแกนหลัก (I3a7b2)
  • Modifier.basicMarquee() พร้อมใช้งานแบบเวอร์ชันทดลองสําหรับการแสดงเนื้อหาด้วยเอฟเฟกต์ข้อความเลื่อน (I2df44, b/139321650)

เวอร์ชัน 1.4.0-rc01

8 มีนาคม 2023

androidx.compose.foundation:foundation:1.4.0-rc01 และ androidx.compose.foundation:foundation-layout:1.4.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.4.0-rc01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปิดตัว PlatformTextInputAdapter API ระดับล่างใหม่สําหรับการสร้างการใช้งานการป้อนข้อความที่กําหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
  • เพิ่มการรองรับเลย์เอาต์แบบกลับหัวใน LazyStaggeredGrid (I3ef4a)

การแก้ไขข้อบกพร่อง

  • ตอนนี้การดำเนินการตามความหมาย 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)
  • นำ modifierElementOf() API ออก โปรดขยายเวลาจาก ModifierNodeElement โดยตรงแทน (Ie6d21)

การแก้ไขข้อบกพร่อง

  • การปรับแถบการเลือกจะเลือกอักขระบางส่วนไม่ได้อีกต่อไป (Idedd1)
  • แก้ไขข้อขัดข้องเมื่อกด Ctrl+Backspace ใน TextField ที่ว่างเปล่า (I0427f, b/244185537)

เวอร์ชัน 1.4.0-beta01

8 กุมภาพันธ์ 2023

androidx.compose.foundation:foundation:1.4.0-beta01 และ androidx.compose.foundation:foundation-layout:1.4.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตั้งแต่เวอร์ชัน 1.3 มีการผสานรวมความเข้ากันได้ของอีโมจิใน Text และ TextField รวมถึงย่อหน้าระดับล่าง ซึ่งจะเปิดใช้โดยค่าเริ่มต้นเมื่อกําหนดค่า emojicompat
  • EmojiCompat สามารถกําหนดค่าในข้อความที่เฉพาะเจาะจงได้โดยใช้ PlatformParagraphStyle

การเปลี่ยนแปลง API

  • เพิ่มการใช้งานทั่วไปของ PinnableContainer API ที่ใช้ใน LazyLayouts ทั้งหมดเพื่อเก็บรายการที่ออกจากการคอมโพสิชัน แต่ยังคงต้องทำงานอยู่ (If45a4)
  • เปลี่ยนชื่อ PinnableContainer.PinnedHandle.unpin() เป็น release() แล้ว (I4667a)

การมีส่วนร่วมจากภายนอก

  • เพิ่มพร็อพเพอร์ตี้ mainAxisItemSpacing ลงใน LazyListLayoutInfo, LazyGridLayoutInfo และ LazyStaggeredGridItemInfo (I52fad)

เวอร์ชัน 1.4.0-alpha05

25 มกราคม 2023

androidx.compose.foundation:foundation:1.4.0-alpha05 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha05 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการครอบคลุมบรรทัดเต็มใน LazyStaggeredGrid (I28252)
  • การเพิ่ม onHover เวอร์ชันทดลองไปยัง ClickableText (I6938f)
  • เปิดตัวการโอเวอร์โหลดแบบใหม่เวอร์ชันทดลองสำหรับฟังก์ชัน runComposeUiTest และฟังก์ชัน create*ComposeRule ที่ยอมรับพารามิเตอร์ CoroutineContext ระบบจะใช้บริบทนี้สําหรับการคอมโพสิชันการทดสอบและการเรียกใช้ LaunchedEffect และ rememberCoroutineScope() ทั้งหมดในการคอมโพสิชัน (I10614, b/265177763)

การเปลี่ยนแปลง API

  • ผสาน API ก่อน/หลังของ OverscrollEffect เข้ากับฟังก์ชัน "ตัวตกแต่ง" applyToScroll และ applyToFling ที่รวมกัน ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนผ่านขอบด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340)
  • ประเภท/Nullability เพิ่มเติมของฟังก์ชันแบบอินไลน์/ฟังก์ชันที่เลิกใช้งานแล้ว (I24f91)
  • API LineBreak และ Hyphens ใน TextStyle ได้รับการอัปเกรดเป็นเวอร์ชันเสถียร (Ic1e1d)

การแก้ไขข้อบกพร่อง

  • ตอนนี้เคอร์เซอร์ในช่องข้อความจะกะพริบต่อไปแม้ว่าจะปิดใช้ภาพเคลื่อนไหวแล้วก็ตาม (I95e70, b/265177763)
  • ตอนนี้ Modifier.basicMarquee จะเคลื่อนไหวแม้ว่าจะปิดใช้ภาพเคลื่อนไหวในการตั้งค่าระบบแล้วก็ตาม (I23389, b/262298306, b/265177763)

การมีส่วนร่วมจากภายนอก

  • ระบบจะไม่เลิกใช้งานเมธอด notifyFocusedRect ใน TextInputSession และ TextInputService อีก (I23a04, b/262648050)

เวอร์ชัน 1.4.0-alpha04

11 มกราคม 2023

androidx.compose.foundation:foundation:1.4.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FlowRow และ FlowColumn มีให้บริการเป็น @ExperimentalFoundationApi ซึ่งช่วยให้คอมโพเนนต์มีเลย์เอาต์ตามแถวและคอลัมน์ที่ยืดหยุ่นมากขึ้น โดยจะแบ่งบรรทัดใหม่หากมีพื้นที่ไม่เพียงพอในแกนหลัก (I3a7b2)
  • Modifier.basicMarquee()พร้อมใช้งานแบบเวอร์ชันทดลองสําหรับการแสดงเนื้อหาด้วยเอฟเฟกต์ข้อความเลื่อน (I2df44, b/139321650)

การเปลี่ยนแปลง API

  • FocusRequesterModifier จะเลิกใช้งานและเปลี่ยนไปใช้ FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • ตอนนี้ AndroidFont constructor ที่มี variationSettings เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวระบุแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)
  • เปิดตัว PinnableContainer api ที่เผยแพร่โดยรายการแบบ Lazy ผ่านคอมโพสิชันในเครื่อง ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่น 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

  • ในการทดสอบ UI โดยใช้กฎการคอมโพสิท ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานระหว่างการเรียกคืน withFrameNanos จนกว่าการเรียกคืนเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทํางานของคอมโพซเมื่อทํางานตามปกติ อย่างไรก็ตาม การทดสอบที่อาศัยลักษณะการทำงานแบบเก่าอาจไม่สําเร็จ ซึ่งควรส่งผลต่อโค้ดที่เรียก withFrameNanos หรือ withFrameMillis โดยตรงเท่านั้น และมีตรรกะนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้
  • เพิ่มพารามิเตอร์ onPerformTraversals: (Long) -> Unit ที่ไม่บังคับลงในคอนสตรัคเตอร์ TestMonotonicFrameClock และฟังก์ชันแฟกทอรีเพื่อเรียกใช้โค้ดหลังจากการเรียกกลับ withFrameNanos แต่ก่อนที่จะดำเนินการโคโรทีนของผู้เรียกต่อ (Idb413, b/254115946, b/222093277, b/255802670)
  • แนะนำการดําเนินการเกี่ยวกับความสามารถในการเข้าถึงหน้าเว็บ: PageUp, PageDown, PageLeft, PageRight โปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้กับ API 29 เท่านั้น (Ida4ab)
  • แนะนำ HorizontalPager และ VerticalPager ซึ่งเป็นวิธีแสดงคอมโพสิเบิลในลักษณะหน้าเว็บ เปิดตัว PagerState เพื่อควบคุม Pager รวมถึงค้นหาข้อมูลเกี่ยวกับสถานะปัจจุบันของ Pager เปิดตัว PageSize ซึ่งเป็นวิธีควบคุมขนาดของหน้าใน Pager ซึ่งสามารถใช้สร้างภาพสไลด์ได้ เปิดตัว PagerSnapDistance ซึ่งเป็นวิธีควบคุมวิธีการทำงานของการยึดในลักษณะการเลื่อนของ Pager (I01120)
  • เปิดตัวการโอเวอร์โหลดใน SnapFlingBehavior.performFling เพื่อช่วยให้คุณเข้าใจว่าระบบจะจัดเรียงการโยนไว้ที่ใด (I569f6)
  • นำ OverscrollEffect#isEnabled ออกแล้ว คุณไม่ต้องจำและตั้งค่า Flag นี้ เพียงไม่ส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนผ่านในกรณีที่ไม่ต้องการให้แสดงการเลื่อนผ่าน (เช่น หาก ScrollableState#canScrollForward/backward ทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085)
  • เพิ่ม ScrollableState#canScrollForward และ ScrollableState#canScrollBackward เพื่อสอบถามว่า ScrollableState มีที่ว่างในการเลื่อนไปทางใดทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วง) ค่าเริ่มต้นจะเป็น "จริง" เพื่อให้เข้ากันได้แบบย้อนหลังกับการใช้งาน ScrollableState ที่มีอยู่ ผู้บริโภคสามารถใช้ข้อมูลนี้เพื่อแสดงให้ผู้ใช้ทราบว่ายังมีพื้นที่ในการเลื่อนอยู่ และยังใช้เพื่อหลีกเลี่ยงการส่งค่า Delta ไปยัง 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() และตารางกริดแบบ Lazy ปัญหานี้เกิดขึ้นในบางเงื่อนไขเมื่อจํานวนรายการใหม่น้อยกว่ารายการก่อนหน้า (I0bcac, b/253195989)

เวอร์ชัน 1.4.0-alpha02

9 พฤศจิกายน 2022

androidx.compose.foundation:foundation:1.4.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.4.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ awaitFirstDown และ waitForUpOrCancellation ยอมรับ PointerEventPass เพื่อให้มีความยืดหยุ่นมากขึ้น (I7579a, b/212091796)
  • เปลี่ยน beyondBoundCount API กลับจาก Lazy* API (I12197)
  • เปิดตัวพารามิเตอร์ใน Lazy 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 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มเมธอดใหม่ awaitEachGesture() สำหรับตัวตรวจจับท่าทาง ซึ่งทำงานคล้ายกับ forEachGesture() แต่การวนซ้ำผ่านท่าทางสัมผัสจะทำงานภายใน AwaitPointerEventScope ทั้งหมด ดังนั้นเหตุการณ์จะไม่สูญหายระหว่างการวนซ้ำ
  • เราได้เลิกใช้งาน forEachGesture() แล้วเพื่อหันมาใช้ awaitEachGesture() เนื่องจาก forEachGesture() อาจทำให้เหตุการณ์สูญหายระหว่างการใช้ท่าทางสัมผัส (Iffc3f, b/251260206)
  • เพิ่ม WindowInsets.imeAnimationSource และ WindowInsets.imeAnimationTarget เพื่อระบุความคืบหน้าของภาพเคลื่อนไหวและดูว่า IME จะอยู่ที่ใดหลังจากภาพเคลื่อนไหวเสร็จสมบูรณ์ (I356f1, b/217770337)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

androidx.compose.foundation:foundation:1.3.1 และ androidx.compose.foundation:foundation-layout:1.3.1 เผยแพร่แล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาด้านประสิทธิภาพใน BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier จะไม่อ่านพิกัดเลย์เอาต์ เว้นแต่จะแนบมา (aosp/2241316)

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

androidx.compose.foundation:foundation:1.3.0 และ androidx.compose.foundation:foundation-layout:1.3.0 เผยแพร่แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0

  • เปิดตัว LazyVerticalStaggeredGrid และ LazyHorizontalStaggeredGrid เวอร์ชันทดลอง
  • เพิ่ม SnapFlingBehavior, rememberSnapFlingBehavior และ API ที่เกี่ยวข้องอื่นๆ เป็นแบบทดลอง
  • ตอนนี้ Modifier.clickable, Modifier.toggleable และ Modifier.selectable จะแสดงภาพกระเพื่อมหากคลิกด้วยแป้นพิมพ์หรือปุ่มบังคับทิศทางบนรีโมตคอนโทรล

เวอร์ชัน 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 ที่ขั้นตอน Approach ใช้เมื่อความเร็วในการเหวี่ยงไม่เพียงพอที่จะลดลง (Iaeb27)
  • เพิ่มขีดกลาง API ใหม่เวอร์ชันทดลองเพื่อรองรับการแบ่งคำอัตโนมัติในข้อความ (Iaa869)

เวอร์ชัน 1.3.0-beta03

21 กันยายน 2022

androidx.compose.foundation:foundation:1.3.0-beta03 และ androidx.compose.foundation:foundation-layout:1.3.0-beta03 เผยแพร่แล้ว เวอร์ชัน 1.3.0-beta03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มตัวเลือกเพื่อปรับแต่งการแบ่งบรรทัดในข้อความ (I86907)
  • ตอนนี้ BringIntoViewResponder สามารถรับขอบเขตล่าสุดของคำขอขณะประมวลผลได้แล้ว (If86a5, b/241591211)
  • เพิ่มการรองรับระยะห่างระหว่างรายการใน Staggered Grid เวอร์ชันทดลอง (I10b82)
  • เพิ่มการเว้นวรรคเนื้อหาใน Staggered Grid เวอร์ชันทดลอง (I342ea)
  • เปลี่ยนอาร์กิวเมนต์ size:IntSize เป็น constraints: Constraints ในเมธอด TextMeasurer.measure เพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525)
  • เพิ่ม Modifier.withConsumedWindowInsets() เพื่อรับ WindowInsets สำหรับใช้นอก windowInsetsPadding
  • เพิ่ม MutableWindowInsets เพื่ออนุญาตให้เปลี่ยน WindowInsets ได้อย่างง่ายดายโดยไม่ต้องจัดองค์ประกอบใหม่ (I7fd28, b/237019262, b/243119659)

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

androidx.compose.foundation:foundation:1.3.0-beta02 และ androidx.compose.foundation:foundation-layout:1.3.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • StaggeredGrid เวอร์ชันเริ่มต้นเวอร์ชันทดลอง (Ia48be)
  • เปลี่ยนชื่อ FocusDirection.In และ FocusDirection.Out เป็น FocusDirection.Enter และ FocusDirection.Exit (Ia4262, b/183746982)
  • เปิดตัวการโอเวอร์โหลด rememberSnapFlingBehavior ที่ให้วิธีเปิดใช้การยึดใน LazyLists ได้อย่างรวดเร็ว (Ifb48a)
  • แทนที่ snapFlingBehavior factory ด้วยคลาส SnapFlingBehavior ที่เฉพาะเจาะจง กำหนดขอบเขตวิธีการ SnapLayoutInfoProvider ให้กับ Density เพื่อให้ผู้ใช้ API แปลง Dp<->Px ได้ง่ายขึ้น (I54a11)
  • อัปเดต LazyLayoutMeasureScope.measure เพื่อแสดงรายการรายการที่วางได้ โดยไฮไลต์ค่าที่แสดงผลซึ่งไม่สามารถเปลี่ยนแปลงได้ (I48b7c)
  • เปิดตัว SnapLayoutInfoProvider ซึ่งใช้ LazyListState เพื่อสร้างอินสแตนซ์ของ SnapLayoutInfoProvider ที่ใช้เปิดใช้สแนป FlingBehavior สำหรับ LazyLists ได้ (I2dd10)

การแก้ไขข้อบกพร่อง

  • ปรับโครงสร้าง AwaitPointerEventScope#awaitLongPressOrCancellation ให้ตรงกับฟังก์ชัน await อื่นๆ (I646e6)

เวอร์ชัน 1.3.0-beta01

24 สิงหาคม 2022

androidx.compose.foundation:foundation:1.3.0-beta01 และ androidx.compose.foundation:foundation-layout:1.3.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นำ pointerPosition ออกจาก OverscrollEffect - เอฟเฟกต์ที่สนใจตำแหน่งเคอร์เซอร์สามารถใช้ Modifier.pointerInput { } ใน effectModifier เพื่อรับตำแหน่งเคอร์เซอร์ปัจจุบันแทน (I9f606, b/241239306)
  • แสดง AwaitPointerEventScope#awaitLongPressOrCancellation เป็นองค์ประกอบพื้นฐานเพิ่มเติมสําหรับการตรวจจับท่าทางที่ซับซ้อนมากขึ้น (I04374, b/181577176)
  • เปิดตัว lazyListSnapLayoutInfoProvider เพื่อเปิดใช้การยึดในรายการแบบ Lazy (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 เวอร์ชันทดลองเพื่อแชร์ตรรกะผู้ให้บริการรายการระหว่างเลย์เอาต์แบบ Lazy (Ic891c)
  • ScrollableDefaults.reverseDirection() ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Iba646)
  • เลิกใช้งาน SemanticsModifier.id และย้ายรหัสเซมาติกส์ไปยัง LayoutInfo.semanticsId แทน (Iac808, b/203559524)
  • checkScrollableContainerConstraints() ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I2c290)
  • Modifier.clipScrollableContainer() ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Ia2b44)
  • เลิกใช้งาน TextInputService.show|hideSoftwareKeyboard โปรดใช้ SoftwareKeyboardController แทนในโค้ดแอปและ TextInputSession ในโค้ดการจัดการ IME (I14e4c, b/183448615)

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

androidx.compose.foundation:foundation:1.3.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.3.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มฟังก์ชันส่วนขยาย drawText ใน DrawScope เพื่อใช้เป็นวิธีวาดข้อความที่มีรูปแบบหลายแบบในคอมโพสิเบิลและตัวแก้ไขที่ทำงานกับ DrawScope เช่น Canvas และ drawBehind (I16a62, b/190787898)

การแก้ไขข้อบกพร่อง

  • ตอนนี้แป้นพิมพ์บนหน้าจอจะซ่อนอยู่เมื่อปิดใช้ช่องข้อความขณะที่โฟกัสอยู่ (I6e3e4, b/237308379)
  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงในเครื่องมือติดตามความเร็ว เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะช่วยให้คำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนไหวก็ตาม (Icea9d, b/216582726, b/223440806, b/227709803)
  • เมื่อองค์ประกอบที่เลื่อนได้มีส่วนย่อยที่โฟกัสอยู่ ตอนนี้องค์ประกอบดังกล่าวจะเลื่อนอย่างถูกต้องเพื่อให้ส่วนย่อยที่โฟกัสอยู่ปรากฏอยู่ในมุมมองเสมอเมื่อขนาดลดลง แม้ว่าจะมีภาพเคลื่อนไหวของขนาดก็ตาม (I80867, b/230756508, b/220119990)
  • แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อล้าง TextField และเติม 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 และตารางกริดได้แล้ว ซึ่งจะช่วยให้คอมโพเนนต์นําองค์ประกอบมาใช้ซ้ำได้อย่างมีประสิทธิภาพมากขึ้น
  • ตอนนี้รายการแบบ Lazy และตารางกริดมีพารามิเตอร์ userScrollEnabled ซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางสัมผัสของผู้ใช้ได้
  • มีการเพิ่ม API ใหม่เวอร์ชันทดลองชื่อ LazyLayout ซึ่งเป็น API ที่เราใช้ในภายในเพื่อขับเคลื่อนรายการแบบ Lazy และตารางกริด
  • OverscrollEffect API เปิดตัวเป็นเวอร์ชันทดลอง คุณสามารถกําหนดเอฟเฟกต์การเลื่อนผ่านที่กําหนดเอง รวมถึงเพิ่มเอฟเฟกต์มาตรฐานของแพลตฟอร์มลงในคอนเทนเนอร์แบบเลื่อนได้ที่กำหนดเอง
  • เราได้เปิดตัว 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 ไปยังแพ็กเกจ Foundation และเปลี่ยนชื่อเป็น LocalOverscrollConfiguration แล้ว (If19fb, b/204650733)
  • ตอนนี้อินเทอร์เฟซในไลบรารีคอมโพสิทสร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
  • เปิดตัว API เวอร์ชันทดลอง checkScrollableContainerConstraints() ซึ่งช่วยให้ตรวจสอบได้ว่าเราไม่ฝังคอนเทนเนอร์ที่เลื่อนได้ คุณสามารถใช้เมื่อสร้างเลย์เอาต์แบบเลื่อนได้แบบ Lazy ของคุณเองผ่าน 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 ของคุณเองซึ่งคล้ายกับที่ LazyColumn ใช้ ซึ่งสามารถกําหนดรายการลิสต์ผ่านการเรียก item/items หลายรายการ (I2d05e, b/228580728)

การแก้ไขข้อบกพร่อง

  • ชี้แจงเอกสารประกอบของ WindowInsets.ime เพื่อระบุว่ามีการรายงานข้อมูลแทรกของ ime ตั้งแต่ API เวอร์ชัน 23 แต่มีเฉพาะข้อมูลเคลื่อนไหวในเวอร์ชัน 30 ขึ้นไป (Ia7fc0, b/230756508)
  • การกดแป้นลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้แอปขัดข้องอีกต่อไป
  • ตอนนี้ DeleteSurroundingTextCommand และ DeleteSurroundingTextInCodePointsCommand กำหนดให้อาร์กิวเมนต์คอนสตรัคเตอร์ต้องไม่เป็นค่าลบ (Ica8e6, b/199919707)

เวอร์ชัน 1.2.0-beta02

18 พฤษภาคม 2022

androidx.compose.foundation:foundation:1.2.0-beta02 และ androidx.compose.foundation:foundation-layout:1.2.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้

  • ความละเอียดแบบอักษรที่ดาวน์โหลดได้ซึ่งไม่เปลี่ยนขนาดเลย์เอาต์ของข้อความหรือ TextField ก่อนหน้านี้จะไม่วาดใหม่ ซึ่งทำให้แบบอักษรแสดงผลไม่ถูกต้อง การแก้ไขข้อบกพร่องนี้ช่วยให้มั่นใจว่าเลย์เอาต์ข้อความจะเรียกให้วาดใหม่เสมอ (b/229727404) (I1d49e, b/229727404)

เวอร์ชัน 1.2.0-beta01

11 พฤษภาคม 2022

androidx.compose.foundation:foundation:1.2.0-beta01 และ androidx.compose.foundation:foundation-layout:1.2.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • นี่เป็นรุ่นเบต้าแรกของ 1.2

การเปลี่ยนแปลง API

  • เพิ่ม BeyondBoundsInterval เวอร์ชันทดลองที่สามารถใช้โดยการติดตั้งใช้งาน LazyList ที่กำหนดเองเมื่อวางเลยขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295)
  • เปลี่ยนชื่อ LineHeightBehavior เป็น LineHeightStyle
  • เปลี่ยนชื่อ LineVerticalAlignment เป็น LineHeightStyle.Alignment
  • เปลี่ยนชื่อ LineHeightTrim เป็น LineHeightStyle.Trim
  • นำค่าคอนสตรัคเตอร์เริ่มต้นออกจาก LineHeightStyle แล้ว (I582bf, b/181155707)
  • เพิ่มค่าเริ่มต้นสำหรับสมาชิกที่ไม่บังคับของอินเทอร์เฟซ LazyLayoutItemProvider (Iba8a0)
  • ใน LazyLayoutItemProvider api ตอนนี้เรามีรายการฟังก์ชันคอมโพสิเบิลที่ยอมรับดัชนีซึ่งง่ายกว่าแทนที่จะใช้ Factory ที่แสดงผล Lambda แบบคอมโพสิเบิลตามดัชนี (Id2196)
  • เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
  • เปลี่ยนชื่อ LazyLayoutItemsProvider.itemsCount เป็น itemCount (Id409c)
  • เพิ่มแปรงลงใน TextStyle และ SpanStyle เพื่อให้วาดข้อความที่มีการไล่ระดับสีได้ (I53869, b/187839528)
  • แอตทริบิวต์ trimFirstLineTop, trimLastLineBottom ของ LineHeightBehavior เปลี่ยนเป็น enum รายการเดียว: LineHeightTrim LineHeightTrim มีสถานะ 4 สถานะที่กําหนดโดยบูลีน 2 รายการ ได้แก่ FirstLineTop, LastLineBottom, ทั้ง 2 อย่าง และไม่มี (Ifc6a5, b/181155707)
  • เพิ่ม LineHeightBehavior ลงใน TextStyle และ ParagraphStyle. LineHeightBehavior เพื่อควบคุมว่าจะใช้ความสูงของบรรทัดกับด้านบนของบรรทัดแรกและด้านล่างของบรรทัดสุดท้ายหรือไม่ และยังกำหนดการจัดแนวบรรทัดในพื้นที่ที่ TextStyle(lineHeight) ระบุไว้ด้วย

    เช่น คุณอาจได้รับลักษณะการทำงานที่คล้ายกับที่ CSS กำหนดผ่าน LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)

  • trimFirstLineTop การกำหนดค่า trimLastLineBottom จะทำงานอย่างถูกต้องก็ต่อเมื่อ includeFontPadding เป็นเท็จเท่านั้น (I97332, b/181155707)

  • เพิ่มตัวแก้ไข imeNestedScroll() แบบทดลองเพื่อให้นักพัฒนาแอปควบคุม IME ผ่านการเลื่อนได้ (I60759)

การแก้ไขข้อบกพร่อง

  • แก้ไขการถดถอยที่ช่องข้อความจะไม่ซ่อนแป้นพิมพ์เมื่อนำออกจากองค์ประกอบขณะที่โฟกัสอยู่ (I7a410, b/230536793, b/225541817)
  • รองรับเครื่องหมายจุดไข่ปลาเมื่อความสูงถูกจำกัดและไม่พอดีกับบรรทัดข้อความทั้งหมด (Ie528c, b/168720622)
  • ตอนนี้ BringIntoViewRequester.bringIntoView จะระงับคำขอเสมอจนกว่าคำขอจะเสร็จสมบูรณ์หรือถูกขัดจังหวะโดยคำขอใหม่ที่ไม่ทับซ้อนกัน ระบบจะจัดคิวคำขอที่ทับซ้อนกัน (I43e7f, b/216790855)
  • การเรียก BringIntoViewRequester.bringIntoView พร้อมกันสำหรับสี่เหลี่ยมผืนผ้าที่ทับซ้อนกันทั้งหมดจะดำเนินการตามคำขอของสี่เหลี่ยมผืนผ้าที่ใหญ่กว่าเท่านั้น (I34be7, b/216790855, b/184760918)
  • เปิด includeFontPadding เริ่มต้น คุณปิด includeFontPadding ได้โดยใช้แอตทริบิวต์ TextStyle.platformTextStyle เราจะเปลี่ยนลักษณะการทำงานเริ่มต้นในเร็วๆ นี้ แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงบรรทัด (aosp/2058653) และแก้ปัญหาTextFieldการตัดข้อความได้ดีขึ้น (I01423, b/171394808)
  • Modifier.bringIntoViewRequester ไม่ได้ใช้ onGloballyPositioned อีกต่อไป (I630f5)

การมีส่วนร่วมจากภายนอก

  • ตอนนี้ MouseInjectionScope.scroll(delta = someDelta) กลับหัวใน Android หากเราเลื่อนแนวตั้ง (หาก someDelta เป็นบวก ระบบจะเลื่อนลง) (Ifb697, b/224992993)

เวอร์ชัน 1.2.0-alpha08

20 เมษายน 2022

androidx.compose.foundation:foundation:1.2.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha08 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha08 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • แสดงน้ำหนักแบบอักษรทั้งหมดที่ใช้ได้สำหรับแบบอักษรของระบบใน Android เมื่อใช้ FontFamily.SansSerif ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทํางาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 เท่านั้น (I380fe, b/156048036, b/226441992)
  • ตอนนี้ Paragraph และ MultiParagraph ยอมรับพารามิเตอร์ข้อจำกัดแล้ว การส่ง Constraints.maxHeight จะไม่มีผลในตอนนี้ แต่จะช่วยให้ทำการคำนวณบางอย่างได้ในอนาคต เช่น การทำให้ข้อความตัดขึ้นลงตามความสูง (I6afee, b/168720622)
  • ตอนนี้ SubcomposeSlotReusePolicy.getSlotsToRetain() ยอมรับคลาสที่คล้ายกับ MutableSet ที่กําหนดเองซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ (Icd314)
  • เลิกใช้งานการบริโภคบางส่วน (ลดลงหรือตำแหน่ง) แล้วในปี PointerInputChange คุณสามารถใช้ consume() เพื่อใช้การเปลี่ยนแปลงทั้งหมดได้ คุณสามารถใช้ isConsumed เพื่อระบุว่ามีการใช้การเปลี่ยนแปลงนี้ก่อนหน้านี้หรือไม่
  • ตอนนี้ PointerInputChange::copy() จะทําสําเนาแบบไม่เจาะลึกเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของ PointerInputChange เมื่อมีการบริโภคสำเนาใดสำเนาหนึ่ง หากต้องการสร้าง PointerInputChange ที่ไม่มีค่า ให้ใช้ตัวสร้างแทน (Ie6be4, b/225669674)
  • เปิดตัว LazyLayout API เวอร์ชันทดลองใหม่ ซึ่งจะช่วยให้คุณสร้างคอมโพเนนต์ของคุณเองได้ เช่น LazyColumn ของ LazyVerticalGrid โปรดทราบว่า API ยังอยู่ในขั้นเริ่มต้นและอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป (Iba2bc, b/166591700)
  • ตอนนี้ AndroidFont ใช้ typefaceLoader เป็นพารามิเตอร์คอนสตรัคเตอร์ (I2c971)
  • ตอนนี้ WindowInsets Companion จะแสดงระดับการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าจะตัดกับหน้าต่างหรือไม่) และขนาดที่เป็นไปได้หากมีอยู่ในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในขณะนี้ (I65182, b/217770337)

เวอร์ชัน 1.2.0-alpha07

6 เมษายน 2022

androidx.compose.foundation:foundation:1.2.0-alpha07 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha07 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha07 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม PinnableParent API ที่อนุญาตให้องค์ประกอบของเลย์เอาต์แบบ Lazy ป้องกันไม่ให้ระบบทิ้งรายการที่คอมโพสิทไว้ในปัจจุบัน (Ibbdd0, b/184670295)
  • ตอนนี้ LazyListLayoutInfo และ LazyGridLayoutInfo มีช่อง beforeContentPadding และ afterContentPadding แล้ว (I3b628, b/200920410)
  • เพิ่ม KeyboardType.Decimal เพื่อเป็นทางเลือกแทน Keyboard.Number สำหรับการใช้ตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363)
  • เพิ่มตัวบ่งชี้แบบอักษร Font(DeviceFontFamilyName) ใหม่เพื่อค้นหาแบบอักษรที่ระบบติดตั้งไว้ในระหว่างเชนแบบอักษรสำรอง (ไม่บังคับ) (I30468, b/219754572)
  • PointerEventType.Scroll และ PointerEvent.scrollDelta เป็น API เวอร์ชันเสถียรแล้ว (I574c5, b/225669674)
  • เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ includeFontPadding ใน TextStyle/ParagraphStyle. includeFontPadding ซึ่งสามารถเปลี่ยนแปลงได้ผ่าน TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) ตัวเลือกนี้เป็นตัวเลือกการกําหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนําออก (If47be, b/171394808)
  • อัปเดต FontFamily.Resolver เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความแบบหนาทั่วทั้งระบบ (I6c1e7)
  • พร็อพเพอร์ตี้ส่วนขยาย consumeWindowInsets ของ ComposeView ช่วยให้นักพัฒนาแอปปิดใช้ WindowInsets ของ Android ได้ วิธีนี้ช่วยให้ ComposeViews แยกกันในลําดับชั้นใช้ WindowInsets แต่ละรายการได้โดยไม่รบกวนกัน (I0ef08, b/220943142)

เวอร์ชัน 1.2.0-alpha06

23 มีนาคม 2022

androidx.compose.foundation:foundation:1.2.0-alpha06 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha06 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha06 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการดำเนินการตามความหมาย RequestFocus เพื่อขอโฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71)
  • เราได้ผสาน FocusOrder เข้ากับ FocusProperties แล้ว และตอนนี้ focusProperties() มีความสามารถทั้งหมดของ focusOrder() FocusOrder และ focusOrder() เลิกใช้งานแล้ว focusOrder() ที่ยอมรับ focusRequester ควรแทนที่ด้วยตัวแก้ไข focusRequester() ร่วมกับ focusProperties() วิธีนี้ช่วยให้ตัวแก้ไขแยกข้อกังวลต่างๆ ได้ดีขึ้น (I601b7)
  • WindowInsets.asPaddingValues(Density) เพิ่มเข้ามาเพื่อให้นักพัฒนาแอปทําการเปลี่ยนรูปแบบได้โดยไม่ต้องอยู่ในองค์ประกอบ (I94c35)
  • อัปเดตการแยกวิเคราะห์รูปภาพที่วาดได้แบบเวกเตอร์เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ VectorPainter หากการวางแนวปัจจุบันเป็น 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 เวอร์ชันทดลองเพื่อดูขอบเขตของสิ่งที่โฟกัสได้สำหรับเด็ก (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • เพิ่ม LazyHorizontalGrid แล้ว (I61ae7, b/191238807)
  • เพิ่ม LazyVerticalGrid API ใหม่เพื่อกําหนดขนาดแกนข้าม (I17723)
  • เพิ่มตัวแก้ไข FocusGroup (I64bc0, b/213508274, b/184670295)

การแก้ไขข้อบกพร่อง

  • WindowInsets.toString() จะแสดงค่าที่ถูกต้องแล้ว (I1585d)

การมีส่วนร่วมจากภายนอก

  • อัปเดตให้ใช้ Kotlinx coroutines 1.6.0 (I3366d)

เวอร์ชัน 1.2.0-alpha04

23 กุมภาพันธ์ 2022

androidx.compose.foundation:foundation:1.2.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • BringIntoViewResponders ไม่จำเป็นต้องส่งคำขอไปยังผู้ตอบระดับบนด้วยตนเองอีกต่อไป แต่ต้องส่งสี่เหลี่ยมผืนผ้าที่ต้องการให้แสดงในมุมมองของผู้ปกครองทันที (I8e66a)
  • รองรับการโหลดแบบอักษรแบบแอซิงค์ในข้อความ (I77057, b/214587005)
  • ตอนนี้ LazyVerticalGrid รองรับ line breaking ก่อนรายการที่มีช่วงไม่พอดีกับในบรรทัดปัจจุบัน (I05c40, b/207462103)
  • เปลี่ยนชื่อ excludeFromSystemGestures เป็น systemGesturesExclusion (I19526)
  • ขณะนี้ LazyVerticalGrid รองรับ reverseLayout แล้ว (I6d7d7, b/215572963, b/211753558)
  • เพิ่มเมธอด WindowInsets.only() เพื่ออนุญาตให้นักพัฒนาแอปรวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486)
  • เพิ่ม ComposableTarget, ComposableTargetMarker และ ComposableOpenTarget ซึ่งช่วยให้รายงานเวลาคอมไพล์ได้เมื่อมีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยังแอปพลิเคชันที่ไม่ได้ออกแบบมาเพื่อใช้งาน

    ในกรณีส่วนใหญ่ ปลั๊กอินคอมไพเลอร์ของ Compose จะอนุมานคำอธิบายประกอบได้ คุณจึงควรใช้คำอธิบายประกอบเหล่านี้โดยตรงในบางกรณีเท่านั้น กรณีที่ไม่สามารถอนุมานได้ ได้แก่ การสร้างและการใช้ Applier ที่กําหนดเอง ฟังก์ชันที่คอมโพสิเบิลแบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์หรือตัวแปรส่วนกลางที่เป็น Lambda ที่คอมโพสิเบิล (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้ ComposeNode หรือฟังก์ชันที่คอมโพสิเบิลที่เกี่ยวข้อง

    สําหรับแอปเพลเยอร์ที่กำหนดเอง ฟังก์ชันแบบคอมโพสิเบิลที่เรียกใช้ ComposeNode หรือ ReusableComposeNode จะต้องเพิ่มแอตทริบิวต์ CompoableTarget สําหรับฟังก์ชันและพารามิเตอร์ LAMBDA ประเภทใดก็ได้แบบคอมโพสิเบิล อย่างไรก็ตาม เราขอแนะนำให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบด้วย ComposableTargetMarker แล้วใช้คำอธิบายประกอบที่มีเครื่องหมายแทนการใช้ ComposableTarget โดยตรง คําอธิบายประกอบแบบคอมโพสิเบิลที่มีเครื่องหมาย ComposableTargetMarker เทียบเท่ากับ ComposbleTarget ที่มีชื่อแบบเต็มของคลาสแอตทริบิวต์เป็นพารามิเตอร์ applier ดูตัวอย่างการใช้ ComposableTargetMarker ได้ที่ anroidx.compose.ui.UiComposable (I38f11)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ระบบอนุญาตให้ส่งออฟเซตการเลื่อนเชิงลบไปยัง LazyGridState.scrollToItem() และ LazyGridState.animateScrollToItem() (I025c6, b/211753558)
  • รองรับการโหลดแบบอักษรแบบไม่พร้อมกันสําหรับ TextField (Icc4bf, b/214587005)

เวอร์ชัน 1.2.0-alpha03

9 กุมภาพันธ์ 2022

androidx.compose.foundation:foundation:1.2.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เราได้เลิกใช้งานเมธอด notifyFocusedRect ใน TextInputSession และ TextInputService แล้ว และจะไม่มีการเรียกใช้ ให้ใช้ BringIntoViewRequester แทน (Ia4302, b/192043120, b/216842427, b/178211874)
  • เปิดใช้ภาพเคลื่อนไหวสำหรับรายการของตารางกริดแบบ Lazy ด้วย Modifier.animateItemPlacement() (Ib6621, b/211753218)
  • ตอนนี้ BringIntoViewRequester จะส่งต่อคําขอไปยังมุมมอง Android ที่โฮสต์ (Ia7a51)
  • FontFamilyResolver พร้อมให้รับชมแล้วผ่าน LocalFontFamilyResolver.current
    • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกการใช้งานการคอมโพสิท
    • ตอนนี้ Paragraph และ MultiParagraph ใช้ FontFamily.Resolver
    • ตอนนี้ TextLayoutResult.layoutInput.fontFamilyResolver มี TextLayoutResult.layoutInput.resourceLoader ซึ่งเป็นรีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ซึ่งเลิกใช้งานแล้ว เนื่องจากไม่มีการใช้อีกต่อไป (Id5a45, b/174162090)
  • เพิ่ม AndroidFont ซึ่งเป็น API ระดับล่างแบบใหม่สำหรับระบุตัวบ่งชี้ทรัพยากรแบบอักษรประเภทใหม่ใน Android เช่น การโหลดแบบอักษรจากแบ็กเอนด์เฉพาะแอป การเลือกหาแบบอักษรที่ติดตั้งไว้ล่วงหน้าในอุปกรณ์ หรือโหลดแบบอักษรจากแหล่งข้อมูลที่ไม่ได้มาจาก Font Factory ปัจจุบัน
    • ขยาย Font.ResourceLoaded API เพื่อรองรับการโหลดแบบไม่บังคับและแบบแอซิงค์ของแบบอักษร ไม่แนะนําให้นักพัฒนาแอปพลิเคชันใช้ API นี้โดยตรง หากต้องการเพิ่มแบบอักษรประเภทใหม่ โปรดดู AndroidFont
    • ฟังก์ชันส่วนขยาย Font.AndroidResourceLoader อนุญาตให้สร้าง Font.ResourceLoader เมื่ออยู่นอกองค์ประกอบ
    • เพิ่มพารามิเตอร์ loadingStrategy ลงในแบบอักษรที่อิงตามทรัพยากรเพื่ออนุญาตให้โหลดแบบไม่พร้อมกันเมื่อแบบอักษรทรัพยากรอ้างอิง XML ของแบบอักษรที่ดาวน์โหลดได้ (Ie5aea, b/174162090)
  • เครื่องมือสร้าง Typeface(FontFamily) เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาทีสำหรับแบบอักษรที่ดาวน์โหลดได้ เมื่อใช้แบบอักษรที่ดาวน์โหลดได้ การเรียกใช้นี้อาจบล็อกเป็นเวลา 10 วินาที แต่ให้ใช้ FontFamilyResolver.preload
      แทน
    • fontResource(FontFamily): Typeface เลิกใช้งานแล้ว ซึ่งก่อนหน้านี้ใช้เพื่อโหลดแบบอักษรล่วงหน้า ซึ่งอาจใช้เวลาถึง 10 วินาทีสำหรับแบบอักษรที่ดาวน์โหลดได้ ให้ใช้ FontFamilyResolver.preload (If8e7c, b/174162090) แทน
  • ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของ LazyVerticalGrid ได้แล้ว - ฟังก์ชัน item/items ใน LazyGridScope ยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้องค์ประกอบรายการใช้ตรรกะการนํากลับมาใช้ใหม่ได้อย่างมีประสิทธิภาพมากขึ้น และนําเนื้อหากลับมาใช้ใหม่เฉพาะระหว่างรายการประเภทคล้ายกันเท่านั้น (I7b355, b/215372836)
  • ตอนนี้ LazyListLayoutInfo และ LazyGridLayoutInfo มีพร็อพเพอร์ตี้ใหม่ ได้แก่ viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการของ LazyColumn/LazyRow ได้แล้ว ฟังก์ชัน item/items ใน LazyListScope ยอมรับพารามิเตอร์ดังกล่าวแล้ว การให้ข้อมูลดังกล่าวจะช่วยให้การคอมโพสิชันรายการใช้ตรรกะการนํากลับมาใช้ใหม่ได้อย่างมีประสิทธิภาพมากขึ้น และนําเนื้อหากลับมาใช้ใหม่เฉพาะระหว่างรายการประเภทคล้ายกันเท่านั้น (I26506)
  • เครื่องมือสร้าง SubcomposeLayoutState ที่รับ maxSlotsToRetainForReuse เลิกใช้งานแล้วในตอนนี้ แต่จะมีคอนสตรคเตอร์ใหม่ที่รับ SubcomposeSlotReusePolicy ซึ่งเป็นอินเทอร์เฟซใหม่ที่ช่วยให้ควบคุมรายละเอียดเพิ่มเติมเกี่ยวกับช่องที่จะเก็บไว้ใช้ซ้ำในอนาคตได้ (I52c4d)
  • เพิ่มตัวแก้ไขสำหรับ 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 ลงในเมธอดที่โอเวอร์โหลดของเมธอดที่มีอยู่โดยไม่มีตรรกะที่ซับซ้อน ซึ่งจะช่วยลดการตรวจสอบการช่วยจํา (เท่ากับ) ที่คอมไพเลอร์สร้างขึ้นสําหรับพารามิเตอร์ทั้งหมดซึ่งซ้ำกันในฟังก์ชันภายในที่เรียกใช้ (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)
  • เพิ่มการเรียกกลับ onSizeChanged ไปยังตัวแก้ไข Magnifier (I6879f)
  • ตอนนี้วิดเจ็ต Magnifier จะแสดงเมื่อลากแฮนเดิลการเลือกใน SelectionContainer (I30b38, b/139320979)

การแก้ไขข้อบกพร่อง

  • แก้ไขTextField แฮนเดิลเคอร์เซอร์ไม่ซ่อนเมื่อเลื่อนออกจากมุมมอง (I14552, b/208883748)

การอัปเดตทรัพยากร Dependency

  • ตอนนี้ขึ้นอยู่กับ Kotlin 1.6.10

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

23 กุมภาพันธ์ 2022

androidx.compose.foundation:foundation:1.1.1 และ androidx.compose.foundation:foundation-layout:1.1.1 เผยแพร่แล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไข NullPointerException ที่ androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • แก้ไขข้อขัดข้องที่เกิดขึ้นจากเนื้อหาในคลิปบอร์ดขณะอ่านจากคลิปบอร์ดใน Android (I06020, b/197769306)
  • แก้ไข RTL ใน LazyVerticalGrid (aosp/1931080, b/207510535)

เวอร์ชัน 1.1.0

9 กุมภาพันธ์ 2022

androidx.compose.foundation:foundation:1.1.0 และ androidx.compose.foundation:foundation-layout:1.1.0 เผยแพร่แล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.0.0

  • การรองรับเอฟเฟกต์การเลื่อนผ่านของ Android 12 อย่างเสถียร
  • การปรับปรุงขนาดเป้าหมายการสัมผัส
  • โปรดทราบว่าสำหรับ Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสของปุ่มจะขยายให้มีขนาดขั้นต่ำ 48x48dp แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กกว่านี้ก็ตาม ซึ่งจะช่วยให้ Compose Material ทำงานในลักษณะเดียวกับคอมโพเนนต์ Material Design เพื่อให้การทำงานสอดคล้องกันหากคุณใช้ทั้ง Views และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจด้วยว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Compose Material คุณจะเป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษสำหรับเป้าหมายการสัมผัส
  • รองรับแถบข้างสำหรับไปยังส่วนต่างๆ อย่างเสถียร
  • เปลี่ยน API เวอร์ชันทดลองจำนวนหนึ่งเป็นเวอร์ชันเสถียร
  • รองรับ Kotlin เวอร์ชันใหม่

เวอร์ชัน 1.1.0-rc03

26 มกราคม 2022

androidx.compose.foundation:foundation:1.1.0-rc03 และ androidx.compose.foundation:foundation-layout:1.1.0-rc03 เผยแพร่แล้ว เวอร์ชัน 1.1.0-rc03 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • อัปเดตเพื่อรองรับ Compose Material 1.1.0-rc03

เวอร์ชัน 1.1.0-rc01

15 ธันวาคม 2021

androidx.compose.foundation:foundation:1.1.0-rc01 และ androidx.compose.foundation:foundation-layout:1.1.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ระบบอนุญาตให้ส่งออฟเซตการเลื่อนเชิงลบไปยัง LazyListState.scrollToItem() และ LazyListState.animateScrollToItem() (Iceb90, b/184252837)
  • แก้ไขข้อบกพร่องที่ทำให้การดำเนินการเลื่อนสำหรับการช่วยเหลือพิเศษหายไป (I7cbfb)

เวอร์ชัน 1.1.0-beta04

1 ธันวาคม 2021

androidx.compose.foundation:foundation:1.1.0-beta04 และ androidx.compose.foundation:foundation-layout:1.1.0-beta04 เผยแพร่แล้ว เวอร์ชัน 1.1.0-beta04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • อัปเดตให้ใช้งานร่วมกับ Kotlin 1.6.0 ได้

การเปลี่ยนแปลง API

  • ล้างข้อมูล Nullability ใน androidx.core.view(I7078a, b/204917439)
  • เพิ่ม API เวอร์ชันทดลองที่อนุญาตให้ใช้ PointerInputchange โดยรวมหรือตรวจสอบว่ามีการเรียกใช้หรือไม่ (I2e59d)
  • แสดงวิดเจ็ต Magnifier เมื่อลากเคอร์เซอร์หรือแถบการเลือกในช่องข้อความ (I5391e, b/203781358)

การแก้ไขข้อบกพร่อง

  • แก้ไขแฮนเดิลข้อความไม่เคลื่อนไหวเมื่อระดับการมองเห็น IME เปลี่ยนแปลง (I25f2e)

เวอร์ชัน 1.1.0-beta03

17 พฤศจิกายน 2021

androidx.compose.foundation:foundation:1.1.0-beta03 และ androidx.compose.foundation:foundation-layout:1.1.0-beta03 เผยแพร่แล้ว เวอร์ชัน 1.1.0-beta03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการรองรับการขยายแนวนอนลงใน LazyVerticalGrid (I7e2fa, b/176758183)
  • เพิ่มความสามารถในการทดลองแสดงภาพเคลื่อนไหวของตำแหน่งรายการในรายการแบบ Lazy เรามีตัวแก้ไขใหม่ภายใน LazyItemScope ที่ชื่อ Modifier.animateItemPlacement() ตัวอย่างการใช้งาน

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • เมื่อคุณระบุคีย์ผ่าน LazyListScope.item หรือ LazyListScope.items ตัวแก้ไขนี้จะเปิดใช้ภาพเคลื่อนไหวการจัดเรียงสินค้าใหม่ นอกจากการจัดเรียงรายการใหม่แล้ว การเปลี่ยนแปลงตำแหน่งอื่นๆ ทั้งหมดที่เกิดจากเหตุการณ์ เช่น การเปลี่ยนแปลงการจัดเรียงหรือการจัดแนว จะมีภาพเคลื่อนไหวด้วย (I59e7b, b/150812265)

เวอร์ชัน 1.1.0-beta02

3 พฤศจิกายน 2021

androidx.compose.foundation:foundation:1.1.0-beta02 และ androidx.compose.foundation:foundation-layout:1.1.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ระบบจะเลื่อนเวลาการเผยแพร่ของ Ripple และตัวบ่งชี้อื่นๆ เฉพาะในกรณีที่อยู่ภายในคอนเทนเนอร์ 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

  • เพิ่มการโอเวอร์โหลดแบบไม่มีรายการย่อยสำหรับเลย์เอาต์ที่มีประสิทธิภาพมากขึ้น (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)

การแก้ไขข้อบกพร่อง

  • แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับเนื้อหาที่เลื่อนได้ (ทั้งแบบ Lazy และแบบไม่ Lazy) เกี่ยวกับการเลื่อน (I6cdb0)

เวอร์ชัน 1.1.0-alpha04

15 กันยายน 2021

androidx.compose.foundation:foundation:1.1.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เลิกใช้งาน performGesture และ GestureScope แล้ว ซึ่งแทนที่ด้วย performTouchInput และ TouchInjectionScope (Ia5f3f, b/190493367)
  • เพิ่ม touchBoundsInRoot เป็น SemanticsNode ซึ่งรวมถึงขนาดเป้าหมายการสัมผัสขั้นต่ำเพื่อให้นักพัฒนาแอปมั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214)

การแก้ไขข้อบกพร่อง

  • เพิ่มการรองรับการเลื่อนแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)

เวอร์ชัน 1.1.0-alpha03

1 กันยายน 2021

androidx.compose.foundation:foundation:1.1.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • อัปเดต Compose 1.1.0-alpha03 ให้ใช้ Kotlin 1.5.30 (I74545)

การเปลี่ยนแปลง API

  • เพิ่มเอฟเฟกต์เรืองแสงสำหรับแถบเลื่อน เพิ่ม 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 ที่ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทางเพื่อใช้พารามิเตอร์ FilterQuality (ไม่บังคับ) ซึ่งมีประโยชน์สำหรับงานศิลปะพิกเซลที่มีไว้เพื่อให้เป็นพิกเซลเมื่อปรับขนาดขึ้นสำหรับงานศิลปะแบบพิกเซล อัปเดตคอมโพสิชัน BitmapPainter + Image ให้ใช้พารามิเตอร์ FilterQuality (ไม่บังคับ) ด้วย (Ie4fb0, b/180311607)
  • ตอนนี้ TextField จะล้างการเลือกเมื่อกดปุ่มย้อนกลับ ซึ่งตรงกับลักษณะการทํางานของ EditText ใน Android (I3ca16, b/174173645)
  • เพิ่มแฮนเดิลเคอร์เซอร์ (I07a82, b/173016579)

การแก้ไขข้อบกพร่อง

  • ตอนนี้การเลื่อนผ่านการดำเนินการตามความหมายสำหรับรายการแบบ Lazy และคอมโพเนนต์การเลื่อนแบบปกติจะมีภาพเคลื่อนไหวแล้ว (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 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ 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 มีการคอมมิตเหล่านี้

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ 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 มีคอมมิตเหล่านี้

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ Kotlin 1.5.30

เวอร์ชัน 1.0.2

1 กันยายน 2021

androidx.compose.foundation:foundation:1.0.2 และ androidx.compose.foundation:foundation-layout:1.0.2 เผยแพร่แล้ว เวอร์ชัน 1.0.2 มีคอมมิตเหล่านี้

อัปเดตเพื่อรองรับรุ่น Compose 1.0.2 Compose 1.0.2 จะยังคงใช้งานร่วมกับ Kotlin 1.5.21 ได้

เวอร์ชัน 1.0.1

4 สิงหาคม 2021

androidx.compose.foundation:foundation:1.0.1 และ androidx.compose.foundation:foundation-layout:1.0.1 เผยแพร่แล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้

การอัปเดตทรัพยากร Dependency

  • อัปเดตให้ใช้ Kotlin 1.5.21

เวอร์ชัน 1.0.0

28 กรกฎาคม 2021

androidx.compose.foundation:foundation:1.0.0 และ androidx.compose.foundation:foundation-layout:1.0.0 เผยแพร่แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้

ฟีเจอร์หลักของ 1.0.0

นี่เป็นเวอร์ชันเสถียรครั้งแรกของ Compose โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเผยแพร่อย่างเป็นทางการของ Compose

ปัญหาที่ทราบ

  • หากคุณใช้ Android Studio Bumblebee Canary 4 หรือ AGP 7.1.0-alpha04/7.1.0-alpha05 คุณอาจพบข้อขัดข้องต่อไปนี้

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

    วิธีแก้ไขคือเพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์ build.gradle ปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP 7.1 เวอร์ชันถัดไป (b/194289155)

เวอร์ชัน 1.0.0-rc02

14 กรกฎาคม 2021

androidx.compose.foundation:foundation:1.0.0-rc02 และ androidx.compose.foundation:foundation-layout:1.0.0-rc02 เผยแพร่แล้ว เวอร์ชัน 1.0.0-rc02 มีการคอมมิตเหล่านี้

  • อัปเดตการแสดงผลเส้นขอบสำหรับรูปร่างทั่วไปเพื่อแก้ไขปัญหาเกี่ยวกับเส้นทางที่กําหนดให้มีมิติข้อมูลคงที่ (aosp/1748871, b/191817116)

เวอร์ชัน 1.0.0-rc01

1 กรกฎาคม 2021

androidx.compose.foundation:foundation:1.0.0-rc01 และ androidx.compose.foundation:foundation-layout:1.0.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription เพื่อการช่วยเหลือพิเศษแล้ว (Ib547c)

การแก้ไขข้อบกพร่อง

  • ปุ่ม การ์ด ช่องทําเครื่องหมาย และ Modifier.clickable(enabled=false) ทั้งหมดที่ปิดใช้จะบล็อกการคลิกไม่ให้ไปยังรายการหลัก (Ic2c3b, b/183908811)

เวอร์ชัน 1.0.0-beta09

16 มิถุนายน 2021

androidx.compose.foundation:foundation:1.0.0-beta09 และ androidx.compose.foundation:foundation-layout:1.0.0-beta09 เผยแพร่แล้ว เวอร์ชัน 1.0.0-beta09 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นำ ManualFrameClock ออกแล้ว หากต้องการควบคุมภาพเคลื่อนไหว ให้ใช้ composeTestRule.mainClock แทน (I3c3e8, b/189951065)
  • เปลี่ยน Role และ LiveRegionMode ที่เป็น enum เป็นคลาสย่อย (Inline Class) ที่มีตัวสร้างแบบ private (Id1890)
  • KeyboardCapitalization เปลี่ยนเป็นคลาสในบรรทัด (Id5a1c)
  • TextOverflow เปลี่ยนเป็นคลาสในบรรทัด (I433af)

การแก้ไขข้อบกพร่อง

  • ตอนนี้เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันสำหรับรายการ LazyColumn/Row ระบบจะรักษาตำแหน่งการเลื่อนตามคีย์ ซึ่งหมายความว่าหากคุณเพิ่ม/นำรายการที่อยู่ก่อนรายการที่แสดงอยู่ออก ระบบจะเก็บรายการที่มีคีย์ที่ระบุไว้เป็นรายการแรกที่แสดง (Id263f, b/184257857)
  • ขณะนี้ค่าคงที่ของคีย์คือ @ExperimentalComposeUiApi โค้ดที่ใช้จะประกาศค่าคงที่แบบส่วนตัวได้ก่อนที่จะมีการสร้างเสถียร (Ia5d48)
  • เพิ่ม IdlingStrategy ลงใน AndroidComposeTestRule ซึ่งเฟรมเวิร์กการทดสอบสามารถใช้เพื่อติดตั้งกลไกทางเลือกเพื่อรอหรือทำให้ไม่มีการดำเนินการ ใช้ AndroidComposeTestRule.setIdlingStrategyFactory() ก่อนเริ่มการทดสอบเพื่อติดตั้งกลยุทธ์ของคุณเอง (I608fa)

เพิ่มกฎโปรไฟล์

รุ่นนี้เพิ่มกฎโปรไฟล์ลงในข้อบังคับการเขียนต่อไปนี้ (I14ed6)

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

กฎโปรไฟล์คืออะไร

  • กฎโปรไฟล์สำหรับไลบรารีจะระบุไว้ในไฟล์ข้อความ baseline-prof.txt ซึ่งอยู่ในไดเรกทอรี src/main หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด โดยที่กฎในกรณีนี้คือรูปแบบสำหรับการจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์ของกฎเหล่านี้เป็นชุดที่ใหญ่กว่ารูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ซึ่งใช้เมื่อใช้ adb shell profman --dump-classes-and-methods ... กฎเหล่านี้มี 2 รูปแบบเพื่อกำหนดเป้าหมายไปยังเมธอดหรือคลาส

  • กฎเมธอดจะมีรูปแบบดังต่อไปนี้

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • และกฎระดับชั้นจะมีรูปแบบดังต่อไปนี้

    <CLASS_DESCRIPTOR>
    
  • โดยที่ <FLAGS> คืออักขระ H, S และ P อย่างน้อย 1 ตัวเพื่อระบุว่าควรแจ้งว่าเมธอดนี้ "มาแรง", "เริ่มต้นใช้งาน" หรือ "หลังเริ่มต้นใช้งาน" หรือไม่

  • <CLASS_DESCRIPTOR> คือตัวบ่งชี้ของคลาสที่เมธอดเป้าหมายอยู่ เช่น คลาส androidx.compose.runtime.SlotTable จะมีตัวบ่งชี้เป็น Landroidx/compose/runtime/SlotTable;

  • <METHOD_SIGNATURE> คือลายเซ็นของเมธอด ซึ่งประกอบด้วยชื่อ ประเภทพารามิเตอร์ และประเภทผลลัพธ์ของเมธอด เช่น เมธอด fun isPlaced(): Boolean ใน LayoutNode มีลายเซ็น isPlaced()Z

  • รูปแบบเหล่านี้อาจมีไวลด์การ์ด (**, * และ ?) เพื่อให้กฎเดียวครอบคลุมเมธอดหรือคลาสหลายรายการ

กฎมีไว้เพื่ออะไร

  • เมธอดที่มี Flag H บ่งบอกว่าเมธอดนี้เป็นเมธอด "ร้อน" และควรคอมไพล์ล่วงหน้า

  • เมธอดที่มี Flag S บ่งบอกว่าเป็นเมธอดที่เรียกใช้เมื่อเริ่มต้นระบบ และควรคอมไพล์ล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นระบบ

  • เมธอดที่มี Flag 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 เป็นคลาสในบรรทัดเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับคำสั่ง when ที่ครอบคลุมเมื่อเพิ่มค่า enum ใหม่ (I2b5eb)
  • เพิ่มระยะหมดเวลาการแตะไปยังรายการที่คลิกได้/เปิด/ปิดได้เพื่อป้องกันไม่ให้แสดงภาพกระเพื่อมขณะเลื่อน/ลาก (Ia2704, b/168524931)
  • พร็อพเพอร์ตี้ ContentDescription และ TextSemantics ไม่ได้เป็นค่าเดี่ยวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานข้อมูลดังกล่าวได้เหมือนที่ผสานสตริงแทนการต่อสตริง รวมถึง API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
  • Modifier.focusModifier() เลิกใช้งานแล้วและแทนที่ด้วย Modifier.focusTarget() (I6c860)
  • คลาสอินไลน์เข้ามาแทนที่ KeyboardType (I73045, b/187055290)
  • แทนที่ FocusState enum ด้วยอินเทอร์เฟซ FocusState (Iccc1a, b/187055290)
  • คลาสอินไลน์จะแทนที่ ImeAction enum (I18be5, b/187055290)
  • ฟังก์ชัน AnnotatedString.withAnnotation เปลี่ยนเป็น ExperimentalTextApi แล้วแทนที่จะเป็น ExperimentalComposeApi (I0cd0a)
    • ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType เปลี่ยนเป็น ExperimentalTextApi แทน ExperimentalComposeApi แล้ว
  • PaddingValues เปลี่ยนเป็น @Stable แล้ว ไม่ใช่ @Immutable (I88c50)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องของการปัดพื้นที่ว่างในข้อความที่ไม่ว่างเปล่าค้างไว้ (I33ab5, b/187437299)
  • แสดงแถบเครื่องมือหลังจากเลือกทั้งหมด (I495d9, b/185919613)
  • แก้ไขสำหรับคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยในแนวทแยง ปัญหานี้เกิดขึ้นได้ง่ายๆ หากคุณมี LazyRow ที่มีรายการการ์ด ตอนนี้ระบบจะไม่ตัดเงา (Icb635, b/186318448)
  • แก้ปัญหาที่บางครั้งการกระเพื่อม / ตัวบ่งชี้อื่นๆ จะค้างจากการคลิกค้างเมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
  • ตอนนี้ detectDragGesures, detectVerticalGestures และ detectHorizontalGestures จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติโดยไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ใน callback ของ 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 ที่ส่งผลต่อแถว/คอลัมน์โดยใช้การจัดเรียงแบบ 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)
  • เพิ่ม CollectionInfo และ CollectionItemInfo Accessibility API ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
  • เพิ่ม SemanticsActions.ScrollToIndex เพื่อเลื่อนรายการที่มีรายการที่จัดทําดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และ SemanticsProperties.IndexForKey เพื่อดูดัชนีของรายการในรายการที่มีรายการที่มีคีย์ LazyList จะใช้การดำเนินการทั้ง 2 รายการ
    • เพิ่ม 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)
  • เพิ่ม LocalSoftwareKeyboardController composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardController composition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน Text Field (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 เบต้า

การเปลี่ยนแปลง API

  • เพิ่มการเรียกกลับ onStart ลงใน detectDragGestures แล้ว (I67269, b/179995594)
  • ตัวแก้ไขสำหรับการปรับขนาดตามค่าอินทรีย์ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I15744)
  • นำการยืนยัน dp ออก (I798d2)
  • นำการเรียกกลับ SoftwareKeyboardController ออกจากช่องข้อความทั้งหมดเพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)
  • MeasureBlocks ได้เปลี่ยนชื่อเป็น MeasurePolicy ซึ่งเป็นอินเทอร์เฟซที่ใช้งานง่าย อัปเดต / ลดความซับซ้อนของ Layout API เพื่อใช้ MeasurePolicy (Icab48, b/167662468, b/156751158)
  • แทนที่ InteractionState ด้วย [Mutable]InteractionSource แล้ว
    • อินเทอร์เฟซมีหน้าที่ส่ง / รวบรวมเหตุการณ์การโต้ตอบ
    • ใช้ interactionSource = remember { MutableInteractionSource() } แทนการส่ง interactionState = remember { InteractionState() } ไปยังคอมโพเนนต์ เช่น Button และ Modifier.clickable()
    • แทนที่จะใช้ Interaction.Pressed in interactionState คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource เช่น InteractionSource.collectIsPressedAsState()
    • สําหรับ Use Case ที่ซับซ้อน คุณสามารถใช้ 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 จำเป็นต้องระบุแล้ว ไม่ใช่แค่ไม่บังคับ

    การเปลี่ยนแปลงนี้จะช่วยขจัดข้อผิดพลาดประเภทที่อาจเกิดขึ้นสำหรับประเภทที่ไม่ใช่ Nullable ซึ่งไม่ได้ระบุ Factory เริ่มต้น ก่อนหน้านี้การดำเนินการนี้จะให้ค่าอ้างอิง Null สำหรับประเภทที่ไม่ใช่ Null

    สําหรับประเภทที่อนุญาตค่า Null ให้ลองระบุ { null } เป็นฟีเจอร์เริ่มต้น

    เราไม่แนะนําให้ใช้ตัวแปรที่เก็บข้อมูลในเครื่องกับประเภทที่ไม่ใช่ Null เว้นแต่จะสามารถระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม defaultFactory lambda ควรแสดงข้อยกเว้น อย่างไรก็ตาม การยกเว้นข้อยกเว้นหมายความว่าผู้ใช้ภาษาท้องถิ่นจะมีความเกี่ยวข้องโดยนัยกับภาษาท้องถิ่นที่ระบุ ซึ่งระบบประเภทไม่ได้บังคับใช้ (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() จะแสดงด้วย Int (I81298)

  • เปลี่ยนแพ็กเกจของเมธอด smoothScrollBy และ scrollBy เป็น androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • FlingConfig ได้เปลี่ยนชื่อเป็น FlingBehavior แล้ว ซึ่งตอนนี้อนุญาตให้ปรับแต่งภาพเคลื่อนไหวแบบหยุดชั่วคราวแทนการยุบที่กำหนดไว้ล่วงหน้า (I02b86, b/175294473)

  • เปลี่ยนชื่อตัวแก้ไขขนาด เปลี่ยนชื่อ Modifier.width/height/size เป็น requiredWidth/requiredHeight/requiredSize เปลี่ยนชื่อ Modifier.preferredWidth/preferredHeight/preferredSize เป็น width/height/size (I5b414)

  • เปลี่ยนชื่อ defaultMinSizeConstraints เป็น defaultMinSize (I4eaae)

  • Modifier.tapGestureFilter ถูกนําออกแล้ว ให้ใช้ Modifier.pointerInput { detectTapGestures(...) } แทน (I266ed, b/175294473)

  • นำการบริโภคบางส่วนออกจากระบบอินพุตด้วยเคอร์เซอร์ วิธีที่เราแนะนำในการจัดการการบริโภคบางส่วนคือ Modifier.nestedScroll (Ie9c9b)

  • การวางแนวย้ายไปอยู่ในแพ็กเกจ Foundation แล้ว ย้าย VelocityTracker จาก ui.gesture ไปยัง ui.input.pointer แล้ว (Iff4a8, b/175294473)

  • AnimationClockObservable และคลาสย่อยถูกนําออกแล้ว ระบบได้นำ AnimatedFloat ออกแล้ว (Icde52, b/177457083)

  • ตอนนี้ drawerState.open() และ drawerState.close() เป็นฟังก์ชันที่หยุดชั่วคราว ใช้ rememberCoroutineScope() เพื่อรับขอบเขตของคอมโพสิชันเพื่อเรียกใช้ (I16f60, b/175294473)

  • เปลี่ยนชื่อ Providers เป็น CompositionLocalProvider แล้ว

    • ตัวสร้างองค์ประกอบไม่ยอมรับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
    • 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 ต้องใช้คีย์การจดจำเพื่อระบุว่าควรรีสตาร์ทโคโริวทีนการตรวจหาการป้อนข้อมูลด้วยเคอร์เซอร์เมื่อใดสำหรับข้อกําหนดใหม่ (I849cd)
  • การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความป้อนข้อมูลและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตําแหน่งในช่องข้อความ (Iab803)
  • เพิ่ม PaddingValues.Absolute แล้ว ซึ่งสามารถใช้ใน API ที่ยอมรับ PaddingValues (Ia5f30)
  • onImeActionPerformed เลิกใช้งานแล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
  • เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ ImageBitmap และ ImageVector มากขึ้น และเพื่อให้สอดคล้องกับ VectorPainter (Iba381, b/174565889)
  • API การทดสอบสตริงย่อยที่ดีขึ้นโดยใช้สตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
  • เปิดตัวองค์ประกอบ InfiniteAnimationPolicy บริบท coroutine ที่จะใช้กับภาพเคลื่อนไหวแบบไม่มีสิ้นสุด โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบาย ยกเว้นเมื่อทำการทดสอบด้วย ComposeTestRule (I50ec4, b/151940543)
  • ตอนนี้ Animatable.snapTo และ Animatable.stop เป็นฟังก์ชันที่หยุดทำงานแล้ว (If4288)
  • ComponentActivity.setContent ได้ย้ายไปอยู่ใน androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose (Icf416)
  • เราได้นําเมธอดการจัดโครงสร้างใหม่และ copy() ออกจากคลาสหลายคลาสที่ไม่ค่อยได้ใช้ (I26702, b/178659281)
  • เพิ่มการรองรับคีย์ที่กำหนดเองสำหรับ LazyColumn/LazyRow ซึ่งจะช่วยให้เราจัดการการสั่งซื้อสินค้าอีกครั้งได้อย่างชาญฉลาดยิ่งขึ้น ดังนั้นสถานะที่เก็บไว้ในบล็อก remember {} จะย้ายไปพร้อมกับรายการเมื่อคุณจัดเรียงองค์ประกอบใหม่หรือนำรายการออกจากตรงกลาง

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • เปลี่ยน Indication#createInstance เป็น @Composable และเปลี่ยน LocalIndication ให้ประกอบด้วย Indication ไม่ใช่ () -> Indication (I5eeea, b/157150564)

  • แทนที่ Constraints.enforce ด้วย Constraints.constrain แล้ว (I8b8ea)

  • เลิกใช้งาน loadFontResource แล้ว ให้ใช้ fontResource แทน ระบบเลิกใช้งาน imageResource, loadImageResource, vectorResource และ loadVectorResource แล้ว ใช้ painterResource แทน (I6b809)

  • ตอนนี้ Semantics ของ ScrollAxisRange ใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)

  • เพิ่มความหมายของ EditableText เพื่อทําเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษ และวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบความหมาย (I8e07a)

  • ตอนนี้ Modifier.clickable ไม่รองรับการคลิก 2 ครั้งและการคลิกค้างไว้ ใช้ Modifier.combinedClickable เพื่อให้ได้ฟังก์ชันการทำงานนี้ (Iafad1)

  • เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)

  • IntBounds เปลี่ยนชื่อเป็น IntRect และปรับปรุง API แล้ว (I1f6ff)

  • เลิกใช้งาน Modifier.dragGestureFilter แล้ว ให้ใช้ Modifier.pointerInput { detectDragGestures (...)} แทน หรือใช้ Modifier.draggable สำหรับการลากในแนวแกนเดียว (I0ba93, b/175294473)

  • เปลี่ยนชื่อ "ภาพพักหน้าจอ" ให้ตรงกับ "ภาพพักหน้าจอ" -> เปลี่ยนชื่อ CompositionLocal เดิมองค์ประกอบรอบข้างมีชื่อว่า AmbientFoo แต่ตอนนี้ CompositionLocals มีชื่อว่า LocalFoo (I2d55d)

  • ย้ายการเลือกไปยังมูลนิธิแล้ว (I7892b)

  • เราจะนําคอมโพสิเบิล savedInstanceState { 0 } ออกในลักษณะเดียวกับที่เรานําคอมโพสิเบิล state { 0 } ออกก่อนหน้านี้และตอนนี้ส่งเสริมให้ใช้คอมโพสิเบิล remember { mutableStateOf(0) } คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน ซึ่งจะบันทึกและกู้คืนโดยอัตโนมัติหากประเภทที่ใช้ภายใน MutableState จัดเก็บไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมบันทึกที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์ stateSaver การใช้งานจะมีลักษณะดังนี้ val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • เพิ่มความหมายของรหัสผ่านสำหรับการช่วยเหลือพิเศษ (I231ce)

  • เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทําเครื่องหมายแถบความคืบหน้าแบบไม่แน่นอนสำหรับการช่วยเหลือพิเศษ (I6fe05)

  • ตอนนี้เวลาเล่นในภาพเคลื่อนไหวไม่ได้กำหนดเป็นนาโนวินาทีแล้ว (If776a)

  • @ComposableContract เลิกใช้งานแล้วเพื่อใช้คำอธิบายประกอบที่เฉพาะเจาะจงมากขึ้น 3 รายการ

    @ComposableContract(restartable = false) เปลี่ยนเป็น @NonRestartableComposable @ComposableContract(readonly = true) เปลี่ยนเป็น @ReadOnlyComposable @ComposableContract(preventCapture = true) เปลี่ยนเป็น @DisallowComposableCalls นำ @ComposableContract(tracked = true) ออกแล้ว (I60a9d)

  • เราได้เลิกใช้งานยูทิลิตี emptyContent() และ (@Composable () -> Unit).orEmpty() เนื่องจากไม่มีผลกระทบหรือคุณค่าเชิงบวกต่อประสิทธิภาพอีกต่อไป (I0484d)

  • ตอนนี้คุณปิดเครื่องมือจัดเรียงใหม่ได้แล้ว ตัวจัดเรียงใหม่แบบปิดจะจัดเรียงใหม่ต่อไปจนกว่าโคโริวทีนย่อยของการจัดเรียงจะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อไม่ให้สับสนกับ close (Ib6d76)

  • API ที่เกี่ยวข้องกับ LazyVerticalGrid มีสถานะเป็นเวอร์ชันทดลอง (Ia53e3, b/178519862)

  • เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปไว้ในแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)

  • เราได้เปลี่ยนชื่อ RestorableStateHolder เป็น SaveableStateHolder และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable เปลี่ยนชื่อเมธอดภายใน RestorableStateProvider เป็น SaveableStateProvider ระบบนำประเภททั่วไปออกแล้ว คุณจึงส่ง Any เป็นคีย์ได้ ไม่จำเป็นต้องใช้คำอธิบายประกอบเวอร์ชันทดลองอีกต่อไป (I0902e, b/174598702)

  • ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)

  • เปลี่ยนชื่ออาร์ติแฟกต์ androidx:compose:runtime:runtime-saved-instance-state เป็น androidx:compose:runtime:runtime-saveable (I6dcac)

  • ระบบจะลบ API จำนวนมากที่เลิกใช้งานไปนานแล้วในแพ็กเกจ UI (I2f2dc)

  • อาร์ติแฟกต์ compose:runtime-dispatch เลิกใช้งานแล้วในตอนนี้ ตอนนี้ MonotonicFrameClock จะอยู่ใน compose:runtime และ AndroidUiDispatcher จะอยู่ใน compose:ui (Ib5c36)

  • เปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จาก left/right เป็น start/end เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง 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)
  • นำฟังก์ชันการเลื่อนแบบไม่หยุดทำงานที่เลิกใช้งานแล้วออก เราได้นำฟังก์ชันการเลื่อนแบบไม่หยุดทำงานออกทั้งหมดแล้วเพื่อสานต่อการเปลี่ยนแปลงจากรุ่นล่าสุด โปรดแปลงเป็นฟังก์ชันการระงับที่มีชื่อเดียวกัน คุณรับขอบเขตโคโรทีนได้ผ่าน rememberedCoroutineScope() (I3d39c, b/178169563)

  • เลิกใช้งาน androidx.compose.foundation.layout.ConstraintLayout แล้วเพื่อใช้ androidx.constraintlayout.compose.ConstraintLayout แทน คุณจะต้องเพิ่มทรัพยากร Dependency ใน androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 (I87adc)

  • เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว ให้ใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)

  • นำ Recomposer.current() ออกแล้ว [Abstract]ตอนนี้ ComposeView จะตั้งค่าเริ่มต้นเป็น Recomposer ระดับหน้าต่างที่สร้างขึ้นแบบล่าช้าโดย ViewTreeLifecycleOwner ของหน้าต่าง การคอมโพสใหม่และการนับภาพเคลื่อนไหวตาม withFrameNanos จะหยุดชั่วคราวขณะที่วงจรชีวิตของโฮสต์หยุดลง (I38e11)

  • ตอนนี้ Recomposer.runningRecomposers มี StateFlow ทั่วโลกของ RecomposerInfo แบบอ่านอย่างเดียวสําหรับสังเกตสถานะการคอมโพสิชันที่กําลังดําเนินอยู่ในระหว่างกระบวนการ ใช้ API นี้แทน Recomposer.current() ซึ่งเลิกใช้งานแล้ว (If8ebe)

เวอร์ชัน 1.0.0-alpha11

28 มกราคม 2021

androidx.compose.foundation:foundation:1.0.0-alpha11 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha11 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เลิกใช้งาน scrollBy ที่ไม่หยุดทำงานและนำ scrollTo ที่ไม่หยุดทำงานออก

    ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันการระงับเพื่อควบคุมการเลื่อนและรอให้การเลื่อนเสร็จสิ้น เรากําลังเลิกใช้งานและ/หรือนําฟังก์ชันเหล่านี้เวอร์ชันที่ไม่มีการระงับออกเป็นส่วนหนึ่งของการเปลี่ยนแปลงนี้ (Ie9ced)

  • เลิกใช้งาน smoothScrollBy แบบไม่หยุดทำงาน ตอนนี้เราขอแนะนำให้ใช้ฟังก์ชันการหยุดทำงานเพื่อควบคุมการเลื่อนและรอให้การเลื่อนเสร็จสิ้น เราจะเลิกใช้งานเวอร์ชันที่ไม่มีการระงับของฟังก์ชันเหล่านี้เป็นส่วนหนึ่งของการเปลี่ยนแปลงนี้ (I12880)

  • เพิ่มพารามิเตอร์คำอธิบายเนื้อหาลงในรูปภาพและไอคอนแล้ว ใช้เพื่อระบุคำอธิบายบริการการช่วยเหลือพิเศษ (I2ac4c)

  • BasicTextField ได้รับพารามิเตอร์ใหม่ชื่อ "decorationBox" ซึ่งช่วยให้คุณเพิ่มการตกแต่งต่างๆ เช่น ไอคอน ตัวยึดตําแหน่ง ป้ายกํากับ และคล้ายกับช่องข้อความ รวมถึงเพิ่มพื้นที่เป้าหมายการตีของช่องได้ (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 แทน เพื่อไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ ผู้ใช้ยังคงเลือกได้ว่าไม่ต้องการลักษณะการทำงานแบบ Lazy และจะใช้ตัวแก้ไขโดยตรงได้ดังนี้ 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 แล้วเพื่อหันมาใช้ SideEffect และ DisposableEffect API (If760e)
  • WithConstraints ได้รับการปรับโฉมใหม่เป็น BoxWithConstraints และย้ายไปไว้ใน foundation.layout (I9420b, b/173387208)
  • การเปลี่ยนแปลงฟังก์ชันเริ่มต้นสำหรับแบบอักษร/ชุดแบบอักษร/แบบตัวพิมพ์

    • เพิ่มฟังก์ชันของโรงงานที่ขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่
    • ฟังก์ชันการสร้างก่อนหน้านี้ที่เลิกใช้งานซึ่งมีตัวอักษรตัวแรกเป็นตัวพิมพ์เล็ก
    • ฟังก์ชันใหม่ของ Factory จะแสดงผล FontFamily แทนที่จะเป็นคลาสย่อย
    • ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชันการสร้างเท่านั้น
    • เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
    • (I42aa7)
  • เปิดตัว ComposeContentTestRule ซึ่งขยายจาก ComposeTestRule และกำหนด setContent ซึ่งนําออกจาก ComposeTestRule แล้ว เพิ่มเมธอดแฟกทอรี createEmptyComposeRule() ที่แสดงผล ComposeTestRule และไม่เปิด Activity ให้คุณ ใช้คำสั่งนี้เมื่อคุณต้องการเปิดใช้งานกิจกรรมระหว่างการทดสอบ เช่น ใช้ ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState เปลี่ยนเป็น animateFooAsState แล้ว โดยที่ Foo คือประเภทของตัวแปรที่มีภาพเคลื่อนไหว เช่น Float, Dp, Offset ฯลฯ (Ie7e25)

  • ตอนนี้ความหนาแน่นเป็นขอบเขตของผู้รับสำหรับอินเทอร์เฟซการจัดเรียงแล้ว (I18aad)

  • TextFieldValue ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็นเพียงการเปลี่ยนแปลง API เท่านั้น และยังไม่มีการใช้การแก้ไขข้อความหลายรูปแบบ

    • นํา initial ออกจากพารามิเตอร์คอนสตรัคเตอร์ของ EditingBuffer (I326d5)
  • ตอนนี้เราเลิกใช้งาน invalidate และ compositionReference() แล้ว และใช้ currentRecomposeScope และ rememberCompositionReference แทน (I583a8)

  • AnnotatedString เปลี่ยนเป็นการขยายจาก kotlin.CharSequence ดังนั้น ตอนนี้ length และ subSequence จึงกลายเป็นฟังก์ชันอินสแตนซ์ และระบบจะนำฟังก์ชันส่วนขยายออก (Iaf429)

  • ระบบจะนำ Duration และ Uptime ไปแทนที่ด้วย Long milliseconds และขั้นตอนนี้จะนําการพึ่งพาอินพุตเคอร์เซอร์ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)

  • RememberObserver จะมาแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว

    RememberObserver เข้ามาแทนที่ CompositionLifecycleObserver โดยมีความหมายที่แก้ไขแล้วและเมธอดที่มีชื่อใหม่ การเปลี่ยนไปใช้ API ใหม่ทำได้แบบอัตโนมัติสําหรับออบเจ็กต์ที่ระบบจะจดจําเพียงครั้งเดียว ซึ่งเป็นแนวทางปฏิบัติที่แนะนําและยังคงเป็นเช่นนั้น อย่างไรก็ตาม หากมีการจดจําการอ้างอิงมากกว่า 1 ครั้งในองค์ประกอบ ระบบจะเรียกใช้ onRemembered สำหรับการอ้างอิงแต่ละรายการที่เรียกใช้ onEnter เพียงครั้งเดียว onEnter ถูกเรียกใช้หลายครั้งหากมีการใช้ออบเจ็กต์ในองค์ประกอบย่อย เช่น WithConstraints และ Scaffold ทำให้การรับประกันการเรียกใช้ onEnter รายการเดียวไม่น่าเชื่อถือและถูกนําออกสําหรับ RememberObserver

    RememberObserver เพิ่ม onAbandoned ซึ่งจะเรียกใช้หากระบบแสดงผลอินสแตนซ์ RememberObserver จากการเรียกกลับที่ส่งไปยัง remember แต่ระบบไม่ได้จดจำไว้ในสถานะการคอมโพสิชัน และจะไม่มีวันเรียกใช้ onRemembered กรณีนี้อาจเกิดขึ้นได้หากข้อยกเว้นสิ้นสุดการคอมโพสิชันก่อนเสร็จสมบูรณ์ หรือระบบทิ้งการคอมโพสิชันเนื่องจากสถานะที่ใช้สร้างการคอมโพสิชันนั้นไม่ทันสมัยอีกต่อไปหรือไม่จําเป็นต้องใช้อีกต่อไป หากอินสแตนซ์ของ RememberObserver ที่ทําตามคําแนะนําแหล่งข้อมูลอ้างอิงเดียวข้างต้นกําลังติดตามแหล่งข้อมูลภายนอก ทั้ง onForgotten และ onAbandoned จะระบุว่าไม่จําเป็นต้องใช้แหล่งข้อมูลนั้นอีกต่อไป หากออบเจ็กต์ติดตามงานที่เริ่มต้นหรือทรัพยากรที่จัดสรรใน onRemembered ระบบจะละเว้น onAbandoned เนื่องจากระบบจะไม่เรียกใช้หากมีการเรียกใช้ onRemembered (I02c36)

  • เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text

    • TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
  • ชั้นเรียนต่อไปนี้ไม่ใช่ชั้นเรียนข้อมูลอีกต่อไป

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • นำวิธีการ monotonicFrameAnimationClockOf เวอร์ชันทดลองออก (Ib753f, b/170708374)

  • เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้างเมธอดพิกัดตามกรอบหน้าต่างใหม่ (Iee284)

  • โปรดใช้ ImeAction.None แทน ImeAction.NoAction

    • โปรดใช้ ImeAction.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 ไม่ใช่คลาสข้อมูลอีกต่อไป
    • ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
    • (I0bdf3)
  • การเปลี่ยนแปลง EditOperations API
    • เปลี่ยนชื่อ EditOperation เป็น EditCommand
    • เพิ่มส่วนต่อท้ายคําสั่งสําหรับการใช้งาน EditOperation ที่เฉพาะเจาะจง
    • EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
    • เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
    • เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
    • (I0a366)
  • แก้ไข Velocity ให้มีองค์ประกอบและการดำเนินการทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้สอดคล้องกับคำอธิบายประกอบ API เวอร์ชันทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เพิ่มเมธอด stickyHeader เวอร์ชันทดลองสำหรับ LazyColumn/LazyRow (I0a81d)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher ที่เลิกใช้งานแล้ว ใช้ Dispatchers.Main แทน (Ic171f, b/175385255)
  • เพิ่มปุ่มเปิด/ปิดลงใน Strings.kt ของฟีเจอร์พื้นฐาน (I4a5b7, b/172366489)
  • ย้าย nativeClass ไปยังข้อบังคับของ ui และทําให้เป็นภายใน อัปเดตการใช้งาน nativeClass ในการใช้งาน equals ให้ใช้ "is MyClass" แทน (I4f734)
  • เลิกใช้งาน FlowRow และ FlowColumn แล้ว โปรดใช้เลย์เอาต์ที่กำหนดเองแทน (I09027)
  • เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว ให้ใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)
  • เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดต Selectable ไปยัง SelectionManager (I6ff30, b/173215242)
  • เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)
  • เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
  • เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับคลาสอินไลน์ที่มีค่าคงที่ที่ไม่ระบุ (I93f7b, b/174310811)

การแก้ไขข้อบกพร่อง

  • API ใหม่ที่ใช้ coroutine 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.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 เป็นประเภทเดียวกัน จึงติดตั้งใช้งานการเลื่อนที่กำหนดเองได้กับทั้ง 2 ประเภท

    ซึ่งจะย้าย 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 สำหรับ TextField (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)
  • นํา SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายเป็น InternalComposeAPI ตอนนี้เป็นข้อมูลภายในของข้อบังคับการเขียน

    เราได้เพิ่ม CompositionData และ CompositionGroup เข้ามาเพื่อแทนที่ ui-tooling API ที่ใช้ดึงข้อมูลการคอมโพส ข้อมูลเหล่านี้เป็นแบบสาธารณะ แต่ไม่ได้มีไว้เพื่อใช้งานนอก ui-tooling API เนื่องจากให้ข้อมูลดิบที่ ui-tooling API จะตีความ (I31a9c)

  • ปรับแต่ง ShaderBrush ใหม่เพื่อสร้างอินสแตนซ์ Shader แบบไม่สนใจเมื่อมีข้อมูลการปรับขนาดของสภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกําหนดไล่ระดับสีที่ครอบครองขอบเขตการวาดทั้งหมดของคอมโพสิเบิล ณ เวลาจัดองค์ประกอบ โดยไม่ต้องใช้การใช้งาน 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) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องกำหนดประเภทชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter ไปใช้ในคอมโพสิชันรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)

  • เพิ่มฟังก์ชันสร้างของ buildAnnotatedString เพื่อสร้าง AnnotatedString ฟังก์ชัน annotatedString builder ที่เลิกใช้งานแล้ว (Idfe0b)

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha08 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นําพารามิเตอร์ maxLines ออกจาก CoreTextField แล้ว หากต้องการจำกัดความสูงของช่องข้อความตามจำนวนบรรทัด ให้ใช้ BasicTextField แทน (Iec002)
  • เปลี่ยนเมธอด await*TouchSlop() ให้ไม่ตรวจหาเคอร์เซอร์ลงและเปลี่ยนชื่อเป็น *OrCancellation และไม่ต้องระบุพารามิเตอร์ orientationLock ด้วย (Ie96e1)
  • เพิ่มการตรวจสอบ Lint สําหรับการตั้งชื่อและตําแหน่งพารามิเตอร์ Lambda ที่คอมโพสิเบิล เพื่อตรวจสอบความสอดคล้องตามหลักเกณฑ์ของ Compose รวมถึงย้ายข้อมูล API บางรายการที่ใช้ children เป็นชื่อของ lambda ต่อท้ายเป็น content ตามการตรวจสอบและคำแนะนำของ Lint (Iec48e)
  • ย้าย foundation:foundation-text api ไปยัง foundation:foundation แล้ว โครงสร้างแพ็กเกจยังคงเหมือนเดิม (Id3eb2)
  • ตัวตรวจจับท่าทางสัมผัสแบบมัลติทัชแบบใหม่ รวมถึงตัวช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
  • ตัวตรวจจับท่าทางลากแบบใหม่ที่จะระงับ Pointer Input API รวมถึงการล็อกการวางแนว (Icef25)
  • เปลี่ยนชื่อ VectorAsset เป็น ImageVectorย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อให้เป็นคลาสภายในของ ImageVector ตามหลักเกณฑ์ของสภา API เพิ่ม Type Alias ของ VectorAssetBuilder เพื่อลิงก์กับ ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
  • เปลี่ยนชื่อ ImageAsset และเมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
  • ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
  • เพิ่ม API เลื่อนที่ใช้ Coroutine

    เพิ่ม LazyListState.snapToItem และ LazyListState.smoothScrollBy รวมถึง API ระดับล่างสําหรับการควบคุมการเลื่อน API เหล่านี้มีอินเทอร์เฟซการระงับเพื่อควบคุมการเลื่อน ซึ่งจะรอจนกว่าการเลื่อนจะเสร็จสิ้นก่อนที่จะแสดงผล (Ie5642)

  • เพิ่มพารามิเตอร์ singeLine ลงใน BasicTextField, TextField และ OutlinedTextField ตั้งค่าพารามิเตอร์นี้เป็น "จริง" เพื่อให้ช่องข้อความเป็นบรรทัดเดียวที่เลื่อนในแนวนอนได้ (I57004, b/168187755)

  • เพิ่มตัวตรวจจับท่าทางสัมผัสสำหรับการแตะ การแตะ 2 ครั้ง การกดค้าง และตัวบ่งชี้การกดโดยใช้อินพุตเคอร์เซอร์ที่หยุดชั่วคราวแบบใหม่ นอกจากนี้ เรายังเพิ่มยูทิลิตีบางอย่างเพื่อให้นักพัฒนาแอปเขียนตัวตรวจจับท่าทางของตนเองได้ง่ายขึ้น (I00807)

  • จำเป็นต้องเพิ่ม Modifier.focusable ใน Foundation ใช้แอตทริบิวต์นี้เพื่อเพิ่มลักษณะการทำงานที่โฟกัสได้ให้กับคอมโพเนนต์ โดยมีความหมายและความสามารถในการเข้าถึงที่ถูกต้อง (I41eb9, b/152525426, b/162865824)

  • ระบบได้นำ API ที่เลิกใช้งานไปแล้วก่อนหน้านี้ออกแล้ว เช่น Border ถูกนำออกแล้ว ให้ใช้ BorderStroke แทน เราได้นํา Modifier.drawBorder ออกแล้ว ให้ใช้ Modifier.border แทน เราได้นํา Modifier.gravity ออกแล้ว ให้ใช้ Modifier.align แทน นํากองออกแล้ว ให้ใช้กล่องแทน (I32c2b, b/172470874)

  • เปลี่ยนชื่อ AbsoluteArrangement เป็น Arrangement.Absolute (If26f2)

การแก้ไขข้อบกพร่อง

  • ย้าย API ของ DrawModifier จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อรวมการแทนที่ประเภท/เมธอดตัวช่วยเพื่อช่วยในการย้ายข้อมูลจาก API ที่เลิกใช้งานไปยัง API ปัจจุบัน (Id6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer และอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตามความคิดเห็นจากสภา API ด้วย (I0bd29, b/173834241)
  • นํา <T> ออกจากการประกาศ SubcomposeLayout แล้ว ตอนนี้คุณใช้คำสั่งนี้โดยไม่ต้องระบุประเภทได้แล้ว (Ib60c8)
  • ทำให้ฟิลด์การอัปเดตและตำแหน่งของ PointerInputData เป็นฟิลด์ที่ต้องมีค่า (Id468a)
  • ตอนนี้ MaterialTheme จะกำหนดสีที่ถูกต้องสำหรับแถบการเลือกและพื้นหลังการเลือก แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors ด้วยตนเองเพื่อปรับแต่งสีที่ใช้สำหรับการเลือก (I1e6f4, b/139320372, b/139320907)
  • เปลี่ยนชื่อพารามิเตอร์การจัดตำแหน่งของกล่องเป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้พารามิเตอร์เหล่านี้ใช้พารามิเตอร์ Lambda แทนสถานะ (Ic3021, b/173594846)
  • เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
  • เพิ่มพารามิเตอร์ "resetInput" ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • TextFieldValue API ที่อัปเดตแล้ว
    • ทําให้ TextFieldValue.composition เป็นอ่านอย่างเดียว
    • นำข้อยกเว้นที่แสดงขึ้นเนื่องจากช่วงการเลือกไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
  • เลิกใช้งานแอมเบียนท์ที่มีชื่อต่อท้ายด้วย Ambient และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วยแอมเบียนท์ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440)
  • เพิ่ม Wrapper ของแบบอักษร Android คุณสามารถโหลดแบบอักษร Android ผ่านฟังก์ชัน typeface เช่น typeface(Typeface.DEFAULT) และเปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() ด้วย (I52ab7)
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้ androidx.compose.ui.composed {} ภายในแทนที่จะทําเครื่องหมายเป็น @Composable (I3c4bc)
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชันของ Factory ของ Modifier ได้รับการกำหนดเป็นส่วนขยายใน Modifier เพื่อให้สามารถเชื่อมต่อกันได้อย่างราบรื่น (I07981)
  • เปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • ตอนนี้การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในช่วงทดลอง (I6ef86, b/171378521)
  • นําโมดูล ui-test เก่าและสตับออก (I3a7cb)
  • TextUnit.Inherit เปลี่ยนชื่อเป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
  • อัปเดตอินเทอร์เฟซการจัดตำแหน่งและทำให้ใช้งานได้ (I46a07, b/172311734)
  • มีการผสานรวมโมดูล foundation:foundation-text เข้ากับ foundation:foundation แล้ว (Idac0f)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซต int แทน (I4c5e7)
  • เปลี่ยนชื่อ id เป็น layoutId สำหรับ LayoutIdParentData แล้ว เปลี่ยนชื่อ Measurable.id เป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)

เวอร์ชัน 1.0.0-alpha07

11 พฤศจิกายน 2020

androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 และ androidx.compose.foundation:foundation-text:1.0.0-alpha07 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ในทำนองเดียวกับ Modifier.fillMaxSize[Width|Height] ตอนนี้เรารองรับเศษส่วนใน Modifier.fillParentMaxSize[Width|Height] ภายในขอบเขตของ LazyColumn/Row (I797e2, b/166586426)
  • นํา KeyboardOptions.toImeOptions ออกจาก API สาธารณะแล้ว (Ic2e45)
  • เลิกใช้งาน AmbientTextStyle, ProvideTextStyle และ AmbientContentColor พื้นฐานแล้ว โปรดใช้เวอร์ชันใหม่ที่มีอยู่ในคลังวัสดุแทน สําหรับแอปพลิเคชันที่ไม่ใช่ Material คุณควรสร้างบรรยากาศการธีมเฉพาะสำหรับระบบการออกแบบของคุณเองแทน ซึ่งจะใช้ได้ในคอมโพเนนต์ของคุณเอง (I74acc, b/172067770)
  • เราเลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text สำหรับ API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
  • เพิ่ม maxLines ลงใน TextField (Ib2a5b)
  • อัปเดต TextFields ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เพิ่ม KeyboardOptions เพื่อใช้ใน TextField (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 ลงในตัวแก้ไขสัดส่วนภาพ ซึ่งสามารถใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดความสูงก่อนที่จะลองใช้รายการที่สอดคล้องกับความกว้าง (Ie7c43, b/155290593)
  • นํา DpConstraints ที่เลิกใช้งานออกแล้ว (I87884, b/171702471)

การแก้ไขข้อบกพร่อง

  • เปิดตัวคลาส ScaleFactor แบบอินไลน์เพื่อแสดงปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้งโดยแยกกัน เพื่อรองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการScaling แบบไม่สม่ำเสมอเพื่อยืดขอบเขตของ src ให้เต็มพื้นที่ปลายทาง
    • เพิ่มเมธอดโอเปอเรเตอร์เพื่อคํานวณพารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ขนาด
    • (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 ที่ไม่มี Callback (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 แล้ว นอกจากนี้ คุณยังใช้คอมโพเนนต์รูปภาพ / Modifier.paint() กับ Painter ได้หากไม่ต้องการใช้คลังวัสดุ (I9f622)
  • เพิ่ม interactionState ไปยัง Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
  • เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
  • เปลี่ยนช่องเป็นฟังก์ชันในบรรทัด (Ibce0c, b/155056091)
  • เพิ่ม maxLines ไปยัง CoreTextField (Ibee58, b/143687793)
  • เพิ่มการแยกบรรทัดอัตโนมัติใน CoreTextField (I21a4b)

การแก้ไขข้อบกพร่อง

  • เลิกใช้งาน VectorPainter ไปใช้ rememberVectorPainter แทนเพื่อบ่งชี้ได้ดีขึ้นว่า API แบบคอมโพสิเบิลใช้ประโยชน์จาก "remember" ในการจัดเก็บข้อมูลในคอมโพสิชัน (Ifda43)
  • เปิดใช้ทรานซิชันใน ComposeTestRule นำตัวเลือกในการเปิดใช้เคอร์เซอร์ที่กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือกแป้นพิมพ์บรรทัดเดียวลงใน CoreTextField (I72e6d)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อสื่อให้เห็นการใช้งานใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่ารัศมีมุมติดลบจะได้รับการจำกัดไว้ที่ 0 (I130c7, b/168762961)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขแบบคอมโพสิท (Idee08, b/163494569)
  • เพิ่มตัวเลือก IME ของ KeyboardCapitalization (I8ac38)
  • แก้ไขตำแหน่งแฮนเดิล Rtl (I6e1e0)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่แสดงผลออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนแปลงได้ในเหตุการณ์เคอร์เซอร์คือข้อมูลการบริโภค ตอนนี้คุณเปลี่ยนข้อมูลการบริโภคของ PointerEvents ที่ส่งเข้ามาได้โดยไม่ต้องแสดงผลข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
  • เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)

เวอร์ชัน 1.0.0-alpha05

14 ตุลาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 และ androidx.compose.foundation:foundation-text:1.0.0-alpha05 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ CoreTextField รองรับฟังก์ชันการทำงานของเคอร์เซอร์แล้ว (Id23aa)
  • เลิกใช้งาน API ของ contentColor() และ currentTextStyle() และแทนที่ด้วยแอมเบียนท์ AmbientContentColor และ AmbientTextStyle ตามลำดับ คุณสามารถเข้าถึงค่าปัจจุบันได้โดยใช้ .current ในพร็อพเพอร์ตี้แอมเบียนท์ เช่นเดียวกับแอมเบียนท์อื่นๆ การเปลี่ยนแปลงนี้มีขึ้นเพื่อความสอดคล้องและเพื่อหลีกเลี่ยงการมีวิธีหลายวิธีในการทําสิ่งเดียวกัน นอกจากนี้ เรายังได้เปลี่ยนชื่อพร็อพเพอร์ตี้แอมเบียนท์บางรายการเพื่ออธิบายวัตถุประสงค์ของพร็อพเพอร์ตี้เหล่านั้นได้ดียิ่งขึ้น ดังนี้

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

การแก้ไขข้อบกพร่อง

  • ในการทำให้ค่า Sentinel สำหรับคลาสในบรรทัดมีความเป็นมาตรฐาน ให้เปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสในบรรทัดอื่นๆ (I97611, b/169797763)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
  • มีการเปิดตัว TextOverflow.None เมื่อ overflow เป็น None ข้อความจะไม่จัดการการเลื่อนออกอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
  • อัปเดตพารามิเตอร์ Size.Unspecified เป็น Float.NaN แทนที่จะเป็น Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter ให้ตรวจสอบกับ Size.Unspecified และขนาดที่ไม่แน่นอน (I95a7e)
  • เพิ่มข้อบังคับการเขียนแบบแบ่งหน้าและการผสานรวมการแบ่งหน้า (Ib85da)
  • แก้ไข LazyListScope เพื่อรับค่าที่อนุญาตค่า Null (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 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อกองเป็นกล่องแล้ว เราจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อใช้ Box ใหม่ใน compose.foundation.layout ลักษณะการทํางานของกล่องใหม่คือการซ้อนองค์ประกอบย่อยไว้บนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจากกล่องเวอร์ชันเก่าที่ทํางานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการมีการตกแต่ง/ระยะห่างจากขอบในกล่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สามารถสังเกตและควบคุมตําแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบัน รายการแรกและระยะห่างที่มองเห็นได้จะสังเกตได้ในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
  • ตอนนี้ระบบจะบันทึกและกู้คืนตำแหน่งรายการแบบ Lazy และระยะเลื่อนในการสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
  • เพิ่มการดำเนินการตามความหมายของการคลิกค้างไว้ (I6281b, b/156468846)
  • เพิ่มยูทิลิตี MutatorMutex เพื่อเก็บ Mutator สถานะที่แชร์สถานะเดียวไว้ตลอด และยกเลิก Mutator ที่ขัดแย้งกันตามลําดับความสําคัญ (I3f975)
  • กำกับเนื้อหา rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting, ทำให้เป็น API ภายใน และซ่อน kdoc (I554eb, b/168308412)
  • นําพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง ระบบจะไม่ใช้ inlineContent เนื่องจาก inlineContent ต้องทํางานร่วมกับ AnnotatedString (Ief403)
  • นํา Arrangement API ที่เลิกใช้งานแล้วออก (Ic576d, b/168297922, b/168297923)
  • มีการเพิ่มพารามิเตอร์ unbounded ลงในตัวแก้ไข wrapContentSize ซึ่งช่วยให้วัดองค์ประกอบเลย์เอาต์ที่มีข้อจำกัดสูงสุดแบบไม่จำกัดได้ (I77951, b/158559319)
  • เราป้องกันไม่ให้นําเข้าเนื้อหาของขอบเขตเลย์เอาต์แบบคงที่ (เช่น alignWithSiblings ใน RowScope) คุณควรใช้ทางเลือกขอบเขตที่ชัดเจนแทน ซึ่งก็คือ with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797)

การแก้ไขข้อบกพร่อง

  • อัปเดต Graphics API หลายรายการ
    • อัปเดต API การเปลี่ยนรูปแบบการแปลงขนาดและการหมุนเพื่อใช้พารามิเตอร์การเลื่อนตำแหน่งเดียวเพื่อแสดงพิกัดจุดหมุนแทนการใช้พารามิเตอร์ float แยกต่างหากสำหรับพิกัด x/y ใน DrawScope และ DrawTransform
    • นําเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
    • อัปเดตเอกสารประกอบของรัศมีเป็น "รูปไข่" นอกเหนือจาก "รูปไข่รี"
    • เพิ่มเอกสารประกอบเพื่อระบุว่าไม่ควรเรียกใช้คอนสตรัคเตอร์แบบสาธารณะสำหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านคอนสตรัคเตอร์ของฟังก์ชันแทน
    • นำ RoundRect API ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้งาน Rect.shift และใช้ Rect.translate แทน
    • นำ API ของ RoundRect.grow และ Rect.shrink ออก
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
    • นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
    • เปลี่ยน RoundRect.center เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
    • อัปเดตตัวสร้าง RoundRect เพื่อใช้พร็อพเพอร์ตี้ Radius แทนพารามิเตอร์แต่ละรายการสำหรับค่ารัศมี x/y
    • นำ API ขนาดออกซึ่งถือว่ารูปภาพเป็นรูปสี่เหลี่ยมผืนผ้าที่มีจุดเริ่มต้นที่ 0,0
    • เพิ่ม API สำหรับการทำลายข้อมูลไปยัง Radius
    • ย้ายข้อมูลฟังก์ชันส่วนขยาย RoundRect ต่างๆ ไปเป็นพร็อพเพอร์ตี้แทน
    • (I8f5c7, b/168762961)
  • การเพิ่มประสิทธิภาพการเลื่อน LazyColumnFor/LazyRowFor โดยไม่ทำการคอมโพสิชันใหม่ที่ไม่จำเป็นทุกครั้งที่เลื่อน (I64f65, b/168293643, b/167972292, b/165028371)
  • แก้ไขข้อขัดข้องใน LazyColumnFor/LazyRowFor หลังจากเลื่อนแล้วเปลี่ยนรายการ รวมถึงใช้การเลื่อนขึ้นอัตโนมัติเมื่อนำรายการที่มองเห็นก่อนหน้านี้ออกเพื่อไม่แสดงช่องว่างเปล่าที่ส่วนท้ายอีกต่อไป (I220ab, b/161480164, b/167855468)
  • ไม่อนุญาตให้ฝังคอนเทนเนอร์ที่เลื่อนได้ในทิศทางเดียวกัน เช่น ScrollableContainer และ LazyColumnFor อีกต่อไป ไม่เคยรองรับและทำให้ Fling และองค์ประกอบ LazyColumnFor ทั้งหมดทำงานไม่ได้ (I6e101)
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบแบบมีขอบเขตเพื่อระบุว่าจะใช้การเปลี่ยนรูปแบบภายในการเรียกกลับเท่านั้น และนำออกหลังจากเรียกการเรียกกลับแล้ว
    • อัปเดตเอกสารประกอบ clipPath เพื่อใช้อ้างอิงเส้นทางแทนสี่เหลี่ยมผืนผ้ามน
    • แก้ไขระยะห่างในเอกสารประกอบสำหรับพารามิเตอร์ด้านขวาใน clipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และนําพารามิเตอร์ขนาดออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด inset เป็นแนวนอนและแนวตั้ง
    • เพิ่มการโอเวอร์โหลดของ inset ที่ให้ค่า inset เดียวกันกับขอบทั้ง 4
    • นำเอกสารประกอบเกี่ยวกับวิธีการใส่ข้อความที่ระบุว่าจะมีการใส่ข้อความทั้ง 4 ด้านออก
    • เอกสารประกอบที่อัปเดตสำหรับคลาส Rect
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับ kdoc style
    • นํา Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และเลิกใช้งาน Rect.shift
    • (If086a, b/167737376)
  • เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้เชิงอรรถศาสตร์ (Ifeda9)
  • ทําให้ TextRange อยู่ภายในบรรทัดเพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)
  • ParagraphConstraints ถูกนําออกแล้ว ตอนนี้ระบบจะส่งค่าความกว้างไปยังย่อหน้าโดยตรง (Ica712)

เวอร์ชัน 1.0.0-alpha03

16 กันยายน 2020

androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 และ androidx.compose.foundation:foundation-text:1.0.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ InnerPadding เป็น PaddingValues (I195f1, b/167389171)
  • การใช้การถ่วงน้ำหนักได้รับการเปลี่ยนชื่อเป็น "จัดแนว" หรือ "การจัดแนว" ใน API เลย์เอาต์อย่างสอดคล้องกัน (I2421a, b/164077038)
  • มีการเพิ่มพารามิเตอร์การจัดตำแหน่งลงในกอง ซึ่งช่วยให้ระบุการจัดตำแหน่งเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของกองได้ (Ie80ca, b/164085265)

การแก้ไขข้อบกพร่อง

  • เราเลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (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 ที่ให้สิทธิ์เข้าถึงตัวกระจาย UI หลักได้ง่ายๆ ในการทดสอบ

    เช่น

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

    (I0a85b, b/161247083)

เวอร์ชัน 1.0.0-alpha01

26 สิงหาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 และ androidx.compose.foundation:foundation-text:1.0.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการคอมมิตเหล่านี้

เวอร์ชัน 0.1.0-dev

เวอร์ชัน 0.1.0-dev17

19 สิงหาคม 2020

androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 และ androidx.compose.foundation:foundation-text:0.1.0-dev17 เผยแพร่แล้ว เวอร์ชัน 0.1.0-dev17 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการจัดเรียงแบบ spacedBy สำหรับแถวและคอลัมน์เพื่อกำหนดตำแหน่งองค์ประกอบย่อยของเลย์เอาต์ด้วยระยะห่างคงที่ นอกจากนี้ เรายังได้เพิ่มการจัดเรียงที่สอดคล้องกับการจัดตำแหน่งองค์ประกอบย่อยของเลย์เอาต์ไว้ข้างๆ กัน และจัดแนวในแถว/คอลัมน์ตามการจัดแนว ระบบเลิกใช้งานเมธอด 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)
  • ตอนนี้ข้อจำกัดเป็นคลาสย่อย (I88736)
  • เพิ่มความสามารถในการปรับขนาดเลย์เอาต์เป็นเศษส่วนของพื้นที่ว่างโดยใช้ตัวแก้ไข fillMaxWidth, fillMaxHeight และ fillMaxSize (I945bb, b/161562591)

การแก้ไขข้อบกพร่อง

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)
  • เพิ่ม Lambda mergePolicy ลงใน SemanticsPropertyKey ซึ่งสามารถใช้เพื่อกำหนดนโยบายที่กำหนดเองสำหรับการผสานความหมายของ mergeAllDescendants นโยบายเริ่มต้นคือการใช้ค่าหลักหากมีอยู่แล้ว ไม่เช่นนั้นจะใช้ค่าย่อย (Iaf6c4, b/161979921)
  • เปลี่ยนชื่อ PlacementScope.placeAbsolute() เป็น PlacementScope.place() และเปลี่ยนชื่อ PlacementScope.place() ก่อนหน้าเป็น PlacementScope.placeRelative() ดังนั้น เมธอด PlacementScope.place() จะไม่มิเรอร์ตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้รูปแบบนี้ ให้ใช้ PlacementScope.placeRelative() แทน (I873ac, b/162916675)
  • นําคอมโพเนนต์ FilledTextField ที่เลิกใช้งานแล้วออก โปรดใช้ TextField แทนเพื่อให้ได้การใช้งานช่องข้อความแบบกรอกข้อความแล้วตามการออกแบบของ Material Design (I5e889)
  • เพิ่มพารามิเตอร์ backgroundColor ลงใน LinearProgressIndicator และนำการเว้นระยะภายในออกจาก CircularProgressIndicator เพิ่ม ProgressIndicatorConstants.DefaultProgressAnimationSpec ใหม่ซึ่งสามารถใช้เป็น AnimationSpec เริ่มต้นเมื่อแสดงภาพเคลื่อนไหวความคืบหน้าระหว่างค่าต่างๆ (If38b5, b/161809914, b/161804677)
  • ตอนนี้เราเลิกใช้งานคอมโพสิเบิล state { ... } แล้วเพื่อหันไปใช้การเรียกใช้ remember { mutableStateOf(...) } อย่างชัดแจ้งเพื่อความชัดเจน ซึ่งจะลดจำนวน API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ และตรงกับรูปแบบ by mutableStateOf() สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้ของคลาส (Ia5727)
  • เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อปรับให้เข้ากับรูปแบบการตั้งชื่อคอมโพสิทได้ดีขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
  • นํา onChildPositioned และ OnChildPositionedModifier ออก นักพัฒนาซอฟต์แวร์ควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
  • ตอนนี้ IntSize เป็นคลาสย่อยในบรรทัด (I2bf42)
  • กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
  • ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
  • ซ่อนแถบเครื่องมือแบบลอยอยู่เมื่ออัปเดตรายการที่เลือก (I8444c)
  • ยกเลิกการเลือก "เมื่อเบลอ" (I781a2)

เวอร์ชัน 0.1.0-dev16

5 สิงหาคม 2020

androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 และ androidx.compose.foundation:foundation-text:0.1.0-dev16 เผยแพร่แล้ว เวอร์ชัน 0.1.0-dev16 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการแบบ Lazy ฟีเจอร์นี้มีตัวแก้ไขเพื่อเติมขนาดสูงสุดของรายการหลัก ซึ่งจะแก้ปัญหา Use Case เมื่อรายการควรเติมเต็มวิวพอร์ต และ Modifier.fillMaxSize() ปกติไม่ทำงานเนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอินฟินิตี้ (Ibd3b2, b/162248854)
  • ย้ายกล่องโต้ตอบไปยัง UI (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)
  • นำ ConstraintLayout DSL เดิมออกแล้ว เปลี่ยนชื่อ ConstraintSet2 เป็น ConstraintSet แล้ว (If58d1, b/162450908)
  • เพิ่ม Modifier.absoluteOffset() และ Modifier.absoluteOffsetPx() ตัวแก้ไขระยะห่างสัมบูรณ์จะไม่สะท้อนโดยอัตโนมัติในบริบทจากขวาไปซ้าย ซึ่งแตกต่างจากตัวแก้ไขระยะห่าง (I3aa21)
  • ตอนนี้ Row และ Column เป็นฟังก์ชันอินไลน์ที่ช่วยลดค่าใช้จ่ายในการเรียกใช้อย่างมีนัยสำคัญ (I75c10)

การแก้ไขข้อบกพร่อง

  • แก้ไข API แบบกว้าง (I077bc)
    1. นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
    2. จัดแนวคลาส Offset และ IntOffset เพื่อให้มีแพลตฟอร์ม API ที่สอดคล้องกัน
    3. เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อใช้ร่วมกับ Offset API
    4. ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้บริโภคในการสร้างอินสแตนซ์ Canvas ของตนเอง
    5. สร้างคลาส EmptyCanvas จำลองเพื่อรีแฟกทอริง DrawScope ให้มีพารามิเตอร์ที่ไม่ใช่ค่า Null แทนที่จะใช้ lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ค่า Null
    6. เปลี่ยนชื่อลิสต์ค่าคงที่ ClipOp เป็น Pascal Case
    7. เปลี่ยนชื่อเอนทิตี FilterQuality เป็น Pascal Case
    8. เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeJoin เป็น Pascal Case
    9. เปลี่ยนชื่อเอนทิตี PointMode เป็น Pascal Case
    10. เปลี่ยนชื่อเอนทิตี PaintingStyle เป็น Pascal Case
    11. เปลี่ยนชื่อเอนทิตี PathFillType เป็น Pascal Case
    12. เปลี่ยนชื่อลิสต์ค่าคงที่ StrokeCap เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลาดำเนินการอีกต่อไปสำหรับพารามิเตอร์ภายในของ fillPaint และ strokePaint
    15. อัปเดตคอมโพสิชันรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่ายเพิ่มเติม
    16. อัปเดตคลาส Outline ให้มีคําอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคําอธิบายประกอบ @Immutable สําหรับคำสั่งเส้นทางแต่ละรายการ
    18. อัปเดตองค์ประกอบย่อยเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออกเพื่อหาค่าเท่ากัน เนื่องจากคอมโพสิชันจัดการการตรวจสอบดังกล่าวอยู่แล้ว
    19. เลิกใช้งานเมธอดคอนสตรัคเตอร์ของ Rect ที่ใช้ร่วมกันเพื่อหันไปใช้คอนสตรัคเตอร์ของฟังก์ชัน
    20. อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
    21. อัปเดต VertexMode enum เป็น PascalCase
    22. อัปเดตเมธอด selectPaint ของ DrawScope ให้เขียนทับพารามิเตอร์การวาดใน Paint แบบมีเงื่อนไขหากมีการเปลี่ยนแปลง
    23. อัปเดต Size เพื่อเพิ่ม API การจัดโครงสร้างใหม่ เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้งานออก
  • เพิ่ม MonotonicFrameAnimationClock ที่ช่วยให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่างระหว่างนาฬิกาแบบโคโริวทีนใหม่กับ API ที่ยังคงใช้นาฬิกาแบบการเรียกกลับแบบเก่า

    ตอนนี้ 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 แทน "Then" มีสัญญาณการจัดเรียงที่ชัดเจนกว่า ทั้งยังห้ามไม่ให้พิมพ์ Modifier.padding().background() + anotherModifier ซึ่งทำให้ลำดับคำขาดตอนกลางและอ่านยากขึ้น (Iedd58, b/161529964)

  • เพิ่ม SemanticsMatcher isFocused() และ isNotFocused() (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 มีการคอมมิตเหล่านี้

หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องดำเนินการต่อไปนี้

การอัปเดตทรัพยากร Dependencies

  • หากต้องการใช้ Compose เวอร์ชัน 0.1.0-dev15 คุณจะต้องอัปเดต Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในส่วนการประกาศ Dependency

การเปลี่ยนแปลง API

  • ในทำนองเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow ตอนนี้ LazyColumnItems/LazyRowItems มีพารามิเตอร์ contentPadding ด้วย ซึ่งช่วยให้เพิ่มการเว้นวรรคสำหรับเนื้อหาหลังจากที่ถูกตัด ซึ่งทำไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว และยังเพิ่มการเว้นวรรคได้เฉพาะก่อนรายการแรก/หลังรายการสุดท้าย (Ibc24e)
  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ 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 เริ่มต้นสำหรับคอมโพสิชันรูปภาพจาก Inside เป็น Fit การดำเนินการนี้ทำเพื่อให้มีการปรับขนาด Painter ที่อยู่เบื้องหลังหากขนาดเลย์เอาต์ใหญ่กว่าขนาดโดยธรรมชาติของ Painter ขณะรักษาสัดส่วนภาพ ลักษณะการทำงานนี้ตรงกับสิ่งที่คาดหวังมากขึ้นสำหรับการระบุขนาดคงที่ให้กับรูปภาพ โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้นหากใช้เฉพาะขนาดที่แท้จริงเพื่อคํานวณขนาดขององค์ประกอบ (I40ae3, b/159838006)
  • ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุดเพื่อชี้แจงแนวคิดเกี่ยวกับข้อกําหนดเฉพาะของภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนรูปแบบโดยนําข้อกําหนดของ Lambda ในการสร้าง AnimationSpecs เช่น Tween, Spring ออก แต่จะรับพารามิเตอร์คอนสตรัคเตอร์โดยตรงแทน -ปรับปรุงความง่ายในการใช้งานโดยรวมของ AnimationSpec โดยเปิดใช้คอนสตรัคเตอร์แทนที่จะใช้ตัวสร้าง -เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrames และ Tween เป็น Int ซึ่งจะช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อรองรับทั้ง Long และ Int) (Ica0b4)
  • นำ "คลิกได้" ออกแล้ว ใช้ Modifier.clickable (I84bdf)
  • เพิ่ม LazyRowItems - รายการที่เลื่อนในแนวนอนซึ่งคล้ายกับ LazyColumnItems (Ibbcf7)
  • เปิดตัว API ภาพเคลื่อนไหวแบบไม่มีสถานะระดับล่าง API เหล่านี้ (I63bf7)
  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว คอมโพสิเบิล TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวจะเลิกใช้งานด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
  • แทนที่การใช้ IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)
  • นํา androidx.ui.foundation.shape.RectangleShape ออกแล้ว ใช้ androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize วิธีนี้ให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
  • เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งให้ประโยชน์ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงค่าออฟเซ็ต 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 ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I19d02)
  • ตอนนี้ VerticalScroller มีคอลัมน์ให้ใช้งานทันที ตอนนี้ HorizontalScroller มีแถวให้ใช้งานตั้งแต่แกะกล่อง (Ieca5d, b/157020670)
  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิทต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Iede0b)
  • เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
  • ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนย้อนกลับแล้ว หากตั้งค่า isReversed ใน ScrollerPosition (I953bd)
  • รองรับการเพิ่มคอมโพสิเบิลลงในเลย์เอาต์ข้อความ (I1373c)
  • รวมการใช้งาน CanvasScope เข้าด้วยกันเพื่อให้เหลือเพียง DrawScope และ ContentDrawScope เท่านั้น และเปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้อินเทอร์เฟซ Density และระบุ LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier เพื่อไม่ให้ดูแลรักษาพร็อพเพอร์ตี้ RTL เองอีกต่อไปเนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้วโดยไม่ต้องระบุด้วยตนเอง (I1798e)
  • นำ DrawBackground API ที่เลิกใช้งานออกแล้ว และใช้ Extension DrawBackground API ใน Modifier แทน ปรับแต่งการใช้สี แปรง และสีวาดพื้นหลังเพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้างตัวแก้ไขออกเพื่อเป็นส่วนหนึ่งของการคอมโพสิชัน (I0343a)
  • อัปเดตระดับที่สูงขึ้นเพื่อคอมโพส API ที่แสดง Canvas ให้แสดง CanvasScope แทน ซึ่งทำให้ผู้บริโภคไม่ต้องดูแลรักษาออบเจ็กต์ Paint ของตนเอง สําหรับผู้บริโภคที่ยังคงต้องการเข้าถึง Canvas อยู่ สามารถใช้เมธอดของส่วนขยาย drawCanvas ซึ่งจะให้การเรียกกลับเพื่อออกคําสั่งวาดด้วย Canvas ที่อยู่เบื้องหลัง (I80afd)
  • HorizontalScroller และ VerticalScroller จะไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
  • นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
  • เรานําเลย์เอาต์ตารางออกชั่วคราวจนกว่าเราจะพร้อมให้บริการอีกครั้งด้วย API ที่ปรับปรุงใหม่ (Id88a7)
  • สร้าง CanvasScope API ที่รวมออบเจ็กต์ Canvas เพื่อแสดงแพลตฟอร์ม API การวาดแบบประกาศแบบไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับเองและข้อมูลการปรับขนาดก็อยู่ในขอบเขตของขอบเขตส่วนที่แทรกที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้บริโภคดูแลรักษาออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

    เพิ่ม CanvasScopeSample และอัปเดตแอปเดโมให้รวมการสาธิตกราฟิกแบบประกาศ (Ifd86d)

  • นำ ColoredRect ออกแล้ว กล่องผู้ใช้ที่มีตัวแก้ไข drawBackground แทน (I983c7, b/152753731)

  • เพิ่มการปรับแต่งสีเคอร์เซอร์ใน TextField (I6e33f)

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์ซอฟต์แวร์ได้โดยใช้ SoftwareKeyboardController ซึ่งส่งโดย callback ของ onTextInputStarted (I8dc44, b/151860051)

  • ตอนนี้ TextFieldValue ที่ใช้กับ TextField จะอยู่รอดได้เมื่อสร้างกิจกรรมใหม่เมื่อใช้ดังนี้ var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • เพิ่มพารามิเตอร์ที่ใช้กันโดยทั่วไปลงใน Text() หากคุณกำลังสร้างสไตล์ข้อความในเครื่องเพื่อส่งพารามิเตอร์เหล่านี้จำนวนไม่มาก เช่น Text(style = TextStyle(textAlign = TextAlign.Center)) ตอนนี้คุณก็ระบุพารามิเตอร์ได้โดยตรงเลย Text(textAlign = TextAlign.Center) (I82768)

  • แทนที่พารามิเตอร์ focusIdentifier ของ CoreTextField/TextField ด้วย FocusNode เพื่อผสานรวมกับระบบย่อยโฟกัส (I7ea48)

  • การอัปเดต TextField - ในมิติข้อมูลแนวนอน ช่องนี้จะกินพื้นที่ว่างทั้งหมดที่ได้รับ (Ib08df, b/154638552)

  • เพิ่ม InteractionState และ Interaction ซึ่งช่วยให้สร้างคอมโพเนนต์ที่ตอบสนองต่อการเปลี่ยนแปลงสถานะ UI เช่น การกดและการลากได้ง่ายขึ้น (Icfe25, b/152525426)

  • ย้าย RectangleShape จาก androidx.ui.foundation.shape.* ไปยัง androidx.ui.graphics.* (Ia74d5, b/154507984)

  • แทนที่การใช้ Color ที่อนุญาตค่า Null ทั้งหมดใน API ด้วยค่าที่อนุญาตค่า Null และใช้ Color.Unset แทนค่า Null (Iabaa7)

  • การอัปเดต TextField API - ผสานการเรียกกลับ 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

    • สร้างขอบเขตผู้รับสำหรับ ContentDrawScope ของ draw()
    • นําพารามิเตอร์ทั้งหมดใน draw() ออก
    • DrawScope มีอินเทอร์เฟซเดียวกับ CanvasScope เดิม
    • ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
  • เลิกใช้งาน ColoredRect แล้ว ให้ใช้ Box(Modifier.preferredSize(width, height).drawBackground(color)) แทน (I499fa, b/152753731)

  • ระบบธีมรูปร่างได้รับการอัปเดตตามข้อกำหนดของการออกแบบ Material ตอนนี้คุณสามารถระบุรูปร่างขนาดเล็ก กลาง และใหญ่เพื่อให้คอมโพเนนต์ส่วนใหญ่ใช้ (Ifb4d1)

  • แทนที่โอเปอเรเตอร์ตัวเพิ่มตัวแก้ไขด้วยฟังก์ชันส่วนขยายเริ่มต้น (I225e4)

  • ย้าย Draggable ไปยังตัวแก้ไขแล้ว (Id9b16, b/151959544)

  • ย้าย Text จาก androidx.ui.core ไปยังแพ็กเกจ androidx.ui.foundation (I87ce5)

  • เพิ่มพารามิเตอร์ enabled ลงในช่องทําเครื่องหมาย สวิตช์ และเปิด/ปิดได้ (I41c16)

  • ตอนนี้ Ripple เป็นแป้นกดร่วมแล้ว แม้ว่าจะยังไม่ได้แปลงค่าที่คลิกได้ แต่การใช้งานที่แนะนําคือ Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • เพิ่ม VectorPainter API เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับกราฟิกเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อยคือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVectorcomposable ก่อนหน้านี้เพื่อใช้ VectorPainter แทน

    เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้างคอมโพสิชันเวกเตอร์ที่ทํางานเหมือนคอมโพสิชันรูปภาพ ยกเว้นการใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)

  • สร้างคอมโพสิชันรูปภาพเพื่อจัดการขนาด/เลย์เอาต์ นอกเหนือจากการวาด ImageAsset ที่ระบุไปยังหน้าจอ คอมโพสิเบิลนี้ยังรองรับการวาดอินสแตนซ์ Painter ใดก็ได้ตามต้องการโดยคำนึงถึงขนาดโดยธรรมชาติของอินสแตนซ์นั้นๆ รวมถึงรองรับขนาดคงที่หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)

  • ตอนนี้ Button, FloatingActionButton และ Clickable มีพารามิเตอร์ enabled แยกกัน มีการเปลี่ยนชื่อหรือจัดลําดับพารามิเตอร์ในปุ่มใหม่ (I54b5a)

  • เปลี่ยนชื่อจาก "รูปภาพ" เป็น "ชิ้นงานรูปภาพ" เพื่อให้เห็นความแตกต่างระหว่างข้อมูลรูปภาพกับองค์ประกอบรูปภาพที่กำลังจะมีให้บริการซึ่งใช้ในการวางเลย์เอาต์และวาดเนื้อหาได้ดียิ่งขึ้น

    สร้างเมธอดการขยายใน android.graphics.Bitmap Bitmap.asImageAsset() เพื่อสร้างอินสแตนซ์ของ ImageAsset ซึ่งมีประโยชน์สำหรับการรวมการพัฒนาแอปพลิเคชัน Android แบบดั้งเดิมเข้ากับเฟรมเวิร์ก Compose (Id5bbd)

  • นำคอมโพสิเบิล DrawImage ออกแล้ว ใช้ ImagePainter เพื่อวาดรูปภาพในเลย์เอาต์ที่มีอยู่ หรือ SimpleImage เพื่อแสดงรูปภาพที่กินพื้นที่ (I595e1, b/149827027)

  • คอมโพเนนต์สแต็กรองรับทิศทางจากขวาไปซ้าย (Ic9e00)

  • เพิ่ม Icon, IconButton และ IconToggleButton และนำ AppBarIcon ออก คุณสามารถแทนที่การใช้งาน AppBarIcon ที่มีอยู่ด้วย IconButton ได้โดยตรง แล้วตอนนี้ไอคอนเหล่านั้นจะมีเป้าหมายการสัมผัสที่ถูกต้อง ดูข้อมูลการใช้งานจากตัวอย่าง และดูไอคอนสำหรับ Material Icons ที่ให้มาซึ่งคุณใช้กับคอมโพเนนต์เหล่านี้ได้โดยตรง (I96849)

  • นำคอมโพสิเบิล DrawShape ออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)

  • เพิ่ม AdapterList ซึ่งเป็นคอมโพเนนต์รายการแบบเลื่อนที่คอมไพล์และวางตำแหน่งรายการที่มองเห็นได้เท่านั้น ปัญหาที่ทราบในปัจจุบันมีดังนี้ การทำงานเป็นแบบแนวตั้งเท่านั้นและไม่สามารถจัดการกับการเปลี่ยนแปลงทั้งหมดของรายการย่อยได้ (Ib351b)

  • เพิ่มคอมโพเนนต์ที่เลื่อนได้ ซึ่งช่วยให้สร้าง Scroller/List ที่กำหนดเองได้ (I5fd37)

  • เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และทําให้ระบบจดจําโดยค่าเริ่มต้น (Ia0bd3)

  • เพิ่มการเว้นวรรค เส้นขอบ รูปร่าง และพารามิเตอร์พื้นหลังลงในกล่อง (I05027, b/148147281)

  • เพิ่มคอมโพเนนต์ Canvas คอมโพสิชันนี้ใช้พื้นที่บางส่วน (ระบุโดยผู้ใช้) และให้คุณวาดโดยใช้ CanvasScope ได้ (I0d622)

  • เปลี่ยนชื่อตัวควบคุม Border เป็น DrawBorder (I8ffcc)

  • เพิ่มคอมโพเนนต์ Box เพื่อรวมฟังก์ชันการทำงานทั่วไปของเลย์เอาต์และการวาด (I6e2a7)

  • ตอนนี้แถบเลื่อนจะแสดงลักษณะการเลื่อนของ Android ดั้งเดิม (I922af, b/147493715)

  • แทนที่ DrawBorder ด้วย Border Modifier (Id335a)

  • เปลี่ยนชื่อ Modifier.tag เป็น Modifier.layoutId เพื่อไม่ให้เกิดความสับสนกับ Modifier.testTag (I995f0)

  • เปลี่ยนชื่อพารามิเตอร์เปอร์เซ็นต์เมื่อสร้างหลักเกณฑ์ ConstraintLayout เป็น "เศษส่วน" (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)

  • เพิ่มตัวแก้ไขเลย์เอาต์ offsetPx ซึ่งสามารถใช้เพื่อกำหนดระยะห่าง (แบบไดนามิก) เป็นพิกเซล (I5af57)

  • คอมโพสิชัน AlignmentLineOffset เลิกใช้งานแล้ว โปรดใช้ตัวแก้ไข relativePaddingFrom() แทน นำคอมโพสิเบิล CenterAlignmentLine ออกแล้ว (I60107)

  • เพิ่มตัวแก้ไขเลย์เอาต์ defaultMinSizeConstraints ซึ่งจะกำหนดข้อจำกัดด้านขนาดให้กับเลย์เอาต์ที่ตัดขึ้นบรรทัดใหม่เฉพาะในกรณีที่ไม่ได้ระบุข้อจำกัดที่เกี่ยวข้องขาเข้า (0 สำหรับข้อจำกัดขั้นต่ำและอินฟินิตี้สำหรับข้อจำกัดสูงสุด) (I311ea, b/150460257)

  • นําคอนเทนเนอร์ออกแล้ว ใช้ Box แทน (Ibbc2b, b/151407926)

  • นําตัวแก้ไข LayoutWidth/Height/Size ที่เลิกใช้งานออก (Ib0bc1)

  • เพิ่มค่าพารามิเตอร์เริ่มต้นสำหรับตัวแก้ไขออฟเซต (I37f06)

  • เพิ่มตัวแก้ไขการถ่วงสมมาตร (I39840)

  • นําตัวปรับแต่ง LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)

  • นําตัวแก้ไข LayoutAlign ที่เลิกใช้งานออกแล้ว (I10877)

  • แก้ไขข้อบกพร่องในตัวแก้ไขความกว้างและความสูงที่ทำให้ระบบวัดเลย์เอาต์ที่ตัดให้พอดีโดยไม่มีข้อจำกัดของแกนตรงข้าม (I210b8, b/154797971)

  • เพิ่มพารามิเตอร์ verticalGravity และ horizontalGravity ลงในแถวและคอลัมน์ตามลำดับ (I7dc5a)

  • อัปเดต wrapContentWidth และ wrapContentHeight เพื่อใช้การวางแนวแนวตั้งหรือแนวนอนแทนการวางแนว เราได้อัปเดตตัวแก้ไขแรงโน้มถ่วงให้ยอมรับการจัดแนวแนวตั้งหรือแนวนอน อัปเดตแถว คอลัมน์ และกองเพื่อรองรับการจัดแนวต่อเนื่องที่กำหนดเอง (Ib0728)

  • ทำให้ Alignment สร้างได้ทันทีโดยใช้ค่าที่กำหนดเอง เพิ่มการจัดแนว 1 มิติ (Ia0c05)

  • เปลี่ยนชื่อ EdgeInsets เป็น InnerPadding เปลี่ยนชื่อพารามิเตอร์ innerPadding ของปุ่ม Material เป็น padding (I66165)

  • ตอนนี้ alignToSiblings ยอมรับ Measured แทน Placeable แล้ว (I5788d)

  • เพิ่มตัวแก้ไขสำหรับการปรับขนาดลงในการวัดค่าที่แท้จริงและเลิกใช้งานคอมโพเนนต์ที่มีไว้เพื่อวัตถุประสงค์นี้ (I8295d)

  • เพิ่มการรองรับการปรับแต่งขนาดขององค์ประกอบย่อยของ ConstraintLayout (Idb1a5)

  • นำคอมโพสิเบิล "ตัดข้อความให้พอดี" และ "จัดกึ่งกลาง" ที่เลิกใช้งานแล้วออก (I29e23)

  • เพิ่ม LayoutModifier2 ซึ่งเป็น API ใหม่สำหรับการกำหนดตัวแก้ไขเลย์เอาต์ เลิกใช้งาน LayoutModifier (If32ac)

  • ตอนนี้สมาชิก RowScope และ ColumnScope สามารถเข้าถึงได้นอกแถวและคอลัมน์ (I3a641)

  • เลิกใช้งานคอนเทนเนอร์แล้ว ให้ใช้ Box แทน (I675ce, b/151407926)

  • เพิ่มตัวแก้ไข LayoutOffset สำหรับการเลื่อนตำแหน่งเลย์เอาต์ (I0b8a3)

  • การรองรับ Rtl ในเลย์เอาต์การเขียนอีเมลครั้งแรก (Ia5519)

  • อัปเดต LayoutAlign เพื่อไม่ให้เติมเต็มพื้นที่ว่างอีกต่อไป (I2b14f)

  • นำคอมโพสิชันสัดส่วนภาพออกเพื่อใช้ตัวปรับแต่งแทน ลบไปแล้ว คอมโพสิเบิล FlexColumn, FlexRow และตัวแก้ไขระยะห่างที่ล้าสมัย (Iec8a7)

  • นำตัวแก้ไข LayoutInflexible สำหรับแถวและคอลัมน์ออก (I0d820)

  • ใช้แฮนเดิลการลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)

  • ใช้ LongPressAndDrag สำหรับการเลือก TextField (I17919)

การแก้ไขข้อบกพร่อง

  • เลิกใช้งาน FocusModifier แล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้ว โปรดเปลี่ยนไปใช้ FocusState2 (I46919, b/160822875, b/160922136)
  • เปลี่ยนชื่อ runOnIdleCompose เป็น runOnIdle (I83607)
  • มีการเปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้เข้าใจง่ายขึ้น API ทั้งหมดของ findXYZ เปลี่ยนชื่อเป็น onNodeXYZ แล้ว API ทั้งหมดของ doXYZ ได้เปลี่ยนชื่อเป็น performXYZ แล้ว (I7f164)
  • นำ Modifier.ripple ที่ใช้ไม่ได้แล้วก่อนหน้านี้ออก ตอนนี้ Clickable ใช้การกระเพื่อมเป็นการแสดงผลเริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณจะใช้ Clickable และรับการแสดงผลการกระเพื่อมได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตของภาพกระเพื่อม คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยัง clickable ในฐานะพารามิเตอร์การระบุ (I663b2, b/155375067)
  • นำ API การทดสอบขนาดที่ล้าสมัยออก (Iba0a0)
  • เปลี่ยน LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
  • มีการนำมาใช้งานการล็อกการวางแนวการเลื่อนเวอร์ชัน 1 ใน Compose (I1ce7a, b/150289741)
  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)
  • นําพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม ทิศทางของเลย์เอาต์จะอยู่ในคอลแบ็กผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
  • เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงรายการย่อยภายในแถวโดยไม่ต้องมิเรอร์โดยอัตโนมัติใน RTL (I3a1df)
  • เราเลิกใช้งานคำอธิบายประกอบ @Untracked แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์คอมโพสิทจะขัดจังหวะการเรียกตัวสร้างคอนสตรัคเตอร์ภายในฟังก์ชัน @Composable อย่างไม่ง่ายดายหากมี (I5205a, b/158123804)
  • เพิ่มคอมโพสิชัน viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างขึ้นแล้วได้คล้ายกับวิธีการทํางานใน Activity หรือ Fragment (I5fdd1)
  • ปรับโครงสร้างคลาส Radius เป็นคลาสแบบอินไลน์ นําเมธอดการสร้างคอมพาเนียนออกเพื่อใช้ตัวสร้างฟังก์ชันที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมีตามแนวแกน y ตรงกับพารามิเตอร์รัศมีตามแนวแกน x ที่ต้องระบุ

    อัปเดต DrawScope.drawRoundRect ให้ใช้พารามิเตอร์ Radius รายการเดียวแทนค่า float 2 ค่าแยกกันสำหรับรัศมีตามแกน x และ y (I46d1b)

  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล ลบชั้น Px ทั้งหมด (I3ff33)

  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I086f4)

  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (Id3434)

  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิทต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I97a5a)

  • เคอร์เซอร์ของ TextField มีภาพเคลื่อนไหวกะพริบ (Id10a7)

  • ท่าทางสัมผัสบางส่วนไม่จําเป็นต้องส่ง GestureToken (Id7ae5) อีกต่อไป

  • แทนที่การใช้คลาส Px ในคลาสคอมโพสิต์ต่างๆ เป็นส่วนหนึ่งของความพยายามในการรีแฟกทอริงครั้งใหญ่เพื่อใช้เฉพาะ Dp และประเภทพื้นฐานสำหรับพารามิเตอร์พิกเซล (I57bff)

  • Modifier.semantics เลิกเลิกใช้งานแล้วเพื่อให้ใช้กับคอมโพเนนต์ระดับสูงได้ (I4cfdc)

  • เปลี่ยนชื่อ AnnotatedString.Builder.addAnnotationString เป็น addStringAnnotation (I5059e)

  • อัปเดต Alignment API และเพิ่มการรองรับการจัดแนวแบบสัมบูรณ์ (ซึ่งจะไม่มิเรอร์โดยอัตโนมัติในบริบท Rtl) (I38cd3)

  • องค์ประกอบย่อยของเลย์เอาต์และ LayoutModifier สามารถวัดได้ด้วยทิศทางเลย์เอาต์อื่น (Ibd731)

  • เพิ่มพารามิเตอร์สี่เหลี่ยมผืนผ้าที่ไม่บังคับลงใน ImagePainter เพื่อรองรับการวาดส่วนย่อยของ ImageAsset ที่อยู่เบื้องหลัง (I0ea9e)

  • แก้ไขข้อขัดข้องใน AdapterList เมื่อนำรายการออก (Ic64b0, b/153195921)

  • เราได้เปลี่ยนวิธีวัดเลย์เอาต์แรกที่คุณใส่ไว้ในบล็อก activity.setContent { } ก่อนหน้านี้ เลย์เอาต์ต้องเต็มหน้าจอกิจกรรม แต่ตอนนี้จะทำงานเหมือนกับว่าคุณวางเลย์เอาต์ไว้ในกอง โดยสามารถมีขนาดเล็กกว่าหน้าจอและวางไว้ที่ด้านซ้ายบนของหน้าจอ หากต้องการลักษณะการทำงานแบบเก่า ให้ใช้ Modifier.fillMaxSize() สำหรับเลย์เอาต์ (Ie88a7, b/153453714)

  • เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text ตอนนี้ ui-text มีคอมโพสิเบิล CoreText และ CoreTextField แล้ว (Ib7d47)

  • เปลี่ยนชื่อโมดูล ui-text เป็น ui-text-core (I57dec)

  • ย้ายคอมโพสิเบิล ui-framework/CoreText, CoreTextField ไปไว้ภายใต้ ui-text-compose คุณอาจต้องใส่ ui-text-compose ในโปรเจ็กต์ (I32042)

  • ตอนนี้ runOnIdleCompose และ runOnUiThread เป็นฟังก์ชันส่วนกลางแทนเมธอดใน ComposeTestRule (Icbe8f)

  • [Mutable]ย้ายโอเปอเรเตอร์ตัวรับมอบสิทธิ์พร็อพเพอร์ตี้สถานะไปยังส่วนขยายเพื่อรองรับการเพิ่มประสิทธิภาพตัวรับมอบสิทธิ์พร็อพเพอร์ตี้ของ Kotlin 1.4 ผู้โทรต้องเพิ่มการนําเข้าเพื่อใช้ by state { ... } หรือ by mutableStateOf(...) ต่อ (I5312c)

  • ตอนนี้ DrawLayerModifier และ drawLayer() จะตั้งค่าเริ่มต้นของ clipToBounds และ clipToOutline เป็นเท็จ (I0eb8b, b/152810850)

  • เปลี่ยนชื่อ LayoutResult เป็น MeasureResult (Id8c68)

  • คอมโพสิชันศูนย์ที่เลิกใช้งานแล้ว ควรแทนที่ด้วยตัวแก้ไข LayoutSize.Fill + LayoutAlign.Center หรือคอมโพสิชัน Box หรือ Stack รายการใดรายการหนึ่งที่ใช้ตัวแก้ไขที่เหมาะสม (Idf5e0)

  • เปลี่ยนชื่อ LayoutFlexible เป็น LayoutWeight เปลี่ยนชื่อพารามิเตอร์แบบแน่นเป็น "fill" (If4738)

  • DrawVector เปลี่ยนจากฟังก์ชันคอมโพสิเบิลปกติเป็นการแสดงผล Modifier drawVector() ซึ่งจะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)

  • แทนที่ฟังก์ชันคอมโพสิเบิล Clip ด้วยตัวแก้ไข drawClip() DrawClipToBounds เป็นแป้นพิมพ์ลัดที่สะดวกต่อการนำไปใช้เมื่อคุณต้องการตัดขอบรูปสี่เหลี่ยมผืนผ้าตามขอบเขตของเลเยอร์เท่านั้น (If28eb)

  • แทนที่ฟังก์ชันคอมโพสิเบิล DrawShadow ด้วยตัวแก้ไข drawShadow() ตอนนี้ระบบจะวาดเงาเป็นส่วนหนึ่งของ LayerModifier (I0317a)

  • ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposerแล้ว และนํา androidx.compose.Emittable ออกแล้ว เนื่องจากมี ComponentNode อยู่แล้ว androidx.compose.ViewAdapters ถูกนําออกแล้ว กรณีการใช้งานเหล่านี้ไม่รองรับแล้ว เลิกใช้งาน Compose.composeInto แล้ว ใช้ setContent หรือ setViewContent แทน เลิกใช้งาน Compose.disposeComposition แล้ว ใช้เมธอด dispose ใน Composition ที่ setContent แสดงแทน androidx.compose.Compose.subcomposeInto ย้ายไปที่ androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt เปลี่ยนชื่อเป็น ComponentNode#insertAt ComponentNode#emitRemoveAt เปลี่ยนชื่อเป็น ComponentNode#removeAt ComponentNode#emitMode เปลี่ยนชื่อเป็น ComponentNode#move (Idef00)

  • คอมโพเนนต์ Wrap ที่เลิกใช้งานแล้ว คุณสามารถแทนที่ด้วยตัวแก้ไข LayoutAlign หรือคอมโพสิชัน Stack (Ib237f)

  • ทําให้ระบบส่งต่อการวางแนวเลย์เอาต์จากโหนดเลย์เอาต์หลักไปยังโหนดย่อย เพิ่มตัวปรับแต่งทิศทางของเลย์เอาต์ (I3d955)

  • เปลี่ยนชื่อ Painter.toModifier เป็น Painter.asModifier เนื่องจาก Modifier ที่สร้างขึ้นใหม่มีการอ้างอิง Painter เดิมซึ่งแชร์กับอินสแตนซ์ Modifier หลายรายการได้ (I7195b)

  • รองรับทิศทางจากขวาไปซ้ายในตัวแก้ไข LayoutPadding (I9e8da)

  • เราได้รวม Density และ DensityScope ไว้ในอินเทอร์เฟซเดียว ตอนนี้คุณใช้ DensityAmbient.current แทน ambientDensity() ได้แล้ว แทนที่จะใช้ withDensity(density) ให้ใช้แค่ with(density) (I11cb1)

  • นําคลาส ValueHolder ออกแล้ว ปรับโครงสร้างคลาส AnimatedValue และ AnimatedFloat เพื่อทำให้ช่องค่าของแอนิเมชันเป็นนามธรรมเพื่อให้คลาสย่อยสามารถดูการอัปเดตค่าได้

    • เพิ่มคลาสโมเดลสําหรับ AnimatedValue, AnimatedFloat ฯลฯ
    • เพิ่ม @Composable API ชุดใหม่ที่มีน้ำหนักเบาสำหรับแสดงภาพเคลื่อนไหวระหว่างค่า
    • (I79530)
  • การเปลี่ยนแปลงที่สำคัญใน Ambients API ดูรายละเอียดได้ในบันทึกและเอกสารประกอบของ Ambient<T> (I4c7ee, b/143769776)

  • ตอนนี้ตำแหน่ง Int ของเส้นการจัดตำแหน่งที่แสดงผลจาก Placeable#get(AlignmentLine) จะไม่เป็นค่า Null หากไม่มีบรรทัดการจัดตำแหน่งที่ค้นหา ระบบจะแสดงผล AlignmentLine.Unspecified (I896c5, b/158134875)

  • แก้ไขข้อบกพร่อง ConstraintLayout ที่ทําให้เกิดความขัดข้องในการคอมโพสิชันใหม่ (Ibee5a, b/158164341)

  • มีการเปลี่ยนแปลง API ของแลมดาต่อท้าย WithConstraints ตอนนี้มีขอบเขตผู้รับแทนพารามิเตอร์ 2 รายการ ซึ่งนอกเหนือจากข้อจำกัดและ layoutDirection แล้วยังมีพร็อพเพอร์ตี้ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)

  • เปลี่ยนชื่อ LayoutModifier2 เป็น LayoutModifier (Id29f3)

  • ตอนนี้ฟังก์ชันการวัดค่าอินทรินซิกใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope ซึ่งให้ API การค้นหาอินทรินซิกที่มีการวางแนวที่นำไปใช้ในเชิงปริยาย (Id9945)

  • เลิกใช้งาน LayoutDirectionAmbient แล้ว หากต้องการอ่านการวางแนวเลย์เอาต์ที่ภาษากำหนด ให้ใช้ localeLayoutDirection ใน ConfigurationAmbient (I851b1)

  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)

  • เราเลิกใช้งานคอมโพสิเบิล ParentData แล้ว คุณควรสร้างตัวแก้ไขที่ใช้อินเทอร์เฟซ ParentDataModifier หรือใช้ตัวแก้ไข LayoutTag หากต้องการติดแท็กองค์ประกอบย่อยของเลย์เอาต์เพื่อจดจําภายในบล็อกการวัด (I51368, b/150953183)

  • เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันคอมโพสิเบิล OnPositioned และ OnChildPositioned (I2ec8f)

  • ไม่อนุญาตให้ใช้การถ่วงเชิงลบใน LayoutPadding คุณควรใช้ LayoutOffset แทนสำหรับออฟเซ็ตตำแหน่งเชิงลบ (Ifb5b1)

  • WithConstraints ได้พารามิเตอร์ LayoutDirection (I6d6f7)

  • อัปเดต Flag ComposeFlags.COMPOSER_PARAM เป็น true ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน ในระดับสูง การดำเนินการนี้จะทําให้ระบบสร้างฟังก์ชัน @Composable ที่มีพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งจะส่งผ่านไปยังการเรียก @Composable ถัดไปเพื่อให้รันไทม์จัดการการดําเนินการได้อย่างเหมาะสม การเปลี่ยนแปลงนี้ถือเป็นการเปลี่ยนแปลงที่สำคัญซึ่งจะทำให้เกิดข้อจำกัดในการใช้งานไบนารี อย่างไรก็ตาม การเปลี่ยนแปลงนี้ควรรักษาความเข้ากันได้ระดับซอร์สโค้ดในการใช้งานคอมโพซทั้งหมดที่ได้รับอนุญาต (I7971c)

  • เปลี่ยน LayoutCoordinates เพื่อให้ providedAlignmentLines เป็น Set แทน Map และทำให้ LayoutCoordinates ใช้โอเปอเรเตอร์ get() แทนในการดึงข้อมูลค่า วิธีนี้ช่วยให้ตัวแก้ไขแก้ไขค่าอย่างน้อย 1 ค่าของชุดได้ง่ายขึ้นโดยไม่ต้องสร้างคอลเล็กชันใหม่สําหรับตัวแก้ไขแต่ละรายการ (I0245a)

  • LayoutCoordinates ไม่มีพร็อพเพอร์ตี้ตำแหน่งแล้ว พร็อพเพอร์ตี้ตำแหน่งจะไม่มีความหมายเมื่อพิจารณา LayoutModifiers, การพลิก หรือการปรับขนาด นักพัฒนาซอฟต์แวร์ควรใช้ parentCoordinates และ childToLocal() เพื่อคํานวณการเปลี่ยนรูปแบบจาก LayoutCoordinate หนึ่งไปยังอีกรูปแบบหนึ่งแทน

    LayoutCoordinates ใช้ IntPxSize สำหรับพร็อพเพอร์ตี้ขนาดแทน PxSize เลย์เอาต์ใช้ขนาดพิกเซลแบบจำนวนเต็มสำหรับเลย์เอาต์ ดังนั้นขนาดเลย์เอาต์ทั้งหมดควรใช้จำนวนเต็ม ไม่ใช่ค่าทศนิยม (I9367b)

  • การปรับปรุงอินเทอร์เฟซ API ของข้อจํากัด (I0fd15)

  • เพิ่ม TextDirection.Content (I48f36)

  • ปรับเมนูแถบเครื่องมือให้แสดงการคัดลอก ตัด วาง อย่างถูกต้อง (Id3955)

  • เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)

  • เปลี่ยนชื่อ TextDirectionAlgorithm เป็น TextDirection (I75ce8)

  • เปลี่ยนชื่อ TextDirection เป็น ResolvedTextDirection (I3ff38)

  • เพิ่ม HapticFeedback ไปยัง TextField Selection (I58050)

  • เพิ่มวิธีการคัดลอก ตัด และวางลงในการเลือก TextField (Idb70b)

  • ลบ TestTag และ Semantics แล้ว ใช้ Modifier.testTag และ Modifier.semantics แทน (I15ff0, b/158841414)

  • เปลี่ยนชื่อแพ็กเกจสำหรับ Locale และ LocaleList จาก androidx.ui.text เป็น androidx.ui.intl (I8132c)

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString(builder: Builder) เป็น annotatedString(builder: Builder) (Ia6377)

  • การเปลี่ยนแปลง API: เปลี่ยนชื่อ AnnotatedString.Item เป็น AnnotatedString.Range (I2d44d)

  • เพิ่มแถบเครื่องมือสําหรับการดำเนินการที่เกี่ยวข้องกับข้อความ (I49d53)

  • LifecycleOwnerAmbient ใหม่พร้อมใช้งานแล้ว ตอนนี้ Activity ที่คุณใช้กับ UI ของ Compose ควรขยาย androidx.activity.ComponentActivity (หรือ AppCompatActivity) ระบบเลิกใช้งาน setContent ใน android.app.Activity แล้ว (Idb25a, b/153141084)

  • แทนที่ชื่อแพ็กเกจ ui-android-text (androidx.text) ด้วย androidx.ui.text.platform เพื่อให้สอดคล้องกับนโยบาย androidx (I42711)