Compose Foundation

เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายรากฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
7 ตุลาคม 2026 1.12.1 - 1.13.0-beta01 -

โครงสร้าง

Compose คือการรวมรหัสกลุ่ม 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 ของ Compose ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต

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

หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ แอปหรือโมดูล

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

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

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker

เวอร์ชัน 1.13

เวอร์ชัน 1.13.0-beta01

7 ตุลาคม 2026

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

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

  • เพิ่มคำอธิบายประกอบ @FloatRange และ @IntRange ลงในพารามิเตอร์จากโรงงาน PolygonShape และ PolygonShapeScope รวมถึงจำกัด innerRadiusRatio ใน PolygonShape.star และ PolygonShape.pillStar เป็น (0f, 1f) (I47ea3)
  • อัปเดต PolygonShape API: ย้าย CornerRounding ไปยังระดับบนสุดด้วย Factory dp() และ fraction() แทนที่ส่วนขยาย transformed() และ scaledToFit() ด้วย PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) และ PolygonShape.copy() ที่เปลี่ยนแปลงได้ในที่ (If5970)
  • แก้ไขข้อบกพร่องที่การขอโฟกัสใน BasicTextField ก่อนที่หน้าต่างจะโฟกัส (เช่น ใน onCreate) ทำให้แป้นพิมพ์ซอฟต์แวร์ไม่ปรากฏ BasicTextField จะรอให้หน้าต่างได้รับโฟกัสก่อนเริ่มเซสชันการป้อนข้อความ หากการเปลี่ยนแปลงนี้ทำให้นักพัฒนาแอปพบปัญหา คุณสามารถเปลี่ยนกลับไปใช้ลักษณะการทำงานก่อนหน้าได้โดยตั้งค่า ComposeFoundationFlags.isTextFieldWaitWindowFocusForInputSessionEnabled เป็น false (I4206b)
  • ตอนนี้ไลบรารีจะกำหนดเป้าหมายเป็น Kotlin 2.2 และต้องใช้ kotlinc 2.2 (I82396, b/498369605)
  • เพิ่มstyleLayer()เมธอดลงใน CommonStyle ซึ่งประกาศว่า พร็อพเพอร์ตี้ทั้งหมดในเลเยอร์จะมีลำดับความสำคัญสูงกว่าพร็อพเพอร์ตี้ ที่ตั้งค่าไว้ในเลเยอร์ที่ต่ำกว่า ตอนนี้ state() เมธอด (และตัวช่วยสถานะ เช่น pressed()) จะสร้างเลเยอร์โดยปริยาย (I24473)

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

  • แก้ไขปัญหาใน FlexBox ที่การตั้งค่า alignContent(FlexAlignContent.Stretch) ไม่ถูกต้องทำให้รายการย่อย ต้องยืดตามบรรทัด (Ida156)
  • แก้ไขปัญหาใน FlexBox ที่ระบบบังคับให้ขยายบรรทัดที่ตัดคำ (FlexWrap.Wrap หรือ FlexWrap.WrapReverse) บรรทัดเดียวเป็นข้อจำกัดแกนไขว้ขั้นต่ำของคอนเทนเนอร์ ซึ่งทำให้ alignContent และ alignItems จัดแนวรายการไม่ถูกต้อง (I038b1)
  • แก้ไขIllegalStateExceptionข้อขัดข้องเมื่ออัปเดต consumeWindowInsets, windowInsetsPadding หรือ onConsumedWindowInsetsChanged ในโหนดตัวแก้ไขที่แยกออกมา เช่น ระหว่างการเคลื่อนไหวของ movableContent (I80ae5)
  • อัปเดตทรัพยากร Dependency ของ androidx.lifecycle:lifecycle-runtime เป็น 2.10.0 แล้ว ต้องใช้เวอร์ชันนี้เพื่อให้การตรวจสอบ Lint ของรันไทม์วงจรการใช้งานแบบรวมทำงานร่วมกับ AGP เวอร์ชัน 9.5.0-alpha04 ขึ้นไปได้ (I99bfd, b/556807521)

เวอร์ชัน 1.13.0-alpha03

9 กันยายน 2569

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

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

  • เพิ่มการรองรับการระบุรูปแบบของส่วนต่างๆ ของ Composable แบบผสม (เช่น TextField หรือ DatePicker) โดยตรงในพารามิเตอร์รูปแบบของ Composable ซึ่งจะช่วยให้สร้าง Composable ที่คล้ายกับ TextField ได้ เช่น Composable ที่อนุญาตให้ปรับแต่งกล่องตกแต่งแต่ละกล่องโดยใช้สไตล์ ซึ่งจะช่วยให้สามารถลบล้างได้ที่ระดับธีมหรือที่เว็บไซต์ที่เรียกใช้ (I43c0f)
  • ระบบเลิกใช้งานการโอเวอร์โหลดช่องข้อความ Material 2 ที่ยอมรับพารามิเตอร์ value, onValueChange แล้ว โปรดเปลี่ยนไปใช้โอเวอร์โหลดที่ใช้ TextFieldState เพื่อยกสถานะ (I6b841, b/556234973)
  • นำคำอธิบายประกอบ @ExperimentalFoundationApi ออกจาก undoState ใน TextFieldState แล้ว (I93a44)
  • เพิ่มออบเจ็กต์การกำหนดค่าเริ่มต้นสำหรับเลย์เอาต์ที่โหลดแบบ Lazy แต่ละรายการซึ่งมีค่าเริ่มต้นที่ใช้ในฟังก์ชัน @Composeable ที่เกี่ยวข้อง ปัจจุบันมีเฉพาะกรอบเวลาแคชเริ่มต้นสำหรับแต่ละเลย์เอาต์ (I58633)
  • เมื่อเปิดใช้ฟีเจอร์ isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]s เลย์เอาต์แบบ Lazy จะใช้หน้าต่างแคชที่ใช้ขนาดเฉลี่ยของรายการที่มองเห็นเพื่อดึงข้อมูลล่วงหน้าก่อนวิวพอร์ต โดยมีหน้าต่างล่วงหน้าขั้นต่ำ 10% ของวิวพอร์ตและหน้าต่างล่วงหน้าสูงสุด 50% ของวิวพอร์ต (I59212)
  • เลิกใช้งาน LazyListPrefetchStrategy, LazyListPrefetchScope และ LazyListPrefetchResultScope แล้ว ควรกําหนดค่าลักษณะการทํางานของการดึงข้อมูลล่วงหน้าโดยใช้ LazyLayoutCacheWindow ใน LazyColumn หรือ LazyRow LazyLayoutCacheWindow มีกลไกการแคชแบบประกาศที่อิงตามวิวพอร์ต ซึ่งจะเตรียมรายการโดยอัตโนมัติก่อนหน้าและเก็บรายการไว้ด้านหลังหน้าต่างที่มองเห็นได้โดยไม่ต้องใช้การเรียกกลับการจัดกำหนดการที่ซับซ้อน API ใหม่นี้ใช้งานง่ายกว่าและต้องใช้ขั้นตอนการกำหนดค่าน้อยกว่า LazyListPrefetchStrategy (I1fa2d)
  • เพิ่มฟังก์ชันส่วนขยาย PolygonShape.transformed และ PolygonShape.scaledToFit ใน Compose Foundation สำหรับการเปลี่ยนรูปทรงและปรับรูปร่างของรูปหลายเหลี่ยม (I3f327)
  • การเปลี่ยนแปลงนี้จะปรับโครงสร้าง Styles API เป็น 2 ส่วนที่แยกกัน ได้แก่ DSL ของสไตล์และตัวแก้ไขที่กำหนดค่าโดย DSL การติดตั้งใช้งานที่อิงตาม Style ก่อนหน้านี้ยังคงมีอยู่ แต่จะเลิกใช้งานและนำออก การใช้งานใดๆ ควรแทนที่ด้วย CommonStyle ใหม่ที่อิงตาม API
  • องค์ประกอบหลักที่เปิดตัวมีดังนี้
    • CustomStyle & CommonStyle: อินเทอร์เฟซพื้นฐานและตัวช่วยผสานสำหรับการประกาศสไตล์ที่ใช้ร่วมกันได้
    • StyleResolver: แก้ไขพร็อพเพอร์ตี้สไตล์ในการจัดองค์ประกอบและเชื่อมโยงกับโหนดเลย์เอาต์ผ่าน Modifier.styleResolver
    • Modifier scopes: Modifier.appearance, Modifier.placement และ Modifier.padding กับ Modifier.graphicsLayer แบบไดนามิกที่อิงตามการเรียกกลับ
    • Primitive ของพร็อพเพอร์ตี้: stylePropertyOf, styleLocalOf
    • ประเภทที่มีประโยชน์สำหรับพร็อพเพอร์ตี้รูปแบบ ได้แก่ Breadth, Fill และ Shadows
  • ตัวแก้ไขใหม่มีประโยชน์สำหรับการติดตั้งใช้งานระบบการออกแบบโดยใช้ Styles API แต่ไม่จำเป็นต้องใช้ ระบบการออกแบบอาจใช้ตัวแก้ไขเหล่านี้หรือมีตัวแก้ไขของตัวเอง (Ieb8cc, b/549921960)
  • นำคำอธิบายประกอบ ExperimentalFoundationApi ออกจาก API TextFieldBuffer ที่ติดตามการเปลี่ยนแปลง (I546a7)
  • เปิดตัว MorphPolygonShape ใน Compose Foundation สำหรับภาพเคลื่อนไหวการเปลี่ยนรูปร่างระหว่างรูปหลายเหลี่ยม พร้อมกับตัวแปลง toPolygonShape() สำหรับ RoundedCornerShape และ CutCornerShape (Ic5a89)
  • เปิดตัว PolygonShape ใน Compose Foundation สำหรับการแสดงผลรูปหลายเหลี่ยมปกติ รูปดาว และรูปหลายเหลี่ยมโค้งที่กำหนดเองพร้อมการปรับมุมให้เรียบ (I0b99d)
  • ระบบเลิกใช้งานโอเวอร์โหลด BasicTextField ที่ยอมรับพารามิเตอร์ value, onValueChange แล้ว โปรดย้ายข้อมูลไปยังBasicTextFieldโอเวอร์โหลดที่ใช้ TextFieldState เพื่อยกสถานะ (I636bf, b/552879150)
  • BasicTextField(value, onValueChange)VisualTransformation จะเลิกใช้งานด้วยเช่นกันเนื่องจากแสดงผ่าน TextField นี้เท่านั้น การเปลี่ยนรูปแบบที่มีอยู่ควรย้ายข้อมูลไปยัง OutputTransformation (I636bf, b/552879150)
  • เราได้เลิกใช้งานการระบุ LazyLayoutCacheWindow และ LazyListPrefetchStrategy ผ่าน LazyListState เพื่อให้ระบุ LazyLayoutCacheWindow ไปยังฟังก์ชันที่ประกอบกันได้แทน (I71f19)
  • นำแฟล็กฟีเจอร์ชั่วคราว ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled ออกแล้ว (Ifff7f)
  • เพิ่ม InputTransformation.maxLengthTrim เพื่อจำกัดความยาวของข้อความโดยการตัดอักขระที่ป้อนเกินออก เพิ่ม InputTransformation.maxLengthReject เพื่อปฏิเสธอินพุตที่เกิน maxLength และเลิกใช้งาน InputTransformation.maxLength เพื่อใช้ maxLengthTrim และ maxLengthReject แทน (I8d4cd)

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

  • compileSdk สำหรับไลบรารี Compose ที่อัปเดตเป็น 37.1 ซึ่งจะต้องอัปเดต compileSdk สำหรับแอปและไลบรารีทั้งหมดที่ใช้ Compose (I05b0f)
  • แก้ไขปัญหาที่ไม่ได้ทำเครื่องหมายว่า WindowInsetsRulers IME ในการแทรกเป็นการเคลื่อนไหวระหว่างการย้อนกลับแบบคาดการณ์ และแก้ไขปัญหาที่ imePadding ไม่อัปเดตเมื่อสลับโฟกัสระหว่างช่องข้อความ (Id4562, b/537386261, b/539686000)
  • อัปเดตคอมโพเนนต์ SecureTextField และ OutlinedSecureTextField (รวมถึงการโอเวอร์โหลด BasicSecureTextField ที่เลิกใช้งานแล้ว) เพื่อใช้ TextObfuscationMode.System เป็นโหมดการปกปิดเริ่มต้นแทน TextObfuscationMode.RevealLastTyped (I76c7e)

เวอร์ชัน 1.13.0-alpha02

26 สิงหาคม 2026

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

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

  • Promoted Grid layout APIs (Grid, GridScope, GridConfigurationScope, GridFlow, Fr, GridTrackSize, GridTrackSpec, Modifier.gridItem) เป็นแบบเสถียร (I43ac4, b/462550392)
  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ BackgroundColor สำหรับ Modifier.background (I7eec3, b/518049030)
  • นำคำอธิบายประกอบ ExperimentalFlexBoxApi ออกและเปลี่ยนชื่อพร็อพเพอร์ตี้ที่อิงตามพิกเซลใน FlexConfigScope โดยมีคำต่อท้าย Px เพื่อความชัดเจน (I5b24e, b/543092286)
  • เก็บเฉพาะรายการที่แคชไว้เมื่อไม่ได้อยู่ใน Lookahead Pass เปิดตัวฟีเจอร์แจ้งว่าไม่เหมาะสม isKeepAroundDuringLookaheadDisabled หากต้องการกลับไปใช้ลักษณะการทำงานแบบเดิม ให้ตั้งค่าสถานะเป็น false (I110e9)
  • เพิ่มฟีเจอร์ทดลอง isLazyLayoutItemAnimatorVisibleBoundsFixEnabled เขียน เมื่อเปิดใช้ ระบบจะคำนวณขอบเขตดัชนีของรายการที่มองเห็นได้ก่อนที่จะเรียกใช้ภาพเคลื่อนไหวของตำแหน่งในมาตรการ LazyList และ LazyGrid (I56150)
  • แก้ไขการใช้งานในการส่งครั้งแรกใน Draggable ซึ่งจะช่วยให้มั่นใจได้ว่าหากมีการใช้เหตุการณ์การกดลงในการส่งผ่านครั้งแรก การลากจะเริ่มขึ้นทันทีในการส่งผ่านหลัก การเปลี่ยนแปลงลักษณะการทำงานนี้จะอยู่หลังแฟล็กฟีเจอร์ ComposeFoundationFlagsisDraggableInitialPassConsumptionFixEnabled (I6a77f, b/532946466)

เวอร์ชัน 1.13.0-alpha01

12 สิงหาคม 2569

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

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

  • ตามที่ได้ประกาศไว้ในรุ่นก่อนหน้า เราได้นำการติดตั้งใช้งาน Modifier.onFocusedBoundsChanged ออกทั้งหมดแล้ว การใช้ตัวแก้ไขนี้จะไม่มีการดำเนินการใดๆ ย้ายข้อมูลไปใช้ FocusTargetModifierNode.getFocusedRect() เพื่อค้นหาข้อมูลนี้ตามต้องการ (Ia39db, b/220030968)

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

  • เราได้เลิกใช้งานการระบุ LazyLayoutCacheWindow และ LazyGridPrefetchStrategy ผ่าน LazyGridState เพื่อให้ระบุ LazyLayoutCacheWindow ไปยังฟังก์ชันที่ประกอบกันได้แทน (I3f31e)
  • นำธง isSkipItemPlacementAnimationFixEnabled ออก (I890f3, b/493183465)
  • นำธง isClearNestedScrollCoroutineScopeFixEnabled ออก (Iedfd7, b/506963276)
  • เปลี่ยนแฟล็ก isCacheWindowVisibleItemCountCheckEnabled เป็น isCacheWindowLookaheadCheckEnabled (I2ea06)
  • TextFieldState ตอนนี้จะบันทึกและกู้คืนข้อมูลรูปแบบข้อความแล้ว AnnotatedString.Annotation.Saver เปิดให้ใช้งานแบบสาธารณะแล้วเพื่อให้บันทึกและกู้คืนออบเจ็กต์ AnnotatedString.Annotation ได้ (I8b533, b/135556699)
  • เพิ่มหน้าต่างแคชไปยังเลย์เอาต์ตารางกริดแบบสลับที่โหลดอย่างช้าๆ หากต้องการเปลี่ยนกลับไปใช้ลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบเดิม ให้ตั้งค่า isUsingCacheWindowInStaggeredGrids เป็น "เท็จ" (I1c70d)
  • FlexBox และ API การกำหนดค่าที่เกี่ยวข้องได้รับการเลื่อนขั้นเป็นเวอร์ชันเสถียรและไม่ได้อยู่ในเวอร์ชันทดลองอีกต่อไป (I209ed, b/475491619)
  • เพิ่มการกำหนดค่า maxItemsInEachLine ใน FlexBox เพื่ออนุญาตให้จำกัดจำนวนรายการต่อบรรทัดเมื่อเปิดใช้การตัดข้อความ (I2744b, b/475491619)
  • ใส่คำอธิบายประกอบให้กับเมธอดพื้นฐานที่ว่างเปล่าซึ่งลบล้างได้ทั่วทั้ง Compose ด้วย @EmptySuper เพื่อระบุว่าการใช้งานที่ลบล้างไม่ควรเรียกใช้ super (Id407b)
  • เลื่อนระดับ WindowInsets Visibility API และ Animation API เป็น เวอร์ชันเสถียร (I37441, b/537329254)
  • ตอนนี้การคลิกองค์ประกอบที่คลิกได้จะเล่นเอฟเฟกต์เสียงของการโต้ตอบโดยอัตโนมัติใน Android (Ia72f8)
  • ตอนนี้หน้าต่างแคชจะเติมหน้าต่างล่วงหน้าอีกครั้งหากจำนวนรายการที่มองเห็นได้เปลี่ยนแปลงโดยไม่ต้องเลื่อน ตั้งค่าฟีเจอร์isCacheWindowVisibleItemCountCheckEnabledเป็นfalseเพื่อปิดใช้การตรวจสอบนี้และเปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิม (I67b5a)
  • อัปเดตพร็อพเพอร์ตี้ NestedScrollDispatcher.coroutineScope เพื่อส่งคืน CoroutineScope ที่ยกเลิกอย่างปลอดภัยเมื่อไม่ได้แนบหรือแยกออก (I9b112, b/535290281)
  • เปลี่ยนชื่อ enableNonScrollCaching เป็น isNonScrollCachingEnabled (I7a54b, b/535290282)
  • เพิ่ม @CheckResult ใน SemanticsNodeInteraction.isDisplayed() และ isNotDisplayed() เพื่อให้แน่ใจว่าค่าที่ส่งคืนได้รับการยืนยัน ซึ่งจะป้องกันไม่ให้การทดสอบล้มเหลวโดยไม่มีการแจ้งเตือนเมื่อนักพัฒนาแอปใช้ฟังก์ชันเหล่านี้แทน API การยืนยันโดยไม่ได้ตั้งใจ (I1b447, b/508178494)
  • ทำให้ LazyLayoutCacheWindow เสถียร (I2cda3)
  • เพิ่มพารามิเตอร์ bringIntoViewSpec สำหรับ Horizontal และ Vertical Pager เพื่อให้แทนที่การใช้งานเริ่มต้นของ Pager ได้ (Icdcbf, b/505052292)
  • แก้ไขข้อบกพร่องในการตรวจหาการไม่ได้ใช้งานของตัวกำหนดเวลาการดึงข้อมูลล่วงหน้าของเลย์เอาต์แบบ Lazy ก่อนหน้านี้ ตัวกำหนดตารางเวลาอาจพิจารณาว่าตัวเองไม่ได้ใช้งานอย่างไม่ถูกต้องเมื่อเฟรมล่าช้าอย่างมาก ซึ่งอาจทำให้เกิดอาการกระตุกเมื่อเลื่อน หากต้องการเปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิม ให้ตั้งค่าisLazyPrefetchSchedulerIdleTimeFixEnabled Compose Flag เป็น false (If0594, b/458024295)
  • เปิดตัว coroutineScopeOrNull() ใน NestedScrollDispatcher ซึ่งเป็น API ทางเลือกในการเข้าถึงขอบเขตโครูทีนหลักของ Dispatcher (I18c0f)
  • แก้ไขการเลื่อนข้อความแนวนอนระหว่างการเลื่อนเกินใน Compose ปิดใช้ได้ผ่าน AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled (Ica169, b/532079110, b/532081619)
  • เปิดตัวฟีเจอร์ isDraggableZeroDeltaConsumptionEnabled เพื่อควบคุมการเปิดตัวการแก้ไขนี้ใน Draggable ตอนนี้ระบบจะประมวลผลเหตุการณ์ที่มีเดลต้าเป็น 0 ได้อย่างถูกต้องแล้ว (I50eb1, b/524163413)
  • ตอนนี้การเลือกข้อความจะจำกัดความยาวของข้อความอย่างปลอดภัยในระหว่างการอัปเดตข้อความพร้อมกันเพื่อป้องกันไม่ให้เกิดข้อขัดข้อง (I64fd7)
  • ตอนนี้ androidx.benchmark มีminSdk 24 รายการ (Ic2a85)
  • ตอนนี้ลิงก์จะจัดการการคลิกได้ดีขึ้นเมื่อมีการขยายหลายบรรทัด เราได้ลบล้างเป้าหมายการแตะเป็น 0 เพื่อรองรับการดำเนินการนี้ หากไม่ต้องการให้เป็นเช่นนี้ ให้ใช้ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabledเพื่อลบล้าง (Ide41b, b/361106057)
  • แก้ไขข้อยกเว้นที่มีปริมาณน้อยเมื่อเขียนไปยังออบเจ็กต์สถานะที่เปลี่ยนแปลงได้ (I48194, b/503110696)
  • แสดง keys ที่สังเกตได้ใน SaveableStateHolder เพื่อลดความซับซ้อนในการจัดการสถานะการนำทาง/สแต็กย้อนกลับ และไม่จำเป็นต้องใช้การติดตาม key ภายนอก เข้าถึงผ่าน holder.keys นำออกด้วย removeState (I9bbbb, b/398887924)
  • นำIndirectPointerEventฟังก์ชันตัวช่วยเวอร์ชันทดลองที่ล้าสมัยออก (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • ทำให้ LocalBringIntoViewSpec เสถียรใน Android (Ibcb97)
  • เพิ่มธง isMultiLaneCacheWindowEnabled (I3d997)
  • สร้าง SelectionState API ใหม่เพื่อส่งไปยัง SelectionContainer สำหรับการสังเกตข้อความที่เลือกและการอัปเดตการเลือกโดยอัตโนมัติ" เป็น androidx-main am: 929401883c am: c02871cac4 (I15bd4)
  • เพิ่ม LocalTextFieldContentObserverRegistrationExecutor ซึ่งเป็นวิธีมอบสิทธิ์การลงทะเบียน ContentObserver โดยนัยที่เกิดขึ้นใน TextField ให้กับเธรดเบื้องหลัง (Ib4fa6, b/505287297, b/509842675)
  • เปลี่ยนชื่อ TextObfuscationMode.Default เป็น System แล้ว TextObfuscationMode.RevealLastTyped จะทำหน้าที่เป็นการลบล้างที่แน่นอนและแสดงอักขระที่พิมพ์ล่าสุดเสมอ อัปเดตอาร์กิวเมนต์เริ่มต้นของ BasicSecureTextField เป็น System (If26d3, b/425658491, b/453647378)

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

  • แก้ไขปัญหาที่การเลื่อนอย่างรวดเร็วใน Compose ที่ซ้อนอยู่ภายในคอนเทนเนอร์การเลื่อนของ Android (เช่น ScrollView หรือ CoordinatorLayout) จะคำนวณความเร็วไม่ถูกต้องในบางครั้ง (I0f017)
  • แก้ไขปัญหาใน FlexBox ที่การย้ายโฟกัสไม่ตรงกับลำดับภาพของรายการเมื่อใช้ทิศทางย้อนกลับ การย้อนกลับ หรือลำดับรายการที่กำหนดเอง (I4cc61, b/521609263)
  • แก้ไขปัญหาที่ตัวแก้ไขเลย์เอาต์มาตรฐาน เช่น Modifier.fillMaxWidth() และ Modifier.fillMaxHeight() ไม่มีผลกับรายการภายใน FlexBox เว้นแต่จะมีการระบุแฟกเตอร์การขยาย Flex อย่างชัดเจน (Ib0ac3, b/515657458)
  • การเริ่มต้นระดับไฟล์ที่เพิ่มประสิทธิภาพของfoundation พร็อพเพอร์ตี้คลาสค่าระดับบนสุดโดยใช้ตัวรับแบบไดนามิก (I570d7)
  • การเริ่มต้นออบเจ็กต์เสริมที่เพิ่มประสิทธิภาพของคลาส foundation-layout value (WindowInsetsSides ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I01c2b)
  • แก้ไขปัญหาที่รายการเมนูตามบริบทสำหรับการเลือกข้อความในฟีเจอร์เขียนแสดงสตริงที่ล้าสมัยหลังจากเปลี่ยนภาษาในแอปเมื่อปิดใช้การรีสตาร์ทกิจกรรมผ่าน android:configChanges (Ic910b, b/515156417)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของcompose:foundation คลาสค่า (KeyModifiers, MarqueeAnimationMode, Source ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I78455)
  • แก้ไขภาพเคลื่อนไหวของสไตล์เพื่อให้แน่ใจว่าเมื่อเปลี่ยนจากค่าที่ตั้งค่าแบบมีเงื่อนไขเท่านั้นในภาพเคลื่อนไหว ระบบจะถือว่าเป็นการเปลี่ยนไปและเปลี่ยนจากค่าเริ่มต้นของพร็อพเพอร์ตี้ (I8e41d, b/527140078)
  • แก้ไขปัญหาใน Grid ที่รายการที่วางอัตโนมัติซึ่งมีช่วงที่ใหญ่กว่า แทร็กที่ชัดเจนที่มีอยู่ในการวางแนวที่จำกัดจะล้น ออกนอกขอบเขตของ Grid เมื่อใช้ช่องว่าง (I00ce0, b/506570362)
  • ล้างข้อมูล API (Ia8066)
  • แก้ไขข้อบกพร่องใน BasicTextField ซึ่งทำให้ไม่สามารถอัปเดตข้อความที่แยกออกมาไปยัง IME ได้อย่างถูกต้องเมื่อมีการขอ (I746fa, b/203549026, b/492363474)

เวอร์ชัน 1.12

เวอร์ชัน 1.12.1

9 กันยายน 2569

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

เวอร์ชัน 1.12.0

12 สิงหาคม 2569

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

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

เวอร์ชัน 1.12.0-rc01

29 กรกฎาคม 2026

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

เวอร์ชัน 1.12.0-beta02

1 กรกฎาคม 2026

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

เวอร์ชัน 1.12.0-beta01

17 มิถุนายน 2026

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

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

  • เปลี่ยนชื่อฟังก์ชันการทดสอบเพื่อทริกเกอร์เหตุการณ์ตัวชี้ทางอ้อม (I3ee35, b/509618414)
  • เปลี่ยนชื่อ TextObfuscationMode.Default เป็น System แล้ว TextObfuscationMode.RevealLastTyped จะทำหน้าที่เป็นการลบล้างที่แน่นอนและแสดงอักขระที่พิมพ์ล่าสุดเสมอ อาร์กิวเมนต์เริ่มต้นของ BasicSecureTextField ได้รับการอัปเดตเป็น System แล้ว (If26d3, b/425658491, b/453647378)
  • อัปเดต getSpanStyles และ getParagraphStyles เพื่อใช้ TextRange แทนดัชนีเริ่มต้น/สิ้นสุดแยกกัน ผ่อนปรนการตรวจสอบขอบเขตในคำค้นหาสไตล์เพื่อไม่ให้ส่งข้อยกเว้นอีกต่อไป และป้องกันไม่ให้เกิดข้อขัดข้องเมื่อค้นหาพร็อพเพอร์ตี้ของ TrackedRanges ที่ไม่ถูกต้อง (I62a9a, b/514404697)
  • เพิ่มฟีเจอร์พื้นที่ที่มีชื่อลงในเลย์เอาต์ตารางกริด ตอนนี้ นักพัฒนาแอป สามารถกำหนดพื้นที่เชิงความหมายโดยใช้ GridConfigurationScope.area() และวางไอเทมลงในพื้นที่เหล่านั้นโดยใช้การโอเวอร์โหลด Modifier.gridItem(area) ใหม่ ซึ่งจะแยกความตั้งใจเชิงความหมายออกจากพิกัดจริง (Id9303, b/487503921)
  • จากนั้นได้เพิ่มฟังก์ชันของตัวดำเนินการและฟังก์ชันของโรงงานรวมสำหรับ FlexBoxConfig และ FlexConfig เพื่ออนุญาตให้ผสานและลบล้างการกำหนดค่าเลย์เอาต์ (Icfdd8, b/475491619)
  • เพิ่ม RevealState.drag(), SwipeToRevealDragScope และเปิดเผย flingBehavior ที่กำหนดเองใน SwipeToReveal เพื่อให้ควบคุมท่าทางการปัด ออฟเซ็ต และภาพเคลื่อนไหวการวางแบบเป็นโปรแกรมได้ (Ibfe56, b/484185090)

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

  • แก้ไขปัญหาที่แถบเครื่องมือการเลือกข้อความอาจอัปเดตตำแหน่งหรือรายการไม่สำเร็จ (Ib2566)

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

  • ใน SelectionContainer ให้เลือก (ผ่านเมาส์) เพื่อเริ่มในพื้นที่ว่างระหว่าง Text ที่เลือกได้ (I93f69, b/502151445)
  • เปิดเผยอินเทอร์เฟซ AndroidClipboard สำหรับการทดสอบเพื่อเป็นวิธีจำลองการใช้งานคลิปบอร์ด (Ie4d72, b/512924975)
  • เพิ่มความเข้ากันได้แบบย้อนหลังสำหรับTextAttribute รูปแบบของ commitText() และ setComposingText() สำหรับ SDK>=37 บริการช่วยเหลือพิเศษ จะประกาศได้ว่ามีการเลือกข้อความแทนที่ ที่แนะนำหรือไม่ สำหรับ SDK<37 จะไม่ส่งผลต่อความคิดเห็นที่พูด (กล่าวคือลักษณะการทำงานที่มีอยู่) (I90e3d, b/439879822)

เวอร์ชัน 1.12.0-alpha03

19 พฤษภาคม 2026

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

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

  • ใน Style API เวอร์ชันทดลอง เราได้เพิ่มการรองรับการสร้างประเภทรูปแบบที่กำหนดเองซึ่งมีขอบเขตรูปแบบที่กำหนดเองได้ ซึ่งช่วยให้คุณเลือกพร็อพเพอร์ตี้ที่กำหนดได้ตามสไตล์ (เช่น การนำเลเยอร์กราฟิกหรือพร็อพเพอร์ตี้ข้อความออกทั้งหมด) รวมถึงช่วยให้ขยายขอบเขตได้โดยไม่ขึ้นอยู่กับสไตล์อื่นๆ (เช่น รองรับเฉพาะไวยากรณ์ playing { } ใน MediaPlayer ที่ประกอบได้) การเปลี่ยนแปลงนี้ทำให้ความเข้ากันได้ของไบนารีและแหล่งที่มาไม่เป็นไปตามข้อกำหนด การเปลี่ยนแปลงหลักที่ทำให้แหล่งที่มาไม่สามารถใช้งานร่วมกันได้คือฟังก์ชันตัวช่วยใน StyleScope ได้ย้ายไปเป็นฟังก์ชันส่วนขยายแล้ว (เช่น ตอนนี้ fun contentProperty(all: Dp) เป็นฟังก์ชันส่วนขยาย) การนำเข้าฟังก์ชันส่วนขยายที่จำเป็นหรือการนำเข้าสัญลักษณ์ทั้งหมดจาก androidx.compose.foundation.styles ควรเป็นสิ่งเดียวที่จำเป็นเพื่อให้โค้ดที่เรียกใช้เมธอดเหล่านี้คอมไพล์ได้อย่างถูกต้อง (I1ef27, b/493676648)
  • ScrollIndicatorState การติดตั้งใช้งานในตอนนี้จะแสดงผลออฟเซ็ตการเลื่อนจากจุดเริ่มต้นที่มองเห็นได้อย่างถูกต้องสำหรับเลย์เอาต์ที่กลับด้าน เพื่อให้มั่นใจว่าการนำเสนอภาพของตัวบ่งชี้ถูกต้อง (Ia3fae, b/503604996)
  • เพิ่มฟีเจอร์ isClearNestedScrollCoroutineScopeFixEnabled เพื่อควบคุมการแก้ไข (Ibd394, b/505343254)

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

  • เปิดใช้การเลื่อนอัตโนมัติเมื่อลากข้อความที่เลือกเกินวิวพอร์ตใน SelectionContainer (Ibcb08, b/424433794)

เวอร์ชัน 1.12.0-alpha02

6 พฤษภาคม 2026

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

เวอร์ชัน 1.12.0-alpha01

22 เมษายน 2026

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

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

  • เพิ่ม Flag ใหม่ isBasicTextFieldHeighInLinesOptimizationEnabled เพื่อเปิดใช้การเพิ่มประสิทธิภาพในการคำนวณความสูงของช่องข้อความในจำนวนบรรทัดขั้นต่ำ/สูงสุด ซึ่งควรเปิดอยู่โดยค่าเริ่มต้น หากพบการถดถอยในเลย์เอาต์ของช่องข้อความและการปิดใช้ฟีเจอร์นี้ช่วยแก้ไขปัญหาได้ โปรดรายงานข้อบกพร่องไปยังทีม Compose เพื่อตรวจสอบ (Idffae, b/486871837, b/487546327)
  • แก้ไขtextfieldการเลือกขณะแก้ไขข้อความระหว่างท่าทางสัมผัส (I6fd98, b/490509264)
  • เพิ่มการรองรับ colorFilter ใน StyleScope ใน Compose Foundation (I553a0)
  • เพิ่ม textMotion ไปยัง StyleScope แล้ว (Id8523, b/482301609)
  • เพิ่มKeyboardTypeตัวเลือกเพิ่มเติมเพื่อทำให้ชุดตัวเลือกแป้นพิมพ์ที่รองรับใน Android สมบูรณ์ ซึ่งรวมถึงวันที่ เวลา วันที่และเวลา ทศนิยมที่มีการลงนาม และอื่นๆ (I3713e, b/202353328)
  • นำการแจ้งว่าไม่เหมาะสม isNestedDraggablesTouchConflictFixEnabled ออก (I79e52, b/485966180)
  • นำการแจ้งว่าไม่เหมาะสม isDelayPressesUsingGestureConsumptionEnabled ออก (I533dd, b/485966702)
  • นำฟีเจอร์ที่ติดธง isBringIntoViewRltBouncyBehaviorInPagerFixEnabled ออกเนื่องจากมีการเปิดตัวในเวอร์ชันเสถียรแล้ว (I73fb2, b/485967682)
  • นำฟีเจอร์ที่ติดธง isCacheWindowRefillFixEnabled ออกเนื่องจากมีการเปิดตัวในเวอร์ชันเสถียรแล้ว (Ic7505, b/485967875)
  • นำออก ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled (I1f76c, b/485966320, b/477836055)
  • เพิ่มการโอเวอร์โหลดสำหรับ contentPadding และ externalPadding ใน StyleScope ที่ยอมรับ PaddingValues (I3a6ce, b/493154098)
  • เปลี่ยน VelocityTracker เพื่อใช้การติดตั้งใช้งานที่ Android Framework จัดเตรียมไว้ให้ (กำหนดค่าได้ด้วย AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled) (Ibc7e2, b/359962905)

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

  • เปลี่ยนวิธีติดตามภาพเคลื่อนไหวและพร็อพเพอร์ตี้เพื่อหลีกเลี่ยงภาพเคลื่อนไหวที่ซ้อนทับกันสำหรับพร็อพเพอร์ตี้เดียวกัน (I4921f)
  • แก้ไขข้อบกพร่องที่ทำให้เมนูตามบริบทขัดข้องเมื่อ TextField(หรือข้อความที่เลือกได้) อยู่ในกล่องโต้ตอบ (I21461, b/441759435)
  • อัปเดต Compose compileSdk เป็น API 37 ซึ่งหมายความว่าเมื่อใช้ Compose จะต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อย (Id45cd, b/413674743)
  • แก้ไขปัญหาในตารางกริดที่โฟกัสของแป้นพิมพ์และการไปยังส่วนต่างๆ ของการช่วยเหลือพิเศษเป็นไปตามลำดับการจัดองค์ประกอบของรายการแทนที่จะเป็นลำดับการจัดวางรูปตัว Z (I122a8, b/494096503)
  • แก้ไขข้อบกพร่องที่แถบเครื่องมือการเลือกข้อความจะซ่อนอย่างไม่ถูกต้องเมื่อแฮนเดิลเริ่มต้นและสิ้นสุดอยู่ในแนวเดียวกันในแนวนอน (เช่น การเลือกในหลายบรรทัดที่สิ้นสุดในบรรทัดว่าง) (I391d2, b/497724722)
  • แก้ไขปัญหาใน FlexBox ที่รายการไม่ย่ออย่างถูกต้องเมื่อเกินขอบเขตของคอนเทนเนอร์ (Ia741d, b/480797591)
  • แก้ไขข้อบกพร่องสำหรับ foregroundColor ที่ไม่ถูกต้อง (I74abe, b/493245886)
  • แก้ไข Inset ที่ล้าสมัยในกรณีที่ Listener Inset สำหรับ Compose ถูกแยกออกและต่อกลับ (I1e905, b/491346046, b/486084139)
  • เมื่อผู้ใช้เลื่อนเคอร์เซอร์ออกนอกพื้นที่ที่เลื่อนได้ ตอนนี้ระบบจะเลื่อนเคอร์เซอร์ไปยังพื้นที่ที่มองเห็นได้ (If694c, b/266094055)

เวอร์ชัน 1.11

เวอร์ชัน 1.11.4

1 กรกฎาคม 2026

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

เวอร์ชัน 1.11.3

17 มิถุนายน 2026

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

เวอร์ชัน 1.11.2

19 พฤษภาคม 2026

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

เวอร์ชัน 1.11.1

6 พฤษภาคม 2026

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

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

  • แก้ไขปัญหาใน FlexBox ที่รายการไม่ย่ออย่างถูกต้องเมื่อเกินขอบเขตของคอนเทนเนอร์ (Ia741d, b/480797591)

เวอร์ชัน 1.11.0

22 เมษายน 2026

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

เวอร์ชัน 1.11.0-rc01

8 เมษายน 2026

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

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

  • แก้ไขtextfieldการเลือกขณะแก้ไขข้อความระหว่างท่าทางสัมผัส (I2ba33, b/490509264)

เวอร์ชัน 1.11.0-beta02

25 มีนาคม 2026

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

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

  • เพิ่ม Flag isReverseLayoutNestedScrollConnectionInPagerFixEnabled เพื่อควบคุมการเปิดตัวการแก้ไขนี้ (I07404, b/399800244)
  • เปิดตัว isSkipItemPlacementAnimationFixEnabled เพื่อควบคุมการเปิดตัวฟีเจอร์นี้ (Id665d, b/455884472, b/352584409, b/410487464, b/372509998)
  • เพิ่ม MinMax(min: Dp, max: Fr) ไปยัง GridTrackSize แล้ว ซึ่งช่วยให้นักพัฒนาแอปกำหนดขอบเขตขั้นต่ำของแทร็กที่ยืดหยุ่นได้อย่างชัดเจน การใช้ MinMax(0.dp, 1.fr) จะข้ามคำค้นหาการวัดผลโดยธรรมชาติได้สำเร็จ ทำให้วางคอมโพเนนต์ SubcomposeLayout เช่น LazyColumn และ LazyRow ไว้ในแทร็กกริดแบบยืดหยุ่นได้อย่างปลอดภัยโดยไม่เกิดข้อขัดข้อง (Ieb8c2, b/483822148)

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

  • แก้ไขข้อบกพร่องใน FlexBox ซึ่งทำให้รายการหดตัวอย่างไม่ถูกต้องเมื่อมีขนาดเล็กที่สุด ตอนนี้รายการจะแชร์พื้นที่ที่ลดขนาดซึ่งยังไม่ได้ใช้กับรายการที่เกี่ยวข้องอย่างถูกต้องแล้ว นอกจากนี้ FlexBox จะไม่จำกัดรายการในแกนหลักโดยไม่จำเป็นอีกต่อไป หากรายการย่อไม่พอดีกับคอนเทนเนอร์ รายการจะล้นแกนหลักให้เห็น ใช้ Modifier.clipToBounds() หากต้องการตัด (Ief751, b/480797591)
  • ป้องกันไม่ให้ Keep Around เข้าถึงดัชนีที่ผิดกฎหมาย (I19121, b/485626636)
  • แก้ไขปัญหาใน Grid ที่ช่องว่างระหว่างแถวหรือคอลัมน์ที่สร้างโดยนัย ถูกละเว้นจากการคำนวณขนาดทั้งหมดของคอนเทนเนอร์ ซึ่งส่งผลให้เนื้อหาถูกตัด (Ib9df8, b/480372415)
  • Clipboard และ ClipboardManager จะขอใช้บริการของระบบในการเรียกใช้เมธอดครั้งแรก (If0016, b/487947860)
  • แก้ไขปัญหาใน Row ที่มี Arrangement.spacedBy ใน RTL ซึ่งรายการที่ล้นจะทำให้เลย์เอาต์และระยะห่างไม่ถูกต้อง (I44e53, b/476006478)

เวอร์ชัน 1.11.0-beta01

11 มีนาคม 2026

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

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

  • เพิ่มประสิทธิภาพการคำนวณขนาดขั้นต่ำภายในของ BasicTextField ComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled จะเป็นตัวควบคุมการตั้งค่าเหล่านี้ หากคุณต้องการปิดใช้ (I70ade)
  • เพิ่ม rememberUpdatedStyleState ซึ่งเป็นส่วนหนึ่งของ Style API เวอร์ชันทดลอง rememberUpdated ควรใช้เมื่อสร้างอินสแตนซ์ของ StyleState เมื่อคัดลอกพารามิเตอร์ของคอมโพเนนต์ที่ประกอบได้ (เช่น enabled) ลงในสถานะสไตล์ (Idf7ff, b/485510967)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ PointerInputChange และ HistoricalChange สำหรับการดึงค่าการปรับขนาดและการเลื่อน (I989a8, b/481333653)
  • เพิ่มฟังก์ชันการทำงานเพิ่มเติมสำหรับ API การทดสอบแทร็กแพด เพื่อจำลองเส้นโค้งและอินพุตต่างๆ สำหรับท่าทางสัมผัสของแทร็กแพด (I290fb, b/473603145, b/479213358)
  • แยก PointerEventType.Pan ใหม่เป็น PointerEventType.PanStart, PointerEventType.PanMove และ PointerEventType.PanEnd ในทำนองเดียวกัน PointerEventType.Scale ก็แบ่งออกเป็น PointerEventType.ScaleStart, PointerEventType.ScaleChange และ PointerEventType.ScaleEnd การแยกนี้ช่วยให้ส่งข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นและสิ้นสุดของท่าทางสัมผัสการแพนและการปรับขนาดที่แพลตฟอร์มตีความ ซึ่งจะช่วยให้ตัวแฮนเดิลอินพุตของ Pointer ใน Compose ใช้ข้อมูลนี้เพื่อตรวจหาเหตุการณ์ได้อย่างเหมาะสม และโดยเฉพาะอย่างยิ่งทราบเมื่อการแพนหรือการปรับขนาดเสร็จสิ้น (I4daf6, b/479285849, b/481333653)
  • เพิ่ม constraints ลงใน GridConfigurationScope เพื่อให้กำหนดแทร็กตารางกริดตามขนาดที่มีได้ (I80a41, b/481205205, b/481205205)
  • ตอนนี้ FlexBox DSL ใช้ฟังก์ชัน (เช่น grow(1f)) แทนพร็อพเพอร์ตี้ (เช่น grow = 1f) สำหรับการกำหนดค่าภายใน FlexBoxConfig และ Modifier.flex (I8dbae, b/475491619)

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

  • แก้ไขข้อบกพร่องในเรื่องที่ OutputTransformation ทำให้มีการแทรกอักขระซ้ำใน IME บางรายการ (I9fdc0)
  • เพิ่มการรองรับการปัดไปยังท่าทางการเลื่อนแทร็กแพด (I55f8a, b/479285849)
  • เพิ่มเกณฑ์เปรียบเทียบสำหรับ Style API เวอร์ชันทดลอง (I67437)

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

  • เพิ่มพร็อพเพอร์ตี้ InputTextSuggestionState เพื่อช่วยระบุสถานะต่างๆ ที่อินพุตการทับศัพท์อาจอยู่ในเมื่อมีคำแนะนำในการแทนที่ข้อความ นอกจากนี้ ยังมีการเปิดตัว TextCompositionRange เพื่อติดตามช่วงของช่วงการเรียบเรียงข้อความการทับศัพท์ปัจจุบัน ค่า Null แสดงว่าไม่มีการเรียบเรียง (I7a67f, b/476472318)
  • เพิ่มการโอเวอร์โหลดใหม่ใน BasicTooltipBox ซึ่งช่วยให้กำหนดค่า propagateMinConstraints ได้คล้ายกับพารามิเตอร์ของ Box ที่มีชื่อเดียวกัน ซึ่งจะช่วยให้ส่งข้อจำกัดขั้นต่ำไปยังองค์ประกอบย่อยของ BasicTooltipBox ได้โดยตรงโดยไม่ต้องให้ BasicTooltipBox ผ่อนปรนข้อจำกัด ขอขอบคุณ Steven Schoen (Ib145f, b/467532639, b/301605744)

เวอร์ชัน 1.11.0-alpha06

25 กุมภาพันธ์ 2026

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

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

  • เปิดตัว API รูปแบบทดลองที่ช่วยให้ปรับแต่งฟังก์ชันที่ประกอบกันได้ในลักษณะที่สอดคล้องกัน API นี้อยู่ระหว่างการพัฒนาและอาจมีการเปลี่ยนแปลงที่สำคัญก่อนที่จะเสถียร ดูรายละเอียดวิธีใช้ API นี้ได้ในเอกสารประกอบที่รวมไว้ (I7fed2, b/455788242)

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

  • Modifier.combinedClickable จะได้รับการเขียนใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลพอยน์เตอร์ระงับเพื่อเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยค่าสถานะที่คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ - ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)

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

  • การModifier.combinedClickableเขียนใหม่ทำให้เกิดการถดถอยสำหรับลักษณะการทำงานของการคลิกแบบยาว ซึ่งอาจทำให้การกดแบบลึกทริกเกอร์การคลิกแบบยาวซ้ำๆ ในอุปกรณ์บางเครื่อง ปัญหานี้จะได้รับการแก้ไขในรุ่นถัดไป ในระหว่างนี้คุณสามารถตั้งค่า ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=false เพื่อหลีกเลี่ยงปัญหานี้ได้

เวอร์ชัน 1.11.0-alpha05

11 กุมภาพันธ์ 2026

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

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

  • เปิดตัว isNestedDraggablesTouchConflictFixEnabled เพื่อแก้ไขความขัดแย้งที่ซ้อนกันซึ่งลากได้ เราจะให้ความสำคัญกับการลากแนวตั้งมากกว่าการลากแนวนอน เนื่องจากในแง่ของ UX การลากแนวตั้งจะมีความอิสระและความไม่แน่นอนมากกว่าเมื่อผู้ใช้ใช้ท่าทางสัมผัสแนวตั้งเมื่อเทียบกับท่าทางสัมผัสแนวนอน (I273c7, b/252334353, b/269627294, b/363198504, b/442390269, b/419580124)
  • เพิ่มการรองรับท่าทางสัมผัสของแทร็กแพดและการแปลงจากเหตุการณ์อินพุตของแทร็กแพดเป็นเมาส์ การเปลี่ยนแปลงนี้จะทำให้ระบบรายงานเหตุการณ์เคอร์เซอร์ของแทร็กแพดที่ควบคุมเคอร์เซอร์เหมือนในแท็บเล็ตหรือแล็ปท็อปเป็นเคอร์เซอร์ของเมาส์โดยทั่วไป ระบบจะรายงานท่าทางสัมผัสการแพนและการปรับขนาดพร้อมข้อมูลเพิ่มเติมที่มีในการเปลี่ยนแปลงเหตุการณ์ของเคอร์เซอร์ โดยมี PointerEventType.Pan และ PointerEventType.Scale ใหม่ที่ระบุว่าระบบจะตั้งค่าเหล่านี้ (Id071a, b/315527861, b/459831570)
  • ขอแนะนำ isDelayPressesUsingGestureConsumptionEnabled เมื่อเปิดใช้ฟีเจอร์นี้ คอนเทนเนอร์ที่มีท่าทางสัมผัสแบบลากจะหน่วงเวลาการกด ซึ่งรวมถึงการเปลี่ยนแปลงลักษณะการทำงานของคอนเทนเนอร์ที่อิงตาม Modifier.draggable ซึ่งก่อนหน้านี้ไม่ได้หน่วงเวลาการกด (I53f24, b/203141462)
  • นำฟีเจอร์ isDetectTapGesturesImmediateCoroutineDispatchEnabled และฟีเจอร์ที่เลิกใช้งานแล้ว DetectTapGesturesEnableNewDispatchingBehavior ออก (I9bba3)

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

  • แก้ไข IndexOutOfBoundsException ใน BasicTextField เมื่อใช้ ``OutputTransformation และลบข้อความ (I20ee1)
  • เปลี่ยนลักษณะการทำงานของ GridTrackSize.Auto ตอนนี้จะปรับขนาดแทร็กจาก min-content เป็น max-content (Ifa22e, b/477748472)

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

  • เพิ่มการรองรับNumPadปุ่มการเคลื่อนไหว (I1ff12)

เวอร์ชัน 1.11.0-alpha04

28 มกราคม 2026

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

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

  • แก้ไขข้อบกพร่องที่ทำให้ AnchoredDraggableStatetargetValue ไม่ถูกต้องในบางสถานการณ์ที่มี Anchor หลายรายการที่ออฟเซ็ตเดียวกัน เมื่อตั้งค่าที่จุดยึดที่มีออฟเซ็ตเดียวกันกับจุดยึดอื่น targetValue จะแสดงจุดยึดสุดท้ายที่ออฟเซ็ตนี้อย่างไม่ถูกต้อง ตอนนี้ฟังก์ชันจะแสดงผล currentValue เมื่อมีการชำระที่ออฟเซ็ตของ currentValue (I66a7a, b/476365336)
  • เปิดตัว FlexBox ซึ่งเป็นระบบเลย์เอาต์ที่กำหนดค่าได้ซึ่งเป็นซูเปอร์เซ็ตของ Row, Column, FlowRow และ FlowColumn โดยรองรับฟีเจอร์ต่างๆ เช่น flex-grow, flex-shrink, การตัดข้อความที่กำหนดเอง, การเปลี่ยนทิศทาง และการควบคุมการจัดแนวอย่างละเอียดผ่าน FlexBoxConfig และ Modifier.flex (I44780)
  • เปิดตัว Grid เลย์เอาต์ 2 มิติแบบใหม่ที่ประกอบได้ซึ่งไม่ใช่แบบ Lazy โดยได้แรงบันดาลใจจาก CSS Grid เวอร์ชันเริ่มต้นนี้ช่วยให้คุณกำหนดโครงสร้างตารางกริดที่ชัดเจนด้วยขนาดแทร็กต่างๆ ซึ่งรวมถึง Fixed, Percentage, Flex และตัวเลือกตามเนื้อหาผ่านบล็อก config ตรรกะเลย์เอาต์หลักรองรับการวางรายการอย่างชัดเจนภายในตารางกริดโดยใช้ Modifier.gridItem() ขณะนี้ API ทั้งหมดที่เกี่ยวข้องกับ Grid อยู่ในขั้นทดลองและต้องเลือกใช้กับ @OptIn(ExperimentalGridApi::class) เรากำลังรวบรวมความคิดเห็นเกี่ยวกับเลย์เอาต์ใหม่นี้ (I04907, b/462550392)

เวอร์ชัน 1.11.0-alpha03

14 มกราคม 2026

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

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

  • แก้ไขหน่วยความจำรั่วไหลใน LazyStaggeredGrid เมื่อใช้ภายใน LookaheadScope I286ad

เวอร์ชัน 1.11.0-alpha02

17 ธันวาคม 2025

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

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

  • ตอนนี้ MultiModalInjectionScope API เสถียรแล้ว ซึ่งรวมถึง performKeyInput และ performRotaryScrollInput รวมถึง API หลักและ API แบบหมุน ระบบนำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว (Ie8bbc, b/261561237)
  • นำธง isNonSuspendingPointerInputInClickableEnabled ออกแล้ว (I6a168, b/455591971)

เวอร์ชัน 1.11.0-alpha01

3 ธันวาคม 2025

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

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

  • เปิดตัว Modifier.scrollIndicator เพื่ออนุญาตให้เพิ่มตัวบ่งชี้การเลื่อนที่กำหนดเองลงในคอนเทนเนอร์ที่เลื่อนได้ ScrollIndicatorFactory อินเทอร์เฟซช่วยให้สร้างตัวบ่งชี้การเลื่อนได้โดยการกำหนดลักษณะที่ปรากฏและลักษณะการทำงาน (I89322)
  • นำ ComposeFoundationFlags.isTextFieldDpadNavigationEnabled ออกแล้ว ตอนนี้เราได้เปิดใช้ลักษณะการทำงานใหม่ตลอดเวลาแล้ว (I3f034)
  • เปิดตัว isCacheWindowRefillFixEnabled เพื่อควบคุมการเปิดตัวการแก้ไขการรีฟิลหน้าต่างแคช (I4e52b, b/454439658)
  • นำ ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabled ออกแล้ว ตอนนี้เราได้เปิดใช้ลักษณะการทำงานใหม่ตลอดเวลาแล้ว (I7cbd4)
  • Modifier.onFirstVisible() เลิกใช้งานแล้วเนื่องจากลักษณะการทำงานทำให้เกิดความเข้าใจผิดและไม่ได้เป็นไปตามสัญญาที่อ้างไว้ในชื่อเสมอไป เช่น เมื่อเพิ่มในรายการของ LazyColumn ระบบจะเรียกใช้ Callback นี้ทุกครั้งที่รายการนี้ปรากฏขึ้นหลังจากเลื่อน ซึ่งอาจไม่ใช่สิ่งที่ผู้ใช้ตัวแก้ไขที่มีชื่อนี้คาดหวัง ขอแนะนำให้ใช้ Modifier.onVisibilityChanged() แทน และติดตามด้วยตนเองหากเลย์เอาต์แสดงอยู่ก่อนหน้านี้แล้วตามข้อกำหนดของกรณีการใช้งานที่เฉพาะเจาะจง (Ia7095, b/447601783)
  • เปิดตัว MeasuredSizeAwareModifierNode ซึ่งจำเป็นเมื่อคุณต้องการเรียกกลับ onRemeasured() โปรดใช้อินเทอร์เฟซนี้โดยตรงแทนการใช้ LayoutAwareModifierNode ที่เป็นแบบทั่วไปมากขึ้นเมื่อคุณไม่ต้องการการเรียกกลับอื่นๆ (If6fb0)
  • แนะนํา visible Modifier ซึ่งใช้เพื่อข้ามการวาดเนื้อหาของ Composable ได้โดยไม่ส่งผลต่อพื้นที่ที่ครอบครอง (Ia6871, b/158837937)

เวอร์ชัน 1.10

เวอร์ชัน 1.10.6

25 มีนาคม 2026

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

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

  • ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled จะปิดใช้อยู่โดยค่าเริ่มต้นเพื่อแก้ไขข้อกังวลเกี่ยวกับความเสถียร (I73960, b/482223006, b/488433633)

เวอร์ชัน 1.10.5

11 มีนาคม 2026

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

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

  • แก้ไขIndexOutOfBoundsExceptionในBasicTextFieldเมื่อใช้OutputTransformationและลบข้อความ (I20ee1)

เวอร์ชัน 1.10.4

25 กุมภาพันธ์ 2026

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

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

  • แก้ไขข้อบกพร่องที่เกิดจากการถดถอยซึ่งการใช้ตัวแก้ไขการจัดแนวจากขอบเขตอื่น (เช่น ColumnScope.align ภายใน Row) ส่งผลให้เกิดการวางตำแหน่งที่ไม่ถูกต้อง (6888f2b, b/477639546)

เวอร์ชัน 1.10.3

11 กุมภาพันธ์ 2026

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

เวอร์ชัน 1.10.2

28 มกราคม 2026

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

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

  • แก้ไขปัญหาแอปขัดข้องเมื่อย้อนกลับจากหน้าจอที่มีการเลือกข้อความที่ใช้งานอยู่ (I9f540, b/444482508)

เวอร์ชัน 1.10.1

14 มกราคม 2026

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

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

  • แก้ไขข้อขัดข้องเมื่อการเลือกข้อความขยายจากอินสแตนซ์ข้อความหนึ่งไปยังอีกอินสแตนซ์หนึ่งที่จัดแนวในแนวนอน I351311, b/439758956

เวอร์ชัน 1.10.0

3 ธันวาคม 2025

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

เวอร์ชัน 1.10.0-rc01

19 พฤศจิกายน 2025

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

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

เวอร์ชัน 1.10.0-beta02

5 พฤศจิกายน 2025

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

เวอร์ชัน 1.10.0-beta01

22 ตุลาคม 2025

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

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

  • อัปเดต API การแตะโดยอ้อมทั้งหมดให้ใช้ชื่อ API พอยน์เตอร์โดยอ้อมเพื่อให้ตรงกับ API อินพุตพอยน์เตอร์ (I238ce, b/451607214)
  • PagerState.currentPageOffsetFraction ที่มีคำอธิบายประกอบพร้อม @FrequentlyChangingValue (Idfaab)

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

  • แก้ไขลักษณะการทำงานของข้อความเลื่อนสำหรับทิศทางการจัดวางขวาไปซ้าย (Ib8be3)

เวอร์ชัน 1.10.0-alpha05

8 ตุลาคม 2025

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

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

  • PaddingValues ตอนนี้รองรับการบวกและการลบเพื่อลดความซับซ้อนของการคำนวณการเว้นวรรคทั่วไปแล้ว (I327e1, b/244468479)

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

  • ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled จะเปิดใช้อยู่โดยค่าเริ่มต้น ซึ่งเป็นการเพิ่มประสิทธิภาพด้านประสิทธิภาพที่ช่วยให้เราสามารถกระจายงานที่ต้องทำในระหว่างการดึงข้อมูลล่วงหน้าได้ดียิ่งขึ้น เช่น เราสามารถดำเนินการคอมโพสสำหรับบางส่วนของLazyColumn's next item ในระหว่างเฟรม UI หนึ่งๆ แล้วดำเนินการคอมโพสส่วนที่เหลือต่อในเฟรมถัดไป (I4c7fe)

เวอร์ชัน 1.10.0-alpha04

24 กันยายน 2025

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

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

  • เพิ่มการใช้งาน ScrollIndicatorState สำหรับ PagerState แล้ว (I113b7)
  • เพิ่มการใช้งาน ScrollIndicatorState สำหรับ LazyStaggeredGridState แล้ว (I1028e)
  • เพิ่มการใช้งาน ScrollIndicatorState สำหรับ LazyGridState แล้ว (I9e50c)
  • เพิ่มการใช้งาน ScrollIndicatorState สำหรับ LazyListState แล้ว (I5ee29)
  • เพิ่มการใช้งาน ScrollIndicatorState สำหรับ ScrollState แล้ว (I27f66)
  • แนะนำพร็อพเพอร์ตี้ scrollIndicatorState ในอินเทอร์เฟซ ScrollableState (Idca93)
  • นำฟีเจอร์ที่ติดสถานะเป็นฟีเจอร์ทดลอง isWindowInsetsModifierLocalNodeImplementationEnabled ออกแล้ว (I15e8f, b/440964232)
  • เปิดเผยตัวแก้ไข scrollableArea() ที่ใช้เพื่อทำให้คอมโพเนนต์เลื่อนได้ด้วยลักษณะการทำงานของการตัดเนื้อหาให้อยู่ในขอบเขต และจัดการทิศทางการเลื่อนเนื้อหาโดยอัตโนมัติตามการวางแนว RTL และค่าสถานะ reverseScrolling (I9471b, b/316559454)

เวอร์ชัน 1.10.0-alpha03

10 กันยายน 2025

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

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

  • นำ ComposeFoundationFlags.isNonComposedClickableEnabled ออก (I0dfc0, b/406228525)
  • ย้ายฟังก์ชันของ Factory สำหรับการสร้างอินสแตนซ์ FillableData ไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ Factory แทนการเรียก FillableData(value) ซึ่งก็คือ FillableData.createFrom(value) (I2e200, b/441719650)
  • เปิดตัว BeyondBoundsLayoutModifierNode โหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658)
  • ทำเครื่องหมาย ScrollState.value เป็นพร็อพเพอร์ตี้ @FrequentlyChangingValue (I4723d)
  • เปิดตัว LazyLayoutKeyIndexMap และโรงงานสำหรับการติดตั้งใช้งานเริ่มต้น (I4fd0c, b/415038029)

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

  • ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง Modifier.align อย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งาน Modifier.align ที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I8194f, b/439716351)

เวอร์ชัน 1.10.0-alpha02

27 สิงหาคม 2025

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

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

  • นำแฟล็ก isFlingContinuationAtBoundsEnabled ออกแล้ว (I6b84f)
  • นำแฟล็ก isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled ออกแล้ว (I62380)
  • นำแฟล็ก isOnScrollChangedCallbackEnabled ออกแล้ว (I667dc)
  • นำแฟล็ก isAutomaticNestedPrefetchEnabled ออกแล้ว (I4f416)
  • นำแฟล็ก DragGesturePickUpEnabled ออกแล้ว (Ib8500)
  • เปิดตัว ScrollIndicatorState API สำหรับการแสดงสถานะแถบเลื่อน (I5e229)

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

  • แก้ไขข้อบกพร่องที่การใช้ Modifier.anchoredDraggable ไม่ได้เรียกใช้ confirmValueChange (Iff7cc)

เวอร์ชัน 1.10.0-alpha01

13 สิงหาคม 2025

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

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

  • อัปเดตกลยุทธ์การดึงข้อมูลล่วงหน้าของ Pager เพื่อใช้หน้าต่างแคชแทนรายการเริ่มต้น 1 รายการในทิศทางการเลื่อน ตอนนี้ Pager จะเปิดใช้การดึงข้อมูลล่วงหน้าเริ่มต้นโดยค่าเริ่มต้น และการดึงข้อมูลล่วงหน้าจะอิงตามขนาดของหน้าต่างที่มีค่าเท่ากับ 1 วิวพอร์ต นั่นคือเราจะพยายามเติมรายการที่ดึงข้อมูลล่วงหน้าในวิวพอร์ตทั้งหมด 1 รายการ และจะเก็บรายการไว้นานขึ้นด้วย (I4d45e, b/292136289)
  • ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled เพื่อให้ปิดใช้การเพิ่มประสิทธิภาพ WindowInsets ได้หากการติดตั้งใช้งานใหม่ทำให้เกิดการเปลี่ยนแปลงด้านพฤติกรรม (I8e912)
  • SnapFlingBehavior ตอนนี้อนุญาตให้ข้อกำหนดภาพเคลื่อนไหวของ Snap เกินขีดจำกัดระหว่างการ Snap ได้แล้ว ซึ่งช่วยให้คุณระบุสปริงที่มีการดีดตัวเป็น snapAnimationSpec เพื่อสร้างภาพเคลื่อนไหวการสแนปที่มีการดีดตัวได้ ระบบจะยังคงไม่สนใจค่าที่เกินเมื่อทำการเข้าใกล้ด้วยสเปคการดีด (I373c2)
  • ตอนนี้การกดเคอร์เซอร์ลงด้วยเมาส์หรือทัชแพดใน ComposeView จะล้างโฟกัสโดยอัตโนมัติหากการกดเคอร์เซอร์ลงไม่ได้เกิดขึ้นในขอบเขตของโหนดที่โฟกัส ซึ่งจะส่งผลให้เกิด UX แบบ "แตะเพื่อล้างโฟกัส" ที่คาดการณ์ได้มากกว่าลักษณะการทำงานปัจจุบันเมื่อใช้อุปกรณ์ป้อนข้อมูลแบบพอยน์เตอร์ คุณเลือกไม่ใช้ลักษณะการทำงานนี้ได้ด้วย AbstractComposeView.isClearFocusOnPointerDownEnabled API ใหม่ (I6322b, b/282963174)
  • ตอนนี้ Scrollable รองรับเหตุการณ์การเลื่อนล้อเมาส์แบบ 2 มิติได้ดีขึ้นแล้ว เราได้เปิดตัว API สำหรับการทดสอบใหม่เพื่อช่วยทดสอบกรณีการใช้งานใน MouseInjectionScope นอกจากนี้ เรายังได้เปิดตัวการโอเวอร์โหลดใหม่สำหรับเมธอดการเลื่อนใน MouseInjectionScope และฟีเจอร์ค่าสถานะเพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่า isMouseWheel1DAxisLockingEnabled (I136df)
  • อัปเดต DragGestureNode เพื่อใช้การป้อนข้อมูลเคอร์เซอร์ดิบแทนการระงับการป้อนข้อมูลเคอร์เซอร์เพื่อการเพิ่มประสิทธิภาพ โดยการเปลี่ยนแปลงจะเพิ่มไว้หลังฟีเจอร์แฟล็ก isNonSuspendingPointerInputInDraggableEnabled (I0fa4b)
  • ใส่คำอธิบายประกอบใน AnchoredDraggable API บางรายการด้วย @FrequentlyChangingValue offset, requireOffset และ progress เปลี่ยนแปลงบ่อยและไม่ควรอ่านตามลำดับ โปรดเข้าถึงค่าเหล่านี้จากเลย์เอาต์และเฟสการวาด เอฟเฟกต์ หรืออื่นๆ นอกองค์ประกอบแทน (I05539)
  • นำธง isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled ออกแล้ว (I36c18)
  • เปิดตัว CompositionLocal ที่ใช้แก้ไขแปรงไฮไลต์การเติมที่สำเร็จของการป้อนข้อความอัตโนมัติได้ (I52329)
  • เพิ่มสี่เหลี่ยมผืนผ้าโฟกัสที่ปรับแต่งได้ลงใน FocusProperties ตอนนี้คุณสามารถกำหนดพื้นที่โฟกัสที่กำหนดเองแทนการใช้กรอบล้อมรอบเริ่มต้นของโฟกัสได้แล้ว ระบบการย้ายโฟกัสและตรรกะการคงไว้ในมุมมองของคอนเทนเนอร์ที่เลื่อนได้จะใช้ข้อมูลนี้ (Id6555, b/368378073)
  • เพิ่ม LineHeightStyle.Mode ใหม่ชื่อ Tight โหมดนี้ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลงได้แม้ว่าอาจตัดกลีฟที่สูงกว่าก็ตาม (Id3849)
  • เปิดตัวอินเทอร์เฟซ Interpolatable ใหม่ที่ช่วยให้สามารถประมาณค่าระหว่างประเภทต่างๆ ได้โดยอัตโนมัติ โดยสมมติว่าประเภทหนึ่งทราบวิธีแปลงจากอีกประเภทหนึ่ง อินเทอร์เฟซนี้ใช้ในคอมโพสประเภทต่างๆ เช่น แปรงและรูปร่าง แต่ก็ใช้ภายนอกได้เช่นกัน (I58eab)
  • เพิ่มเหตุการณ์อินพุตทางอ้อมและวิธีระบุแกนพิกัดที่จะใช้สำหรับการเลื่อน (I58e7c)
  • เพิ่ม WindowInsets.cutoutPath API ใหม่เพื่อรับเส้นทางสำหรับหน้าจอรอยบาก (Ib90b1, b/279636456)
  • เราได้นำisWindowInsetsDefaultPassThroughEnabledออกแล้ว และตั้งค่า WindowInsets เป็นไม่ใช้โดยค่าเริ่มต้นเพื่อให้ View ย่อยรับ WindowInsets ได้โดยค่าเริ่มต้น (I888e0, b/412469666)

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

  • isNonSuspendingPointerInputInDraggableEnabled ควรปิดใช้ในตอนนี้ (Ia41c4)
  • ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • อัปเดตเอกสารประกอบ DraggableAnchors' minPosition/maxPosition เพื่อระบุว่า API เหล่านี้ควรแสดงผล Float.NaN ตาม DraggableAnchors API อื่นๆ (I0460a)
  • แก้ไขข้อบกพร่องที่ทำให้ DraggableAnchors#closestAnchor ขัดข้องหากไม่มี Anchor (I4e646)
  • การปรับปรุงประสิทธิภาพสำหรับ DraggableAnchors (If4065, I0460a)
  • TextFieldState.edit { } จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กการเลิกทำหลังจากการเรียกใช้ edit โปรดใช้ TextFieldState.undoState.clearHistory() (I12c14)
  • เพิ่มการรองรับการแตะสองครั้งเพื่อเลือกคำใน SelectionContainer และ BasicTextField(value, onValueChange) ที่โอเวอร์โหลด (Ibb06a)
  • แก้ไขข้อบกพร่องเล็กน้อยเพื่อให้ AutoboxingStateValuePropertyDetector ใช้งานร่วมกับ K1 และ K2 ได้ (Ie81c1)
  • requestRectangleOnScreen คำขอที่ AndroidView สร้างขึ้นจะเผยแพร่ไปยัง Compose อย่างถูกต้องแล้ว ซึ่งจะช่วยให้มุมมองอย่าง EditText แสดงบนหน้าจอต่อไปเมื่อมีการโต้ตอบ (Ibbf4c)
  • ตอนนี้คอลัมน์และแถวจะส่งขนาดจริงของสินค้าไปยัง Alignment.Vertical.align และ Alignment.Horizontal.align อย่างถูกต้องแล้ว ซึ่งจะช่วยแก้ปัญหาที่การติดตั้งใช้งานการจัดแนวที่กำหนดเองได้รับค่า 0 ที่ไม่ถูกต้อง (I3e460, b/349722072)

เวอร์ชัน 1.9

เวอร์ชัน 1.9.5

19 พฤศจิกายน 2025

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

เวอร์ชัน 1.9.4

22 ตุลาคม 2025

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

เวอร์ชัน 1.9.3

8 ตุลาคม 2025

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

เวอร์ชัน 1.9.2

24 กันยายน 2025

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

เวอร์ชัน 1.9.1

10 กันยายน 2025

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

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

  • แก้ไขการขัดข้องที่เกิดขึ้นเมื่อใช้ LazyLayoutCacheWindow ใน LazyLists (c39f5f3)

เวอร์ชัน 1.9.0

13 สิงหาคม 2025

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

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

  • การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้ android.experimental.lint.version=8.8.2 (หรือเวอร์ชันที่ใหม่กว่า) ใน gradle.properties คุณต้องใช้ Android Studio Ladybug ขึ้นไปจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด clickable, combinedClickable,selectable, toggleable และ triStateToggleable ที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์ IndicationNodeFactory ที่ระบุโดยใช้ LocalIndication เท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณให้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วแก่ LocalIndication และใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ ComposeFoundationFlags.isNonComposedClickableEnabled=false เพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้อัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วไปใช้ IndicationNodeFactory แทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่ IndicationNodeFactory ของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำให้ทำเนื่องด้วยเหตุผลด้านประสิทธิภาพ (I6bcdc, b/316914333)
  • เปิดตัว isFlingCancellationWithNestedScrollFixEnabled เพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะกู้คืนลักษณะการทำงานของการปัดเพื่อดูต่อที่นำออกไปใน I9326a เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำบุตรหลานออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125)
  • เพิ่มการใช้งาน scrollAnimationSpec ใน ContentInViewNode อีกครั้ง เราได้นำลักษณะการทำงานดังกล่าวออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605)
  • ลดการสั่นไหวแล้ว LazyLayout (If5db4), LazyLayoutPrefetchState และวิธีการกำหนดเวลา schedulePrecomposition และ schedulePrecompositionAndPremeasure (I4362f, b/252853717) และ LazyLayoutItemProvider (Icce09,b/261565751)
  • อนุญาตให้ฟีเจอร์เขียนอีเมลทริกเกอร์ ViewTreeObserver.OnScrollChanged ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ isOnScrollChangedCallbackEnabled นอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของ DelegatableNode dispatchOnScrollChanged ด้วย (I34b9d, b/238109286)
  • แนะนำ Modifier.scrollable2D, Scrollable2DState และ API ที่เกี่ยวข้องสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040)
  • PrefetchScheduler และการปรับแต่งได้ถูกเลิกใช้งานแล้วเพื่อรองรับการติดตั้งใช้งานภายในที่จะทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)
  • TextFieldState.edit { } จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กเลิกทำหลังจากเรียกใช้การแก้ไข โปรดใช้ TextFieldState.undoState.clearHistory() (I12c14)
  • ตอนนี้เมนูตามบริบทและแถบเครื่องมือการเลือกรองรับรายการอัจฉริยะ (การเลือกอัจฉริยะ) แล้ว
  • เพิ่มข้อความที่มีสไตล์ OutputTransformation เพื่ออนุญาตให้จัดรูปแบบเอาต์พุตของ TextField โดยใช้การโอเวอร์โหลด state
  • TextField: รองรับเมนูบริบท (เมนูคลิกขวา)
  • ตอนนี้ข้อความที่คัดลอกจาก Text Composable หลายรายการใน SelectionContainer จะมีตัวคั่นบรรทัด \n เพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739)
  • เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน AnnotatedString (I1d066, b/383269496, b/139326648)
  • stateการโอเวอร์โหลดของ BasicTextField จะทำให้เคอร์เซอร์เลื่อนเข้ามาในมุมมองเมื่อขนาดเปลี่ยนแปลง (I0eb41, b/406187741)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ตอนนี้โหนดตัวแก้ไข background และ border จะใช้ SemanticsModifierNode แล้ว ซึ่งอาจส่งผลให้มีการเพิ่ม SemanticsNodes ใหม่ลงในโครงสร้างความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้ onChild, onParent, onSibling และวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขความล้มเหลวเหล่านี้คือการเพิ่ม testTag ลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวจับคู่ที่ยืดหยุ่นกว่า เช่น onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) (I638b5)

เวอร์ชัน 1.9.0-rc01

30 กรกฎาคม 2025

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

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

  • TextFieldState.edit { } จะไม่ล้างประวัติการเลิกทำอีกต่อไป แต่จะสร้างรายการเลิกทำแบบสแตนด์อโลนแทน หากต้องการให้ล้างสแต็กการเลิกทำหลังจากการเรียกใช้ edit โปรดใช้ TextFieldState.undoState.clearHistory() (I12c14)

เวอร์ชัน 1.9.0-beta03

16 กรกฎาคม 2025

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

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

  • แก้ไขข้อบกพร่องที่ทำให้ลักษณะการทำงานของส่วนหัวแบบติดหนึบในกริดแบบ Lazy โหลดไม่ถูกต้องเมื่อไม่มีเนื้อหาส่วนหัว (e3e3400)

เวอร์ชัน 1.9.0-beta02

2 กรกฎาคม 2025

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

ฟีเจอร์ใหม่

  • รองรับรายการอัจฉริยะในเมนูตามบริบทและแถบเครื่องมือการเลือก

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

  • แก้ไขข้อบกพร่องที่แป้นพิมพ์ฮาร์ดแวร์หรือรีโมตทีวีบางรุ่นไม่สามารถย้ายเคอร์เซอร์ใน TextFields ใหม่โดยใช้ปุ่มทิศทาง และเปลี่ยนโฟกัสไปยัง Composable อื่นแทน เพิ่ม ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled เพื่อให้ปิดใช้การแก้ไขนี้ได้ชั่วคราวหากทำให้เกิดลักษณะการทำงานที่ไม่พึงประสงค์ในลักษณะที่กู้คืนไม่ได้ (Ie1922)

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

  • แก้ไขปัญหาที่ส่วนหัวแบบติดหนึบไม่ติดหากมีรายการที่ปักหมุด (I9198d, b/385006133)
  • TextObfuscationMode.RevealLastTyped จะเป็นไปตามการตั้งค่าระบบ "TEXT_SHOW_PASSWORD" (I41c0c)
  • แก้ไขข้อบกพร่องที่ BasicTextField แสดงคำเตือน "วางจากคลิปบอร์ด" อย่างไม่ถูกต้องเมื่อแถบเครื่องมือข้อความเปิดขึ้นเป็นครั้งแรก (I5fda2)

เวอร์ชัน 1.9.0-beta01

18 มิถุนายน 2025

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

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

  • ตอนนี้โหนดตัวแก้ไข background และ border ได้ติดตั้งใช้งาน SemanticsModifierNode แล้ว ซึ่งอาจส่งผลให้มีการเพิ่ม SemanticsNodes ใหม่ลงในโครงสร้างความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้ onChild, onParent, onSibling และวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขความล้มเหลวเหล่านี้คือการเพิ่ม testTag ลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวจับคู่ที่ยืดหยุ่นกว่า เช่น onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) (I638b5)

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

  • เปลี่ยนชื่อ Modifier.addTextContextMenuComponents เป็น appendTextContextMenuComponents (I4c43f)
  • นำ AnnotatedOutputTransformation ออกและย้ายฟังก์ชัน addStyle ไปยัง TextFieldBuffer addStyle จะยังคงรับสายได้จาก OutputTransformation เท่านั้น (I9930a, b/417991824)
  • ระบบจะเขียน Clickable ใหม่เพื่อไม่ให้ใช้การป้อนข้อมูลพอยน์เตอร์ระงับเป็นการเพิ่มประสิทธิภาพ ฟีเจอร์นี้เปิดใช้โดยแฟล็ก คุณปิดใช้ได้หากพบข้อบกพร่องในการติดตั้งใช้งานใหม่ - ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled (I85b65)
  • เปิดตัว isFlingCancellationWithNestedScrollFixEnabled เพื่อแก้ไขปัญหาการแพร่กระจายการปัดในการเลื่อนที่ซ้อนกัน ใน CL นี้ เราจะคืนค่าลักษณะการทำงานของการปัดอย่างต่อเนื่องที่นำออกไปใน aosp/3260391 เราจะยังคงยกเลิกภาพเคลื่อนไหวการปัดในกรณีที่นำบุตรหลานออกจากองค์ประกอบ (I467f4, b/405910180, b/419049142, b/416784125)
  • WindowInsetsRulers: เปลี่ยน rulersIgnoringVisibility เป็นสูงสุด เปลี่ยน getDisplayCutoutBounds() ให้เป็นฟังก์ชันส่วนขยายของ PlacementScope WindowInsetsAnimationProperties เปลี่ยนเป็น WindowInsetsAnimation และ getAnimationProperties() เปลี่ยนเป็น getAnimation() แล้ว (I3816f)
  • เปลี่ยน InsetsRulers ให้เป็นโค้ดทั่วไปที่มีชื่อ WindowInsetsRulers ลดความซับซ้อนของ API เพื่อให้ระยะขอบทั้งหมดเป็น WindowInsetsRulers แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่กฎไปยังคลาส AnimationProperties WindowInsetsRulers.innermostOf() ใช้เพื่อผสาน WindowInsetsRulers หลายรายการได้ (I2f0c6, b/415012444)

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

  • เพิ่มการใช้งาน scrollAnimationSpec ใน ContentInViewNode อีกครั้ง เราได้นำลักษณะการทำงานดังกล่าวออกในระหว่างscrollAnimationSpecการเลิกใช้งาน ซึ่งทำให้กรณีการใช้งานใช้งานไม่ได้ (I1436a, b/403301605)

เวอร์ชัน 1.9.0-alpha04

4 มิถุนายน 2025

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

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

  • PrefetchScheduler และการปรับแต่งได้เลิกใช้งานแล้วเพื่อรองรับการติดตั้งใช้งานภายในที่ทำงานทั้งหมดโดยอัตโนมัติ (I3a9a6, b/420551535)
  • อัปเดต Scrollable2DState ให้ใช้ออฟเซ็ตในเมธอด canScroll แทนมุม (I28694, b/417268474)
  • แทนที่ addAnnotation ใน AnnotatedOutputTransformation ด้วย addStyle (I91c6f, b/417991824)
  • ลดการสั่นไหวแล้ว LazyLayout (If5db4)
  • ปรับปรุงตัวสร้างที่ว่างเปล่าสำหรับ LazyLayoutPrefetchState และวิธีการกำหนดเวลา schedulePrecomposition และ schedulePrecompositionAndPremeasure (I4362f, b/252853717)
  • เปิดตัว ProcessTextKey ใน Android ที่ใช้สำหรับรายการในเมนูตามบริบทซึ่งเพิ่มมาสำหรับการดำเนินการตามความตั้งใจของ PROCESS_TEXT (If0ac4)
  • ทำให้ API เมนูบริบทเป็นแบบสาธารณะ เปิดเผย Modifier.addTextContextMenuComponents และ Modifier.filterTextContextMenuComponents เพื่อเพิ่มและนำรายการออกจากเมนูตามบริบท นอกจากนี้ เรายังได้เปิดตัว API พื้นฐานต่อไปนี้เพื่อให้ผู้ใช้สร้างเมนูตามบริบทที่กำหนดเองได้
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • ทำให้ LazyLayoutItemProvider เสถียร (Icce09, b/261565751)
  • เปิดตัวฟีเจอร์การเลือกอัจฉริยะของ Android ที่เปิด/ปิดใช้ได้ผ่าน ComposeFoundationFlags.isSmartSelectionEnabled นอกจากนี้ ยังมี compositionLocal LocalTextClassifierCoroutineContext แบบคงที่ซึ่งใช้ระบุ CoroutineContext ที่จะเปิดใช้งานงาน TextClassification ได้ด้วย (I1dbaa, b/139321320)

เวอร์ชัน 1.9.0-alpha03

20 พฤษภาคม 2025

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

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

  • เพิ่ม AnnotatedOutputTransformation ที่ช่วยให้คุณเพิ่มคำอธิบายประกอบใน TextField ก่อนการแสดงผลได้ (Ibc6f0, b/389978748)
  • เปิดตัว LazyLayoutMeasurePolicy และทำให้ LazyLayoutMeasureScope เสถียร (I8c5df, b/252853717)
  • ตอนนี้ BasicSecureTextField จะยก ScrollState ของ BasicTextField ภายใน (I6e576)
  • เราได้เปิดตัวตัวแก้ไข Modifier.onFirstVisible และ Modifier.onVisibilityChanged ซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบน Modifier.onLayoutRectChanged ตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดในการใช้งานทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ ฯลฯ ตัวแก้ไขเหล่านี้สร้างขึ้นโดยคำนึงถึงประสิทธิภาพเพื่อให้สามารถใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBounds เพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนได้อย่างง่ายดาย (I759b8)
  • เปิดตัวโอเวอร์โหลด detectDragGestures ที่มีการควบคุมการล็อกการวางแนวและการเลื่อนด้วยนิ้ว (Iadb0d)
  • แนะนำ Modifier.scrollable2D, Scrollable2DState และ API ที่เกี่ยวข้องสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040)
  • ค่าสีของ Compose 64 บิตไม่สามารถเปรียบเทียบกับ Android ColorLongs ได้โดยตรงเนื่องจากรหัสพื้นที่สีอยู่นอกลำดับสำหรับพื้นที่สีบางรายการ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่ toColorLong() และ fromColorLong() เพื่อใช้แปลงเป็นและจากพื้นที่สีของ Android (I36899)

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

  • ตอนนี้ข้อความที่คัดลอกจาก Text Composable หลายรายการใน SelectionContainer จะมีตัวคั่นบรรทัด \n เพิ่มระหว่างข้อความที่มาจาก Text Composable ที่แยกกัน (I25332, b/285036739)

เวอร์ชัน 1.9.0-alpha02

7 พฤษภาคม 2025

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

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

  • แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน VelocityTracker ใน DragGestureNode ซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่ isOffsetPositionBeforeAddingToVelocityTrackerEnabled (Ic7992, b/292556787, b/236451818)
  • ทำให้ await[Vertical/Horizontal]PointerSlopOrCancellation เป็นแบบสาธารณะ (I6968b, b/298903681)
  • ตอนนี้ AbstractComposeView.consumeWindowInsets จะเป็นเท็จโดยค่าเริ่มต้น WindowInsets จะได้รับการปรับขนาดและตำแหน่งโดยอัตโนมัติสำหรับเด็กเมื่อตั้งค่าเป็น "เท็จ" คุณจึงไม่ต้องตั้งค่าเริ่มต้นเป็น "จริง" อีกต่อไป ซึ่งจะแก้ไขปัญหาที่ View ลูกไม่ได้รับการอัปเดต WindowInsets โดยค่าเริ่มต้น นักพัฒนาแอปสามารถเลือกไม่รับการอัปเดตได้โดยเปลี่ยน ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled ที่เป็นเวอร์ชันทดลองเป็น true หรือโดยการตั้งค่า AbstractComposeView.consumeWindowInsets เป็น true ในอินสแตนซ์มุมมอง Compose ทั้งหมด (I6fa0a, b/411868840)

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

  • แก้ไขข้อขัดข้องของ Pager เมื่อมีค่า beyondViewportPageCount ขนาดใหญ่มาก (Idb2db)

เวอร์ชัน 1.9.0-alpha01

23 เมษายน 2025

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

การเปลี่ยนแปลงพฤติกรรม

  • การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้ android.experimental.lint.version=8.8.2 (หรือเวอร์ชันที่ใหม่กว่า) ใน gradle.properties คุณต้องใช้ Android Studio Ladybug ขึ้นไปจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้

  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด clickable, combinedClickable, selectable, toggleable และ triStateToggleable ที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์ IndicationNodeFactory ที่ระบุโดยใช้ LocalIndication เท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณให้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วแก่ LocalIndication และใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ ComposeFoundationFlags.isNonComposedClickableEnabled=false เพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้อัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้ IndicationNodeFactory แทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่ IndicationNodeFactory ของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำให้ทำเนื่องด้วยเหตุผลด้านประสิทธิภาพ (I6bcdc, b/316914333)

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

  • เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน AnnotatedString (I1d066, b/383269496, b/139326648)
  • อนุญาตให้ฟีเจอร์เขียนอีเมลทริกเกอร์ ViewTreeObserver.OnScrollChanged ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ isOnScrollChangedCallbackEnabled นอกจากนี้ เรายังได้เปิดตัวฟังก์ชันส่วนขยายของ DelegatableNode dispatchOnScrollChanged ด้วย (I34b9d, b/238109286)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ TextFieldState เพื่อให้แน่ใจว่ามีการจดจำภายใน Composition ลองใช้ rememberTextFieldState แทน (I53d74)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ FocusRequester เพื่อให้แน่ใจว่ามีการจดจำภายในคอมโพสิท (I6bf91)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ BringIntoViewRequester เพื่อให้แน่ใจว่ามีการจดจำภายใน Composition (Ibfba6)
  • เปิดตัวขอบเขตสำหรับschedulePrefetch ในกลยุทธ์ตารางกริดและรายการเพื่อให้สอดคล้องกับLazyListPrefetchState ที่มีความสามารถในการให้ข้อมูลขนาดและดัชนี (Iad80c)
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: โอเวอร์โหลด clickable, combinedClickable, selectable, toggleable และ triStateToggleable ที่ไม่มีพารามิเตอร์ Indication จะรองรับเฉพาะอินสแตนซ์ IndicationNodeFactory ที่ระบุโดยใช้ LocalIndication เท่านั้น การเปลี่ยนแปลงนี้จะมีผลเมื่อคุณคอมไพล์การใช้งานตัวแก้ไขเหล่านี้อีกครั้งโดยใช้ Compose เวอร์ชันนี้ Dependency แบบไบนารี / แบบทรานซิทีฟจะไม่ได้รับผลกระทบ หากคุณให้การติดตั้งใช้งานข้อบ่งชี้ที่เลิกใช้งานแล้วแก่ LocalIndication และใช้ API เหล่านี้ จะทำให้เกิดข้อขัดข้องขณะรันไทม์ การเปลี่ยนแปลงลักษณะการทำงานนี้จำเป็นต่อการเปิดใช้ประสิทธิภาพที่ดียิ่งขึ้น และช่วยให้ฟังก์ชันที่ประกอบกันได้ซึ่งใช้ตัวปรับแต่งเหล่านี้ข้ามระหว่างการจัดองค์ประกอบใหม่ได้ คุณสามารถใช้ ComposeFoundationFlags.isNonComposedClickableEnabled=false เพื่อเลือกไม่ใช้การเปลี่ยนแปลงลักษณะการทำงานนี้ชั่วคราว เพื่อเปิดใช้อัปเกรด Compose โดยไม่ถูกบล็อกในการย้ายข้อมูลนี้ เราจะนำฟีเจอร์นี้ออกหลังจากเปิดตัวเวอร์ชันเสถียร 1 เวอร์ชัน หากต้องการแก้ไข ให้ย้ายข้อมูลการติดตั้งใช้งานการระบุที่เลิกใช้งานแล้วเพื่อใช้ IndicationNodeFactory แทน นอกจากนี้ คุณยังใช้การโอเวอร์โหลดกับพารามิเตอร์ Indication ที่ชัดเจนได้ด้วย โดยการโอเวอร์โหลดเหล่านี้จะยังคงรองรับอินสแตนซ์ที่ไม่ใช่ IndicationNodeFactory ของ Indication ต่อไป แม้ว่าเราจะไม่แนะนำให้ทำเนื่องด้วยเหตุผลด้านประสิทธิภาพ (I6bcdc, b/316914333)
  • เพิ่ม Flag สำหรับควบคุมลักษณะการทำงานของการดึงข้อมูลล่วงหน้าแบบซ้อนอัตโนมัติ: isAutomaticNestedPrefetchEnabled (I8d448)
  • แนะนำการโอเวอร์โหลดสำหรับ LazyGridState และ rememberLazyGridState ที่ใช้ LazyLayoutCacheWindow (I51151)
  • เพิ่มไม้บรรทัดสำหรับระยะขอบหน้าต่าง เพิ่ม DerivedRuler เพื่อให้คำนวณไม้บรรทัดจากไม้บรรทัดอื่นได้ แก้ไข PlacmentScope เพื่อใช้ความหนาแน่น (I658bc, b/359260964)
  • เพิ่มฟังก์ชัน Factory WindowInsets() ที่ไม่มีอาร์กิวเมนต์เพื่อสร้าง WindowInsets ที่ว่างเปล่าได้อย่างง่ายดาย (I65f62, b/395311689)
  • เพิ่ม PaddingValues.Zero สำหรับ PaddingValues ที่ว่างเปล่า (If193e, b/386255688)

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

  • stateการโอเวอร์โหลดของ BasicTextField จะทำให้เคอร์เซอร์เลื่อนเข้ามาในมุมมองเมื่อขนาดเปลี่ยนแปลง (I0eb41, b/406187741)
  • อัปเดต API ของ onVisibleItemsUpdated ใน LazyListPrefetchStrategy และ LazyGridPrefetchStrategy เพื่อแจ้งสถานะเริ่มต้น (If2cfa)

เวอร์ชัน 1.8

เวอร์ชัน 1.8.3

18 มิถุนายน 2025

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

เวอร์ชัน 1.8.2

20 พฤษภาคม 2025

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

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

  • แก้ไขไม่ให้การคำนวณจำนวนรายการที่จะโหลดสำหรับการค้นหาโฟกัสทำให้เกิดการหารด้วย 0 ใช้การตรวจสอบกับเลย์เอาต์ทั้งหมดที่ใช้ LazyLayoutBeyondBoundsState (8e6dc8)

เวอร์ชัน 1.8.1

7 พฤษภาคม 2025

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

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

  • แก้ไขข้อบกพร่องใน BasicText และ TextAutoSize ที่การใช้ TextOverflow.Ellipsize จะทำให้ข้อความมีขนาดเล็กกว่าที่ควร (I1e1d8, b/396582066)
  • แก้ไขข้อบกพร่องใน BasicTextField ที่ทำให้เกิดข้อขัดข้องอื่นๆ เมื่อ TextFieldDecorator ข้ามการเรียก innerTextField (I2638c), b/308398612
  • แก้ไขข้อบกพร่องใน TextField ที่ทำให้แถบเครื่องมือข้อความและแฮนเดิลการเลือกหายไปโดยสมบูรณ์เมื่อเปลี่ยนอินสแตนซ์ TextFieldState (I8068a), b/390477786
  • แก้ไขข้อบกพร่องใน BasicText ซึ่งการเปลี่ยนข้อจำกัดความกว้างขั้นต่ำไม่ได้อัปเดตตำแหน่งของข้อความเมื่อตั้งค่า textAlign เป็นค่าที่ไม่ใช่ค่าเริ่มต้น (I77a96), b/406305552

เวอร์ชัน 1.8.0

23 เมษายน 2025

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

เวอร์ชัน 1.8.0-rc03

9 เมษายน 2025

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

เวอร์ชัน 1.8.0-rc02

26 มีนาคม 2025

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

เวอร์ชัน 1.8.0-rc01

12 มีนาคม 2025

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

เวอร์ชัน 1.8.0-beta03

26 กุมภาพันธ์ 2025

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

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

  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่ InputText ที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a, b/395911609, b/176949051)
  • นำการโอเวอร์โหลด AutoSize ที่เลิกใช้งานแล้วออก โปรดใช้ API ของ TextAutoSize ที่มีฟังก์ชันเดียวกัน (I2c90f)
  • แก้ไขปัญหาการแคชใน TextAutoSize ซึ่งการส่งเลย์เอาต์ครั้งที่ 2 ที่มีข้อจำกัดเดียวกันอาจทำให้ใช้แบบอักษรที่มีขนาดใหญ่เป็นอันดับ 2 แทนที่จะเป็นขนาดใหญ่ที่สุด (Id367f)

เวอร์ชัน 1.8.0-beta02

12 กุมภาพันธ์ 2025

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

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

  • แก้ไขปัญหาที่การใช้งานการเลื่อนเกินโดยใช้ LayoutModifierNode จะทำงานไม่ถูกต้องภายในคอนเทนเนอร์ที่เลื่อนได้

เวอร์ชัน 1.8.0-beta01

29 มกราคม 2025

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

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

  • SemanticsNodeInteraction.semanticsId() ถูกลบออกไปแล้ว โปรดใช้ SemanticsNodeInteraction.fetchSemanticsNode().id แทน (Ie397a)
  • เขียน requestAutofill API ใหม่ให้อยู่นอกเครื่องมือจัดการการป้อนข้อความอัตโนมัติ (Id1929)
  • ContextualFlowRow และ ContextualFlowColumn ได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้ว เราเปิดตัวคอมโพเนนต์เวอร์ชันทดลองนี้ในเวอร์ชัน 1.7 และยังไม่ได้ปรับให้เสถียร รวมถึงเห็นว่าการใช้งานไม่เป็นที่ต้องการ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้ปัญหา Use Case ที่คอมโพเนนต์นี้มีไว้แก้ปัญหา
    • FlowRow และ FlowColumn มีการโอเวอร์โหลดทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์ overflow เราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "overflow" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "Clip" เหมือนกับที่เคยเป็นมาตั้งแต่เปิดตัว
    • กรณีการใช้งานจำนวนมากสำหรับ ContextualFlowRow สามารถทำได้โดยใช้ FlowRow แต่เราทราบดีว่าไม่ใช่ทุกกรณี ContextualFlowRow สามารถติดตั้งใช้งานในพื้นที่ผู้ใช้ได้อย่างสมบูรณ์ และคุณสามารถพยายามคัดลอกการติดตั้งใช้งานและปรับเปลี่ยนได้หากต้องการ ในอนาคต เราหวังว่าจะแก้ปัญหา Use Case เหล่านี้ได้ด้วยวิธีที่แตกต่างออกไป (Ibafec)

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

  • แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)
  • แก้ไขข้อบกพร่องใน BasicText โดยตั้งค่า TextAutoSize และ maxLines เป็น 1 (Ic0450, b/376834366)
  • ตอนนี้ความสูงขั้นต่ำของข้อความจะพิจารณาพารามิเตอร์ minLines แล้ว ซึ่งหมายความว่าความสูงขององค์ประกอบภายในขั้นต่ำที่รายงานจะไม่น้อยกว่าความสูงที่จำเป็นเพื่อให้เป็นไปตามพารามิเตอร์ minLines (I225f9, b/388299762)

เวอร์ชัน 1.8.0-alpha08

15 มกราคม 2025

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

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

  • AutoSize: เปลี่ยนชื่อ AutoSize เป็น TextAutoSize และเผยแพร่ API ที่ช่วยให้สร้างการติดตั้งใช้งาน TextAutoSize ที่กำหนดเองได้ ดูตัวอย่างการใช้งานขนาดข้อความอัตโนมัติที่กำหนดเองได้ที่ TextAutoSizeSample (I85756)
  • ย้ายแฟล็กฟีเจอร์ DetectTapGesturesEnableNewDispatchingBehavior ไปยัง ComposeFoundationFlags และเปลี่ยนชื่อเป็น isDetectTapGesturesImmediateCoroutineDispatchEnabled เราเลิกใช้งานฟีเจอร์เก่าแล้ว และตอนนี้จะมอบสิทธิ์ให้ ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled แทน (I62932)

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

  • เปิดใช้ DetectTapGesturesEnableNewDispatchingBehavior โดยค่าเริ่มต้น ตอนนี้ API ของ TapGestureDetector ใช้ลักษณะการทำงานของการส่งแบบใหม่ (การส่งทันที) โดยค่าเริ่มต้น (I9f2bc, b/369648479)
  • แก้ไขตัวแก้ไข requiredWidth/Height/Size เพื่อจัดการขนาดโดยธรรมชาติอย่างเหมาะสม (Ie3d7d, b/368113212)

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

  • BasicTooltip ที่ใช้กันทั่วไปใน Foundation และ BasicTooltip/Tooltip ใน Material3 (Ifc2e6)
  • เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และคอมโพสิชันโลคัลสำหรับอินเทอร์เฟซดังกล่าว (I80809)

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

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

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

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

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

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

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

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

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

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

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

  • เพิ่มตัวปรับแต่ง stylusHoverIcon (Iff20a, b/331289114)
  • เลิกใช้งาน confirmValueChange ของ AnchoredDraggableState แล้ว แทนที่จะยับยั้งการเปลี่ยนแปลงสถานะ แองเคอร์ที่ไม่ได้รับอนุญาตไม่ควรอยู่ในชุดแองเคอร์ที่ใช้งานอยู่ และควรใช้ OverscrollEffect เพื่อระบุว่าการดำเนินการที่ขอไม่พร้อมใช้งาน (Ia717f)
  • เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
  • เพิ่ม API OverscrollEffect#withoutDrawing และ OverscrollEffect#withoutEventHandling - 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) ไปยัง Composable ของข้อความที่คุณชื่นชอบ (เช่น BasicText) แล้วดูว่าข้อความปรับขนาดให้พอดีกับพื้นที่ที่มีอยู่ได้อย่างไร (Ice7e0, b/139320827)
  • เพิ่ม API OverscrollFactory และ LocalOverscrollFactory เพื่ออนุญาตให้กำหนดค่าการเลื่อนเกินขอบเขตภายในลำดับชั้น ระบบจะใช้ค่าที่ระบุผ่าน LocalOverscrollFactory เป็นค่าเริ่มต้นในการสร้าง OverscrollEffect หากต้องการสร้างและจดจำเอฟเฟกต์จากโรงงานที่ระบุไว้ปัจจุบัน ให้ใช้ rememberOverscrollEffect() (I51ca4, b/255554340)

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

  • เปิดตัว CompositionLocal ที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092)
  • นำ ScrollableDefaults.overscrollEffect ออกแล้ว คุณควรใช้ rememberOverscrollEffect แทน การดำเนินการนี้จะสร้างอินสแตนซ์ของการใช้งานการเลื่อนเกินปัจจุบันที่มาพร้อมกับ LocalOverscrollFactory (I1651a, b/255554340),(b/234451516)
  • เปิดตัวAutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ค่าสถานะเพื่อเปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484)
  • นำ CombinedClickableNode ออก เราได้เปิดเผย API เวอร์ชันทดลองนี้ชั่วคราวเพื่อปลดบล็อกงานด้านประสิทธิภาพ แต่ตอนนี้ไม่จำเป็นต้องใช้แล้ว แต่คุณควรใช้ Modifier.combinedClickable โดยตรงเหมือนกับ API ตัวแก้ไขอื่นๆ (I4b658)
  • เพิ่มการโอเวอร์โหลดให้กับ horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager และ VerticalPager พร้อมรองรับการระบุ OverscrollEffect ที่กำหนดเอง OverscrollEffect ที่ระบุจะได้รับเหตุการณ์และแสดงผลภายในขอบเขตของคอมโพเนนต์เหล่านี้ โปรดทราบว่าระบบไม่รองรับการวาด OverscrollEffect เดียวกัน 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 อย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังเปิดตัวฟีเจอร์ NewNestedScrollFlingDispatchingEnabled เพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย ระบบจะนำธงออกก่อนเวอร์ชันเบต้า (I05c37, b/371168883)
  • แก้ไขข้อบกพร่องที่ทำให้ OverscrollEffects ที่ส่งไปยัง Modifier.anchoredDraggable ได้รับเดลต้า 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)
  • เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
  • นำตัวแก้ไข graphicsLayer โดยนัยออกจาก Composable BasicText เพิ่มฟีเจอร์ทดลอง ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled เพื่อให้เปลี่ยนกลับไปใช้ลักษณะการทำงานแบบเดิมได้ (Ie478d)
  • เพิ่ม Modifier.recalculateWindowInsets() เพื่ออนุญาตให้บุตรหลานในลำดับชั้นใช้ insetsPadding ได้แม้ว่าผู้ปกครองจะจัดกลุ่มบุตรหลานโดยไม่มี consumeWindowInsets() ก็ตาม (I7f9e4)

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

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

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

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

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

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

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

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

เวอร์ชัน 1.7

เวอร์ชัน 1.7.8

12 กุมภาพันธ์ 2025

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

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

  • แก้ไขข้อขัดข้องใน BasicTextField ที่มีการเปลี่ยนรูปแบบอินพุตเมื่อแทนที่ข้อความที่วางบางส่วน (I73702)

เวอร์ชัน 1.7.7

29 มกราคม 2025

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

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

  • แก้ไขข้อขัดข้องของ IndexOutOfBound ด้วยคำอธิบายประกอบลิงก์ (Ic96d2)
  • แก้ไขการประกอบใหม่แบบไม่สิ้นสุดในกรณีที่พบได้ยากบางกรณีที่มีลิงก์ (I04a03)

ข้อบกพร่องที่ทราบ

  • เราพบข้อบกพร่องที่อาจทำให้ข้อความขึ้นบรรทัดใหม่โดยไม่คาดคิดในสถานการณ์ที่พบได้ยากใน Android ระดับ API 35 เราไม่สามารถแก้ไขในเวอร์ชัน 1.7 ได้ จึงจะแก้ไขในเวอร์ชัน 1.8 (b/391378120)

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

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

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

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

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

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

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

  • ตรวจสอบว่าไม่ได้คอมโพสย่อยรายการที่ปักหมุด 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)
  • เพิ่มการรองรับแบบทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback)
  • NestedScrollแหล่งที่มาของ Drag และ Fling จะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput)
  • LazyLayout ตอนนี้สามารถทำเครื่องหมายคำขอแบบดึงข้อมูลล่วงหน้าเป็นด่วนได้แล้ว ซึ่งหมายความว่าเราคาดว่ารายการนี้จะต้องใช้ในเฟรมถัดไป และต้องการไม่สนใจงบประมาณเฟรมเพื่อให้แน่ใจว่าได้ทำงานเพิ่มเติมล่วงหน้า (Id513f)
  • รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
  • มีการเลื่อนระดับ API ต่างๆ เป็นเวอร์ชันเสถียร
    • เพจเจอร์ การสแนป ส่วนที่เว้นไว้ในหน้าต่าง

เวอร์ชัน 1.7.0-rc01

21 สิงหาคม 2024

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

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

  • แก้ไขการถดถอยที่ทำให้เกิดข้อขัดข้องเมื่อมีการโฟกัสองค์ประกอบใดก็ตามภายในองค์ประกอบหลักที่โฟกัสได้ (หรือคลิกได้) และปิดใช้ (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 รายการแรกของแต่ละตารางกริด แต่สามารถกำหนดค่าได้โดยใช้ API LazyGridPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch ใหม่ (I591c4)
  • เปลี่ยนชื่อ SemanticsProperties.Editable เป็น IsEditable และเปลี่ยน SemanticsPropertyReceiver.editable เป็นค่า isEditable ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8)
  • ย้ายbasicMarqueeค่าเริ่มต้นไปยังออบเจ็กต์ MarqueeDefaults (I12ff6)
  • เปลี่ยนชื่อพารามิเตอร์ basicMarquee delayMillis เป็น repeatDelayMillis (I12ff6)
  • อัปเดต API สำหรับการจัดรูปแบบลิงก์: ย้าย TextLinkStyles ไปยัง TextStyle และนำ TextDefaults ออกจาก Material (I5477b)

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

  • เปลี่ยนชื่อ LayoutCoordinates.introducesFrameOfReference เป็น LayoutCoordinates.introducesMotionFrameOfReference เพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)
  • นำ "ค่าเริ่มต้น" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults (I1d8a0)
  • นำ "Marquee" ออกจากพร็อพเพอร์ตี้ MarqueeDefaults แล้ว (Iad4f4)
  • นำ TextLinkStyles ออกจากชั้นเรียน TextStyle แล้ว แต่ TextLinkStyles เป็นส่วนหนึ่งของตัวสร้าง LinkAnntation และเมธอด AnnotatedString.fromHtml (I90b2b)
  • แก้ไขข้อบกพร่องที่ทำให้ Pager สแนปเมื่อปัดไปทางขอบเขตขณะที่อยู่ที่ขอบเขตอยู่แล้ว (I9f373, b/339171222)
  • ตอนนี้ BTF2 มีท่าทางสัมผัสการเลือกด้วยเมาส์ที่ถูกต้องแล้ว (Ibe8c6)

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

  • ส่ง "Make compose/measure time calculation content-type based in prefetch to improve accuracy" อีกครั้ง (Iea622)
  • สร้างเนื้อหาการคำนวณเวลาเขียน/วัดผลตามประเภทเนื้อหาในการดึงข้อมูลล่วงหน้าเพื่อปรับปรุงความแม่นยำ (Ibccb1)
  • ทำให้ตัวแก้ไข WindowInsetsPadding พร้อมใช้งานจากชุดซอร์สทั่วไป (I070b2)

เวอร์ชัน 1.7.0-beta01

14 พฤษภาคม 2024

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

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

  • เพิ่มพร็อพเพอร์ตี้ KeyboardOptions.shouldShowKeyboardOnFocus กลับมาเป็นพร็อพเพอร์ตี้ที่เลิกใช้งานแล้วและซ่อนไว้เพื่อความเข้ากันได้แบบไบนารี (I15cfe)
  • Modifier.anchoredDraggable จะกลับค่าเดลต้าการลากโดยค่าเริ่มต้นสำหรับคอมโพเนนต์ที่มีการวางแนวนอนเมื่อใช้ในเลย์เอาต์ RTL (I3c6d9)
  • ตอนนี้ AnnotatedString.hasEqualsAnnotations เปลี่ยนชื่อเป็น hasEqualAnnotations แล้ว (I685c0)
  • อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ โดยเฉพาะอย่างยิ่ง เราได้นำวิธีการออกจาก TextDefaults สำหรับการสร้าง LinkAnnotations ที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text composable แทน (I31b93)
  • แทนที่ onDragStarted และ onDragStopped ด้วยการเรียกกลับที่ไม่ระงับ (I59de8)

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

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

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

  • เปลี่ยนชื่อ PrefetchExecutor -> PrefetchScheduler เพื่อให้สอดคล้องกับความรับผิดชอบของทีมมากขึ้น (Ib9154)
  • เพิ่มการรองรับการดึงข้อมูลล่วงหน้าของรายการใน LazyLists ที่ซ้อนกัน (เช่น LazyColumn ที่แสดงผล LazyRows ที่ซ้อนกัน) การเปลี่ยนแปลงนี้คาดว่าจะช่วยลดเฟรมหลุดระหว่างการเลื่อนสำหรับ LazyLists เหล่านี้ การติดตั้งใช้งานเริ่มต้นคือการดึงข้อมูลล่วงหน้าของรายการที่ซ้อนกัน 2 รายการแรก แต่ลักษณะการทำงานนี้สามารถควบคุมได้โดยใช้ API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch ใหม่ (I51952)

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

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

ฟีเจอร์ใหม่

  • เพิ่มออบเจ็กต์ TextDefaults ที่มีเมธอดในการสร้าง LinkAnnotation และแยกวิเคราะห์สตริงที่ติดแท็ก HTML ซึ่งใช้ MaterialTheme กับลิงก์ (I98532, b/139312671)
  • เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของรายการในLazyVerticalGridและLazyHorizontalGrid ก่อนหน้านี้ คุณสามารถเพิ่มModifier.animateItemPlacement()ตัวแก้ไขเพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การจัดลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อ Modifier.animateItem() ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 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)
  • เราได้นำแฟล็กฟีเจอร์สำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
  • LazyColumn จะแสดงผลส่วนหัวที่ไม่เคลื่อนที่ในภาพหน้าจอแบบยาวได้อย่างถูกต้องแล้ว (I8d239, b/329296635)
  • ปรับ API เวอร์ชันทดลองที่เหลือส่วนใหญ่ให้เสถียร ซึ่ง API เหล่านี้เปิดตัวพร้อมกับ BasicTextField เวอร์ชันใหม่ (I714e2)
  • เพิ่มพารามิเตอร์ textObfuscationCharacter ลงใน BasicSecureTextField ซึ่งควบคุมว่าจะใช้อักขระใดขณะที่ทำให้เนื้อหาอ่านไม่ออก (I0588b)
  • NestedScroll แหล่งที่มาของ Drag and Fling จะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)
  • ขอแนะนำ LocalBringIntoViewSpec ซึ่งเป็นลักษณะการทำงานของการเลื่อนโฟกัสที่ขึ้นอยู่กับแพลตฟอร์มซึ่งใช้ที่เลเยอร์ตัวแก้ไขที่เลื่อนได้ (I27aa5, b/317453911)
  • นำ TextFieldCharSequence ออกแล้ว TextFieldBuffer.originalValues จะถูกแทนที่ด้วย TextFieldBuffer.originalText และ TextFieldBuffer.originalSelection (I2c7d6)
  • ImeOptions.hintLocales ไม่สามารถเป็นค่าว่างได้อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้ LocaleList.Empty (Ic5bc4)
  • เปลี่ยนชื่อ getOffsetFractionForPage เป็น getOffsetDistanceInPages แล้ว (Ia05e2)

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

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

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

  • เปลี่ยนชื่อ API การเลื่อน 2 รายการ (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)
  • ใช้การรองรับเวอร์ชันทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้เป็นเวอร์ชันทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ ฟีเจอร์นี้จึงปิดใช้งานโดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า Flag ComposeFeatureFlag_LongScreenshotsEnabled เป็น true เราจะนำฟีเจอร์นี้ออกก่อนเวอร์ชันเบต้า 1.7 (I2b055, b/329296471)
  • เปิดตัว GraphicsLayer API ใหม่เพื่อให้มีความยืดหยุ่นมากขึ้นในการจัดวางและการแสดงผลอินสแตนซ์ GraphicsLayer และรองรับฟีเจอร์การแสดงผลโดยธรรมชาติโดยไม่ต้องประสานงานกับการติดตั้งใช้งานที่ประกอบได้เพื่อระบุอินสแตนซ์ตัวแก้ไข 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) variant และ BasicSecureTextField จะใช้ KeyboardActionHandler แทน KeyboardActions ในการประมวลผลการกระทำที่แป้นพิมพ์เสมือนดำเนินการ (I58dda)
  • API การมอบสิทธิ์การเขียนด้วยลายมือโดยใช้สไตลัสเพื่อรองรับการเขียนด้วยลายมือโดยใช้สไตลัสในช่องป้อนข้อความ "ปลอม" (I9c09c, b/327271923)
  • เปลี่ยนชื่อ KeyboardOptions.shouldShowKeyboardOnFocus เป็น showKeyboardOnFocus แล้ว (Ib4b7a, b/295951492)
  • นำพารามิเตอร์ hintMediaTypes ออกจาก Modifier.contentReceiver แล้ว เราแนะนำให้นักพัฒนาแอปตรวจสอบประเภทสื่อของ TransferableContent ที่ได้รับอยู่แล้ว เนื่องจากอาจเข้ากันไม่ได้กับ hintMediaTypes ที่กำหนดค่าไว้ (I82f99)
  • จัดลำดับพารามิเตอร์ของ BasicSecureTextField ใหม่ นำพารามิเตอร์ keyboardType และ imeAction ออกเพื่อใช้คลาส KeyboardOptions แบบเต็มในขณะที่ยังคงค่าเริ่มต้นเดิมที่เหมาะสมกับ BasicSecureTextField นอกจากนี้ยังนำพารามิเตอร์ scrollState ออกด้วย (Ibbfa9)
  • เปลี่ยนประเภทของ TextFieldState.text จาก TextFieldCharSequence เป็น CharSequence ดังนั้นเราจึงเพิ่ม TextFieldState.selection: TextRange และ TextFieldState.composition: TextRange? เพื่ออ่านค่าการเลือกและการจัดองค์ประกอบปัจจุบันจากออบเจ็กต์สถานะโดยตรง
  • นำ TextFieldState.forEachTextValue ออกแล้ว (Idb2a2)
  • นำฟังก์ชัน ClipboardManager.getClipMetadata และ ClipboardManager.hasClip ออกแล้ว โปรดใช้ clipEntry.getMetadata() เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของ ClipboardManager.getClip ว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498)
  • ตอนนี้ ClipboardManager.setClip ยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9)
  • ReceiveContentListener จะแปลงเป็นอินเทอร์เฟซฟังก์ชัน นอกจากนี้ เรายังนำการโอเวอร์โหลด Modifier.receiveContent ที่รับ Lambda ออกด้วย เนื่องจากตอนนี้ ReceiveContentListener เป็นอินเทอร์เฟซฟังก์ชันแล้ว
  • Modifier.receiveContent เปลี่ยนชื่อเป็น Modifier.contentReceiver แล้ว (I1e6af)
  • เปลี่ยนชื่อ TransferableContent.consumeEach เป็น TransferableContent.consume แล้ว (I1e462)
  • rememberTextFieldState ได้รับการอัปเกรดเป็น Stable 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)
  • นำเมธอดและพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ Codepoint ออกภายใต้ 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การดำเนินการเชิงความหมายเพื่อให้เราสามารถส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ a11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้ดังกล่าวในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2)
  • BasicTextField2 เปลี่ยนชื่อเป็น BasicTextField แล้ว (Ie5713)
  • FocusRequester.createRefs ตอนนี้เสถียรแล้ว (I4d92c, b/261436820)
  • เปิดตัว DelegatableNode.scrollIntoView() เพื่อให้โหนดตัวแก้ไขส่งคำขอ scrollIntoView ได้โดยตรง (I2b3b7, b/299939840)
  • เปิดตัว DelegatableNode.requireView() เพื่อให้โหนดตัวแก้ไขรับ View ปัจจุบันของ Android ได้โดยไม่ต้องอ่าน CompositionLocal (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() เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657)
  • เปิดตัว DelegatableNode.currentLayoutCoordinates เพื่อเป็นวิธีรับModifier.Nodeปัจจุบันของ LayoutCoordinates โดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa)
  • การเพิ่มประสิทธิภาพใน DraggableAnchors ที่ใช้โดย AnchoredDraggable (I89cff)
  • BasicTextField2 และ API ที่เกี่ยวข้องในแพ็กเกจ androidx.compose.foundation.text2 จะย้ายไปที่ androidx.compose.foundation.text (I9f635)
  • BasicTextField2 ไม่รับพารามิเตอร์ CodepointTransformation อีกต่อไป ใช้ BasicSecureTextField หรือ OutputTransformation (Id34ff)
  • เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ AnnotatedStrings รายการ (I32659)
  • ขอแนะนำ ContextualFlowRow และ FlowRow/Column ที่ได้รับการปรับปรุงด้วย MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้มี maxLines และการรองรับการล้น รวมถึงการเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่ปรับประสิทธิภาพได้ดีที่สุด โดย ContextualFlow* เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วน FlowRow และ FlowColumn เหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ใน FlowRow หรือ FlowColumn ที่รายการทั้งหมดจะประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ใน ContextualFlowRowSample และ FlowRowSample (Ib9135, b/293577082)

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

  • ภาพเคลื่อนไหวของเคอร์เซอร์จะไม่ขอเฟรมระหว่างสถานะเปิดและปิดอีกต่อไป (Ia2253)
  • KeyboardOptionsตอนนี้ตัวสร้างสำเนาที่เลิกใช้งานแล้วจะคัดลอกพร็อพเพอร์ตี้ทั้งหมดได้อย่างถูกต้อง (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 ใน Pager เพื่อปลดล็อก Use Case อื่นๆ และมอบความยืดหยุ่นที่มากขึ้น (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 สำหรับ Use Case ของคุณ (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 เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยพื้นผิวใน Compose ได้ง่ายขึ้น
  • การเปลี่ยนแปลงและการปรับปรุง API ต่างๆ ใน Pager และ snapFlingBehaviour
  • API การโฟกัส ข้อความ และการแทรกต่างๆ ได้รับการเลื่อนชั้นเป็น API ที่เสถียรแล้ว

เวอร์ชัน 1.6.0-rc01

10 มกราคม 2024

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

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

  • นำตัวสร้างส่วนขยาย 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 เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับ DragAndDropModifierNode 1 สำหรับรับการโอนและ 1 สำหรับโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น Float อัปเดตเอกสารเพื่อให้มีความชัดเจนมากขึ้นเกี่ยวกับmaximumFlingVelocity unity (I8adc7)
  • onDragAndDropStart ในDragAndDropModifierNode โรงงานเปลี่ยนชื่อเป็น acceptDragAndDropTransfer แล้ว

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

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

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

  • ตอนนี้ Foundation Tooltip API อยู่ในเวอร์ชัน @ExperimentalFoundationApi (I30b0b) แล้ว

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

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

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

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

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

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

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

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

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

  • เราได้ทำให้พารามิเตอร์ magnifierCenter ของ Modifier.magnifier เป็นค่า Null ได้โดยยังคงลักษณะการทำงานเริ่มต้นเดิมไว้ (I6aa66)

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

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

  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์ BasicText ไม่หดเมื่อ minWidth เปลี่ยนแปลงและ minWidth น้อยกว่าข้อจำกัดการวัดเริ่มต้น maxWidth (Idb19c)
  • เพิ่มการรองรับโปรแกรมแสดงผลสำหรับการไล่ระดับสีแบบกวาดใน ArcLine (I4d5bb)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
  • นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพดีขึ้น (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 มีการเปลี่ยนชื่อพารามิเตอร์ขนาดเป็น dragDecorationSize (Id0e30, b/303904810)
  • เราเปลี่ยนชื่อพารามิเตอร์ decorationBox ของ BasicTextField2 เป็น decorator และประเภทของเกมจะเปลี่ยนเป็นอินเทอร์เฟซที่สนุกเทียบเท่ากัน TextFieldDecorator (I23c1c)

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

  • ปรับปรุงเอกสารเกี่ยวกับBasicTextFieldเรื่องข้อกำหนดของ onValueChange (I90fc9, b/160257648)

เวอร์ชัน 1.6.0-alpha07

4 ตุลาคม 2023

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

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

  • เปิดตัว PlatformTextInputMethodTestOverride สำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b)
  • เปลี่ยนชื่อ GraphicsSurface เป็น AndroidExternalSurface (I11680)
  • เพิ่มDisableNonLinearFontScalingInComposeฟีเจอร์ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า DisableNonLinearFontScalingInCompose = true ในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486)
  • เพิ่มคอลเล็กชัน ColorList และ ColorSet ที่หลีกเลี่ยงการจัดสรร (I744bd)
  • การเปลี่ยนแปลงนี้จะนำ shortSnapVelocityThreshold ออก ซึ่งได้กลายเป็นรายละเอียดการใช้งานของการใช้งาน SnapLayoutInfoProvider (I65f6d)
  • เพิ่มตัวแก้ไข dragAndDropSource สำหรับการเริ่มเซสชันการลากและวาง และตัวแก้ไข dragAndDropTarget สำหรับการรับจากเซสชันการลากและวาง (Ib7828, b/286038936)
  • อัปเดตเอกสารและวิธีการระบุตำแหน่งของ SnapPositionInLayout เพิ่มระยะห่างภายในเนื้อหาลงในเมธอดตำแหน่งใน SnapPositionInLayout (Id7938, b/300116110)
  • เพิ่ม UndoState ลงใน TextFieldState ซึ่งช่วยให้สามารถเลิกทำ/ทำซ้ำการเปลี่ยนแปลงที่ผู้ใช้ทำ (Icc024)

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

  • แก้ไขปัญหา basicMarquee ไม่เคลื่อนไหวหลังจากเปลี่ยนความเร็ว (Id2e77, b/297974036)

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

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

ฟีเจอร์ใหม่

  • ใหม่: 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)

การเปลี่ยนแปลงพฤติกรรม

  • ตอนนี้ Compose ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นเพื่อให้ง่ายต่อการอ่านและเข้าถึงได้มากขึ้น เมื่อการปรับขนาดแบบอักษร > 100% ในการตั้งค่าระบบ ข้อความขนาดเล็กจะเพิ่มขนาดตามปกติ แต่ข้อความที่มีขนาดใหญ่อยู่แล้วจะเพิ่มขนาดเพียงเล็กน้อย นอกจากนี้ ความสูงของบรรทัดที่กำหนดไว้ใน SP จะปรับโดยอัตโนมัติเพื่อให้สัดส่วนยังคงเท่ากับความสูงที่ตั้งใจไว้ที่ระดับการปรับขนาด 100% ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการปรับขนาดแบบอักษร (I11518)

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

  • นำการใช้ rememberSaveable สำหรับเคล็ดลับเครื่องมือออก (Icc131, b/299500338)

เวอร์ชัน 1.6.0-alpha05

6 กันยายน 2023

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

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

  • เพิ่มการโอเวอร์โหลดสำหรับ BasicSecureTextField ที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ API BasicTextField ปัจจุบัน (Ia4882)
  • เพิ่ม Modifier.preferKeepClear() เพื่อทำเครื่องหมายว่าสามารถคอมโพสได้เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน API 33 ขึ้นไป (Ib51d5, b/297260115)
  • ความเร็วในการดีดในคอมโพเนนต์ View เช่น ScrollView และ RecyclerView จะจำกัดไว้ที่ ViewConfiguration.ScaledMaximumFlingVelocity ตอนนี้ Compose มี maximumFlingVelocity เวอร์ชันของตัวเองซึ่งใช้กับ Draggable ได้แล้ว (Ibf974)
  • นำการโอเวอร์โหลด Pager และ PagerState ที่เลิกใช้งานแล้วออก (Iea07e)
  • เพิ่ม BasicTooltipBox ลงใน compose.foundation และอัปเดต PlainTooltipBox กับ RichTooltipBox ให้ใช้ TooltipBox กับ Composable ใหม่ของ PlainTooltip และ RichTooltip (I79e1d)

เวอร์ชัน 1.6.0-alpha04

23 สิงหาคม 2023

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

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

  • เพิ่มReusableCompositionอินเทอร์เฟซสำหรับการจัดการวงจรและการนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775)
  • Modifier.focusGroup ได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)
  • เพิ่มการโอเวอร์โหลดสำหรับ BasicTextField2 ที่ยอมรับค่าที่ไม่เปลี่ยนแปลงและโค้ดเรียกกลับเพื่อเปลี่ยนค่านั้น เช่นเดียวกับ API BasicTextField ปัจจุบัน (I3f2b8)
  • ตอนนี้ GridItemSpan::currentLineSpan เป็น API ที่เสถียรแล้ว (Icc29c)
  • ตอนนี้ Canvas ที่ยอมรับ contentDescription เป็น API ที่เสถียรแล้ว (Ib3d29)
  • เปิดตัวviewportSizeในScrollState ซึ่งเป็นวิธีทราบviewPortขนาดของคอมโพเนนต์ที่ใช้ ScrollState หลังจากวัดผลแล้ว (I8b85a, b/283102682)
  • แก้ไขปัญหาที่การดึงข้อมูลล่วงหน้าใน Pager ไม่ตรงกับลักษณะการทำงานใน Views (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 จากจริงเป็นเท็จขณะโฟกัส (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)
  • คำอธิบายประกอบเพิ่มเติมเพื่อระบุอินพุตที่อนุญาตไปยัง Composable (I51109)
  • เพิ่ม SemanticsNodeInteraction.requestFocus เพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722)
  • ออกแบบ PlatformTextInput* API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController และ LocalSoftwareKeyboardController ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป นอกจากนี้ LocalSoftwareKeyboardController ยังเป็นCompositionLocalอย่างเป็นทางการแล้วด้วย (I4c364)
  • Modifier.transformable ตอนนี้มีเดลต้าการแพนในพารามิเตอร์ canPan เพื่อช่วยกำหนดทิศทางการแพนเพื่ออนุญาตหรือไม่อนุญาต (I692aa, b/266829800)
  • อัปเดตตัวแก้ไข consumeWindowInsets เพื่อขยายซูเปอร์คลาส AbstractComposeView (Iacd74, b/269479941)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

  • การสนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เปิดตัว scrollAnimationSpec เพื่ออนุญาตให้ใช้ข้อกำหนดภาพเคลื่อนไหวที่กำหนดเอง อัปเดตจาก BringIntoViewCalculator เป็น BringIntoViewScroller (Idb741)
  • เพิ่ม ResourceResolutionException type เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (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 จากจริงเป็นเท็จขณะโฟกัส (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() ไปยังประเภทเฉพาะทางที่เกี่ยวข้องสำหรับ Primitive ได้ รหัสการตรวจสอบคือ AutoboxingStateCreation ก่อนหน้านี้ การตรวจสอบนี้จะเปิดใช้โดยค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ หากต้องการดูคำเตือนนี้ในเอดิเตอร์ของ Android Studio และเอาต์พุต Lint ของโปรเจ็กต์ ให้เปลี่ยนระดับความรุนแรงจากข้อมูลเป็นคำเตือน (หรือสูงกว่า) โดยประกาศ warning "AutoboxingStateCreation" ภายในbuild.gradleหรือการกำหนดค่า build.gradle.kts ของโมดูลตามที่แสดง (I34f7e)

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

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

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

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

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

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

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

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

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

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

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

เวอร์ชัน 1.5.0-alpha03

19 เมษายน 2023

androidx.compose.foundation:foundation:1.5.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตต่อไปนี้

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

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

เราจะนำแฟล็กการแก้ไขข้อบกพร่องออกก่อนการเปิดตัว 1.5 beta01 (Iada23, b/246960758)

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

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

เวอร์ชัน 1.5.0-alpha02

5 เมษายน 2023

androidx.compose.foundation:foundation:1.5.0-alpha02 และ androidx.compose.foundation:foundation-layout:1.5.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตต่อไปนี้

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

  • เพิ่มการรองรับเซลล์ขนาดคงที่ใน LazyGrid และการจัดเรียงด้วยการจัดเรียงแกนไขว้ (I83ed9, b/235121277, b/267942510)
  • เพิ่มการรองรับเลนขนาดคงที่ใน LazyStaggeredGrid และจัดเรียงด้วยการจัดเรียงแกนไขว้ (I7d519)
  • ตอนนี้คุณเปิด UrlAnnotation ใน AnnotatedString ผ่านบริการช่วยเหลือพิเศษ เช่น TalkBack ได้แล้ว (If4d82, b/253292081)
  • เพิ่มInsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (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)

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

  • ตอนนี้การดำเนินการตามความหมายของ BasicTextFieldSetText จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกับการอัปเดต 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 แบบรวม "Decorator" ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340)
  • ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อน (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 เครื่องมือสร้างที่มี variationSettings ตอนนี้เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)
  • เปิดตัว PinnableContainer API ที่เผยแพร่โดย Lazy List ผ่าน Composition Local ซึ่งช่วยให้ปักหมุดรายการปัจจุบันได้ ซึ่งหมายความว่าระบบจะไม่ทิ้งรายการดังกล่าวเมื่อเลื่อนออกจากมุมมอง เช่น 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 โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ withFrameNanos จนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเก่าอาจล้มเหลว การเปลี่ยนแปลงนี้ควรส่งผลต่อโค้ดที่เรียกใช้ withFrameNanos หรือ withFrameMillis โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวได้ใน CL นี้เพื่อดูตัวอย่าง
  • เพิ่มพารามิเตอร์ onPerformTraversals: (Long) -> Unit ที่ไม่บังคับลงในตัวสร้าง TestMonotonicFrameClock และฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของ withFrameNanos แต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670)
  • แนะนำการดำเนินการด้านการช่วยเหลือพิเศษของหน้าเว็บ: PageUp, PageDown, PageLeft, PageRight โปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้ตั้งแต่ API 29 เป็นต้นไปเท่านั้น (Ida4ab)
  • ขอแนะนำ HorizontalPager และ VerticalPager ซึ่งเป็นวิธีแสดง Composable ในลักษณะของ Pager เปิดตัว PagerState เพื่อควบคุม Pager รวมถึงค้นหาข้อมูลเกี่ยวกับสถานะปัจจุบันของ Pager เปิดตัว PageSize ซึ่งเป็นวิธีควบคุมขนาดหน้าของ Pager โดยสามารถใช้เพื่อสร้างภาพสไลด์เหมือน Pager ได้ เปิดตัว PagerSnapDistance ซึ่งเป็นวิธีควบคุมการทำงานของการสแนปในลักษณะการปัดของ Pager (I01120)
  • เพิ่มการโอเวอร์โหลดใน SnapFlingBehavior.performFling เพื่อช่วยให้เข้าใจว่าการปัดจะหยุดที่ใด (I569f6)
  • นำ OverscrollEffect#isEnabled ออกแล้ว คุณไม่จำเป็นต้องจดจำและตั้งค่าสถานะนี้ เพียงแค่ไม่ต้องส่งเหตุการณ์ไปยังเอฟเฟกต์การเลื่อนเกินในกรณีที่คุณไม่ต้องการให้แสดงการเลื่อนเกิน (เช่น หาก ScrollableState#canScrollForward/backward ทั้ง 2 รายการแสดงผลเป็นเท็จ) (I1a4b0, b/255554340, b/255557085)
  • เพิ่ม ScrollableState#canScrollForward และ ScrollableState#canScrollBackward เพื่อสอบถามว่า ScrollableState มีพื้นที่ให้เลื่อนในทิศทางใดทิศทางหนึ่งหรือไม่ (ไม่ว่าจะอยู่ที่ค่าต่ำสุด / สูงสุดของช่วงหรือไม่) ค่าเริ่มต้นจะเป็นจริงเพื่อให้เข้ากันได้แบบย้อนหลังกับการติดตั้งใช้งาน ScrollableState ที่มีอยู่ ผู้ใช้สามารถใช้สิ่งนี้เพื่อแสดงให้ผู้ใช้เห็นว่ายังเลื่อนได้ และยังใช้เพื่อหลีกเลี่ยงการส่งเดลต้าไปยัง ScrollableStates ที่ไม่มีที่ว่างให้เลื่อนในทิศทางที่กำหนดได้ด้วย เพื่อลดการทำงานที่ไม่จำเป็น (Idf1a0, b/255557085)
  • เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
  • ใช้ใน Clickable เพื่อหน่วงเวลาการโต้ตอบด้วยการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • แก้ไขปัญหาที่ Clickables ไม่หน่วงเวลาการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายใน Scrollable ViewGroup
  • อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • อัปเดตการตั้งชื่อ snapStepSize ให้สอดคล้องกับวิธีการอื่นๆ ใน SnapLayoutInfoProvider (Ife67c)
  • เพิ่ม EmojiCompat ใน Compose (Ibf6f9, b/139326806)
  • เปลี่ยนชื่อ consumedWindowInsets() เป็น consumeWindowInsets() และ withConsumedWindowInsets() เป็น onConsumedWindowInsetsChanged() รวมถึงเผยแพร่ตัวแก้ไขต่อสาธารณะ (Ie44e1)

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

  • แก้ไขข้อขัดข้องกับ Modifier.animateItemPlacement() และตารางกริดแบบเลย์ซีแล้ว ปัญหานี้เกิดขึ้นในบางกรณีเมื่อจำนวนสินค้าใหม่น้อยกว่าจำนวนสินค้าก่อนหน้า (I0bcac, b/253195989)

เวอร์ชัน 1.4.0-alpha02

9 พฤศจิกายน 2022

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

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

  • ตอนนี้ awaitFirstDown และ waitForUpOrCancellation ยอมรับ PointerEventPass เพื่อให้มีความยืดหยุ่นมากขึ้น (I7579a, b/212091796)
  • เปลี่ยนกลับ beyondBoundCount API จาก Lazy* API (I12197)
  • เปิดตัวพารามิเตอร์ใน Lazy API เพื่อจัดองค์ประกอบและวางรายการนอกวิวพอร์ต (I69e89, b/172029355)
  • เพิ่มพารามิเตอร์ minLines ลงใน BasicText และ BasicTextField ซึ่งช่วยให้คุณกำหนดความสูงขั้นต่ำของ Composable เหล่านี้ได้ในแง่ของ จำนวนบรรทัด (I24294, b/122476634)

เวอร์ชัน 1.4.0-alpha01

24 ตุลาคม 2022

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

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

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

เวอร์ชัน 1.3

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

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

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

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

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

androidx.compose.foundation:foundation:1.3.0 และ androidx.compose.foundation:foundation-layout:1.3.0 เปิดตัวแล้ว เวอร์ชัน 1.3.0 มีคอมมิตต่อไปนี้

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

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

เวอร์ชัน 1.3.0-rc01

5 ตุลาคม 2022

androidx.compose.foundation:foundation:1.3.0-rc01 และ androidx.compose.foundation:foundation-layout:1.3.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตต่อไปนี้

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

  • เปิดตัว lowVelocityAnimationSpec ที่ใช้โดยขั้นตอนการเข้าถึงเมื่อความเร็วในการปัดไม่เพียงพอที่จะลดลง (Iaeb27)
  • เพิ่ม API ไฮเฟนทดลองใหม่เพื่อรองรับการใส่ไฮเฟนอัตโนมัติในข้อความ (Iaa869)

เวอร์ชัน 1.3.0-beta03

21 กันยายน 2022

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

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

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

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

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

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

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

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

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

เวอร์ชัน 1.3.0-beta01

24 สิงหาคม 2022

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

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

  • นำ pointerPosition ออกจาก OverscrollEffect - เอฟเฟกต์ที่สนใจตำแหน่งเคอร์เซอร์สามารถใช้ Modifier.pointerInput { } ใน effectModifier เพื่อรับตำแหน่งเคอร์เซอร์ปัจจุบันแทนได้ (I9f606, b/241239306)
  • เปิดเผย AwaitPointerEventScope#awaitLongPressOrCancellation เป็นองค์ประกอบที่ใช้สร้างสรรค์เพิ่มเติมสำหรับการตรวจหาท่าทางสัมผัสที่ซับซ้อนมากขึ้น (I04374, b/181577176)
  • เปิดตัว lazyListSnapLayoutInfoProvider เพื่อเปิดใช้การสแนปใน Lazy List (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 เพื่อให้วิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานใน DrawScope เช่น Canvas และ drawBehind (I16a62, b/190787898)

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

  • ตอนนี้ระบบจะซ่อนแป้นพิมพ์เสมือนเมื่อปิดใช้ช่องข้อความขณะโฟกัส (I6e3e4, b/237308379)
  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงใน Velocity Tracker เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803)
  • ตอนนี้เมื่อเลื่อนได้มีองค์ประกอบย่อยที่โฟกัสอยู่ ระบบจะเลื่อนอย่างถูกต้องเพื่อให้องค์ประกอบย่อยที่โฟกัสอยู่ยังคงอยู่ในมุมมองเมื่อมีการลดขนาด แม้ว่าจะมีการเคลื่อนไหวขนาดก็ตาม (I80867, b/230756508, b/220119990)
  • แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อล้างและเติม TextField ขณะที่การเลือกใช้งานอยู่ (I1235b, b/208655565, b/214253689)

เวอร์ชัน 1.3.0-alpha01

29 มิถุนายน 2022

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

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

  • เปิดตัวUrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString (I1c754, b/231495122)

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

  • BasicTextField cursorBrush สามารถเคลื่อนไหวได้แล้วโดยไม่ต้องรีสตาร์ทตัวจับเวลาเคอร์เซอร์ (I812e6, b/236383522)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

10 สิงหาคม 2022

androidx.compose.foundation:foundation:1.2.1 และ androidx.compose.foundation:foundation-layout:1.2.1 เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีคอมมิตต่อไปนี้

เวอร์ชัน 1.2.0

27 กรกฎาคม 2022

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

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

  • ตอนนี้ LazyVerticalGrid และ LazyHorizontalGrid เสถียรแล้ว
  • ตอนนี้คุณระบุประเภทเนื้อหาสำหรับรายการในรายการและตารางแบบ Lazy ได้แล้ว ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบกลับมาใช้ซ้ำได้อย่างมีประสิทธิภาพมากขึ้น
  • ตอนนี้ Lazy List และ Grid มีพารามิเตอร์ userScrollEnabled ซึ่งช่วยให้ปิดใช้การเลื่อนผ่านท่าทางของผู้ใช้ได้
  • เพิ่ม API เวอร์ชันทดลองใหม่ชื่อ LazyLayout ซึ่งเป็น API ที่เราใช้ภายในเพื่อขับเคลื่อนรายการและตารางแบบ Lazy
  • OverscrollEffect เราได้เปิดตัว API ในเวอร์ชันทดลอง คุณสามารถกำหนดเอฟเฟกต์การเลื่อนเกินขอบที่กำหนดเอง รวมถึงเพิ่มเอฟเฟกต์แพลตฟอร์มมาตรฐานลงในคอนเทนเนอร์ที่เลื่อนได้ที่กำหนดเอง
  • เราได้เปิดตัวAPI ความสามารถในการทำงานร่วมกันของการเลื่อนที่ซ้อนกันเพื่อให้สามารถทำงานร่วมกันระหว่างมุมมองและนักแสดงการเลื่อน Compose
  • เพิ่มการเลื่อนด้วยเมาส์และแทร็กแพดในคอนเทนเนอร์ที่เลื่อนได้ทั้งหมด

เวอร์ชัน 1.2.0-rc03

29 มิถุนายน 2022

androidx.compose.foundation:foundation:1.2.0-rc03 และ androidx.compose.foundation:foundation-layout:1.2.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตต่อไปนี้

  • ไม่มีการเปลี่ยนแปลงตั้งแต่ 1.2.0-rc02

เวอร์ชัน 1.2.0-rc02

22 มิถุนายน 2022

androidx.compose.foundation:foundation:1.2.0-rc02 และ androidx.compose.foundation:foundation-layout:1.2.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตต่อไปนี้

เวอร์ชัน 1.2.0-rc01

15 มิถุนายน 2022

androidx.compose.foundation:foundation:1.2.0-rc01 และ androidx.compose.foundation:foundation-layout:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตต่อไปนี้

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

  • เราได้เปิดตัว OverscrollEffect เวอร์ชันทดลองเพื่ออนุญาตให้ใช้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองควบคู่ไปกับโอเวอร์โหลด Modifier.scrollable ที่ยอมรับเอฟเฟกต์ดังกล่าว
  • LocalOverScrollConfiguration เวอร์ชันทดลองได้ย้ายจาก foundation.gesture ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็น LocalOverscrollConfiguration (If19fb, b/204650733)
  • ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ 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 ของคุณเองที่คล้ายกับ DSL ที่ใช้โดย LazyColumn ซึ่งกำหนดรายการได้ผ่านการเรียกใช้ item/items หลายครั้ง (I2d05e, b/228580728)

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

  • ชี้แจงเอกสารประกอบสำหรับ WindowInsets.ime เพื่อระบุว่ามีการรายงานระยะขอบ ime ย้อนกลับไปจนถึง API 23 แต่จะเคลื่อนไหวได้เฉพาะใน API 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 ที่ประกอบได้ตามดัชนี ตอนนี้เรามีฟังก์ชันที่ประกอบกันได้ที่ง่ายกว่าเดิมคือ Item ซึ่งยอมรับดัชนี (Id2196)
  • เปลี่ยนชื่อ LazyLayoutItemsProvider เป็น LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount เปลี่ยนชื่อเป็น itemCount (Id409c)
  • เพิ่มแปรงใน TextStyle และ SpanStyle เพื่อให้วาดข้อความด้วยการไล่สีได้ (I53869, b/187839528)
  • แอตทริบิวต์ trimFirstLineTop, trimLastLineBottom ของ LineHeightBehavior เปลี่ยนเป็น Enum เดียว: LineHeightTrim LineHeightTrim มีค่า 4 สถานะที่กำหนดโดยบูลีน 2 รายการ FirstLineTop, LastLineBottom, ทั้งคู่ และไม่มี (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 แล้ว การส่ง 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 อุปกรณ์ที่ใช้ร่วมกันตอนนี้แสดงการมองเห็น (ไม่ว่าจะอยู่บนหน้าจอหรือไม่ ไม่ว่าโฆษณาจะทับซ้อนกับหน้าต่างหรือไม่) และขนาดที่โฆษณาอาจมีหากพร้อมใช้งานในอุปกรณ์ แต่ไม่ได้ใช้งานอยู่ในปัจจุบัน (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 ช่วยให้นักพัฒนาแอปปิดใช้การใช้ Android WindowInsets ได้ ซึ่งช่วยให้ 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()) จะเลื่อนเพื่อให้ Composable ที่โฟกัสยังคงมองเห็นได้หากมีการปรับขนาดพื้นที่เลื่อนและ Composable ที่โฟกัสมองเห็นได้ก่อนหน้านี้
  • ตอนนี้ TextField จะอยู่เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแป้นพิมพ์แสดงขึ้น เมื่ออยู่ภายในรายการที่เลื่อนได้แบบไม่เลซี่และโหมดป้อนข้อมูลแบบซอฟต์คือ 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() method เพื่ออนุญาตให้นักพัฒนาแอป รวมเฉพาะมิติข้อมูลจาก WindowInsets (I14c94, b/217768486)
  • เพิ่ม ComposableTarget, ComposableTargetMarker และ ComposableOpenTarget ที่ช่วยให้รายงานเวลาคอมไพล์ได้เมื่อ มีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยัง Applier ที่ไม่ได้ ออกแบบมาให้ใช้

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

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

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

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

เวอร์ชัน 1.2.0-alpha03

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

androidx.compose.foundation:foundation:1.2.0-alpha03 และ androidx.compose.foundation:foundation-layout:1.2.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้

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

  • ตอนนี้เราเลิกใช้งานเมธอด notifyFocusedRect ใน TextInputSession และ TextInputService แล้ว และจะไม่เรียกใช้เมธอดดังกล่าว โปรดใช้ BringIntoViewRequester แทน (Ia4302, b/192043120, b/216842427, b/178211874)
  • เปิดใช้ภาพเคลื่อนไหวสำหรับรายการของ Lazy Grid ด้วย Modifier.animateItemPlacement() (Ib6621, b/211753218)
  • BringIntoViewRequester จะส่งต่อคำขอไปยัง Android View ที่โฮสต์แล้ว (Ia7a51)
  • FontFamilyResolver พร้อมให้บริการแล้วผ่าน LocalFontFamilyResolver.current
    • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกการใช้งาน Compose
    • ตอนนี้ Paragraph และ MultiParagraph ใช้เวลา FontFamily.Resolver
    • ตอนนี้ TextLayoutResult.layoutInput.fontFamilyResolver มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งาน TextLayoutResult.layoutInput.resourceLoader แล้วเนื่องจากไม่มีการใช้งานอีกต่อไป (Id5a45, b/174162090)
  • เพิ่ม AndroidFont ซึ่งเป็น API ระดับต่ำตัวใหม่สำหรับระบุตัวอธิบายทรัพยากรแบบอักษรประเภทใหม่ ใน Android เช่น การโหลดแบบอักษรจาก แบ็กเอนด์เฉพาะแอป การค้นหาแบบอักษรที่ติดตั้งไว้ล่วงหน้า ในอุปกรณ์ หรือการโหลดแบบอักษรจากทรัพยากรที่ไม่ได้มาจาก โรงงานแบบอักษรปัจจุบัน
    • ขยาย 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)

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

  • ตอนนี้ TextField จะอยู่เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแป้นพิมพ์แสดงขึ้น เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น ADJUST_PAN (I8eaeb, b/190539358, b/192043120)
  • เดสก์ท็อปใช้ Composition Local สำหรับ 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 (I46f07) ของ Android ได้ง่ายขึ้น

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

  • เราได้ปรับปรุงลักษณะการทำงานของแว่นขยายการเลือกข้อความให้ สอดคล้องกับแว่นขยายของแพลตฟอร์ม (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll และคอนเทนเนอร์อื่นๆ ที่ใช้ Modifier.scrollable รองรับการเลื่อนด้วยล้อเมาส์แล้ว (I2b5e1, b/198214718)

เวอร์ชัน 1.2.0-alpha01

12 มกราคม 2022

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

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

  • เพิ่มพารามิเตอร์ใหม่ userScrollEnabled ลงใน LazyColumn, LazyRow และ LazyVerticalGrid เพื่อให้ผู้ใช้ปิดใช้การเลื่อนที่ผู้ใช้เริ่มชั่วคราวหรือถาวรผ่านท่าทางสัมผัสหรือการดำเนินการเพื่อการช่วยเหลือพิเศษ ระบบจะยังคงอนุญาตให้เลื่อนแบบเป็นโปรแกรมผ่านเมธอดในสถานะ (I7eae9, b/201150093)
  • เพิ่มonSizeChangedการเรียกกลับไปยังตัวแก้ไขแว่นขยาย (I6879f)
  • ตอนนี้วิดเจ็ตแว่นขยายจะแสดงเมื่อลากแฮนเดิลการเลือกใน 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 และทําให้มีลักษณะการทํางานที่สอดคล้องกันหากคุณใช้ทั้ง View และ Compose การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจได้ว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Material ของ Compose ระบบจะปฏิบัติตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษของเป้าหมายการสัมผัส
  • การรองรับ Navigation Rail อย่างเสถียร
  • เปลี่ยน API แบบทดลองก่อนหน้านี้หลายรายการให้เป็น API ที่เสถียร
  • การรองรับ Kotlin เวอร์ชันใหม่กว่า

เวอร์ชัน 1.1.0-rc03

26 มกราคม 2022

androidx.compose.foundation:foundation:1.1.0-rc03 และ androidx.compose.foundation:foundation-layout:1.1.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตต่อไปนี้

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

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

เวอร์ชัน 1.1.0-rc01

15 ธันวาคม 2021

androidx.compose.foundation:foundation:1.1.0-rc01 และ androidx.compose.foundation:foundation-layout:1.1.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตต่อไปนี้

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

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

เวอร์ชัน 1.1.0-beta04

1 ธันวาคม 2021

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.1.0-beta03

17 พฤศจิกายน 2021

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

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

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

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

เวอร์ชัน 1.1.0-beta02

3 พฤศจิกายน 2021

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

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

  • ตอนนี้การกระเพื่อมและข้อบ่งชี้อื่นๆ จะล่าช้าก็ต่อเมื่ออยู่ภายในคอนเทนเนอร์ Modifier.scrollable() เท่านั้น แทนที่จะล่าช้าเสมอสำหรับเหตุการณ์ที่หยุดทำงาน (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)

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

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

เวอร์ชัน 1.1.0-alpha04

15 กันยายน 2021

androidx.compose.foundation:foundation:1.1.0-alpha04 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตต่อไปนี้

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

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

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

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

เวอร์ชัน 1.1.0-alpha03

1 กันยายน 2021

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

ฟีเจอร์ใหม่

  • อัปเดต Compose 1.1.0-alpha03 ให้ขึ้นอยู่กับ Kotlin 1.5.30 (I74545)

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

  • เพิ่มเอฟเฟกต์เรืองแสงสำหรับการเลื่อนแล้ว เพิ่ม API OverScrollConfiguration เวอร์ชันทดลองใหม่เพื่อให้กำหนดค่าเอฟเฟกต์ภาพการเลื่อนเกินได้ ระบุค่าเป็น null เพื่อปิดเอฟเฟกต์การเลื่อนเกิน (I0c304, b/171682480)
  • ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
  • เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัดแล้ว (I6b28e)
  • เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในอินพุตเชิงความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)

เวอร์ชัน 1.1.0-alpha02

18 สิงหาคม 2021

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

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

  • เพิ่มเวอร์ชัน DpSize สำหรับ Modifier.size และ requiredSize (I3fc7e, b/194219828)

เวอร์ชัน 1.1.0-alpha01

4 สิงหาคม 2021

androidx.compose.foundation:foundation:1.1.0-alpha01 และ androidx.compose.foundation:foundation-layout:1.1.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตต่อไปนี้

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

  • อัปเดตเมธอด DrawScope#drawImage ที่ ใช้สี่เหลี่ยมผืนผ้าต้นทางและปลายทาง เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับ ซึ่งมีประโยชน์สำหรับพิกเซลอาร์ตที่ต้องการให้เป็นพิกเซลเมื่อขยายขนาดสำหรับอาร์ตเวิร์กแบบพิกเซล อัปเดต BitmapPainter + Image composable เพื่อใช้พารามิเตอร์ FilterQuality ที่ไม่บังคับด้วย (Ie4fb0, b/180311607)
  • ตอนนี้ TextField จะล้างการเลือกเมื่อกดปุ่มย้อนกลับ ซึ่งตรงกับลักษณะการทำงานของ EditText ใน Android (I3ca16, b/174173645)
  • เพิ่มแฮนเดิลเคอร์เซอร์ (I07a82, b/173016579)

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

  • ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ 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)
  • เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (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 ตัวเพื่อระบุว่าควรติดธงให้เมธอดนี้เป็น "Hot", "Startup" หรือ "Post Startup" หรือไม่

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

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

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

กฎมีหน้าที่อะไร

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

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

  • เมธอดที่มีแฟล็ก P แสดงว่าเป็นเมธอดที่เรียกใช้หลังจากเริ่มต้น

  • คลาสที่มีอยู่ในไฟล์นี้บ่งชี้ว่ามีการใช้คลาสในระหว่างการเริ่มต้นระบบ และควรจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส

ระบบนี้ทำงานอย่างไร

  • ห้องสมุดสามารถกำหนดกฎเหล่านี้ซึ่งจะรวมอยู่ในอาร์ติแฟกต์ AAR เมื่อสร้างแอปที่มีอาร์ติแฟกต์เหล่านี้ ระบบจะผสานกฎเหล่านี้เข้าด้วยกันและใช้กฎที่ผสานแล้วเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เฉพาะเจาะจงสำหรับแอปนั้นๆ จากนั้น ART จะใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ล่วงหน้าซึ่งเป็นชุดย่อยที่เฉพาะเจาะจงของแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะอย่างยิ่งการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลกับแอปพลิเคชันที่แก้ไขข้อบกพร่องได้

เวอร์ชัน 1.0.0-beta08

2 มิถุนายน 2021

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

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

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

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

  • แก้ไขข้อขัดข้องเมื่อกดพื้นที่ว่างในข้อความที่ไม่ว่างเปล่าค้างไว้ (I33ab5, b/187437299)
  • แสดงแถบเครื่องมือหลังจาก SelectAll (I495d9, b/185919613)
  • แก้ไขคอนเทนเนอร์ที่เลื่อนได้ซึ่งตัดองค์ประกอบย่อยในแกนไขว้ ซึ่งสามารถทำซ้ำได้ง่ายหากคุณมี LazyRow ที่มีรายการการ์ด ตอนนี้เงาจะไม่ถูกตัดแล้ว (Icb635, b/186318448)
  • แก้ไขปัญหาที่บางครั้งการกระเพื่อม / การบ่งชี้อื่นๆ จะค้างเมื่อคลิกแบบยาวเมื่อใช้ Modifier.combinedClickable (I2298c, b/186223077)
  • ตอนนี้ detectDragGesures, detectVerticalGestures และ detectHorizontalGestures จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697)
  • Modifier.onGloballyPositioned() เปลี่ยนเป็นรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)

เวอร์ชัน 1.0.0-beta07

18 พฤษภาคม 2021

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

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

  • เราได้เปิดตัวตรรกะการดึงข้อมูลล่วงหน้าของรายการที่มองเห็นถัดไปสำหรับ LazyColumn/Row (I8a4bc, b/184940225)
  • เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)

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

  • ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้สูงสุด 2 รายการให้ใช้งานอยู่ (ไม่ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
  • นำ paintBackground ออก (I38660)
  • วาดพื้นหลังการเลือกโดยใช้ DrawScope (I73c61, b/186674472)
  • แก้ไขการถดถอยในเบต้า 06 ที่ส่งผลต่อแถว/คอลัมน์ที่ใช้การจัดเรียง spacedBy เพื่อจัดวางองค์ประกอบย่อยที่มีการถ่วงน้ำหนัก (Ifaf8c, b/187326588)

เวอร์ชัน 1.0.0-beta06

5 พฤษภาคม 2021

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

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

  • แก้ไขความขัดแย้งด้วยท่าทางการนำทาง (I1145e)
  • เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
  • เพิ่ม SemanticsActions.ScrollToIndex เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และ SemanticsProperties.IndexForKey เพื่อรับดัชนีของรายการในลิสต์ ที่มีรายการที่ใช้คีย์ ทั้ง 2 การดำเนินการนี้จะดำเนินการโดย LazyList
    • เพิ่ม SemanticsNodeInteraction.performScrollToIndex ที่เลื่อนรายการไปยังดัชนีที่ระบุ และ SemanticsNodeInteraction.performScrollToKey ที่เลื่อนรายการไปยังรายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
  • รองรับการบันทึก AnnotatedString ไปยัง TextFieldValue.Saver เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation และ withAnnotation ลงใน AnnotatedString.Builder (I8cbdc, b/178446304)
  • เพิ่มค่าพารามิเตอร์เริ่มต้น 0.dp ลงใน PaddingValues(horizontal, vertical) (I05571, b/181336792)

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

  • แถวและคอลัมน์ที่มี weight(fill = false) จะไม่ทำให้องค์ประกอบหลักเติมเต็มพื้นที่แกนหลักที่มีอยู่ทั้งหมดอีกต่อไป (Ied94d, b/186012444, b/184355105)

เวอร์ชัน 1.0.0-beta05

21 เมษายน 2021

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

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

  • ตอนนี้อินเทอร์เฟซ FlingBehavior มีการทำเครื่องหมายเป็น @Stable แล้ว การติดตั้งใช้งานทั้งหมดควรเป็นไปตามสัญญา @Stable (I93354, b/184830577)

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

  • แก้ไขการดำเนินการเลื่อนเพื่อการช่วยเหลือพิเศษ ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight และ accessibilityActionScrollDown ตอนนี้การเลื่อนจะเลื่อนไปทีละหน้าจอในทิศทางที่กำหนดแทนที่จะเลื่อนไปจนสุดของ เลื่อนได้ (Ieccb0)
  • ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data ใช้งานร่วมกับ Android 12 ได้แล้ว (I6f9de, b/184718994)

เวอร์ชัน 1.0.0-beta04

7 เมษายน 2021

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

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

  • เปลี่ยนชื่อ hideSoftwareKeyboard และ showSoftwareKeyboard ใน SoftwareKeyboardController เป็น hide() และ show() ตามลำดับ
    • ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่ง ในการทดสอบ) (I579a6)
  • เปิดตัว TextOverflow.Visible (Ic8f89)
  • เราได้นำอินสแตนซ์สาธารณะของ RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope ออกแล้ว (I4e83e, b/181869067)

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

  • แก้ไขปัญหาที่รายการของ LazyColumn/LazyRow ซึ่งอยู่ที่ขอบได้รับการจัดตำแหน่งไม่ถูกต้องหลังจากปัดอย่างรวดเร็ว (Ie4d13, b/183877420)
  • ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากทำการเปลี่ยนแปลงนี้แล้ว ฟังก์ชันที่ใช้ร่วมกันได้ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากฟังก์ชันในเครื่องมักจะดึงพารามิเตอร์จากฟังก์ชันระดับบน และการข้ามพารามิเตอร์ดังกล่าวเป็นแหล่งที่มาของข้อบกพร่องที่พบบ่อย

    สรุปได้ว่า ตัวอย่างต่อไปนี้

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    ก่อนการเปลี่ยนแปลงนี้ ShowCountฟังก์ชันที่ประกอบกันได้จะข้ามเสมอ แม้หลังจากอัปเดตพารามิเตอร์ count แล้วก็ตาม แต่เหตุการณ์ดังกล่าวจะไม่เกิดขึ้นแล้ว (I5648a)

เวอร์ชัน 1.0.0-beta03

24 มีนาคม 2021

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

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

  • DefaultMonotonicFrameClock เลิกใช้งานแล้ว ตอนนี้การเรียกใช้ withFrameNanos หรือ Recomposer.runRecomposeAndApplyChanges ที่ไม่มี MonotonicFrameClock จะส่ง IllegalStateException (I4eb0d)

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

  • FlingBehavior.performFling() จะเรียกใช้แม้ว่าความเร็วจะเป็น 0 (I0b6e5, b/181237123)

เวอร์ชัน 1.0.0-beta02

10 มีนาคม 2021

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

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

  • เพิ่มการเพิ่มประสิทธิภาพเล็กๆ น้อยๆ หลายรายการในตรรกะการวัด LazyColumn (Ic6889)
  • เพิ่ม LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)

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

  • บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)

เวอร์ชัน 1.0.0-beta01

24 กุมภาพันธ์ 2021

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

นี่คือ Compose 1.0.0 เวอร์ชันเบต้าที่เปิดตัวเป็นครั้งแรก

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

  • เพิ่มการเรียกกลับ onStart ไปยัง detectDragGestures (I67269, b/179995594) แล้ว
  • ตัวปรับแต่งสำหรับการปรับขนาดให้ตรงกับขนาด Intrinsics จะไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (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()
    • สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ 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 ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
  • เพิ่ม LazyListState.animateScrollToItem

    เมธอดนี้จะเลื่อนรายการในลิสต์อย่างราบรื่นไปยังรายการที่เฉพาะเจาะจง (I4bfd7)

  • เปลี่ยนชื่อ ScrollableState.smoothScrollBy() เป็น animateScrollBy() เปลี่ยนชื่อ LazyListState.snapToItemIndex() เป็น scrollToItem() เปลี่ยนชื่อ ScrollState.smoothScrollTo() เป็น animateScrollTo() (I35ded)

  • Modifier.zoomable ถูกแทนที่ด้วย Modifier.transformable และมีการเพิ่ม smoothPanBy, smoothRotationBy เป็นฟังก์ชันการทำงาน (Ifc32b, b/175294473)

  • ตอนนี้ต้องระบุ defaultFactory สำหรับ compositionLocalOf และ staticCompositionLocalOf แทนที่จะเป็น ไม่บังคับ

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

    สำหรับประเภทที่กำหนดให้เป็น Null ได้ ให้พิจารณาใส่ { null } เป็นค่าเริ่มต้น factory

    เราไม่แนะนำให้ใช้ภาษาที่มีประเภทที่กำหนดให้ต้องมีค่า เว้นแต่จะระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม Lambda defaultFactory ควรแสดงข้อยกเว้น อย่างไรก็ตาม การส่งข้อยกเว้นหมายความว่าผู้บริโภคของภาษาจะมีการ อ้างอิงโดยนัยว่ามีการระบุภาษาดังกล่าวซึ่งไม่ได้บังคับใช้ โดยระบบประเภท (Ifbd2a)

  • เปลี่ยน Indication#createIndication() เป็น Indication#rememberUpdatedIndication(InteractionState) และนำพารามิเตอร์ InteractionState ออกจาก IndicationInstance#drawIndication() IndicationInstance ควรมีหน้าที่วาดเอฟเฟกต์ภาพเท่านั้น และไม่ควรเปิดตัวภาพเคลื่อนไหว / เขียนสถานะเพื่อตอบสนองต่อการเปลี่ยนแปลง InteractionState ภาพเคลื่อนไหวและการเขียนสถานะเหล่านี้ควรเกิดขึ้นภายใน rememberUpdatedIndication() แทน นอกจากนี้ เรายังเปลี่ยนพารามิเตอร์ indication ใน Modifier.indication ให้เป็นพารามิเตอร์ที่จำเป็นด้วย (Ic1764, b/152525426)

  • ตอนนี้การดำเนินการกับข้อความจะตรวจสอบโฟกัสโดยอัตโนมัติ (I13777, b/179648629)

  • นำออกแล้ว runBlockingWithManualClock (I15cdc, b/179664814)

  • ตอนนี้ตำแหน่งการเลื่อนใน Modifier.verticalScroll()/horizontalScroll() จะแสดงด้วย Ints (I81298)

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

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

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

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

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

  • นำการใช้งานบางส่วนออกจากระบบการป้อนข้อมูลด้วยเคอร์เซอร์ วิธีที่แนะนำในการประสานการใช้งานบางส่วนคือ Modifier.nestedScroll (Ie9c9b)

  • ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocirtTracker ย้ายจาก ui.gesture ไปยัง ui.input.pointer (Iff4a8, b/175294473)

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

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

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

    • ตัวสร้าง Composition ไม่รับพารามิเตอร์คีย์อีกต่อไป และเลิกใช้งานแล้ว
    • currentCompositeKeyHash ได้เปลี่ยนเป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
    • CompositionData และ CompositionGroup ได้รับการย้ายไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
    • เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เป็นรูปธรรม และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
    • วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
    • เราได้นำ@TestOnlyฟังก์ชัน clearRoots ระดับบนสุดออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว ไม่จำเป็นอีกต่อไป
    • ระบบได้นำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • ระบบได้นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว ไม่จำเป็นอีกต่อไป
    • เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ลงในไฟล์ต่างๆ เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่ความเข้ากันได้ของแหล่งที่มาจะยังคงใช้งานได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
    • (I99b7d, b/177245490)
  • เราได้ปรับปรุง Modifier.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)

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

  • เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ในเครื่อง API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)

เวอร์ชัน 1.0.0-alpha12

10 กุมภาพันธ์ 2021

androidx.compose.foundation:foundation:1.0.0-alpha12 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้

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

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

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

  • ระบบได้แทนที่ Constraints.enforce ด้วย Constraints.constrain (I8b8ea)

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

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

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

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

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

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

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

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

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

  • เช่นเดียวกับที่เราเคยนำ state { 0 } ที่ใช้ร่วมกันได้ออกไปก่อนหน้านี้ และตอนนี้เรากำลังส่งเสริมการใช้งานอย่าง remember { mutableStateOf(0) } เราจะนำ savedInstanceState { 0 } ที่ใช้ร่วมกันได้ออก คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์ Saver ที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ 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)

  • ตอนนี้คุณปิด Recomposers ได้แล้ว Closed recomposers จะ ทำการ Recomposition ต่อไปจนกว่าโครูทีนย่อยของการ Composition จะเสร็จสมบูรณ์ เปลี่ยนชื่อ 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 จากซ้าย/ขวาเป็นเริ่ม/สิ้นสุด เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)

  • นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)

  • เราได้ปรับโครงสร้าง API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้ พารามิเตอร์ประเภทอีกด้วย

    การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงภายในซึ่งไม่ควรส่งผลต่อความเข้ากันได้ของซอร์สโค้ด แต่เป็นการเปลี่ยนแปลงที่ทำให้ไบนารีใช้งานร่วมกันไม่ได้ (I3b922, b/169406779)

  • นำ Modifier.scaleGestureFilter ออกแล้ว โปรดใช้ Modifier.zoomable แทน หรือใช้ Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473)

  • ตอนนี้เราเลิกใช้งาน AnimatedValue/Float แล้ว โปรดใช้ Animatable แทน (I71345, b/177457083)

    • นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
    • นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก (I99c19)
  • นำฟังก์ชันการเลื่อนที่ไม่ระงับที่เลิกใช้งานแล้วออก การเปลี่ยนแปลงจากรุ่นที่แล้วจะยังคงอยู่ และตอนนี้ระบบได้นำฟังก์ชันการเลื่อนที่ไม่ระงับออกทั้งหมดแล้ว โปรดแปลงเป็นฟังก์ชันระงับ ที่มีชื่อเดียวกัน โดยจะรับขอบเขตของโครูทีนได้ผ่าน rememberCoroutineScope() (I3d39c, b/178169563)

  • androidx.compose.foundation.layout.ConstraintLayout ถูกเลิกใช้งานแล้วเพื่อรองรับ androidx.constraintlayout.compose.ConstraintLayout คุณจะต้องเพิ่มทรัพยากร 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 now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. การจัดองค์ประกอบใหม่และ เครื่องหมายภาพเคลื่อนไหวที่อิงตาม withFrameNanos จะหยุดชั่วคราวขณะที่วงจรของโฮสต์ หยุดทำงาน (I38e11)

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

เวอร์ชัน 1.0.0-alpha11

28 มกราคม 2021

androidx.compose.foundation:foundation:1.0.0-alpha11 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตต่อไปนี้

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

  • เลิกใช้งาน scrollBy ที่ไม่ใช่แบบระงับชั่วคราว และนำ scrollTo ที่ไม่ใช่แบบระงับชั่วคราวออก

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

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

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

  • BasicTextField ได้รับพารามิเตอร์ใหม่ชื่อ "decorationBox" ซึ่งช่วยให้เพิ่มการตกแต่ง เช่น ไอคอน ตัวยึดตำแหน่ง ป้ายกำกับ และอื่นๆ ที่คล้ายกับช่องข้อความ และเพิ่มพื้นที่เป้าหมายการเข้าชมของช่องข้อความ (I16996)

  • นำพารามิเตอร์ canDrag ออกจาก Modifier.draggable (Ic4bec, b/175294473)

  • นำ AnimatedFloat.fling ที่ยอมรับ FlingConfig ออกแล้ว โปรดใช้ suspend Animatable.animateDecay แทน (I4659b, b/177457083)

  • นำ data class ออกจากชั้นเรียนต่อไปนี้

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • ตอนนี้คุณสร้างรายการที่คลิกได้ เปิด/ปิดได้ และเลือกได้ภายนอกองค์ประกอบได้แล้ว (I0a130, b/172938345, b/175294473)

  • เลิกใช้งาน ScrollableColumn/Row แล้ว การใช้ ScrollableColumn มีประสิทธิภาพน้อยกว่าเมื่อเทียบกับ LazyColumn เมื่อคุณมีเนื้อหาที่เลื่อนได้จำนวนมาก เนื่องจาก LazyColumn จะอนุญาตให้เราเขียน/วัด/วาดองค์ประกอบที่มองเห็นได้เท่านั้น เราจึงตัดสินใจเลิกใช้งาน ScrollableColumn และ ScrollableRow แล้วแนะนำให้ใช้ LazyColumn และ LazyRow แทนเพื่อป้องกันไม่ให้ผู้ใช้ใช้วิธีที่ไม่มีประสิทธิภาพ ผู้ใช้ยังคงเลือกได้ว่าจะไม่ใช้ลักษณะการทำงานแบบเลซี่และใช้ตัวแก้ไขโดยตรงได้ เช่น Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • items(count: Int)เมธอด Factory ใหม่สำหรับขอบเขตของ 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)
  • การเปลี่ยนแปลงฟังก์ชันโรงงานสำหรับ Font/FontFamily/Typeface

    • เพิ่มฟังก์ชัน Factory ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่
    • เลิกใช้งานฟังก์ชันโรงงานก่อนหน้าด้วยตัวพิมพ์เล็ก ตัวอักษรแรก
    • ฟังก์ชันใหม่ของ Factory จะแสดงผล FontFamily แทน คลาสย่อย
    • ซ่อนตัวสร้างของคลาสย่อยเพื่อให้สร้างได้ผ่านฟังก์ชัน Factory เท่านั้น
    • เปลี่ยนชื่อ Font.asFontFamily เป็น Font.toFontFamily
    • (I42aa7)
  • เปิดตัว ComposeContentTestRule ซึ่งขยาย ComposeTestRule และกำหนด setContent ซึ่งถูกนำออกจาก ComposeTestRule เพิ่มเมธอดจาก Factory createEmptyComposeRule() ซึ่งจะแสดงผล ComposeTestRule และไม่เปิดใช้กิจกรรมให้คุณ ใช้เมื่อต้องการเปิดใช้งานกิจกรรมระหว่างการทดสอบ เช่น ใช้ 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)

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

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

  • API ใหม่ที่ใช้โครูทีน Animatable ซึ่งรับประกันการแยกกันโดยเด็ดขาด ระหว่างภาพเคลื่อนไหว DecayAnimationSpec ใหม่เพื่อรองรับภาพเคลื่อนไหวแบบลดทอนหลายมิติ (I820f2, b/168014930)
  • เพิ่มการรองรับช่องข้อความที่ปิดใช้และแบบอ่านอย่างเดียว (I35279, b/171040474, b/166478534)
  • ตอนนี้ animate() ถูกแทนที่ด้วย animateAsState() ซึ่งจะแสดงผล State<T> แทน T ซึ่งจะช่วยให้ประสิทธิภาพดีขึ้น เนื่องจากสามารถจำกัดขอบเขตการลบล้างให้แคบลง ไปยังตำแหน่งที่อ่านค่าสถานะได้ (Ib179e)
  • เพิ่ม API บทบาทของ Semantics และเพิ่มบทบาทเป็นพารามิเตอร์ไปยัง SemanticsModifier ที่คลิกได้ เลือกได้ และสลับได้ เปลี่ยน Modifier.progressSemantics เพื่อให้แถบเลื่อนใช้ได้ด้วย (I216cd)
  • ตอนนี้คุณเข้าถึง native keyEvent ได้แล้วผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)

เวอร์ชัน 1.0.0-alpha09

16 ธันวาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha09 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้

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

  • เพิ่มอินเทอร์เฟซที่เลื่อนได้

    ซึ่งจะช่วยให้ถือว่า ScrollState และ LazyListState เป็นประเภททั่วไปได้ และช่วยให้สามารถใช้การเลื่อนที่กำหนดเองได้ในทั้ง 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 ใช้การเรียกกลับ 1 รายการที่มีพารามิเตอร์ centroid, pan, zoom และ rotate ร่วมกัน (Ie6e1c)

  • ย้าย ContentDrawScope ไปยัง ui-graphics module เพื่อให้อยู่กับ DrawScope (Iee043, b/173832789)

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

  • ตอนนี้ Lambda ในตัวปรับออฟเซ็ตจะแสดงผล IntOffset แทน Float (Ic9ee5, b/174137212, b/174146755)
  • นำ SlotTable, SlotReader และ SlotWriter ออกจาก API สาธารณะ ก่อนหน้านี้มีการทำเครื่องหมายว่า InternalComposeAPI ตอนนี้ฟีเจอร์นี้อยู่ภายใน โมดูล Compose

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

  • ปรับโครงสร้าง ShaderBrush เพื่อ สร้างอินสแตนซ์ของ Shader แบบเลซีเมื่อ มีข้อมูลการปรับขนาดของ สภาพแวดล้อมการวาด ซึ่งมีประโยชน์ในการกำหนดการไล่ระดับสีที่ ครอบคลุมขอบเขตการวาดทั้งหมดของ Composable ในเวลาที่ทำการคอมโพส โดยไม่ต้อง ใช้การติดตั้งใช้งาน DrawModifier ที่กำหนดเอง

    เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (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 ลบล้าง insertBottomUp()เพื่อสร้างแผนภูมิต้นไม้จากล่างขึ้นบนและ insertTopDown()เพื่อสร้างแผนภูมิต้นไม้จากบนลงล่าง (Icbdc2)

  • เพิ่ม PainterResource API เพื่อจัดการการโหลดออบเจ็กต์ Painter แบบทึบแสง จากรูปแบบชิ้นงานที่แรสเตอร์ (เช่น PNG) หรือ VectorDrawable ผู้บริโภคไม่จำเป็นต้องระบุประเภทของชิ้นงานล่วงหน้าอีกต่อไป และสามารถเรียกใช้เมธอดนี้เพื่อรับออบเจ็กต์ Painter เพื่อใช้ใน Composable ของรูปภาพหรือตัวแก้ไข Painter (I2c703, b/173818471)

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

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha08 และ androidx.compose.foundation:foundation-layout:1.0.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้

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

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

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

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

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

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

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

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

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

  • ย้าย API ของ DrawModifier จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมนามแฝงของประเภท/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก 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)
  • พารามิเตอร์การจัดแนวของ Box เปลี่ยนชื่อเป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (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)
  • เลิกใช้งาน Ambients ที่มีชื่อลงท้ายด้วย Ambient และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440)
  • เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณโหลด Android Typeface ผ่านฟังก์ชัน typeface ได้ เช่น typeface(Typeface.DEFAULT) เปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() (I52ab7) ด้วย
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าโรงงานตัวแก้ไขใช้ androidx.compose.ui.composed {} ภายในแทนที่จะทำเครื่องหมายเป็น @Composable (I3c4bc)
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
  • เปลี่ยนชื่ออาร์กิวเมนต์ Semantics mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
  • Remove old ui-test module and its stubs (I3a7cb)
  • เปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)
  • เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
  • foundation:foundation-text module has been merged into foundation:foundation (Idac0f)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
  • id เปลี่ยนชื่อเป็น layoutId สำหรับ LayoutIdParentData Measurable.id เปลี่ยนชื่อเป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)

เวอร์ชัน 1.0.0-alpha07

11 พฤศจิกายน 2020

androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 และ androidx.compose.foundation:foundation-text:1.0.0-alpha07 เวอร์ชัน 1.0.0-alpha07 มีคอมมิตต่อไปนี้

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

  • เช่นเดียวกับ Modifier.fillMaxSize[Width|Height] ตอนนี้เรารองรับเศษส่วนใน Modifier.fillParentMaxSize[Width|Height] ภายในขอบเขตของ LazyColumn/Row (I797e2, b/166586426)
  • นำ KeyboardOptions.toImeOptions ออกจาก API สาธารณะแล้ว (Ic2e45)
  • เลิกใช้งาน AmbientTextStyle, ProvideTextStyle และ AmbientContentColor แล้ว แต่ให้ใช้เวอร์ชันใหม่ที่มีอยู่ในคลัง Material แทน สำหรับแอปพลิเคชันที่ไม่ใช่ Material คุณควรสร้างระบบการออกแบบของคุณเองแทน โดยเฉพาะอย่างยิ่งธีมแอมเบียนต์ที่สามารถใช้ในคอมโพเนนต์ของคุณเองได้ (I74acc, b/172067770)
  • เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text ดู API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีมได้ที่ androidx.compose.foundation.BasicText (If64cb)
  • เพิ่ม maxLines ลงใน TextField (Ib2a5b)
  • อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เพิ่ม KeyboardOptions สำหรับใช้ใน TextField (I9ca32)
  • เพิ่ม BasicText เป็น API ที่ไม่มีข้อจำกัดด้านการออกแบบสำหรับข้อความ ซึ่งเทียบเท่ากับ BasicTextField (I28268)
  • นำ ExperimentalLazyDsl annotation ออกแล้ว ตอนนี้คุณใช้ LazyColumn/LazyRow ได้โดยไม่ต้องเพิ่ม @OptIn (Idab7a, b/166584730)
  • เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
  • เพิ่ม BasicTextField เพื่อแทนที่ทั้ง CoreTextField และ BaseTextField (Id4cea)
  • นำ LazyColumnItems/LazyRowItems ที่เลิกใช้งานแล้วออก (I1d8a8)
  • ระบบได้นำ Composable ที่เลิกใช้งานแล้วสำหรับการปรับขนาดให้เป็นการวัดค่าโดยธรรมชาติออกแล้ว (I18537, b/171811496)
  • เปลี่ยนชื่อ relativePaddingFrom เป็น paddingFrom เพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะห่างจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
  • เราได้เพิ่มพารามิเตอร์ matchHeightConstraintsFirst ลงในตัวแก้ไข aspectRatio ซึ่งใช้เพื่อระบุตัวแก้ไขให้ปรับขนาดตามข้อจำกัดด้านความสูงก่อนที่จะลองใช้ข้อจำกัดด้านความกว้าง (Ie7c43, b/155290593)
  • มีการนำ DpConstraints ที่เลิกใช้งานแล้วออก (I87884, b/171702471)

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

  • เปิดตัวคลาส ScaleFactor inline เพื่อแสดงถึง ปัจจัยการปรับขนาดสำหรับแกนแนวนอนและแนวตั้ง โดยไม่ขึ้นต่อกันเพื่อ รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการ ปรับขนาดที่ไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
    • เพิ่มวิธีการของตัวดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
    • (Ic96a6, b/172291582)
  • ย้าย captureToBitmap ไปยัง captureToImage (I86385)
  • ทำเครื่องหมาย CoreText เป็น @InternalTextApi ใช้ BasicText แทน (I6aaeb)
  • เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
  • ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
  • มีการทำเครื่องหมาย CoreTextField เป็น @InternalTextApi โปรดใช้ BasicTextField แทน (Ie2469)
  • นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
  • เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
  • อัปเดต Icon API เพื่อรับ Color.Unspecified เป็นสีเฉดที่เป็นไปได้ ซึ่งจะวาดชิ้นงานหรือ Painter ที่ระบุโดยไม่มี ColorFilter ก่อนหน้านี้ การพยายามไม่สนใจการปรับสีด้วย Color.Unspecified จะปรับสีด้วยสีโปร่งใส และไม่มีการแสดงผลใดๆ เลย (I049e2, b/171624632)
  • ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
  • เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
  • ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
  • ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
  • เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
  • เพิ่มการทดสอบสำหรับตำแหน่งของ SelectionHandles ใน SelectionContainer (Ie93db)
  • เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)

เวอร์ชัน 1.0.0-alpha06

28 ตุลาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 และ androidx.compose.foundation:foundation-text:1.0.0-alpha06 เวอร์ชัน 1.0.0-alpha06 มีคอมมิตต่อไปนี้

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

  • ย้าย androidx.compose.foundation.Icon ไปยัง androidx.compose.material.Icon แล้ว นอกจากนี้ คุณยังใช้คอมโพเนนต์รูปภาพ / Modifier.paint() กับ Painter ได้หากไม่ต้องการใช้ไลบรารี Material (I9f622)
  • เพิ่ม interactionState ใน Modifier.scrollable, ScrollableColumn และ LazyColumnFor (I81566, b/169509805)
  • เพิ่ม alignByBaseline ลงใน RowScope และเปลี่ยนชื่อ alignWithSiblings เป็น alignBy (I06503, b/170628732)
  • Box ได้รับการปรับให้เป็นฟังก์ชันในบรรทัด (Ibce0c, b/155056091)
  • เพิ่ม maxLines ลงใน CoreTextField (Ibee58, b/143687793)
  • เพิ่มการตัดคำใน CoreTextField (I21a4b)

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

  • เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทนเพื่อระบุให้ดียิ่งขึ้นว่า Composable API ใช้ "remember" ภายในเพื่อคงข้อมูลไว้ใน Composition ต่างๆ (Ifda43)
  • เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดงวิธีใช้ใน Compose ได้ดีขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่า รัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
  • เพิ่มความสามารถในการระบุข้อมูล Inspector ในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
  • เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (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 เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)
  • อัปเดตพารามิเตอร์ Size.Unspecified ให้เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified ด้วย รวมถึงขนาดที่ไม่ใช่จำนวนจำกัด (I95a7e)
  • เพิ่มโมดูล Paging Compose และการผสานรวม Paging (Ib85da)
  • แก้ไข LazyListScope เพื่อรับค่าที่กำหนดให้เป็น Null ได้ (I1765b)
  • เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)
  • เพิ่มตัวอย่างสำหรับ LazyColumn/Row (Idc16d)
  • แก้ไขเมธอด items และ itemsIndexed เพื่ออนุญาต emptyList (I06647)
  • เพิ่ม DSL สำหรับระบุข้อมูลผู้ตรวจสอบ (Ic9a22)
  • ย้าย LongPress ไปยัง Text (Iff2bc)
  • ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)
  • รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
  • นำ PointerInputFilter.onPointerInput(...) ออกแล้ว PointerInputFilter.onPointerEvent(...) ควรใช้แทน (I6f04a)

เวอร์ชัน 1.0.0-alpha04

1 ตุลาคม 2020

androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 และ androidx.compose.foundation:foundation-text:1.0.0-alpha04 เวอร์ชัน 1.0.0-alpha04 มีคอมมิตต่อไปนี้

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

  • เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน foundation.Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าซึ่งทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกล่องแล้ว หากต้องการตกแต่ง/เพิ่มระยะขอบในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • เพิ่มคลาส LazyListState ใหม่ ซึ่งช่วยให้สังเกตและควบคุมตำแหน่งการเลื่อนของคอมโพเนนต์ LazyRow และ LazyColumn ได้ คุณสร้างอินสแตนซ์ได้โดยใช้ rememberLazyListState() และส่งไปยังพารามิเตอร์สถานะของคอมโพเนนต์ ปัจจุบันคุณจะเห็นรายการแรกที่มองเห็นได้และออฟเซ็ตในเวอร์ชันเริ่มต้นนี้ (Ic7cb7, b/159307669)
  • ตอนนี้ระบบจะบันทึกตำแหน่งรายการแบบเลื่อนและออฟเซ็ตการเลื่อน และกู้คืนเมื่อสร้างกิจกรรมใหม่ (Ie045f, b/166589058)
  • เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
  • เพิ่มยูทิลิตี MutatorMutex เพื่อรักษามิวเทเตอร์เดียวของ สถานะที่แชร์เมื่อเวลาผ่านไป และยกเลิกมิวเทเตอร์ที่ขัดแย้งตามลำดับความสำคัญ (I3f975)
  • ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting, ทำให้เป็น API ภายในและซ่อน kdoc (I554eb, b/168308412)
  • นำพารามิเตอร์ inlineContent ออกจากข้อความที่มีอินพุตสตริง ระบบจะไม่ใช้เนื่องจาก inlineContent ต้องทำงานร่วมกับ AnnotatedString (Ief403)
  • เราได้นำ Custom 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 การแปลงการปรับขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด x/y ใน DrawScope และ DrawTransform
    • นำเมธอด Rect.expandToInclude และ Rect.join ออกแล้ว
    • อัปเดตเอกสารประกอบเกี่ยวกับรัศมีให้ระบุว่าวงรี นอกเหนือจากวงกลมรี
    • เพิ่มเอกสารเพื่อระบุว่าไม่ควรเรียกใช้ ตัวสร้างสาธารณะสําหรับคลาส Radius แบบอินไลน์โดยตรง แต่ควรสร้างอินสแตนซ์ออบเจ็กต์ Radius ผ่านตัวสร้างฟังก์ชัน แทน
    • นำ API RoundRect ออกเพื่อค้นหา topRight, bottomRight, bottomCenter ฯลฯ
    • เลิกใช้ Rect.shift เพื่อใช้ Rect.translate
    • นำ API RoundRect.grow และ Rect.shrink ออกแล้ว
    • เปลี่ยนชื่อ RoundRect.outerRect เป็น Rect.boundingRect
    • นำเมธอด RoundRect.middleRect/tallMiddleRect/wideMiddleRect และ Rect.isStadium ออก
    • เปลี่ยนชื่อ RoundRect.longestSide เป็น RoundRect.maxDimension
    • เปลี่ยนชื่อ RoundRect.shortestSide เป็น RoundRect.minDimension
    • เปลี่ยน RoundRect.center ให้เป็นพร็อพเพอร์ตี้แทนที่จะเป็นฟังก์ชัน
    • อัปเดตตัวสร้าง 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 อีกต่อไป ซึ่งไม่เคยรองรับและทำให้การปัดและการเลื่อนทั้งหมดของรายการใน LazyColumnFor (I6e101) ไม่ทำงาน
  • อัปเดต Graphics API หลายรายการ
    • อัปเดต DrawScope API ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าการเปลี่ยนรูปแบบจะใช้ภายใน Callback เท่านั้นและจะนำออกหลังจากเรียกใช้ Callback
    • อัปเดตเอกสารประกอบ clipPath เพื่ออ้างอิงถึง Path แทนสี่เหลี่ยมผืนผ้าโค้งมน
    • แก้ไขการเว้นวรรคในเอกสารสำหรับพารามิเตอร์ด้านขวา ใน clipPath
    • เปลี่ยนชื่อ DrawScope.drawCanvas เป็น drawIntoCanvas และ นำพารามิเตอร์ขนาดออก
    • เปลี่ยนชื่อพารามิเตอร์ dx/dy ในเมธอด Inset เป็น horizontal และ vertical
    • เพิ่มการโอเวอร์โหลด Inset ที่ให้ค่า Inset เดียวกันกับขอบทั้ง 4 ด้าน
    • นำเอกสารเกี่ยวกับวิธีการส่วนที่เว้นไว้ออก ซึ่งระบุว่าระบบจะใช้ส่วนที่เว้นไว้กับทั้ง 4 ด้าน
    • อัปเดตเอกสารประกอบสำหรับคลาส Rect
    • อัปเดตความคิดเห็นเกี่ยวกับพารามิเตอร์ Rect ให้ตรงกับรูปแบบ kdoc
    • นำ Rect.join และ Rect.expandToInclude ออกแล้ว
    • สร้างการโอเวอร์โหลดสำหรับ Rect.translate(offset) และ เลิกใช้งาน Rect.shift
    • (If086a, b/167737376)
  • เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)
  • ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (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)
  • การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "การจัดแนว" ใน Layout API (I2421a, b/164077038)
  • เพิ่มพารามิเตอร์การจัดแนวลงใน Stack ซึ่งช่วยให้ระบุการจัดแนวเริ่มต้นสำหรับองค์ประกอบย่อยทั้งหมดของ Stack ได้ (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)
  • Offset กลายเป็นคลาสอินไลน์ (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 เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน กับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)
  • นำ Removed onChildPositioned และ OnChildPositionedModifier ออก นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)
  • ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว
  • กดพื้นที่ว่างค้างไว้เพื่อแก้ไข (Ib1e5b)
  • ซ่อน FloatingToolbar หลังจากแตะข้อความ (If4525)
  • ซ่อน FloatingToolbar เมื่ออัปเดตการเลือก (I8444c)
  • ยกเลิกการเลือกเมื่อเบลอ (I781a2)

เวอร์ชัน 0.1.0-dev16

5 สิงหาคม 2020

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

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

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

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

  • แก้ไข API แบบกว้าง (I077bc)
    1. นำอินเทอร์เฟซ OffsetBase ที่ไม่ได้ใช้ออก
    2. จัดแนวคลาส Offset และ IntOffset ให้มี API ที่สอดคล้องกัน
    3. เปลี่ยนชื่อ IntOffset.Origin เป็น IntOffset.Zero เพื่อให้สอดคล้องกับ Offset API
    4. ย้ายเมธอด nativeCanvas ออกจากอินเทอร์เฟซ Canvas เพื่อรองรับผู้ใช้ในการสร้างอินสแตนซ์ Canvas ของตนเอง
    5. สร้างคลาส EmptyCanvas ที่เป็น Stub เพื่อทำการรีแฟคเตอร์ DrawScope ให้เป็นพารามิเตอร์ที่ไม่ใช่ Null แทน lateinit และตรวจสอบว่าฟิลด์ไม่ใช่ Null
    6. เปลี่ยนชื่อ Enum ของ ClipOp ให้เป็น Pascal Case
    7. เปลี่ยนชื่อ Enum FilterQuality ให้เป็น Pascal Case
    8. เปลี่ยนชื่อ enums ของ StrokeJoin เป็น Pascal Case
    9. เปลี่ยนชื่อ PointMode enums เป็น Pascal Case
    10. เปลี่ยนชื่อ Enum ของ PaintingStyle ให้เป็น Pascal Case
    11. เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
    12. เปลี่ยนชื่อการแจงนับ StrokeCap เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint อีกต่อไป
    15. อัปเดต Image composable เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
    16. อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ แต่ละคำสั่งเส้นทาง
    18. อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
    19. เลิกใช้งานเมธอดตัวสร้าง Rect Companion เพื่อใช้ตัวสร้างฟังก์ชันแทน
    20. อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
    21. อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
    22. อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไขใน Paint หากมีการเปลี่ยนแปลง
    23. อัปเดตขนาดเพื่อเพิ่ม 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 แทน คำว่า "จากนั้น" มีสัญญาณการเรียงลำดับที่ชัดเจนกว่า และยังห้ามพิมพ์ Modifier.padding().background() + anotherModifier ซึ่งจะทำให้การเชื่อมโยงขาดตอนและอ่านยากขึ้น (Iedd58, b/161529964)

  • เพิ่ม isFocused() และ isNotFocused() SemanticsMatcher (I0b760)

  • เพิ่ม RemeasurementModifier แล้ว ซึ่งช่วยให้ผู้ใช้สามารถวัดเลย์เอาต์อีกครั้งพร้อมกันได้ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้พารามิเตอร์นี้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้พารามิเตอร์นี้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)

  • ตอนนี้ isSystemInDarkTheme จะพิจารณาการตั้งค่าธีมมืดทั้งระบบเสมอ และจะไม่สนใจสถานะการประหยัดพลังงานก่อน Q ตามคำแนะนำล่าสุด (I0c10c)

  • เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)

  • เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule (I70aaf)

  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)

เวอร์ชัน 0.1.0-dev15

22 กรกฎาคม 2020

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 และ androidx.compose.foundation:foundation-text:0.1.0-dev15 เวอร์ชัน 0.1.0-dev15 มีคอมมิตต่อไปนี้

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

การอัปเดตการขึ้นต่อกัน

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

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

  • เช่นเดียวกับพารามิเตอร์ใหม่ใน ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ตอนนี้ก็มีพารามิเตอร์ contentPadding ซึ่งช่วยให้เพิ่มระยะขอบสําหรับเนื้อหาหลังจากที่ถูกตัดได้ ซึ่งทําไม่ได้ผ่านพารามิเตอร์ตัวแก้ไขเพียงอย่างเดียว นอกจากนี้ ยังช่วยให้เพิ่มระยะห่างก่อนรายการแรก/หลังรายการสุดท้ายได้ด้วย (Ibc24e)
  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState' แทน (I400ce, b/157225838, b/149460415, b/154105299)
  • เราได้ปรับปรุง API ของ Modifier.draggable และ Modifier.scrollable ใหม่ เรานำ DragDirection ออกเพื่อใช้ Orientation แทน เราได้ปรับปรุงข้อกำหนดของรัฐสำหรับข้อความที่เลื่อนได้ให้ง่ายขึ้น เปลี่ยนชื่อ ScrollableState เป็น ScrollableController (Iab63c, b/149460415)
  • ตอนนี้พร็อพเพอร์ตี้ความหมายแบบค่าเดียวจะใช้รูปแบบการเรียก เช่น ตอนนี้ 'semantics { hidden = true }' จะเขียนเป็น semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • ตอนนี้ขนาดมุมที่ใช้โดย RoundedCornerShape และ CutCornerShape สามารถมีขนาดใหญ่กว่า 50% ได้แล้ว (Id2340, b/160400213)
  • เปลี่ยนพารามิเตอร์ ContentScale เริ่มต้นสำหรับ Image composable จาก Inside เป็น Fit การดำเนินการนี้มีขึ้นเพื่อ ให้ลักษณะการทำงานปรับขนาด Painter พื้นฐาน หากขนาดเลย์เอาต์ใหญ่กว่า ขนาดดั้งเดิมของ Painter ขณะที่ รักษาสัดส่วนภาพไว้ ลักษณะการทำงานนี้ตรงกับความคาดหวังในการระบุขนาดคงที่ให้กับรูปภาพได้ดียิ่งขึ้น โดยไม่ส่งผลต่อลักษณะการทำงานเริ่มต้น หากใช้เฉพาะขนาดโดยธรรมชาติในการ คำนวณขนาดของคอมโพสได้ (I40ae3, b/159838006)
  • ใช้ AnimationSpec แทน AnimationBuilder ใน API ระดับบนสุด เพื่ออธิบายแนวคิดของข้อกำหนดภาพเคลื่อนไหวแบบคงที่ - ปรับปรุง DSL การเปลี่ยนโดยการนำข้อกำหนด Lambda ออกสำหรับ การสร้าง AnimationSpec เช่น Tween, Spring แต่จะใช้พารามิเตอร์ของเครื่องมือสร้างโดยตรงแทน - ปรับปรุงความสะดวกในการใช้งาน AnimationSpec โดยรวมด้วยการเปิดตัว ตัวสร้างแทนการใช้ตัวสร้าง - เปลี่ยนระยะเวลาและการหน่วงเวลาสำหรับ KeyFrames และ Tween เป็น Int ซึ่งจะ ช่วยลดการแคสต์ประเภทที่ไม่จำเป็นและการโอเวอร์โหลดเมธอด (เพื่อ รองรับทั้ง Long และ Int) (Ica0b4)
  • นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)
  • เพิ่ม LazyRowItems - การเลื่อนแนวนอนที่คล้ายกับ LazyColumnItems (Ibbcf7)
  • เปิดตัว API ภาพเคลื่อนไหวแบบไม่มีสถานะระดับต่ำ API เหล่านี้ (I63bf7)
  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable 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 ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็นค่าลอยตัว (Ic0191)
  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะมอบประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าทศนิยม 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็นทศนิยม (I3ad98)
  • เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบนิ้วเพื่อซูม (Id5d63)
  • เลิกใช้งานคอมโพเนนต์ที่สลับได้แล้ว ใช้ Modifier.toggleable แทน (I35220, b/157642842)
  • เลิกใช้งาน MutuallyExclusiveSetItem แล้ว โปรดใช้ Modifier.selectable แทน (I02b47, b/157642842)
  • ตอนนี้เราเลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)
  • เพิ่มพารามิเตอร์ fontWeight ลงในข้อความ ซึ่งก่อนหน้านี้ไม่ได้เพิ่มโดยไม่ตั้งใจ (I56937)
  • แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (I19d02)
  • ตอนนี้ VerticalScroller มี Column ให้ใช้งานได้ทันที ตอนนี้ HorizontalScroller มี Row ให้ใช้งานได้ทันที (Ieca5d, b/157020670)
  • แทนที่การใช้งานคลาส Px ในคลาส Compose ต่างๆ ซึ่งเป็นส่วนหนึ่งของความพยายามในการปรับโครงสร้างขนาดใหญ่ เพื่อใช้เฉพาะ Dp และประเภทดั้งเดิมสำหรับพารามิเตอร์พิกเซล (Iede0b)
  • เพิ่ม Modifier.indication ลงในแพ็กเกจพื้นฐานแล้ว ใช้เพื่อแสดงการกด/ลาก/การบ่งชี้อื่นๆ ในองค์ประกอบที่โต้ตอบได้ที่กำหนดเอง (I8425f, b/155287131)
  • ตอนนี้ VerticalScroller และ HorizontalScroller รองรับการเลื่อนแบบย้อนกลับแล้วเมื่อตั้งค่า isReversed ใน ScrollerPosition (I953bd)
  • รองรับการเพิ่ม Composable ลงในเลย์เอาต์ข้อความ (I1373c)
  • การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และระบุ LayoutDirection ลบคลาสย่อย DrawScope ใน ContentDrawScope อัปเดต Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
  • นำ DrawBackground API ที่เลิกใช้งานแล้วออกเพื่อใช้ drawBackground extension API ใน Modifier แทน ปรับโครงสร้าง การใช้งานสี แปรง และ paint drawBackground เพื่อลดเส้นทางโค้ด รวมถึง นำข้อกำหนดในการสร้าง Modifier เป็นส่วนหนึ่งของการจัดองค์ประกอบออก (I0343a)
  • อัปเดต API Compose ระดับสูงขึ้น ที่แสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยให้ผู้บริโภคไม่ต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังคงต้องเข้าถึง Canvas สามารถใช้วิธี drawCanvas extension ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)
  • HorizontalScroller และ VerticalScroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
  • นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
  • เราได้นำเลย์เอาต์ตารางออกชั่วคราว จนกว่าเราจะพร้อมให้บริการอีกครั้งด้วย API ที่ปรับปรุงใหม่ (Id88a7)
  • สร้าง CanvasScope API ที่ครอบคลุมออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตส่วนที่เว้นไว้ที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

    เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)

  • เราได้นำ ColoredRect ออกแล้ว ใช้ User Box กับตัวแก้ไข drawBackground แทน (I983c7, b/152753731)

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

  • ตอนนี้คุณสามารถซ่อน/แสดงแป้นพิมพ์เสมือนได้โดยใช้ SoftwareKeyboardController ซึ่งส่งผ่านโดยการเรียกกลับ onTextInputStarted (I8dc44, b/151860051)

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

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

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

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

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

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

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

  • การอัปเดต API ของ TextField - ผสานรวมฟังก์ชันเรียกกลับ onFocus และ onBlur เป็นฟังก์ชันเรียกกลับ onFocusChange(Boolean) เดียวที่มีพารามิเตอร์ (I66cd3)

  • เปลี่ยนชื่อ ScaleFit เป็น ContentScale ย้าย ContentScale จาก ui-graphics ไปยัง ui-core module เพื่อให้อยู่ในโมดูลเดียวกับ Alignment API เปลี่ยนชื่อ FillMaxDimension เป็น Crop เปลี่ยนชื่อ FillMinDimension เป็น Fit เปลี่ยนชื่อ Fit to Inside เพื่อให้ตรงกับ ImageView.ScaleType เทียบเท่ามากขึ้น เพิ่มเอกสารที่ระบุว่าการรวม Crop และ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_CROP และ Fit ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.FIT_CENTER Inside ที่ใช้กับ Alignment.Center จะให้ผลลัพธ์เหมือนกับ ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

  • นำ ProvideContentColor ออก แล้วใช้ ContentColorAmbient โดยตรงกับ Providers (Iee942) แทน

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

  • ปรับปรุง DrawModifier API:

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

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

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

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

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

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

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

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

    เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Composable ของ Vector ที่ทำงานเหมือน Composable ของรูปภาพ ยกเว้นใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)

  • Created Image composable to handle sizing/layout in addition to drawing a given ImageAsset to the screen. Composable นี้ยังรองรับการวาดอินสแตนซ์ Painter ใดก็ได้โดยคำนึงถึงขนาดโดยธรรมชาติ รวมถึงรองรับขนาดคงที่หรือขนาดขั้นต่ำที่กำหนด (Ibcc8f)

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

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

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

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

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

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

  • นำ Composable DrawShape ออกแล้ว ใช้ตัวแก้ไข DrawBackground แทน (I7ceb2)

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

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

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

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

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

  • เปลี่ยนชื่อตัวปรับแต่ง Border เป็น DrawBorder (I8ffcc)

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

  • ตอนนี้ Scroller จะแสดงลักษณะการทำงานของการปัดแบบเนทีฟของ Android (I922af, b/147493715)

  • แทนที่ DrawBorder ด้วยตัวแก้ไขเส้นขอบ (Id335a)

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

  • พารามิเตอร์เปอร์เซ็นต์เมื่อสร้างแนวทาง ConstraintLayout ได้รับการเปลี่ยนชื่อเป็นเศษส่วนแล้ว (Ida2db)

  • เพิ่มการรองรับระยะขอบของ Barrier ใน ConstraintLayout (I47ffe)

  • แก้ไขการรองรับ RTL ใน ConstraintLayout เพิ่ม API ที่ไม่รองรับ RTL (I3b1c7)

  • เพิ่ม DSL ใหม่สำหรับ ConstraintLayout แล้ว โปรดดูรายละเอียดเพิ่มเติมในตัวอย่าง (Icaa9a)

  • เพิ่มคำอธิบายประกอบ @ExperimentalLayout ตอนนี้เราได้ติดแท็ก ConstraintLayout, FlowRow และ FlowColumn เพื่อระบุว่า API ขององค์ประกอบเหล่านี้จะมีการเปลี่ยนแปลง (I412a8)

  • เพิ่ม Modifier.padding(InnerPadding) แล้ว (I94985, b/157133803)

  • นำ RowAlign และ ColumnAlign ที่เลิกใช้งานแล้วใน Row และ Column ออก (If60d4, b/155858731)

  • นำ LayoutTag() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.tag() แทน นำ Modifier.matchParent() ที่เลิกใช้งานแล้วออก โปรดใช้ Modifier.matchParentSize() แทน (If8044)

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

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

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

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

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

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

  • เพิ่มตัวแก้ไขระยะห่างจากขอบแบบสมมาตร (I39840)

  • นำตัวแก้ไข LayoutAspectRatio ที่เลิกใช้งานแล้วออก (I65a74)

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

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

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

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

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

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

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

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

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

  • นำ Composable ของ Wrap และ Center ที่เลิกใช้งานแล้วออก (I29e23)

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

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

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

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

  • การรองรับ RTL ในเลย์เอาต์ Compose ในช่วงแรก (Ia5519)

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

  • นำ Composable ของ AspectRatio ออกเพื่อใช้ Modifier แทน ลบ FlexColumn, FlexRow ที่เลิกใช้งานแล้ว และตัวแก้ไข Spacing (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 ใช้ Ripple เป็นข้อบ่งชี้เริ่มต้น (หากคุณตั้งค่า MaterialTheme {} ในแอปพลิเคชัน) ดังนั้นในกรณีส่วนใหญ่ คุณเพียงแค่ใช้ Clickable และรับข้อบ่งชี้ Ripple ได้ฟรี หากต้องการปรับแต่งพารามิเตอร์สี / ขนาด / ขอบเขตสำหรับ Ripple คุณสามารถสร้าง RippleIndication ด้วยตนเองและส่งไปยัง Clickable เป็นพารามิเตอร์การระบุ (I663b2, b/155375067)
  • นำ API สำหรับการทดสอบขนาดที่ล้าสมัยออกแล้ว (Iba0a0)
  • ทำให้ LayoutNode เป็น API เวอร์ชันทดลอง (I4f2e9)
  • เราได้ใช้การล็อกการวางแนวการเลื่อนเวอร์ชัน 1 ใน Compose (I1ce7a, b/150289741)
  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบท (Ia3665, b/156527485)
  • นำพารามิเตอร์ทิศทางการจัดวางออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายใน Callback ผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
  • เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงองค์ประกอบย่อยภายในแถวโดยไม่ต้องมีการมิเรอร์อัตโนมัติใน RTL (I3a1df)
  • เราเลิกใช้งาน @Untracked annotation แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่สำคัญ หากมี (I5205a, b/158123804)
  • เพิ่ม viewModel() ที่ประกอบกันได้ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)
  • ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างรูปทรงเสริมออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • เปลี่ยนชื่อโมดูล ui-text-compose เป็น ui-text แล้ว ตอนนี้ ui-text มี Composable ของ CoreText และ CoreTextField (Ib7d47)

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

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

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

  • [Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. ผู้โทรต้องเพิ่ม imports เพื่อใช้ by state { ... } หรือ by mutableStateOf(...) ต่อไป (I5312c)

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

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

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

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

  • DrawVector ได้รับการเปลี่ยนแปลงจากฟังก์ชันที่ประกอบกันได้ตามปกติ เป็นการแสดงผลตัวปรับแต่ง 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)

  • เลิกใช้งาน Composable 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 ฯลฯ
    • เพิ่มชุด API @Composable แบบ Lightweight ใหม่สำหรับการเปลี่ยนค่าแบบเคลื่อนไหว
    • (I79530)
  • การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบของ Ambient API ดูรายละเอียดได้ในบันทึกและAmbient<T>เอกสารประกอบ (I4c7ee, b/143769776)

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

  • แก้ไขข้อบกพร่องของ ConstraintLayout ที่ทำให้เกิดข้อขัดข้องในการจัดองค์ประกอบใหม่ (Ibee5a, b/158164341)

  • มีการเปลี่ยนแปลง API ของ Lambda ต่อท้าย 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)

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

  • เพิ่ม OnPositionedModifier และ OnChildPositionedModifier เพื่อแทนที่ฟังก์ชันที่ใช้ได้ของ OnPositioned และ OnChildPositioned (I2ec8f)

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

  • WithConstraints มีพารามิเตอร์ LayoutDirection (I6d6f7)

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

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

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

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

  • การปรับปรุงแพลตฟอร์ม API ของข้อจํากัด (I0fd15)

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

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

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

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

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

  • เพิ่ม HapticFeedback ลงในการเลือก TextField (I58050)

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

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

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

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

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

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

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

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