Compose Foundation

เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพื้นฐานที่พร้อมใช้งาน และขยายพื้นฐานเพื่อสร้างชิ้นส่วนระบบการออกแบบของคุณเอง
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
17 มิถุนายน 2026 1.11.3 - 1.12.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.11.3"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.12

เวอร์ชัน 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)
  • เพิ่ม Flag isClearNestedScrollCoroutineScopeFixEnabled เพื่อควบคุมการแก้ไข (Ibd394, b/505343254)

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

  • เปิดใช้การเลื่อนอัตโนมัติเมื่อลากข้อความที่เลือกเกินกว่า Viewport ใน 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.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)
  • ตอนนี้ DSL ของ FlexBox ใช้ฟังก์ชัน (เช่น 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 สำหรับคีย์และโรตารีที่เกี่ยวข้อง ระบบได้นำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว (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รายการถัดไปได้ในเฟรม 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.createFrom(value) แทนการเรียกใช้ FillableData(value) (I2e200, b/441719650)
  • เปิดตัวBeyondBoundsLayoutModifierNodeโหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658)
  • ทำเครื่องหมาย ScrollState.value เป็นพร็อพเพอร์ตี้ @FrequentlyChangingValue (I4723d)
  • เปิดตัว LazyLayoutKeyIndexMap และ Factory สำหรับการใช้งานเริ่มต้น (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 Viewport นั่นคือเราจะพยายามเติมรายการที่ดึงข้อมูลล่วงหน้าใน Viewport ทั้งหมด 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 และ Flag เพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่า 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 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขข้อบกพร่องที่ทำให้เกิดการถดถอยซึ่งทำให้ลักษณะการทำงานของส่วนหัวแบบติดหนึบในกริดแบบเลซีหยุดทำงานเมื่อมีการระบุเนื้อหาส่วนหัวที่ว่างเปล่า (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 ตอนนี้มีค่าเริ่มต้นเป็น false 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 เพื่อให้แน่ใจว่าระบบจะจดจำไว้ภายในคอมโพสิต ลองใช้ rememberTextFieldState แทน (I53d74)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ FocusRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ BringIntoViewRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (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)
  • เพิ่มฟังก์ชันโรงงาน 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 ที่เลิกใช้งานแล้วออก โปรดใช้ TextAutoSize API ที่มีฟังก์ชันเดียวกัน (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 และยังไม่เสถียร รวมถึงการใช้งานถือว่าไม่พึงประสงค์ ในอนาคต เราอาจมีคอมโพเนนต์ที่แก้กรณีการใช้งานที่คอมโพเนนต์นี้มีไว้แก้
    • FlowRow และ FlowColumn มีการโอเวอร์โหลดแบบทดลองที่เปิดตัวในเวอร์ชัน 1.7 ซึ่งมีพารามิเตอร์ overflow เราเลิกใช้งานพารามิเตอร์นี้แล้ว และคุณสามารถใช้การโอเวอร์โหลดที่ไม่มีพารามิเตอร์นี้แทนได้ ลักษณะการทำงาน "ล้น" เริ่มต้นสำหรับการโอเวอร์โหลดเหล่านี้จะเป็น "ตัด" เช่นเดียวกับตั้งแต่เปิดตัว
    • กรณีการใช้งานจำนวนมากสำหรับ 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 โดยค่าเริ่มต้น TapGestureDetector ตอนนี้ API จะใช้ลักษณะการทำงานในการส่งใหม่ (การส่งทันที) โดยค่าเริ่มต้น (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 ซึ่งเป็นวิธีใหม่ในการใช้ฟังก์ชันนำไปแสดง รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (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, draggables และ scrollables ตอนนี้หากองค์ประกอบที่ลากได้ของบุตรหลานยกเลิกท่าทางสัมผัส ผู้ปกครองจะมีโอกาสรับองค์ประกอบดังกล่าว ซึ่งจะช่วยให้การจัดการท่าทางสัมผัสต่อเนื่องและผสานรวมมากขึ้น (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 ที่ซ้อนกัน การติดตั้งใช้งานเริ่มต้นจะดึงข้อมูลล่วงหน้าสำหรับรายการที่ซ้อนกัน 2 รายการแรกของแต่ละตารางกริด แต่สามารถกำหนดค่าได้โดยใช้ API LazyGridPrefetchStrategy(nestedPrefetchItemCount) และ LazyListPrefetchStrategy#onNestedPrefetch ใหม่LazyListPrefetchStrategy (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 ที่ใช้ร่วมกันได้แทน (I31b93)
  • แทนที่ onDragStarted และ onDragStopped ด้วยการเรียกกลับที่ไม่ระงับ (I59de8)

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

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

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.7.0-alpha08 เวอร์ชัน 1.7.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.7.0-alpha07 เวอร์ชัน 1.7.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มออบเจ็กต์ TextDefaults ที่มีเมธอดในการสร้าง LinkAnnotation และแยกวิเคราะห์สตริงที่ติดแท็ก HTML ซึ่งใช้ MaterialTheme กับลิงก์ (I98532, b/139312671)
  • เพิ่มการรองรับภาพเคลื่อนไหวการปรากฏและหายไปของไอเทมในLazyVerticalGridและLazyHorizontalGrid ก่อนหน้านี้ คุณสามารถเพิ่มตัวแก้ไข Modifier.animateItemPlacement() เพื่อรองรับภาพเคลื่อนไหวของตำแหน่ง (การเรียงลำดับใหม่) เราได้เลิกใช้งานตัวแก้ไขนี้และเปิดตัวตัวแก้ไขใหม่ที่ไม่ใช่เวอร์ชันทดลองที่ชื่อ Modifier.animateItem() ซึ่งช่วยให้คุณรองรับภาพเคลื่อนไหวทั้ง 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 นี้ไปยัง Composable Text (I34d4b, b/323346994)
  • UrlAnnotation เลิกใช้งานแล้ว โปรดใช้ LinkAnnotation.Url แทน หากใช้การจัดธีม Material ให้ใช้ออบเจ็กต์ TextDefaults เพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)
  • เปลี่ยนชื่อเป็น AnnotatedString.Companion.fromHtml (I43dcd)String.parseAsHtml
  • เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (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 ที่เหลือส่วนใหญ่ซึ่งยังอยู่ในระยะทดลองที่เปิดตัวพร้อมกับ BasicTextField เวอร์ชันใหม่ให้เสถียร (I714e2)
  • เพิ่มพารามิเตอร์ textObfuscationCharacter ลงใน BasicSecureTextField ซึ่งควบคุมอักขระที่จะใช้ขณะที่ทำให้เนื้อหาอ่านไม่ออก (I0588b)
  • NestedScroll แหล่งที่มา Drag และ 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)
  • AnchoredDraggableState ของ targetValue จะไม่พิจารณาเกณฑ์ตำแหน่งอีกต่อไป ตอนนี้มีเกณฑ์โดยนัยที่ 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 เราจะนำ Flag นี้ออกก่อนเวอร์ชันเบต้า 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) และ 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)
  • ตอนนี้ AnchoredDraggable ของ currentValue จะอัปเดตเมื่อผ่านจุดยึด ใช้ 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.NodeLayoutCoordinates ปัจจุบันโดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657)
  • เปิดตัว DelegatableNode.currentLayoutCoordinates เพื่อเป็นวิธีรับModifier.NodeLayoutCoordinates ปัจจุบันโดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa)
  • การเพิ่มประสิทธิภาพใน DraggableAnchors ที่ใช้โดย AnchoredDraggable (I89cff)
  • BasicTextField2 และ API ที่เกี่ยวข้องในแพ็กเกจ androidx.compose.foundation.text2 จะย้ายไปที่ androidx.compose.foundation.text (I9f635)
  • BasicTextField2 ไม่รับพารามิเตอร์ CodepointTransformation อีกต่อไป ใช้ BasicSecureTextField หรือ OutputTransformation (Id34ff)
  • เพิ่มวิธีเปรียบเทียบเฉพาะคำอธิบายประกอบของ AnnotatedStrings 2 รายการ (I32659)
  • ขอแนะนำ ContextualFlowRow และ FlowRow/Column ที่ได้รับการปรับปรุงด้วย MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้มี maxLines และการรองรับการล้นแล้ว พร้อมกับการเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดย ContextualFlow* เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วน FlowRow และ FlowColumn เหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่เดิมใน FlowRow หรือ FlowColumn ที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นๆ จะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ที่ ContextualFlowRowSample และ FlowRowSample (Ib9135, b/293577082)

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

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

เวอร์ชัน 1.7.0-alpha02

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

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.7.0-alpha02 เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้

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

  • HorizontalPager, VerticalPager และ PagerState ได้รับการเลื่อนชั้นเป็นเวอร์ชันเสถียร (I67660, b/316966909)
  • เพิ่ม LocalTextLinkStyle CompositionLocal ที่ช่วยให้เปลี่ยนรูปแบบของลิงก์ในข้อความทั่วทั้งแอปได้ หากใช้ธีมของคุณเองในแอป คุณควรตั้งค่า CompositionLocal นี้ตามการกำหนดธีม เมื่อใช้ธีม Material สีของลิงก์จะตั้งค่าเป็นสีหลักของ Material โดยค่าเริ่มต้น (I7eb10)
  • เปิดตัวตัวปรับแต่ง receiveContent ที่ช่วยให้นักพัฒนาแอปมีวิธีรับข้อมูลอย่างละเอียดใน Jetpack Compose
  • receiveContent ทำงานร่วมกับ BasicTextField2 เพื่อรับข้อมูลอย่างละเอียดที่แป้นพิมพ์เสมือนให้มา หรือผ่านการวางจากคลิปบอร์ด (I81b72)
  • ในการเปลี่ยนแปลงนี้ เราจะแทนที่ SnapFlingBehavior ด้วย TargetedFlingBehavior ในเพจเจอร์เพื่อปลดล็อก 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 มีประสิทธิภาพมากขึ้นเมื่อเทียบกับ API rememberUpdatedInstance ก่อนหน้า (ซึ่งตอนนี้เลิกใช้งานแล้ว) ดูข้อมูลการย้ายข้อมูลได้ที่ developer.android.com
  • clickable / combinedClickable / selectable / toggleable ตอนนี้ยอมรับพารามิเตอร์ MutableInteractionSource ที่กำหนดให้เป็น Null ได้แล้ว หากเป็นค่าว่างและ Indication ที่ระบุเป็น IndicationNodeFactory ระบบจะสร้าง Indication แบบเลื่อนเวลาได้เมื่อจำเป็นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพ หากไม่ได้โฮสต์และใช้ MutableInteractionSource ขอแนะนำให้ส่งค่าเป็น null

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

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

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

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

เวอร์ชัน 1.6

เวอร์ชัน 1.6.8

12 มิถุนายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.8 เวอร์ชัน 1.6.8 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.6.7

1 พฤษภาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.7 เวอร์ชัน 1.6.7 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.6.6

17 เมษายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.6 เวอร์ชัน 1.6.6 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขข้อบกพร่องที่ทำให้การสลับแอตทริบิวต์ enabled หรือ readOnly ของ TextField ทำให้เกิดข้อขัดข้องในบางกรณี (Iae17b)

เวอร์ชัน 1.6.5

3 เมษายน 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.5 เวอร์ชัน 1.6.5 มีการเปลี่ยนแปลงเหล่านี้

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

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

เวอร์ชัน 1.6.4

20 มีนาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.4 เวอร์ชัน 1.6.4 มีการเปลี่ยนแปลงเหล่านี้

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

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

เวอร์ชัน 1.6.3

6 มีนาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.3 เวอร์ชัน 1.6.3 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.6.2

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

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.2 เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้

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

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

เวอร์ชัน 1.6.1

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

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.1 เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้

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

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

เวอร์ชัน 1.6.0

24 มกราคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.6.0 เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้

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

  • ตัวปรับแต่งใหม่ Modifier.anchoredDraggable ที่ช่วยให้ลากและเคลื่อนไหวระหว่างชุดจุดยึดที่กำหนดไว้ล่วงหน้าได้ โดยตัวแก้ไขนี้มีไว้เพื่อแทนที่ Modifier.swipeable ดูวิธีใช้งานและวิธีย้ายข้อมูลจาก Modifier.swipeable ได้ในคู่มือการย้ายข้อมูล
  • เพิ่มฟังก์ชันการลากและวางระหว่างแอปและคอมโพเนนต์ ดูDragAndDropTarget, Modifier.dragAndDropSource และ API อื่นๆ เพื่อเริ่มต้นใช้งาน
  • Modifier.draggable2D คือตัวแก้ไขใหม่ที่ช่วยให้รองรับการลากใน 2 มิติได้อย่างง่ายดาย ดูตัวอย่าง
  • เราได้เพิ่ม AndroidExternalSurface และ AndroidEmbeddedExternalSurface เพื่อให้เพิ่มคอมโพเนนต์ที่ขับเคลื่อนด้วยพื้นผิวใน 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 นี้จะแสดงผล viable DragAndDropTarget หากสนใจเซสชันการลากและวาง ระบบได้แทนที่ Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากด้วย Lambda นี้

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

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

  • ตอนนี้ Foundation Tooltip API อยู่ในสถานะ@ExperimentalFoundationApi (I30b0b) แล้ว

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

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

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

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

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

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

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

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

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

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

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

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

  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขข้อบกพร่องที่ทำให้เลย์เอาต์ BasicText ไม่หดเมื่อ minWidth เปลี่ยนแปลงและ minWidth น้อยกว่าข้อจำกัดการวัดเริ่มต้น maxWidth (Idb19c)
  • เพิ่มการรองรับโปรแกรมแสดงผลสำหรับ Sweep Gradient ใน 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 นี้เป็น 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() เพื่อทำเครื่องหมายเป็น Composable เนื่องจากต้องการหลีกเลี่ยงหน้าต่างลอยใน 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 แล้ว ซึ่งจะช่วยลดค่าใช้จ่ายในการคอมโพสครั้งแรก
  • การปรับปรุงความเสถียรของเพจเจอร์ เราได้แก้ไขข้อบกพร่องหลายอย่างแล้ว
  • ตอนนี้พารามิเตอร์ pageCount อยู่ใน PagerState แทนที่จะอยู่ใน Pager เอง

เวอร์ชัน 1.5.0-rc01

26 กรกฎาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.5.0-rc01 เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้

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

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

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

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.5.0-beta03 เวอร์ชัน 1.5.0-beta03 มีคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.5.0-beta02 เวอร์ชัน 1.5.0-beta02 มีคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

ระบบจะถอนการอ้างสิทธิ์androidx.compose.foundation:foundation-*:1.5.0-beta01 เวอร์ชัน 1.5.0-beta01 มีคอมมิตเหล่านี้

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

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

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

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

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

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

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

  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • เปิดตัว SnapLayoutInfoProvider ที่ใช้กับ LazyGridState ได้ (I92134, b/269237141, b/260914964)
  • เพิ่มModifier.animateItemPlacement()เวอร์ชันทดลองสำหรับขอบเขตรายการของตารางกริดแบบสลับที่โหลดแบบ Lazy Loading คุณสามารถใช้กับรายการต่างๆ เพื่อให้ได้ภาพเคลื่อนไหวการเปลี่ยนตำแหน่ง/การเรียงลำดับใหม่โดยอัตโนมัติ (I4b62d, b/257034719)
  • เลื่อนเวอร์ชัน GridCells.FixedSize เป็นเวอร์ชันเสถียร FixedSize จะกำหนด LazyGrid ที่แต่ละเซลล์มีขนาดที่แน่นอนบนแกนไขว้ โดยพื้นที่ที่เหลือจะกระจายตามการจัดเรียงแกนไขว้ (I8542f)
  • เปิดตัวขอบเขตตัวรับ PagerScope สำหรับ Pager และฟังก์ชันยูทิลิตีสำหรับการคำนวณออฟเซ็ตของหน้าที่กำหนด (If2577)
  • ใช้ snapPositionalThreshold เมื่อสร้างลักษณะการทำงานของการปัด ใช้พารามิเตอร์นี้เพื่อระบุเกณฑ์ตำแหน่งสำหรับการสแนปวิดีโอสั้นใน Pager (If8f7f)
  • แทนที่ SnapLayoutInfoProvider.calculateSnappingOffsetBounds ด้วย calculateSnappingOffset แล้ว ในวิธีใหม่นี้ เราเพียงขอออฟเซ็ตถัดไปเพื่อสแนป การคำนวณขอบเขตควรดำเนินการที่ระดับการติดตั้งใช้งาน เนื่องจากอาจแตกต่างกันไปตามวิธีที่ต้องใช้ในการสแนป (I923a4)
  • LazyStaggeredGrid API ได้รับการเลื่อนขั้นเป็นเวอร์ชันเสถียรแล้ว (I633a5)
  • นำ pageCount ออกจาก Horizontal/VerticalPager โดยควรระบุเมื่อสร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount (Ieb52d, b/266965072)
  • นำ pageCount ออกจาก Horizontal/VerticalPager โดยควรระบุเมื่อสร้างสถานะ อัปเดตPagerStateและrememberPagerStateเพื่อยอมรับpageCount (Ifa3cb, b/266965072)
  • แนะนำ shortSnapVelocityThreshold ในเพจเจอร์ของ SnapFlingBehavior (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 ที่รวมกัน ดูตัวอย่างที่อัปเดตแล้วในเอกสารประกอบเพื่อดูตัวอย่างวิธีใช้เอฟเฟกต์การเลื่อนเกินด้วยรูปร่าง API ใหม่ (I8a9c4, b/255554340)
  • ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อนอยู่เพิ่มเติม (I24f91)
  • LineBreak และ Hyphens API ใน 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 โดยตรงเท่านั้น และมีตรรกะภายนอกการเรียกกลับที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปอยู่ภายในฟังก์ชันเรียกกลับ ดูการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน 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() และ Lazy Grid แล้ว ปัญหานี้เกิดขึ้นในบางกรณีเมื่อจำนวนสินค้าใหม่น้อยกว่าจำนวนสินค้าก่อนหน้า (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 และ Modifier ที่ทำงานใน 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.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)
  • อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ 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 ปัญหาการตัดข้อความอันเป็นผลมาจาก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 ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้แบบนามธรรม (เช่น เมธอดอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรร่วมที่เป็น แลมบ์ดาที่ประกอบกันได้ (ระบบจะอนุมานตัวแปรและพารามิเตอร์ภายใน) หรือเมื่อใช้ ComposeNode หรือฟังก์ชันที่ประกอบกันได้ที่เกี่ยวข้อง

    สำหรับตัวใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้ ComposeNode หรือ ReusableComposeNode ต้องเพิ่ม คำอธิบายประกอบ CompoableTarget สำหรับฟังก์ชันและประเภทพารามิเตอร์แลมบ์ดาที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำ ให้สร้างคำอธิบายประกอบที่มีคำอธิบายประกอบเป็น 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)
  • เดสก์ท็อปใช้การคอมโพสิชันในเครื่องสำหรับ 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

  • ล้างค่า Null ใน 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 ตัวเพื่อระบุว่าควรติดป้ายกำกับเมธอดนี้เป็น "มาแรง" "สตาร์ทอัป" หรือ "หลังสตาร์ทอัป" หรือไม่

  • <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 ที่มีรายการ Card ตอนนี้เงาจะไม่ถูกตัดออก (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)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardControllerAPI การเขียนในเครื่อง ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)

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

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

เวอร์ชัน 1.0.0-beta01

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

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

นี่คือรุ่นแรกของ Compose 1.0.0 Beta

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

  • เพิ่มการเรียกกลับ onStart ไปยัง detectDragGestures แล้ว (I67269, b/179995594)
  • ตัวปรับแต่งสำหรับการปรับขนาดให้ตรงกับขนาด 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 ออก ในกรณีที่ไม่ได้ระบุ Factory เริ่มต้น ก่อนหน้านี้ จะให้การอ้างอิงเป็น Null สำหรับประเภทที่กำหนดให้ต้องมีค่า

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

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

  • เราได้ย้ายการปฐมนิเทศไปไว้ในแพ็กเกจพื้นฐานแล้ว VelocityTracker ย้ายจาก 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 ใหม่ ตอนนี้ใช้ Scrollable interface แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)

  • ตอนนี้ Modifier.draggable ยอมรับ DraggableState แทนที่จะเป็น Lambda แบบง่ายๆ แล้ว คุณสามารถสร้างสถานะผ่าน rememberDraggableState { delta -> } เพื่อให้ได้ลักษณะการทำงานแบบเดิม (Ica70f, b/175294473)

  • เพิ่มตัวแก้ไข requiredWidth(IntrinsicSize) และ requiredHeight(IntrinsicSize) สำหรับการกำหนดขนาดที่จำเป็นเป็นขนาดโดยเนื้อแท้ (I0a6b4)

  • นำ emptyContent() ที่เลิกใช้งานแล้วออก โปรดใช้ {} แทน (Idb33f, b/179432510)

  • ลบ API บางรายการที่เลิกใช้งานไปก่อนหน้านี้ (Ice5da, b/178633932)

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

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

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • เปลี่ยน 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 ไม่รองรับการคลิก 2 ครั้งและการคลิกแบบยาวแล้ว ใช้ 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 เดิมแอมเบียนต์ชื่อ AmbientFoo ตอนนี้ CompositionLocals ชื่อ LocalFoo (I2d55d)

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

  • เช่นเดียวกับที่เราเคยนำ state { 0 } composable ออกและตอนนี้ส่งเสริมการใช้งานอย่าง remember { mutableStateOf(0) } เราจะนำ savedInstanceState { 0 } composable ออก คุณควรใช้ 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)

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

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

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

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

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

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

    • โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
  • ตอนนี้ FocusRequester.createRefs มีเครื่องหมายระบุว่าเป็นฟีเจอร์ทดลองเนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo AccessibilityScrollState เปลี่ยนชื่อเป็น ScrollAxisRange horizontalAccessibilityScrollState เปลี่ยนชื่อเป็น horizontalScrollAxisRange verticalAccessibilityScrollState เปลี่ยนชื่อเป็น verticalScrollAxisRange (Id3148)

  • เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)

  • ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)

  • นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีฟิลด์ทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)

  • เปลี่ยนชื่อ TextInputService.onStateUpdated เป็น updateState (Id4853)

  • นำ displaySize ออกเนื่องจากควรหลีกเลี่ยง โดยปกติแล้ว ควรใช้ขนาดของ onRoot() หรือขนาดหน้าต่างเป็นอย่างน้อย (I62db4)

เวอร์ชัน 1.0.0-alpha10

13 มกราคม 2021

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

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

  • ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)
  • การเปลี่ยนแปลง VisualTransformation API
    • เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
    • เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
    • PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
    • ย้าย 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)
  • ตอนนี้คุณเข้าถึง 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 การป้อนข้อมูลด้วย Pointer ที่ระงับการทำงาน ให้เปลี่ยนชื่อ 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 เพื่อใช้แทน API เครื่องมือ UI ในการดึงข้อมูลองค์ประกอบ 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)

  • เพิ่ม API painterResource เพื่อจัดการการโหลดออบเจ็กต์ 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)

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

  • ย้าย DrawModifier APIs จากแพ็กเกจ 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)
  • เลิกใช้งานแอมเบียนต์ที่เลิกใช้งานแล้วซึ่งมี 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)
  • มีการเปลี่ยนชื่ออาร์กิวเมนต์เชิงความหมาย mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
  • นำโมดูล ui-test เก่าและ Stub ออก (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 แทนเพื่อระบุให้ดียิ่งขึ้นว่า API ที่ใช้ได้ภายในจะใช้ "remember" เพื่อคงข้อมูลไว้ในคอมโพสิตต่างๆ (Ifda43)
  • เปิดใช้การเปลี่ยนฉากใน ComposeTestRule นำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดง วิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารเพื่อระบุ ว่ารัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (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 เมื่อ overflow เป็น 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)
  • เราได้นำ 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 ด้วยเมธอดการเปลี่ยนรูปแบบที่กำหนดขอบเขตเพื่อระบุว่าระบบจะใช้การเปลี่ยนรูปแบบภายในโค้ดเรียกกลับเท่านั้น และจะนำออกหลังจากเรียกใช้โค้ดเรียกกลับแล้ว
    • อัปเดตเอกสารประกอบ 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)
  • ออฟเซ็ตกลายเป็นคลาสอินไลน์ (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 { ... } Composable แล้วเพื่อเปลี่ยนไปใช้ การเรียก 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 เมื่อรายการควรเติมวิวพอร์ตและ 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. เปลี่ยนชื่อ enum StrokeJoin ให้เป็น Pascal Case
    9. เปลี่ยนชื่อการแจงนับ PointMode ให้เป็น Pascal Case
    10. เปลี่ยนชื่อ Enum ของ PaintingStyle ให้เป็น Pascal Case
    11. เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
    12. เปลี่ยนชื่อ Enum ของ StrokeCap ให้เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อเลิกใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint
    15. อัปเดต Image ที่ใช้ร่วมกันได้เพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
    16. อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ คำสั่งเส้นทางแต่ละรายการ
    18. อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการการตรวจสอบเหล่านี้อยู่แล้ว
    19. เลิกใช้งานเมธอดตัวสร้างคู่ของ Rect เพื่อ ใช้ตัวสร้างฟังก์ชัน
    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 removed; use androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • เพื่อรวมจำนวนคลาสที่ใช้แสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะช่วยให้ได้รับประโยชน์ จากคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)
  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long เพื่อแพ็กค่า Float 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็น Float (I3ad98)
  • เพิ่ม Modifier.zoomable สำหรับฟังก์ชันการบีบเพื่อซูม (Id5d63)
  • เลิกใช้งานคอมโพเนนต์ที่สลับได้แล้ว ใช้ Modifier.toggleable แทน (I35220, b/157642842)
  • เลิกใช้งาน MutuallyExclusiveSetItem แล้ว โปรดใช้ Modifier.selectable แทน (I02b47, b/157642842)
  • ตอนนี้เราเลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)
  • เพิ่มพารามิเตอร์ fontWeight ลงในข้อความ ซึ่งก่อนหน้านี้ไม่ได้เพิ่มโดยไม่ได้ตั้งใจ (I56937)
  • แทนที่การใช้คลาส Px ในคลาส 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 Deleted DrawScope subclass ใน ContentDrawScope Painter และ PainterModifier ได้รับการอัปเดต เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)
  • นำ DrawBackground API ที่เลิกใช้งานแล้วออกเพื่อใช้ drawBackground extension API ใน Modifier แทน ปรับโครงสร้าง การใช้งานสี แปรง และ paint drawBackground เพื่อลดเส้นทางโค้ด รวมถึงนำข้อกำหนดในการสร้าง Modifier เป็นส่วนหนึ่งของการจัดองค์ประกอบออก (I0343a)
  • อัปเดต API Compose ระดับสูงขึ้น ซึ่งแสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยลดความจำเป็นที่ผู้บริโภคต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังคงต้องเข้าถึง Canvas สามารถใช้วิธีการส่วนขยาย drawCanvas ซึ่งมีแฮนเดิลการเรียกกลับเพื่อออก คำสั่งวาดภาพด้วย Canvas พื้นฐาน (I80afd)
  • HorizontalScroller และ VerticalScroller ไม่คืนค่าตำแหน่งการเลื่อนโดยใช้สถานะอินสแตนซ์ที่บันทึกไว้ (Ia0fae, b/155075048)
  • นำ FocusManagerAmbient ออกแล้ว ใช้ FocusModifier.requestFocus เพื่อรับโฟกัส (Ic4826)
  • เราได้นำเลย์เอาต์ตารางออกชั่วคราวและจะนำกลับมาให้บริการอีกครั้งพร้อมกับ API ที่ปรับปรุงใหม่ (Id88a7)
  • สร้าง CanvasScope API ที่ครอบคลุมออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณของตัวเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตส่วนที่เว้นไว้ที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลออบเจ็กต์สถานะ Paint ของตนเองเพื่อกำหนดค่าการดำเนินการวาด

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

  • นำ ColoredRect ออกแล้ว ใช้ 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)

  • การอัปเดต TextField API - ผสานรวมฟังก์ชันเรียกกลับ 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 ตอนนี้คุณสามารถระบุรูปร่างขนาดเล็ก กลาง และใหญ่เพื่อให้คอมโพเนนต์ส่วนใหญ่ใช้ได้ (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 เพื่อแทนที่ API องค์ประกอบย่อยที่มีอยู่สำหรับ กราฟิกแบบเวกเตอร์ ผลลัพธ์ขององค์ประกอบย่อย คือออบเจ็กต์ VectorPainter แทนที่จะเป็น DrawModifier เลิกใช้งาน DrawVector Composables ก่อนหน้าเพื่อใช้ VectorPainter

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

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

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

  • เปลี่ยนชื่อ Image เป็น ImageAsset เพื่อให้เห็นความแตกต่างระหว่างข้อมูล Image กับ Composable ของ 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)

  • นำ 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 ด้วย Border Modifier (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 ออกเพื่อใช้ตัวปรับแต่งแทน ลบ FlexColumn, FlexRow ที่ล้าสมัย และตัวแก้ไขระยะห่าง (Iec8a7)

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

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

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

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

  • FocusModifier เลิกใช้งานแล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อใช้ FocusState2 แทน (I46919, b/160822875, b/160922136)
  • เปลี่ยนชื่อเป็น runOnIdle (I83607)runOnIdleCompose
  • เราได้เปลี่ยนชื่อ 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() อย่างไรก็ตาม คุณสามารถดูทิศทางการจัดวางได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)
  • เพิ่ม AbsoluteArrangement - อนุญาตให้จัดเรียงองค์ประกอบย่อยภายในแถวโดยไม่ต้องมีการมิเรอร์อัตโนมัติใน RTL (I3a1df)
  • เราเลิกใช้งาน @Untracked annotation แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่สำคัญ หากมี (I5205a, b/158123804)
  • เพิ่ม viewModel() composable ซึ่งช่วยให้สร้างหรือรับ 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 ไปยังส่วนขยาย เพื่อรองรับการเพิ่มประสิทธิภาพการมอบสิทธิ์พร็อพเพอร์ตี้ Kotlin 1.4 ผู้โทรต้องเพิ่ม 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 จากฟังก์ชันที่ประกอบกันได้ตามปกติเป็นการแสดงผล Modifier drawVector() ที่จะวาดเวกเตอร์เป็นพื้นหลังของเลย์เอาต์ (I7b8e0)

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

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

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

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

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

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

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

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

  • ฟังก์ชันการวัดค่าโดยธรรมชาติใน Layout และ LayoutModifier2 มีตัวรับ IntrinsicMeasureScope แล้วในตอนนี้ ซึ่งจะให้ API การค้นหาค่าโดยธรรมชาติพร้อมกับทิศทางการจัดวางที่ส่งต่อโดยนัย (Id9945)

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

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

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

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

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

  • WithConstraints got LayoutDirection parameter (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)