UI ของ Compose

คอมโพเนนต์พื้นฐานของ UI ของ Compose ที่จำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาด และอินพุต
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
9 กันยายน 2026 1.12.1 - - 1.13.0-alpha03

โครงสร้าง

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.ui:ui:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.13

เวอร์ชัน 1.13.0-alpha03

9 กันยายน 2026

androidx.compose.ui:ui-*:1.13.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

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

  • ระบบเลิกใช้งานการโอเวอร์โหลดช่องข้อความ Material 2 ที่ยอมรับพารามิเตอร์ value, onValueChange แล้ว โปรดเปลี่ยนไปใช้โอเวอร์โหลดที่ใช้ TextFieldState เพื่อยกสถานะ (I6b841, b/556234973)
  • เพิ่ม API ทั่วไปเพื่อปิดใช้ WindowInsetsRulers ทั่วโลก ก่อนที่จะสร้างรูท Compose แรก เลิกใช้งาน Android เท่านั้น ComposeView.disableWindowInsetsRulers() เพื่อให้ใช้WindowInsetsRulers.disable()ทั่วไป (Iadc8f)
  • เพิ่มฟังก์ชันส่วนขยาย PolygonShape.transformed และ PolygonShape.scaledToFit ใน Compose Foundation สำหรับ การเปลี่ยนรูปทรงและการปรับรูปหลายเหลี่ยม (I3f327)
  • Modifier เปลี่ยนชื่อฟังก์ชัน LineHeight.Trim.isTrimLastLineBottom() เป็น LineHeight.Trim.trimsLastLineBottom และ LineHeight.Trim.isTrimFirstLineTop เป็น LineHeight.Trim.trimsFirstLineTop (I02211)
  • เพิ่ม boundsAssertionTolerance ลงใน PlatformTestConfig ภายใน ComposeUiTestConfig.platform เพื่อให้การทดสอบกำหนดค่าความคลาดเคลื่อนของการยืนยันขอบเขตเริ่มต้นที่ระดับสภาพแวดล้อม/กฎได้ (I7819d, b/545673912)
  • BasicTextFieldโอเวอร์โหลดที่ยอมรับพารามิเตอร์ value, onValueChange ถูกเลิกใช้งานแล้ว โปรดย้ายข้อมูลไปยังBasicTextFieldโอเวอร์โหลด ที่ใช้ TextFieldState เพื่อยกเลิกสถานะ (I636bf, b/552879150)
  • BasicTextField(value, onValueChange)VisualTransformation จะเลิกใช้งานด้วยเช่นกันเนื่องจากแสดงผ่าน TextField รูปแบบนี้เท่านั้น การเปลี่ยนรูปแบบที่มีอยู่ควรย้ายข้อมูลไปยัง OutputTransformation (I636bf, b/552879150)
  • เพิ่ม LineHeightStyle.Mode.PerLine เพื่อคำนวณความสูงของบรรทัดแยกกันสำหรับแต่ละบรรทัด ซึ่งรองรับขนาดแบบอักษรที่แตกต่างกันในย่อหน้าเดียวกันโดยไม่ทับซ้อนกัน (I41738)
  • เราได้เลิกใช้งานการระบุ LazyLayoutCacheWindow และ LazyListPrefetchStrategy ผ่าน LazyListState แล้วเพื่อหันมาใช้การระบุ LazyLayoutCacheWindow ให้กับฟังก์ชันที่ประกอบกันได้แทน (I71f19)
  • เพิ่ม Modifier.blur { ... } API เพื่อรองรับการเบลอแบบค่อยๆ ชัด (เช่น การไล่ระดับสีและ Shader ที่กำหนดเอง) (Ie6595, b/481685669)
  • เพิ่ม Modifier.interactionBarrier() เพื่อบล็อกการโต้ตอบแบบแตะ โฟกัส และการช่วยเหลือพิเศษ (I7c1b7, b/347038246)
  • เพิ่มisCrossWindowBlurEnabledพร็อพเพอร์ตี้ส่วนขยายใน WindowInfo เพื่อให้นักพัฒนาแอปค้นหาและสังเกตสถานะเบลอข้ามหน้าต่างทั่วทั้งระบบใน Android ได้ (If38e2, b/538405295)
  • เพิ่ม LocalWindow CompositionLocal เพื่ออนุญาตให้ดึงข้อมูลออบเจ็กต์ android.view.Window ปัจจุบัน ซึ่งช่วยให้ควบคุม API ระดับหน้าต่างจากภายใน Composables ได้ง่ายขึ้น (I4d4ff, b/221889664)

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

  • เปิดใช้ isMinimalistLocalsEnabled โดยค่าเริ่มต้น (Ibb4eb, b/523295932)
  • เปิดใช้การเพิ่มประสิทธิภาพความสูงของบรรทัดเดียวโดยค่าเริ่มต้น ซึ่งอาจทำให้เมตริกข้อความบางอย่าง เช่น ความสูงหรือเส้นทางการเลือก (I5575a) มีความแตกต่างกันเล็กน้อย
  • compileSdk สำหรับไลบรารี Compose ที่อัปเดตเป็น 37.1 ซึ่งจะต้องอัปเดต compileSdk สำหรับแอปและไลบรารีทั้งหมดที่ใช้ Compose (I05b0f)
  • แก้ไขปัญหาที่ไม่ได้ทำเครื่องหมายว่า WindowInsetsRulers IME ในชุดกำลังเคลื่อนไหวระหว่างการย้อนกลับแบบคาดการณ์ และแก้ไขปัญหาที่ imePadding ไม่อัปเดตเมื่อสลับโฟกัสระหว่างช่องข้อความ (Id4562, b/537386261, b/539686000)
  • แก้ไขปัญหาที่ระบบไม่สนใจท่าทางสัมผัสการบีบนิ้วบนแทร็กแพดเมื่อ ComposeView โฮสต์อยู่ภายใน ViewGroup มาตรฐานของ Android (I80f79)

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

  • แก้ไขการรั่วไหลของกิจกรรมเมื่อComposeViewถูกแยกออกและ ต่อกลับภายในเฟรมเดียว เช่น เมื่อจัดลำดับใหม่ด้วย removeViewและaddView (Ib5129, b/547675867)

เวอร์ชัน 1.13.0-alpha02

26 สิงหาคม 2026

androidx.compose.ui:ui-*:1.13.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มพร็อพเพอร์ตี้ความหมายใหม่ BackgroundColor สำหรับ Modifier.background (I7eec3, b/518049030)
  • ตอนนี้คุณสร้าง Vertices จากอาร์เรย์ดั้งเดิมที่มีอยู่ได้แล้ว (Ifaba8, b/496412761)
  • ตอนนี้ VectorPainter จะแชร์แหล่งข้อมูลกราฟิกภายใน (ImageBitmap) เมื่อแสดงผล ImageVector เดียวกันใน Composable หลายรายการ ซึ่งจะช่วยลดการอัปโหลดพื้นผิวที่ซ้ำกันและการใช้งานหน่วยความจำ ทำให้ประสิทธิภาพดีขึ้นในสถานการณ์ต่างๆ เช่น รายการที่ใช้ไอคอนซ้ำ คุณปิดใช้การเพิ่มประสิทธิภาพนี้ได้ผ่าน ComposeUiFlags.isVectorDrawCacheSharingEnabled (I35639, b/331283180)
  • เพิ่มผู้ช่วย requestFocusForChildInLocalBounds (Ib1a48)

เวอร์ชัน 1.13.0-alpha01

12 สิงหาคม 2026

androidx.compose.ui:ui-*:1.13.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.13.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มแฟล็กฟีเจอร์ isVelocityTrackerMinSampleSizeFixEnabled (Ic9b51, b/533444810, b/533775739, b/523705159)
  • นำคลาสคำอธิบายประกอบ ExperimentalVelocityTrackerApi ที่ล้าสมัยออกแล้ว (I6f9c6, b/483449576)
  • นำฟีเจอร์แฟล็ก isClearNestedScrollCoroutineScopeFixEnabled ออก (Iedfd7, b/506963276)
  • TextFieldState ตอนนี้จะบันทึกและกู้คืนข้อมูลรูปแบบข้อความแล้ว AnnotatedString.Annotation.Saver เป็นแบบสาธารณะแล้วในตอนนี้เพื่อให้บันทึกและกู้คืนออบเจ็กต์ AnnotatedString.Annotation ได้ (I8b533, b/135556699)
  • เปิดตัว TestFailurePolicy และ TestFailureHandler ใน ComposeTestConfig เพื่อรองรับตัวแฮนเดิลเหตุการณ์ที่กำหนดเองและบริบทของอาร์ติแฟกต์ที่ล้มเหลวในการทดสอบ UI ของ Compose (Ib1a85, b/414802953, b/291106656, b/430644575)
  • เพิ่ม SemanticsProperties.alpha เพื่อแสดงค่าอัลฟ่าขององค์ประกอบย่อยและองค์ประกอบหลักแบบคอมโพสิตที่แก้ไขแล้วของโหนดเลย์เอาต์สำหรับการทดสอบ (Ifddb6, b/524035059)
  • เลิกใช้งานการโอเวอร์โหลด createComposeRule, createAndroidComposeRule และ createEmptyComposeRule ในแพ็กเกจ ui-test-junit4 v2 ที่ใช้พารามิเตอร์แต่ละรายการ ใช้โอเวอร์โหลดที่ยอมรับ ComposeUiTestConfig หรือโอเวอร์โหลดที่ไม่มีพารามิเตอร์ซึ่งใช้ ComposeUiTestConfig เริ่มต้น โปรดทราบว่า ComposeUiTestConfig เริ่มต้นจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็น InputMode.Touch เมื่อเริ่มการทดสอบแต่ละครั้ง ซึ่งอาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ล้มเหลว หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่ง ComposeUiTestConfig(inputMode = InputMode.Keyboard) อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่า AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false เพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ ระบบจะนำเครื่องหมายนี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Idfb86, b/504195741)
  • ตอนนี้การเรียกใช้ createComposeRule และ createAndroidComposeRule โดยไม่มีอาร์กิวเมนต์ (เช่น createComposeRule() หรือ createAndroidComposeRule<MyActivity>()) จะใช้ ComposeUiTestConfig เริ่มต้น ซึ่งจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็น InputMode.Touch เมื่อเริ่มต้นการทดสอบแต่ละครั้ง เพื่อให้มั่นใจว่าอุปกรณ์อยู่ในสถานะที่สะอาดและป้องกันไม่ให้การเปลี่ยนแปลงโหมดป้อนข้อมูลก่อนหน้าส่งผลต่อการทดสอบอื่นๆ อย่างไรก็ตาม โหมดแตะเริ่มต้นใหม่นี้อาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ไม่สำเร็จ หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่ง ComposeUiTestConfig(inputMode = InputMode.Keyboard) อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่า AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false เพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ ระบบจะนำเครื่องหมายนี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Idc4dd, b/267253920, b/504195741)
  • ใส่คำอธิบายประกอบให้กับเมธอดพื้นฐานที่ว่างเปล่าซึ่งลบล้างได้ใน Compose ด้วย @EmptySuper เพื่อระบุว่าการใช้งานที่ลบล้างไม่ควรเรียกใช้ super (Id407b)
  • ตอนนี้ ExposedDropdownMenu เป็นฟังก์ชันส่วนขยายใน ExposedDropdownMenuBoxScope แทนที่จะเป็นสมาชิก คุณอาจต้องอัปเดตรหัสด้วยการนำเข้าใหม่ (Ie8a65, b/356452026)
  • เพิ่มพร็อพเพอร์ตี้ blurBehindRadius, backgroundBlurRadius, scrimAlpha และ windowShape ลงใน DialogProperties รวมถึง blurBehindRadius และ scrimAlpha ลงใน PopupProperties ตอนนี้ผู้พัฒนาสามารถกำหนดค่าการเบลอพื้นหลัง การเบลอหน้าต่าง และความทึบของผ้าม่านได้โดยตรงในกล่องโต้ตอบและป๊อปอัป การตั้งค่า windowShape ช่วยให้เบลอพื้นหลังของกล่องโต้ตอบการตัดไปที่มุมโค้งได้ (I5d437)
  • นำแฟล็กฟีเจอร์ออก - ตอนนี้ปุ่มเขียนจะคงโฟกัสการช่วยเหลือพิเศษไว้อย่างถูกต้องและไม่กะพริบเมื่อเปิดใช้แตะเพื่อสำรวจ เนื่องจากระบบจะทำเครื่องหมายเหตุการณ์การวางเมาส์เหนือปุ่มว่าได้รับการจัดการอย่างถูกต้อง (Ib1c80)
  • เพิ่มการโอเวอร์โหลดการผสานไปยัง FontVariation.Settings เพื่อผสานคอลเล็กชันการตั้งค่าอื่นๆ หรือลบล้างการตั้งค่าแบบอินไลน์ (I6340c)
  • แสดง variationSettings ในอินเทอร์เฟซแบบอักษร โดยค่าเริ่มต้นจะเป็น FontVariation.Empty ใหม่ เพิ่มประสิทธิภาพตัวสร้าง FontVariation.Settings vararg เพื่อใช้ asList() เพื่อหลีกเลี่ยงการจัดสรรการคัดลอกอาร์เรย์ (I9c22f)
  • อัปเดตพร็อพเพอร์ตี้ NestedScrollDispatcher.coroutineScope เพื่อส่งคืน CoroutineScope ที่ยกเลิกอย่างปลอดภัยเมื่อไม่ได้แนบหรือแยกออก (I9b112, b/535290281)
  • เลิกใช้งานการโอเวอร์โหลด runComposeUiTest, runAndroidComposeUiTest และ AndroidComposeUiTestEnvironment ที่ใช้พารามิเตอร์ effectContext, runTestContext และ testTimeout แต่ละรายการ ใช้โอเวอร์โหลดที่ยอมรับ ComposeUiTestConfig หรือโอเวอร์โหลดที่ไม่มีพารามิเตอร์ซึ่งใช้ ComposeUiTestConfig เริ่มต้น โปรดทราบว่า ComposeUiTestConfig เริ่มต้นจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็น InputMode.Touch เมื่อเริ่มการทดสอบแต่ละครั้ง ซึ่งอาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ล้มเหลว หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่ง ComposeUiTestConfig(inputMode = InputMode.Keyboard) อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่า AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false เพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ ระบบจะนำเครื่องหมายนี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (Ia6d55, b/504195741)
  • การเรียกใช้ runComposeUiTest, runAndroidComposeUiTest และ AndroidComposeUiTestEnvironment ที่มีเฉพาะ Lambda ต่อท้ายจะใช้ ComposeUiTestConfig เริ่มต้น ซึ่งจะตั้งค่าโหมดป้อนข้อมูลเริ่มต้นเป็น InputMode.Touch เมื่อเริ่มการทดสอบแต่ละครั้ง เพื่อให้มั่นใจว่าอุปกรณ์อยู่ในสถานะที่สะอาดและป้องกันไม่ให้การเปลี่ยนแปลงโหมดป้อนข้อมูลก่อนหน้าส่งผลต่อการทดสอบอื่นๆ อย่างไรก็ตาม โหมดแตะเริ่มต้นใหม่นี้อาจทำให้การทดสอบที่มีอยู่ซึ่งคาดหวังโหมดแป้นพิมพ์ (InputMode.Keyboard) ไม่สำเร็จ หากต้องการแก้ไขการทดสอบที่ได้รับผลกระทบ ให้ส่ง ComposeUiTestConfig(inputMode = InputMode.Keyboard) อย่างชัดเจนและนำตรรกะการตั้งค่าด้วยตนเองสำหรับโหมดอินพุตออก หรือคุณจะตั้งค่า AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false เพื่อปิดใช้การตั้งค่าโหมดป้อนข้อมูลเริ่มต้นชั่วคราวเมื่อเริ่มการทดสอบแต่ละครั้ง และคงลักษณะการทำงานเดิมไว้ขณะย้ายข้อมูลการทดสอบก็ได้ ระบบจะนำเครื่องหมายนี้ออกในอนาคต ดังนั้นหากมีเพียงการทดสอบจำนวนเล็กน้อยที่ล้มเหลว เราขอแนะนำให้แก้ไขการทดสอบโดยตรงด้วยการเปลี่ยนการกำหนดค่าแทน (I8c85d, b/504195741)
  • เพิ่ม @CheckResult ไปยัง SemanticsNodeInteraction.isDisplayed() และ isNotDisplayed() เพื่อให้มั่นใจว่าค่าที่ส่งคืนจะได้รับการยืนยัน ซึ่งจะป้องกันไม่ให้การทดสอบล้มเหลวโดยไม่มีการแจ้งเตือนเมื่อนักพัฒนาแอปใช้ฟังก์ชันเหล่านี้แทน API การยืนยันโดยไม่ได้ตั้งใจ (I1b447, b/508178494)
  • Flag AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled จะทำให้ ViewGroup ที่มี AndroidViews สร้างอินสแตนซ์เฉพาะเมื่อมีการเพิ่ม AndroidView เพื่อปรับปรุง ประสิทธิภาพของ ComposeViews ที่ไม่มี AndroidViews เมื่อปิดใช้ Flag ระบบจะสร้างอินสแตนซ์และแนบ ViewGroup ที่มีอยู่เมื่อแนบ ComposeView กับหน้าต่าง (I306a3, b/524283041)
  • เปิดตัว coroutineScopeOrNull() ใน NestedScrollDispatcher ซึ่งเป็น API ทางเลือกในการเข้าถึงขอบเขตโครูทีนหลักของ Dispatcher (I18c0f)
  • เปลี่ยน clearCallbacks เป็น runAndClearCallbacks เพื่อให้แน่ใจว่าระบบจะดำเนินการล้างข้อมูลเสมอ (If4720, b/526700075)
  • ComposeTestConfig เปลี่ยนชื่อเป็น ComposeUiTestConfig และย้ายจากแพ็กเกจ v2 ไปยังแพ็กเกจหลัก androidx.compose.ui.test (I1d2a1, b/504195741)
  • เพิ่มพารามิเตอร์ timeoutMillis (ค่าเริ่มต้นคือ 2,000 มิลลิวินาที) ลงใน SemanticsNodeInteraction.captureToImage() เพื่อให้กำหนดค่าการหมดเวลาที่กำหนดเองได้เมื่อรอการส่งผ่านการวาดใหม่ (Ib7d62, b/249501063)
  • เพิ่มข้อมูลย้อนหลังในการเปลี่ยนแปลงอินพุตพอยน์เตอร์ทางอ้อม (Ie62d2, b/526961645)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมาย hintText ใหม่เพื่อแสดงข้อความคำแนะนำในช่องข้อความ ซึ่งช่วยปรับปรุงการรองรับการช่วยเหลือพิเศษโดยการแมปกับ AccessibilityNodeInfohintText (Ib65da, b/448376876)
  • CompositionLocalความละเอียดที่เพิ่มประสิทธิภาพโดยการ แก้ไขแบบไดนามิกจาก LocalOwner และ LocalAndroidComposeView ตามต้องการ ซึ่งสามารถ สลับได้โดยใช้ ComposeUiFlags.isMinimalistLocalsEnabled (I2bf6d)
  • ตอนนี้ androidx.benchmark มีminSdk 24 รายการ (Ic2a85)
  • เพิ่มฟีเจอร์ทดลอง isPropagateHideFromAccessibilityToMergingChildrenEnabled ใน AndroidComposeUiFlags เพื่อควบคุมการส่งต่อ hideFromAccessibility ไปยังองค์ประกอบย่อยที่ผสาน (Ie41ff, b/483506400)
  • เลื่อนระดับ API การทดสอบที่ได้รับการโปรโมต ComposeUiTest และที่เกี่ยวข้อง (รวมถึงตัวแปร ComposeTestRule และ waitUntil) จากเวอร์ชันทดลองเป็นเวอร์ชันที่เสถียร (Iaec77, b/471148519, b/485124363)
  • แก้ไขTalkBackลำดับการนำทางในกลุ่มการข้ามที่ผสานแล้ว หากจำเป็น คุณสามารถเปลี่ยนกลับการเปลี่ยนแปลงนี้ได้โดยการปิดใช้ AndroidComposeUiFlags.isTraversalGroupSortingEnabled (I5ae09, b/285043826)
  • นำIndirectPointerEventฟังก์ชันตัวช่วยเวอร์ชันทดลองที่ล้าสมัยออก (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • แทนที่ @AnimationToolingApi เวอร์ชันทดลองด้วย @RestrictTo API ที่มีการรับประกันการติดตามที่เข้มงวดกว่า (Ia4fd1, b/524317805)
  • เพิ่มตัวเลือก onDescendants() เพื่อค้นหาโหนดความหมายทั้งหมด ภายในซับทรีของโหนดที่กำหนด (Id6b9b, b/444588117)
  • API ตัวช่วย waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists และ waitUntilDoesNotExist ที่เลิกใช้งานแล้วซึ่งไม่ยอมรับ useUnmergedTree เพิ่มการโอเวอร์โหลดใหม่ที่ยอมรับ useUnmergedTree เพื่อรองรับการรอโหนดในแผนผังความหมายที่ยังไม่ได้ผสาน (If675f, b/268432145)
  • เพิ่มพารามิเตอร์ tolerance ลงในการยืนยันขนาดและตำแหน่งของ SemanticsNodeInteraction (assertWidthIsEqualTo, assertHeightIsEqualTo, assertTouchWidthIsEqualTo, assertTouchHeightIsEqualTo, assertPositionInRootIsEqualTo, assertTopPositionInRootIsEqualTo, assertLeftPositionInRootIsEqualTo) เพื่อให้นักพัฒนาแอปกำหนดค่าเกณฑ์การเปรียบเทียบได้ ซึ่งจะช่วยปรับปรุงความแข็งแกร่งของการทดสอบในความหนาแน่นของหน้าจอที่แตกต่างกัน (I3a477, b/202752461)
  • ตอนนี้การทดสอบ Compose รองรับการซิงค์เทรดหลักแล้ว ตอนนี้คุณสามารถเรียกใช้ API การซิงค์ (เช่น waitForIdle() และ runOnIdle()) และดำเนินการยืนยันหรือการดำเนินการ Compose ได้อย่างปลอดภัยภายในโค้ดเรียกกลับของ UI/เทรดหลักโดยตรง (I0247a, b/498478569)
  • เปิดตัวรูปแบบการกำหนดค่าใหม่ (ComposeTestConfig) สำหรับ Compose Test API เพื่อลดความซับซ้อนในการจัดการพารามิเตอร์และเพิ่มความสามารถในการปรับขนาด เพิ่มการรองรับการกำหนดค่าโหมดอินพุต (สัมผัส/แป้นพิมพ์) โดยตรงผ่าน ComposeTestConfig เพื่อให้มั่นใจว่าการตั้งค่าและการรีเซ็ตอัตโนมัติจะป้องกันไม่ให้การทดสอบไม่เสถียรเนื่องจากการรั่วไหลของสถานะ เพิ่มการโอเวอร์โหลดใหม่สำหรับ run*ComposeUiTest และ create*ComposeRule ที่ยอมรับออบเจ็กต์ ComposeTestConfig (Ia3da9, b/267253920, b/504195741)
  • แก้ไขข้อขัดข้องในตัวอย่าง Compose เมื่อใช้ PreviewParameterProvider กับพร็อพเพอร์ตี้ Media Query (Posture, PointerPrecision ฯลฯ) โดยเปลี่ยนการแสดงพื้นฐานจาก String เป็น Int (Ic8f92, b/489939558)
  • เพิ่มพารามิเตอร์ includeInputText ลงใน hasTextExactly และ assertTextEquals เพื่อเปิดใช้การจับคู่ที่ตรงกันในข้อความอินพุตดิบควบคู่ไปกับข้อความภาพ (Iee329, b/519026043)

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

  • เพิ่มประสิทธิภาพ SaveableStateRegistry.performSave() เพื่อป้องกัน HashMap การจัดสรร ใช้ ScatterMap ภายใน (I7d510)
  • สีข้อความที่ป้อนใน AccessibilityNodeInfo.ExtraRenderingInfo สำหรับ Text Composables (I11c94, b/518049030)
  • แก้ไขปัญหาที่การเข้าถึง NestedScrollDispatcher.coroutineScopeOrNull ระหว่างการแยกโหนดเลย์เอาต์ทำให้เกิด IllegalStateException แทนที่จะส่งคืน null (I55634, b/533444810)
  • การเริ่มต้นระดับไฟล์ที่เพิ่มประสิทธิภาพของcompose:ui พร็อพเพอร์ตี้คลาสค่าระดับบนสุดโดยใช้ตัวรับแบบไดนามิก (I34184)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของคลาสค่า ui-unit (TextUnit) โดยใช้ตัวรับแบบไดนามิก (If4a99)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของคลาส ui-graphics value (BlendMode, Color ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (Iaa86a)
  • การเริ่มต้นออบเจ็กต์เสริมที่เพิ่มประสิทธิภาพของcompose:ui:ui คลาสค่า (Key, CompositingStrategy ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I1a340)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของcompose:ui คลาสค่าข้อความ (TextAlign, TextOverflow, ImeAction ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (I776e0)
  • เพิ่มประสิทธิภาพการเริ่มต้นออบเจ็กต์คู่ของcompose:ui คลาสเครื่องมือและค่าทดสอบ (AnimatedVisibilityState, MouseButton, ScrollWheel) โดยใช้ตัวรับแบบไดนามิก (I23e1b)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของcompose:ui คลาสค่าหน่วย (Dp, DpOffset, TextUnitType ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (If5eb5)
  • เพิ่มประสิทธิภาพการเริ่มต้นออบเจ็กต์คู่ของคลาสค่าเรขาคณิต compose:ui (Offset, Size, CornerRadius) โดยใช้ ตัวรับแบบไดนามิก (I3b110)
  • การเริ่มต้นออบเจ็กต์คู่ที่เพิ่มประสิทธิภาพของcompose:ui คลาสค่า (Role, FocusDirection, PointerEventType ฯลฯ) โดยใช้ตัวรับแบบไดนามิก (Ie35dd)
  • จัดการ BaselineShift.None และ BaselineShift.Unspecified รวมถึง BaselineShift(0f) อย่างถูกต้องเพื่อหลีกเลี่ยงการส่งผ่านเลย์เอาต์ที่ช้าโดยไม่จำเป็น (I4350c)
  • แก้ไขปัญหาที่ค่า Dp ที่มีค่าลบศูนย์ (-0.0) ทำงานแตกต่างกันในการเปรียบเทียบหรือการตรวจสอบความเท่าเทียมจากการเปรียบเทียบหรือการตรวจสอบความเท่าเทียมของจุดลอยตัว (I7dbcf, b/525506543)
  • ล้างข้อมูล API (Ia8066)

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

  • ตอนนี้ Alignment.topRatio, Trim.isTrimFirstLineTop() และ Trim.isTrimLastLineBottom() เป็น API สาธารณะแล้ว (I84f62)

เวอร์ชัน 1.12

เวอร์ชัน 1.12.1

9 กันยายน 2026

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

เวอร์ชัน 1.12.0

12 สิงหาคม 2026

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

### แบบอักษรที่ปรับแต่งได้ที่ดาวน์โหลดได้และการตั้งค่าแบบไม่ต้องกำหนดค่า (ui-text-google-fonts)

• แบบอักษรที่ปรับแต่งได้และใบรับรอง GMS ที่ไม่ต้องกำหนดค่า

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### การรองรับช่วงสีแบบกว้าง (WCG) (ui-graphics)

การรักษา WCG: * พื้นที่สีที่ไม่ใช่ sRGB (เช่น AdobeRgb, DisplayP3) ที่ตั้งค่าไว้ใน Paint หรือ Shader จะยังคงอยู่ใน API 29 ขึ้นไป * จะกลับไปใช้ sRGB ใน API ระดับเก่ากว่า

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### การไล่ระดับสีแบบตาข่ายที่เร่งด้วยฮาร์ดแวร์ (ui)

• Painter API: Modifier.meshGradient ถูกแทนที่ด้วย MeshGradientPainter ซึ่งใช้ Canvas.drawMesh ที่เร่งด้วยฮาร์ดแวร์
• การใช้งาน: ใช้ MeshGradientPainter ภายใน Modifier.paint

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### 4. การผสานรวม Credential Manager (UI)

ป้อนข้อความอัตโนมัติ: * เพิ่มพร็อพเพอร์ตี้ความหมายของ CredentialRequest ระดับต่ำสำหรับช่องข้อความ API 34 ขึ้นไป

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### 5. เสียงการโต้ตอบอัตโนมัติ (ui)

เสียงคลิกและเสียงนำทาง: * รองรับเสียงคลิกและเสียงนำทางที่เข้ากันได้กับ Android โดยใช้การกำหนดค่าเสียงของแพลตฟอร์ม * เลือกไม่ใช้: ใช้ Wrapper SoundEffectOnInteraction เพื่อปิดใช้เสียงสำหรับ Subtree

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### 6. การผสานรวม Espresso สำหรับ UI แบบไฮบริด (ui-test)
กำหนดขอบเขตการโต้ตอบ Compose กับลำดับชั้น View ที่ตรงกันโดย Espresso ViewInteraction

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

เวอร์ชัน 1.12.0-rc01

29 กรกฎาคม 2026

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

เวอร์ชัน 1.12.0-beta02

1 กรกฎาคม 2026

androidx.compose.ui:ui-*:1.12.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.12.0-beta01

17 มิถุนายน 2026

androidx.compose.ui:ui-*:1.12.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • ไม่มี (ย้ายแฟล็กฟีเจอร์ของนักพัฒนาแอปภายใน) (Iaf2c4, b/368702588)
  • ไม่เกี่ยวข้อง - ย้ายแฟล็กฟีเจอร์ (I24668, b/521811270)
  • เพิ่มแฟล็กฟีเจอร์ทดลอง ComposeUiFlagsisTrackpadPinchReinterpretationEnabled เพื่อตีความท่าทางสัมผัสแบบบีบนิ้วบนแทร็กแพดใหม่เป็นเหตุการณ์ของเมาส์ที่มีปัจจัยการปรับขนาด (Id3477, b/478053727)
  • เปลี่ยนชื่อฟังก์ชันทดสอบเพื่อทริกเกอร์เหตุการณ์ตัวชี้แบบอ้อม (I3ee35, b/509618414)
  • เพิ่มการเพิ่มประสิทธิภาพให้กับ BasicText และ BasicTextField ซึ่งตอนนี้การตั้งค่าความสูงของบรรทัดสำหรับข้อความที่มี softwrap=false จะคำนวณได้อย่างเหมาะสมยิ่งขึ้น (I2150a)

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

  • การส่งต่อสถานะการจับภาพการเลื่อนที่เพิ่มประสิทธิภาพในองค์ประกอบย่อยเพื่อป้องกันการจัดองค์ประกอบ UI ใหม่โดยไม่จำเป็น (I05830)
  • เปิดใช้แฟล็กฟีเจอร์ทดลอง ComposeUiFlagsisTrackpadPinchReinterpretationEnabled โดยค่าเริ่มต้น (I35ab8, b/478053727)
  • แก้ไขปัญหาในการแยกวิเคราะห์ทรัพยากร Vector Drawable ที่ระบบจะละเว้นองค์ประกอบ <clip-path> หลักหากมีองค์ประกอบ <group> ที่ซ้อนกัน (Id4ea9, b/474530439)
  • เพิ่มการรองรับกฎการลองทดสอบ JUnit 4 มาตรฐานอีกครั้งใน AndroidComposeTestRule โดยการสร้างสภาพแวดล้อมการทดสอบภายในและขอบเขตของโครูทีนใหม่ระหว่างการพยายามดำเนินการ (Iafaa7, b/235383900)

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

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

เวอร์ชัน 1.12.0-alpha03

19 พฤษภาคม 2026

androidx.compose.ui:ui-*:1.12.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มพร็อพเพอร์ตี้ credentialRequest Semantics ใหม่และตัวช่วย CredentialRequestData ใน API 34 ขึ้นไปเพื่อให้ช่องข้อความ Jetpack Compose ผสานรวมกับ Credential Manager ของ Android ผ่านเฟรมเวิร์กการป้อนข้อความอัตโนมัติได้ (Ida2bf, b/488446455)
  • เพิ่มParagraphIntrinsicsฟังก์ชัน Factory ที่รับอาร์กิวเมนต์ softWrap และอื่นๆ ภายใน เราอาจใช้เป็นสัญญาณว่าข้อความแสดงเป็นบรรทัดเดียวและทำการเพิ่มประสิทธิภาพบางอย่าง (I66ca4, b/485495112)
  • เพิ่มการรองรับเสียงการโต้ตอบอัตโนมัติ (การคลิกและการไปยังส่วนต่างๆ ด้วยโฟกัส) ในคอมโพเนนต์ Compose พร้อมด้วย SoundEffectOnInteraction Composable ใหม่เพื่อให้เลือกไม่ใช้ได้ โปรดทราบว่าผลจากการเปลี่ยนแปลงนี้ ตอนนี้ต้องเรียกใช้เครื่องมือฟังการคลิกเชิงความหมายจากเทรดหลัก ซึ่งอาจส่งผลต่อกรณีทดสอบจำนวนเล็กน้อย (I78f65)
  • Fontฟังก์ชันจากโรงงานvariationSettingsที่เสถียร (I183f2)
  • พร็อพเพอร์ตี้ ResourceFont loadingStrategy และเมธอด copy ที่เสถียร (I40d84)
  • API ของ InterceptPlatformTextInput และ PlatformTextInputInterceptor ที่ลดการสั่นไหว (Id2784)
  • เราได้ย้าย registerIdlingResource และ unregisterIdlingResource ไปยังฟังก์ชันส่วนขยายเพื่อปรับปรุงการแยกแพลตฟอร์ม คุณอาจต้องอัปเดตการนำเข้า (I21d3d, b/471148519)
  • เปิดตัว runWithoutImplicitWait ใน ComposeTestRule และ ComposeUiTest เพื่อปรับปรุงประสิทธิภาพการทดสอบระหว่างการตรวจสอบสถานะ API นี้ช่วยให้สามารถเรียกใช้บล็อกโค้ดโดยปิดใช้การซิงค์โดยนัย ซึ่งจะช่วยหลีกเลี่ยงค่าใช้จ่ายในการซิงค์ซ้ำๆ สำหรับการค้นหาแต่ละโหนด ซึ่งจะส่งผลให้การดำเนินการทดสอบเร็วขึ้นอย่างมาก โดยเฉพาะอย่างยิ่งสำหรับการทดสอบที่ต้องเลื่อนผ่านเฟรมด้วยตนเองและสุ่มตัวอย่างพร็อพเพอร์ตี้หลายรายการ เช่น ในการทดสอบภาพเคลื่อนไหว (Ie00e9, b/490270394)
  • ตอนนี้คุณใช้@PreviewWrapperคำอธิบายประกอบกับคลาสคำอธิบายประกอบMultiPreviewได้แล้ว ซึ่งช่วยให้นักพัฒนาแอปสร้างการกำหนดค่าตัวอย่างที่ห่อหุ้มไว้ล่วงหน้าและนำกลับมาใช้ใหม่ได้ (I8ae66, b/511170361)
  • เปิดตัว MeshGradientPainter สำหรับการแสดงผลการไล่ระดับสีแบบตาข่ายModifier.meshGradient ถูกนำออกแล้ว โปรดใช้ MeshGradientPainter กับ Modifier.paint แทน ตอนนี้ MeshGradientRenderer เป็นแบบภายในแล้ว (I2d170, b/508110246)
  • ตอนนี้สามารถระบุไม้บรรทัดแต่ละอันได้โดยการระบุ Lambda ที่ตอบสนองว่าระบุไม้บรรทัดได้หรือไม่ พร้อมกับ Lambda แยกต่างหากที่ระบุค่าของไม้บรรทัด isRulerProvided lambda ไม่ได้สังเกตและควรจะมองในแง่ดีว่าสามารถระบุค่าได้ เราสังเกต rulerProvider lambda เพื่อให้หากค่าใดเปลี่ยนแปลง ระบบจะอัปเดตค่าของไม้บรรทัดและผู้อ่านทั้งหมดของไม้บรรทัด (Ie9089)
  • ใน Style API เวอร์ชันทดลอง เราได้เพิ่มการรองรับการสร้างประเภทรูปแบบที่กำหนดเองซึ่งมีขอบเขตรูปแบบที่กำหนดเองได้ ซึ่งจะช่วยให้คุณเลือกพร็อพเพอร์ตี้ที่ตั้งค่าได้ตามสไตล์ (เช่น การนำเลเยอร์กราฟิกหรือพร็อพเพอร์ตี้ข้อความออกทั้งหมด) รวมถึงช่วยให้ขยายขอบเขตได้โดยไม่ขึ้นอยู่กับสไตล์อื่นๆ (เช่น รองรับเฉพาะไวยากรณ์ playing { } ใน MediaPlayer ที่ประกอบได้) การเปลี่ยนแปลงนี้ทำให้ความเข้ากันได้ของไบนารีและแหล่งที่มาไม่เป็นไปตามข้อกำหนด การเปลี่ยนแปลงหลักที่ทำให้แหล่งที่มาไม่สามารถใช้งานร่วมกันได้คือฟังก์ชันตัวช่วยใน StyleScope ได้ย้ายไปเป็นฟังก์ชันส่วนขยายแล้ว (เช่น fun contentProperty(all: Dp) ตอนนี้เป็นฟังก์ชันส่วนขยาย) การนำเข้าฟังก์ชันส่วนขยายที่จำเป็นหรือการนำเข้าสัญลักษณ์ทั้งหมดจาก androidx.compose.foundation.styles ควรเป็นสิ่งเดียวที่จำเป็นเพื่อให้โค้ดที่เรียกใช้เมธอดเหล่านี้คอมไพล์ได้อย่างถูกต้อง (I1ef27, b/493676648)
  • เพิ่ม updatePointerBy() พร้อมอาร์กิวเมนต์เริ่มต้นสำหรับรหัสพอยน์เตอร์ (I99f30, b/502001776)
  • DeferredTargetAnimation ไม่ใช่เวอร์ชันทดลองอีกต่อไป โปรดนำการเลือกใช้ใน androidx-main ออก"
  • เพิ่ม Flag isClearNestedScrollCoroutineScopeFixEnabled เพื่อควบคุมการแก้ไข (Ibd394, b/505343254)
  • DeferredTargetAnimation ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป โปรดนำการเลือกใช้ฟีเจอร์ออก (I1e4ae, b/500030165)
  • Enum ใหม่เพื่อรองรับทริกเกอร์ในเครื่องมือ UI (I6e198, b/478807872)
  • ระบบอนุญาตให้สร้าง ComposeViewContext โดยไม่ต้องแนบมุมมองอ้างอิง แต่ยังคงกำหนดให้ต้องแนบ View อ้างอิงก่อนที่จะเรียกใช้ setContent() (Id0952)

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

  • แก้ไขปัญหาที่ focusRestorer ไม่คืนค่าโฟกัสอย่างถูกต้องเมื่อมีการเรียกใช้การบันทึกหลายครั้งสำหรับเลย์เอาต์เดียวกัน (I10277, b/505371994)
  • การปรับปรุงประสิทธิภาพก่อนหน้านี้ส่งผลข้างเคียงคือไม่อนุญาตให้วัด ComposeViews ที่ไม่ได้แนบ การเปลี่ยนแปลงนี้ช่วยให้ทำได้โดยไม่ต้องกลับไปเจอปัญหาด้านประสิทธิภาพอีก (I9b2c5, b/508650647)
  • ตอนนี้เราได้สร้างองค์ประกอบขึ้นใหม่เมื่อมีการComposeViewContextเปลี่ยนแปลงเพื่อรองรับการเข้าถึงComposeViewContextที่เร็วขึ้น (I3b3a8, b/487364963)
  • อนุญาตให้ Compose ตั้งค่าสีที่ไม่ใช่ sRGB ใน Paint และ Shader บน Android เพื่อรักษาช่วงสีแบบกว้างโดยการแมปพื้นที่สีของ Compose กับพื้นที่สีที่เทียบเท่าในแพลตฟอร์มอย่างถูกต้อง พื้นที่สีที่ไม่รองรับสำหรับการดำเนินการแสดงผลของแพลตฟอร์ม (เช่น CIE XYZ, CIE Lab, OkLab) หรือไม่พร้อมใช้งานใน API ระดับปัจจุบันจะเปลี่ยนกลับไปใช้พื้นที่สี Srgb อย่างปลอดภัย (I3efb5, b/388511109)

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

  • androidx.compose.ui.platform.NativeClipboard typealias เลิกใช้งานแล้ว โปรดใช้ android.content.ClipboardManager โดยตรงแทน (Ibc611)
  • แทนที่พร็อพเพอร์ตี้ Clipboard.nativeClipboard ด้วยส่วนขยาย Clipboard.nativeClipboardManager เพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มใน commonMain แหล่งที่มาผ่าน typealias (Ibc611)

เวอร์ชัน 1.12.0-alpha02

6 พฤษภาคม 2026

androidx.compose.ui:ui-*:1.12.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

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

  • ขอแนะนำMeshGradientตัวปรับแต่ง (Ia9a08, b/455752719)
  • นำการเรียกกลับการบันทึกการแก้ไขข้อบกพร่องของการป้อนข้อความอัตโนมัติในตัวออก คุณสามารถใช้ฟังก์ชันการทำงานเดียวกันได้โดยการบันทึกจาก AutofillManager.AutofillCallback (I631c7, b/502279690)
  • รองรับการตั้งค่าตัวแปรสำหรับแบบอักษรที่ดาวน์โหลดได้ (Ic25c7, b/496278020)
  • อัปเดต mediaQuery และ derivedMediaQuery เพื่อแสดงผลประเภททั่วไปแทน Boolean ซึ่งจะช่วยให้ใช้งานได้ยืดหยุ่นมากขึ้นเมื่อสร้าง UI ที่ปรับเปลี่ยนตามอุปกรณ์ (I93830, b/498698350)

เวอร์ชัน 1.12.0-alpha01

22 เมษายน 2026

androidx.compose.ui:ui-*:1.12.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.12.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

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

  • นำแฟล็กฟีเจอร์ ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled ออก (I82be3, b/455601135)
  • เปลี่ยนเป็นmediaQueryฟังก์ชันอินไลน์ (Ie9457, b/498698350)
  • ComposeViewContext ได้พ้นระยะทดลองแล้ว และระบบได้นำคำอธิบายประกอบ ExperimentalComposeViewContextApi ออก (I32eca)
  • ตอนนี้ ComposeView.disableWindowInsetsRulers() ไม่ใช่เวอร์ชันทดลองแล้ว (Ia81a5)
  • เพิ่ม hasPendingWork() API เพื่อให้ตรวจสอบได้โดยไม่ต้องดำเนินการใดๆ ว่า UI ของ Compose มีงานที่รอดำเนินการอยู่หรือไม่ โดยไม่ต้องรอหรือเลื่อนเวลา ซึ่งจะเป็นประโยชน์สำหรับการทดสอบนาฬิกาด้วยตนเองเพื่อพิจารณาว่าภาพเคลื่อนไหวหรืองานอื่นๆ ในเบื้องหลังเสร็จสิ้นเมื่อใด (Ic54e3)
  • นำแฟล็กฟีเจอร์ AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled (I7fd25, b/491111451) ออกแล้ว
  • นำแฟล็กฟีเจอร์ AndroidComposeUiFlags.isSharedFontEnabled ออกแล้ว (I2cebe, b/479898293)
  • เพิ่มKeyboardTypeตัวเลือกเพิ่มเติมเพื่อทำให้ชุดตัวเลือกแป้นพิมพ์ที่รองรับใน Android สมบูรณ์ยิ่งขึ้น ซึ่งรวมถึงวันที่ เวลา วันที่และเวลา ทศนิยมที่มีการลงนาม และอื่นๆ (I3713e, b/202353328)
  • นำธง AndroidComposeUiFlags.isSharedHapticsEnabled ออกแล้ว (I6a1d4, b/479895628)
  • นำแฟล็ก AndroidComposeUiFlags.isSharedClipboardManagerEnabled ออกแล้ว (I41e3c, b/479895130)
  • นำธง AndroidComposeUiFlags.isSharedViewConfigurationEnabled ออกแล้ว (I6d3aa, b/479890645)
  • นำแฟล็กฟีเจอร์ AndroidComposeUiFlags.isSharedDrawingEnabled ออกแล้ว (I27912, b/479849019)
  • นำแฟล็กฟีเจอร์ AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled ออกแล้ว (I6b726, b/479845566)
  • นำธง AndroidComposeUiFlags.isSharedWindowInfoEnabled ออก (Ife9a9, b/479837249)
  • นำแฟล็ก AndroidComposeUiFlags.isSharedComposeViewContextEnabled ออก (Ic522a, b/479834257)
  • เพิ่มการตั้งค่าตัวแปรเพื่อปรับแต่งแบบอักษรที่ปรับแต่งได้ซึ่งดาวน์โหลดได้ (Ifdc93, b/223262013)
  • เพิ่มการตั้งค่าตัวแปรเพื่อปรับแต่งแบบอักษรที่ปรับแต่งได้ซึ่งดาวน์โหลดได้ (I390af, b/223262013)
  • นำการแจ้งว่าไม่เหมาะสม isTraversableDelegatesFixEnabled ออก (Ia7dfe, b/485962494)
  • เปิดตัว runWhenIdle และตัวแปรที่ระงับ awaitAndRunWhenIdle ใน ComposeTestRule และ ComposeUiTest เพื่อปรับปรุงประสิทธิภาพการทดสอบและความเสถียรของสถานะ API เหล่านี้จะซิงโครไนซ์ UI เพียงครั้งเดียว จากนั้นจึงเรียกใช้บล็อกโค้ดโดยไม่มีค่าใช้จ่ายในการซิงโครไนซ์ซ้ำสำหรับการดำเนินการแต่ละครั้ง ซึ่งจะส่งผลให้การดำเนินการทดสอบเร็วขึ้นอย่างมากและมีความเสถียรมากขึ้น โดยเฉพาะอย่างยิ่งสำหรับการทดสอบที่สุ่มตัวอย่างพร็อพเพอร์ตี้จำนวนมาก เช่น ในการทดสอบภาพเคลื่อนไหว (Iabf66, b/490270394)
  • เพิ่ม LayerOutsets ไปยัง GraphicsLayer และ Modifier.graphicsLayer ซึ่งใช้เพื่อเพิ่มขอบเขตภาพของเลเยอร์ให้เกินขนาดที่วัดได้ ซึ่งใช้เพื่อหลีกเลี่ยงลักษณะการทำงานของ clipToBounds โดยนัยเมื่อเลื่อนเลเยอร์ไปยังบัฟเฟอร์นอกหน้าจอ (Ic1189)
  • ปิดใช้การบันทึกเหตุการณ์การป้อนข้อมูลสำหรับป้อนข้อความอัตโนมัติโดยค่าเริ่มต้น ตอนนี้คุณเปิดใช้ได้โดยโทรหา ComposeView.setAutofillDebugEnabled (I5b430, b/487947860)
  • เปลี่ยน VelocityTracker ให้ใช้การติดตั้งใช้งานที่เฟรมเวิร์ก Android จัดเตรียมไว้ให้ (กำหนดค่าได้ด้วย AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled) (Ibc7e2, b/359962905)
  • เมื่อ AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled เป็นจริง View ย่อยจะมีการเรียกใช้เลย์เอาต์หลังจากการวัดในระหว่างการส่งเลย์เอาต์เสมอ Compose ไม่ได้จัดวางเลย์เอาต์ขององค์ประกอบย่อยเสมอไปหลังจากการวัด แต่ View จำเป็นต้องใช้เพื่อการจัดการสถานะที่เหมาะสม (Ib4fe9, b/430974758)
  • เพิ่ม isVirtual ใน LayoutInfo (I3e5cd, b/494243978)
  • ล้างข้อมูลที่ติดธง isGraphicsLayerShapeSemanticsEnabled (I44be0, b/455600081)
  • เพิ่ม Font API ใหม่เพื่อให้ใช้แบบอักษรที่ดาวน์โหลดได้โดยไม่ต้องเพิ่มใบรับรองแบบอักษรลงในโค้ดเบสด้วยตนเอง (I30b86, b/479454159)
  • เพิ่ม onRootWithViewInteraction เพื่อกำหนดขอบเขตการค้นหาเชิงความหมายของ Compose ไปยัง Android View ที่เฉพาะเจาะจง ซึ่งช่วยให้การทดสอบ UI แบบไฮบริด เช่น RecyclerViews ง่ายขึ้นโดยไม่ต้องใช้แท็กทดสอบที่ไม่ซ้ำกันในโค้ดที่ใช้งานจริง (Ic02c4, b/175226753)

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

  • ตอนนี้ captureToImage() API ช่วยให้คุณบันทึกป๊อปอัปหรือกล่องโต้ตอบพร้อมกับจุดยึดในบิตแมปเดียวได้แล้ว (I9b83a, b/443137545)
  • อัปเดต Compose compileSdk เป็น API 37 ซึ่งหมายความว่าเมื่อใช้ Compose จะต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อย (Id45cd, b/413674743)
  • การตั้งค่า ContentDataType.None ใน Semantics จะป้องกันไม่ให้ฟีเจอร์เขียนส่งเหตุการณ์การป้อนข้อความอัตโนมัติ ซึ่งจะช่วยป้องกันค่าใช้จ่ายในการเริ่มต้นที่เกี่ยวข้องกับการขอใช้บริการป้อนข้อความอัตโนมัติ (I8fbda, b/487947860)

เวอร์ชัน 1.11

เวอร์ชัน 1.11.4

1 กรกฎาคม 2026

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

เวอร์ชัน 1.11.3

17 มิถุนายน 2026

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

เวอร์ชัน 1.11.2

19 พฤษภาคม 2026

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

เวอร์ชัน 1.11.1

6 พฤษภาคม 2026

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

เวอร์ชัน 1.11.0

22 เมษายน 2026

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

เวอร์ชัน 1.11.0-rc01

8 เมษายน 2026

androidx.compose.ui:ui-*:1.11.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.11.0-beta02

25 มีนาคม 2026

androidx.compose.ui:ui-*:1.11.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปลี่ยนชื่อ PreviewWrapper API เพื่อให้สอดคล้องกัน (I62659, b/490085948)
  • ComposeViewContext ช่วยให้ ComposeView เขียนได้โดยไม่ต้องแนบกับลำดับชั้นการแสดงผล ใช้ AbstractComposeView.createComposition(composeViewContext) เพื่อเริ่มเขียนโดยไม่ต้องแนบ ComposeView (I46e6f)
  • เพิ่ม delayMillis ลงใน API การทดสอบแทร็กแพดสำหรับ panEnd และ scaleEnd (If80fe)

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

  • Clipboard และ ClipboardManager จะขอใช้บริการของระบบในการเรียกใช้เมธอดครั้งแรก (If0016, b/487947860)
  • ระบบจะคืนค่าโฟกัสอย่างถูกต้องภายในคอนเทนเนอร์แบบเลซีซึ่งมีการนำโหนดและกลุ่มโฟกัสกลับมาใช้ซ้ำ (I18d36, b/481564275)
  • ป๊อปอัปที่มี clippingEnabled = false จะใช้ขอบเขตหน้าต่างทั้งหมดอย่างถูกต้องเพื่อแสดงแบบไร้ขอบ (I206408, b/327017902)

เวอร์ชัน 1.11.0-beta01

11 มีนาคม 2026

androidx.compose.ui:ui-*:1.11.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มการรองรับ windowToken ที่กำหนดเองลงในกล่องโต้ตอบ Jetpack Compose (Ic7728) แล้ว
  • เพิ่มการรองรับ windowToken และ windowType ที่กำหนดเองลงในป๊อปอัป Jetpack Compose แล้ว (I0a04f)
  • แนะนำอินเทอร์เฟซ PreviewWrapper และผู้ให้บริการคำอธิบายประกอบ ซึ่งจะช่วยให้นักพัฒนาแอปสามารถรวมตัวอย่างเข้ากับลักษณะการทำงานที่กำหนดเองได้อย่างราบรื่น (I29f54, b/484306729)
  • เมื่อ AndroidComposeUiFlags.isSharedFontEnabled เป็นจริง ระบบจะแชร์อินสแตนซ์ออบเจ็กต์ที่เกี่ยวข้องกับแบบอักษร เช่น FontLoader และ FontFamilyResolver ในอินสแตนซ์ ComposeView ภายใน ComposeViewContext ได้ (I403e8)
  • ตัวประมวลผลเชิงความหมายของ Compose จะใช้ view.handler แทน mainLooper เพื่อหลีกเลี่ยงข้อขัดข้องในมุมมองที่ใช้ตัวแฮนเดิลที่ไม่ใช่ตัวแฮนเดิลหลัก (I671c3, b/486235925)
  • เพิ่มฟีเจอร์แฟล็ก isSkipNonImportantSemanticsNodesHitTestEnabled ที่ป้องกันการแก้ไขข้อบกพร่องสำหรับการทดสอบการแตะเพื่อดูความหมาย ซึ่งส่งผลต่อฟีเจอร์แตะเพื่อสำรวจของ TalkBack (I2933f, b/481011169, b/454377558, b/461360154)
  • เพิ่มการรองรับการแสดงกล่องโต้ตอบ Jetpack Compose จากบริการ Android การระบุประเภทหน้าต่างที่กำหนดเองผ่านwindowTypeพารามิเตอร์ใหม่ใน DialogProperties ช่วยให้นักพัฒนาแอปแสดงกล่องโต้ตอบในหน้าต่างซ้อนทับได้แล้ว (I7c504, b/478214962)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ 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 การแยกนี้ช่วยให้ส่งข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นและสิ้นสุดของท่าทางสัมผัสการเลื่อนและการปรับขนาดที่แพลตฟอร์มตีความ ซึ่งจะช่วยให้ตัวแฮนเดิลอินพุตของเคอร์เซอร์ใน Compose ใช้ข้อมูลนี้เพื่อตรวจหาเหตุการณ์ได้อย่างเหมาะสม และโดยเฉพาะอย่างยิ่งทราบเมื่อการเลื่อนหรือการปรับขนาดเสร็จสิ้น (I4daf6, b/479285849, b/481333653)
  • เมื่อ AndroidComposeUiFlags.isSharedHapticsEnabled เป็นจริง ComposeViewContext จะมีอินสแตนซ์ของตัวควบคุมการโต้ตอบการสัมผัสที่แชร์ (Icd79a)
  • เปิดตัว API mediaQuery,derivedMediaQuery และ UiMediaScope เวอร์ชันทดลอง (ทำเครื่องหมายเป็น @ExperimentalMediaQueryApi) เพื่อเปิดใช้การพัฒนา UI แบบปรับได้เชิงประกาศตามขนาดหน้าต่าง ท่าทางหน้าต่าง และความสามารถอื่นๆ ของอุปกรณ์และสภาพแวดล้อม (I2d21e, b/479800750)

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

  • แก้ไขปัญหาที่ Modifier.dropShadow และ Modifier.innerShadow ที่กำหนดขอบเขตระดับบล็อกจะไม่วาดใหม่เมื่อพารามิเตอร์รูปร่างมีการเปลี่ยนแปลงแบบไดนามิก (Ida262, b/486202623)
  • แก้ไขข้อบกพร่องที่ทำให้เนื้อหาในบรรทัดวางผิดที่ในเลย์เอาต์ RTL ที่มีข้อความ LTR หรือเลย์เอาต์ LTR ที่มีข้อความ RTL (I09789)
  • แก้ไขข้อบกพร่องที่ทำให้ระบบแสดงข้อยกเว้นเมื่อใช้ ComposeView ในทรานซิชันของ Fragment (Ia425f, b/484100557)

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

  • เพิ่มพร็อพเพอร์ตี้ InputTextSuggestionState เพื่อช่วยระบุสถานะต่างๆ ที่อินพุตการทับศัพท์อาจอยู่ในเมื่อมีคำแนะนำในการแทนที่ข้อความ นอกจากนี้ ยังมีการเปิดตัว TextCompositionRange เพื่อติดตามช่วงของช่วงการเขียนข้อความการทับศัพท์ปัจจุบัน โดยค่า Null จะบ่งบอกว่าไม่มีการเขียน (I7a67f, b/476472318)

เวอร์ชัน 1.11.0-alpha06

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

androidx.compose.ui:ui-*:1.11.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

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

  • เราได้แทนที่แฟล็ก ComposeUiFlags.areWindowInsetsRulersEnabled ด้วย ComposeView.disableWindowInsetsRulers() API แล้ว (Idcdb4, b/455590696)
  • ย้ายแฟล็กฟีเจอร์เวอร์ชันทดลองสำหรับ Android เท่านั้น isAccessibilityShowOnScreenNestedScrollingEnabled ไปยัง (I1c13a)
  • เพิ่มการรองรับการเดินขึ้น (I1c13a)
  • รายงานโหนดเชิงความหมายนอกหน้าจอซึ่งเป็นโหนดย่อยของโหนดการผสานที่มองเห็นได้บางส่วนในคอนเทนเนอร์ที่เลื่อนได้ เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานโปรแกรมอ่านหน้าจอและบริการการช่วยเหลือพิเศษที่คล้ายกันได้ดียิ่งขึ้น (I71df9, b/434782764)
  • เมื่อ AndroidComposeUiFlags.isSharedClipboardManagerEnabled เป็นจริง ระบบจะแชร์อินสแตนซ์ที่เกี่ยวข้องกับคลิปบอร์ดใน ComposeViews โดยใช้ ComposeViewContext (I65e2c)
  • นำ ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled ออกแล้ว (I6e14a, b/455601894)

เวอร์ชัน 1.11.0-alpha05

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

androidx.compose.ui:ui-*:1.11.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

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

  • AndroidComposeUiFlags.isSharedWindowInfoEnabled จะย้ายข้อมูล WindowInfo ไปยัง ComposeViewContext การปิดใช้ฟีเจอร์นี้จะทำให้ WindowInfo ควบคุมโดย AndroidComposeView (I3b364)
  • ระบบจะย้ายโครงสร้างทั่วไปภายใน ComposeView ไปยัง ComposeViewContext ที่แชร์ นี่เป็นการเปลี่ยนแปลงครั้งแรกที่ย้าย CoroutineContext ไปยัง ComposeViewContext เมื่อ AndroidComposeUiFlags.isSharedComposeViewContextEnabled เป็นจริง ระบบจะแชร์ค่าโดยอัตโนมัติ หากเป็นเท็จ ระบบจะไม่แชร์ (I9364d, b/461566955)
  • เพิ่มการรองรับท่าทางสัมผัสของแทร็กแพดและการแปลงจากเหตุการณ์อินพุตของแทร็กแพดเป็นเมาส์ การเปลี่ยนแปลงนี้จะทำให้ระบบรายงานเหตุการณ์เคอร์เซอร์ของแทร็กแพดที่ควบคุมเคอร์เซอร์เหมือนในแท็บเล็ตหรือแล็ปท็อปเป็นเคอร์เซอร์ของเมาส์โดยทั่วไป ซึ่งจะปรับปรุงลักษณะการทำงานเกี่ยวกับการเลื่อนเคอร์เซอร์ การเลื่อน และการวางเมาส์เหนือองค์ประกอบ ระบบจะรายงานท่าทางสัมผัสการแพนและการปรับขนาดพร้อมข้อมูลเพิ่มเติมที่มีในการเปลี่ยนแปลงเหตุการณ์ของเคอร์เซอร์ โดยมี PointerEventType.Pan และ PointerEventType.Scale ใหม่ที่บ่งชี้ว่าระบบจะตั้งค่าเหล่านี้ (Id071a, b/315527861, b/459831570)

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

  • ส่ง CONTENT_CHANGE_TYPE_CHECKED สำหรับการเปลี่ยนแปลงพร็อพเพอร์ตี้ที่สลับได้ (I6ac64, b/476894689, b/474538004, b/475754416)

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

  • androidx.compose.ui.graphics.NativePaint เลิกใช้งานแล้ว โปรดใช้ android.graphics.Paint โดยตรงแทน (I6303c, b/477394763)
  • แทนที่ส่วนขยาย Paint.asFrameworkPaint() เป็น Paint.nativePaint เพื่อหลีกเลี่ยงการเปิดเผยประเภทแพลตฟอร์มใน commonMain sourceset ผ่าน typealias (I6303c, b/477394763)
  • เพิ่มการรองรับNumPadปุ่มการเคลื่อนไหว (I1ff12)

เวอร์ชัน 1.11.0-alpha04

28 มกราคม 2026

androidx.compose.ui:ui-*:1.11.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปิดเผย TestCoroutineScheduler เพื่อเปิดใช้ runCurrent() และตรวจสอบสิทธิ์เข้าถึงอินสแตนซ์เครื่องมือจัดตารางเวลาที่แชร์ (Iea662, b/254115946)
  • เพิ่มการรองรับการเลื่อนขึ้นแบบซ้อนกันเพื่อตอบสนองต่อ android.R.id.accessibilityActionShowOnScreen จากการช่วยเหลือพิเศษ (Ib2723, b/431148846)

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

  • แก้ไขการแปลงพื้นที่สี RGB ของ Android ที่กำหนดเอง การแปลงระดับสีเทาที่กำหนดเองถูกแปลงอย่างไม่ถูกต้องระหว่างพื้นที่สี RGB ของ Compose ที่กำหนดเองและ Android(ebd45,b/377021410)

เวอร์ชัน 1.11.0-alpha03

14 มกราคม 2026

androidx.compose.ui:ui-*:1.11.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

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

  • นำธง ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled ออกแล้ว ตอนนี้ API v2 run*ComposeUiTest และ create*ComposeRule จะใช้ StandardTestDispatcher โดยค่าเริ่มต้น หากต้องการใช้ UnconfinedTestDispatcher ต่อไป คุณสามารถใช้ API ที่เลิกใช้งานแล้วได้ แต่เราขอแนะนำอย่างยิ่งให้ย้ายข้อมูลไปยัง API v2 เพื่อให้ควบคุมการดำเนินการของโครูทีนได้ดียิ่งขึ้น (Iecc9c, b/455601592)
  • เปิดตัว androidx.compose.ui.test.junit4.v2.create*ComposeRule API API ใหม่เหล่านี้ใช้ StandardTestDispatcher โดยค่าเริ่มต้นเพื่อจำลองลักษณะการทำงานของการใช้งานจริงได้ดียิ่งขึ้น ซึ่งจะมีการจัดคิวโครูทีนแทนที่จะดำเนินการทันที ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำในการย้ายข้อมูล (I1870e, b/254115946)
  • เปิดตัว androidx.compose.ui.test.v2.run*ComposeUiTest API API ใหม่เหล่านี้ใช้ StandardTestDispatcher โดยค่าเริ่มต้นเพื่อจำลองลักษณะการทำงานของการใช้งานจริงได้ดียิ่งขึ้น ซึ่งจะมีการจัดคิวโครูทีนแทนที่จะดำเนินการทันที ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำในการย้ายข้อมูล (I4f782, b/254115946)
  • ตอนนี้คุณแชร์โครงสร้างทั่วไปภายใน ComposeView ได้แล้ว เมื่อ ComposeUiFlags.isSharedComposeViewContextEnabled เป็นจริง ระบบจะแชร์ค่าโดยอัตโนมัติ หากเป็นเท็จ ระบบจะไม่แชร์ (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)

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

  • แก้ไขข้อบกพร่องที่การนำเนื้อหาทั้งหมดออกจาก ComposeView ไม่ได้นำเนื้อหาที่วาดออก (I8b382, b/299503084)
  • แก้ไขข้อขัดข้องที่มีองค์ประกอบที่หยุดชั่วคราวได้เมื่อเคลื่อนไหวด้วย LookaheadScope (I7e649, b/469669851)
  • แก้ไขปัญหาที่การส่งสตริงที่ยาวเกินไปไปยังบริการป้อนข้อความอัตโนมัติทำให้เกิดข้อขัดข้อง เพื่อป้องกันปัญหานี้ ตอนนี้ระบบจะตัดข้อความให้มีความยาวที่ถูกต้องโดยอัตโนมัติก่อนส่ง
  • แก้ไขข้อบกพร่องที่การวางเมาส์เหนือองค์ประกอบแล้วออกจากองค์ประกอบอาจทำให้เกิดการคลิกภายใต้เงื่อนไขที่เฉพาะเจาะจงมาก (a3d5a0f)
  • แก้ไขการส่งเหตุการณ์การวางเมาส์เหนือสไตลัสสำหรับการทดสอบ และเตรียมการทดสอบเมาส์สำหรับการทดสอบสไตลัสใหม่ (9ca9bc9)
  • เพิ่มการรองรับการวาง/ไม่วางองค์ประกอบ UI ด้วยอินพุตพอยน์เตอร์ (d0742b0, b/BUD_ID)
  • แก้ไขข้อบกพร่องใน Jetpack Compose Popup ที่มีการส่งพิกัดสัมบูรณ์ของขอบเขตของ Anchor ไปยัง PopupPositionProvider ซึ่งทำให้วางป๊อปอัปไม่ถูกต้อง ตอนนี้การคำนวณตำแหน่งป๊อปอัปใช้พิกัดสัมพัทธ์ที่ถูกต้องแล้ว (1f7edf,b/469940907)

เวอร์ชัน 1.11.0-alpha02

17 ธันวาคม 2025

androidx.compose.ui:ui-*:1.11.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

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

  • ตอนนี้ MultiModalInjectionScope API เสถียรแล้ว ซึ่งรวมถึง performKeyInput และ performRotaryScrollInput รวมถึง API หลักและ API แบบหมุน ระบบนำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว (Ie8bbc, b/261561237)
  • เพิ่ม API การทดสอบแทร็กแพด ซึ่งคล้ายกับ API การทดสอบเมาส์ และแทรกเหตุการณ์ที่เลียนแบบลักษณะการทำงานของแทร็กแพดของแท็บเล็ตหรือแล็ปท็อป จุดแรกเข้าหลักคือ SemanticsNodeInteraction.performTrackpadInput และ MultiModalInjectionScope.trackpad (I2ce67), b/432326139

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

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

เวอร์ชัน 1.11.0-alpha01

3 ธันวาคม 2025

androidx.compose.ui:ui-*:1.11.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.11.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

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

  • นำฟีเจอร์แฟล็ก isSemanticAutofillEnabled UI ออกเนื่องจากมีการเปิดใช้การป้อนข้อความอัตโนมัติเชิงความหมายโดยค่าเริ่มต้น (I849cf, b/455587954)
  • เปลี่ยนวิธีที่เมธอดที่สามารถข้ามผ่านได้ find findNearestAncestor ค้นหาโหนดที่เกี่ยวข้อง ตอนนี้ผู้แทนประเภทเดียวกัน (NodeKind) จะปรากฏในระหว่างการข้าม การเปลี่ยนแปลงนี้ได้รับการป้องกันโดยฟีเจอร์แฟล็ก isTraversableDelegatesFixEnabled (Ia3165, b/280804097)
  • เพิ่มTextEntryKeyการแมปสำหรับ ANI#isTextEntryKey (Ifde7b, b/399540654)
  • Modifier.onFirstVisible() เลิกใช้งานแล้วเนื่องจากลักษณะการทำงานทำให้เข้าใจผิดและไม่ได้เป็นไปตามสัญญาที่ชื่อระบุไว้เสมอไป ตัวอย่างเช่น เมื่อเพิ่มในรายการของ LazyColumn ระบบจะเรียกใช้ Callback นี้ทุกครั้งที่รายการนี้ปรากฏขึ้นหลังจากเลื่อน ซึ่งอาจไม่ตรงกับที่ผู้ใช้ตัวแก้ไขที่มีชื่อนี้คาดหวัง ขอแนะนำให้ใช้ Modifier.onVisibilityChanged() แทน และติดตามด้วยตนเองหากเลย์เอาต์แสดงก่อนหน้านี้แล้วตามข้อกำหนดของกรณีการใช้งานที่เฉพาะเจาะจง (Ia7095, b/447601783)
  • เปิดตัว MeasuredSizeAwareModifierNode ซึ่งจำเป็นเมื่อคุณต้องการใช้การเรียกกลับ onRemeasured() โปรดใช้อินเทอร์เฟซนี้โดยตรงแทนการใช้ LayoutAwareModifierNode ที่เป็นแบบทั่วไปมากขึ้นเมื่อคุณไม่ต้องการการเรียกกลับอื่นๆ (If6fb0)

เวอร์ชัน 1.10

เวอร์ชัน 1.10.6

25 มีนาคม 2026

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

เวอร์ชัน 1.10.5

11 มีนาคม 2026

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

เวอร์ชัน 1.10.4

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

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

เวอร์ชัน 1.10.3

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

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

เวอร์ชัน 1.10.2

28 มกราคม 2026

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

เวอร์ชัน 1.10.1

14 มกราคม 2026

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

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

  • แก้ไขการขัดข้องขององค์ประกอบที่หยุดชั่วคราวได้เมื่อเคลื่อนไหวด้วย LookaheadScope (I7e649, b/469669851)
  • แก้ไขข้อบกพร่องใน Jetpack Compose Popup ซึ่งมีการส่งพิกัดสัมบูรณ์ของขอบเขตของ Anchor ไปยัง PopupPositionProvider ซึ่งทำให้วางป๊อปอัปไม่ถูกต้อง ตอนนี้การคำนวณตำแหน่งป๊อปอัปใช้พิกัดสัมพัทธ์ที่ถูกต้องแล้ว (1f7edf,b/469940907)

เวอร์ชัน 1.10.0

3 ธันวาคม 2025

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

เวอร์ชัน 1.10.0-rc01

19 พฤศจิกายน 2025

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

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

  • ส่งvisibilityChangedการเรียกกลับอย่างถูกต้องโดยมีค่าเป็นเท็จเมื่อ minDurationMs ไม่ใช่ 0 (2ac08b8, b/456384555)
  • อย่าเรียกใช้onVisibilityChanged callback เมื่อโหนดมองไม่เห็นในตอนแรก (3969e8d, b/447364998)

เวอร์ชัน 1.10.0-beta02

5 พฤศจิกายน 2025

androidx.compose.ui:ui-*:1.10.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.10.0-beta01

22 ตุลาคม 2025

androidx.compose.ui:ui-*:1.10.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มการเพิ่มประสิทธิภาพสำหรับการส่งการเปลี่ยนแปลงโฟกัส คุณปิดใช้ฟีเจอร์นี้ได้ด้วย isOptimizedFocusEventDispatchEnabled = false (I919fb, b/449228515)
  • อัปเดต API การแตะโดยอ้อมทั้งหมดให้ใช้ชื่อ API พอยน์เตอร์โดยอ้อมเพื่อให้ตรงกับ API อินพุตพอยน์เตอร์ (I238ce, b/451607214)
  • ตอนนี้ฟังก์ชัน TextDirection, TextAlign, Hyphens, FontSynthesis valueOf จะแสดงข้อผิดพลาด IllegalArgumentException เมื่อได้รับค่าที่ไม่รู้จัก (I07c67)
  • อัปเดต CompositionDataTree.makeTree เพื่อส่งค่าเริ่มต้นแทนฟังก์ชัน Wrapper (Id64a6, b/445229688)
  • API กฎการทดสอบ createComposeRule, createAndroidComposeRule และ createEmptyComposeRule ซึ่งยอมรับพารามิเตอร์ effectContext มีความเสถียรและพารามิเตอร์จะตั้งค่าเริ่มต้นเป็น EmptyCoroutineContext (If400c, b/450540702)
  • เปลี่ยนชื่อ UnplacedStateAwareModifierNode เป็น UnplacedAwareModifierNode (I6a551, b/449719932) แล้ว
  • เลิกทำการเพิ่มประสิทธิภาพการจับภาพเนื้อหา (Ic000b, b/442364065)
  • เพิ่มแฟล็กฟีเจอร์ ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled แล้ว ซึ่งช่วยให้เพิ่มประสิทธิภาพได้โดยที่คำขอพิกัด เช่น LayoutCoordinates.positionInRoot() ใช้ค่าออฟเซ็ตที่แคชไว้ซึ่งเรามีอยู่แล้วใน RectManager แทนที่จะต้องข้ามทั้งทรีในแต่ละการเรียก (Ieaadc)

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

  • PlaceholderSpan ตอนนี้ใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้นสำหรับการกำหนดขนาดอย่างถูกต้องแล้ว (Id2ead, b/324462728)
  • ใช้ ViewCompat เพื่อดำเนินการกับค่าคงที่ของการตอบสนองแบบรู้สึกได้ที่รองรับในระดับแพลตฟอร์ม โดยอาศัยการรองรับแบบสำรองสำหรับค่าคงที่ใหม่กว่า (Ib5a00)

เวอร์ชัน 1.10.0-alpha05

8 ตุลาคม 2025

androidx.compose.ui:ui-*:1.10.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขข้อบกพร่องที่ทำให้ป๊อปอัปที่ซ้อนกันอยู่แสดงที่ด้านบนของหน้าจออย่างไม่ถูกต้อง ตอนนี้ป๊อปอัปจะยึดกับป๊อปอัปหลักอย่างถูกต้องแล้ว (Id4603, b/191279752)
  • แก้ไขปัญหาเกี่ยวกับการเปลี่ยนโฟกัสไปยังมุมมองอื่นๆ ในลำดับชั้น (I95223, b/446028624)
  • แก้ไขฟิลด์ที่มีพารามิเตอร์แบบอินไลน์ที่ขาดหายไปจากเครื่องมือตรวจสอบใน Lambda ที่สร้างโดย Kotlin 2.2.20 (I9855d, b/447110005)
  • แก้ไขการซ้อนทับชื่อของทรัพยากรการป้อนข้อความอัตโนมัติระหว่าง UI และโมดูลพื้นฐาน (I5da5a)

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

  • UiModes เปลี่ยนชื่อเป็น AndroidUiModes เพื่อให้สอดคล้องกับค่าคงที่ที่นำมาจาก Android API (Ia0a77)

เวอร์ชัน 1.10.0-alpha04

24 กันยายน 2025

androidx.compose.ui:ui-*:1.10.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

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

  • เราได้เลื่อนระดับตัวแปรของกฎการทดสอบ Compose ที่ยอมรับพารามิเตอร์ CoroutineContext เป็นเวอร์ชันที่เสถียรแล้ว เราได้นำคำอธิบายประกอบเวอร์ชันทดลองออกแล้ว และนักพัฒนาแอปไม่จำเป็นต้องเลือกใช้เพื่อใช้ API นี้อีกต่อไป (I74e6e)
  • นำ ComposeUiFlags.isRectTrackingEnabled ออกแล้ว ระบบอาจไม่ได้เปิดใช้ตรรกะนี้เสมอไป (Id78df)
  • เลิกใช้งานการโอเวอร์โหลดอินไลน์ของ Updater#set เนื่องจากมีการ Boxing ค่าที่ระบุหลายครั้งเกินไป (Id679e)
  • ทำเครื่องหมายพร็อพเพอร์ตี้เชิงความหมาย onAutofillText ว่าเลิกใช้งานแล้ว (I6f81c)
  • เปิดตัว UnplacedStateAwareModifierNode โดยจะมีการเรียกใช้การเรียกกลับเมื่อเลย์เอาต์ที่วางไว้ก่อนหน้านี้ไม่ได้วางอีกต่อไป (I8fdd8, b/309776096)
  • แก้ไขเอกสารประกอบของ RetainObserver.onRetained และเพิ่ม RetainObserver.onUnused ซึ่งเหมือนกับ RememberObserver.onAbandoned (Ia6fc5)
  • เพิ่ม onVisibilityChangedNode() ซึ่งสร้าง Modifier.Node ที่ Modifier.onVisibilityChanged() ใช้ผ่านการมอบสิทธิ์ ซึ่งช่วยให้ขยายฟังก์ชันนี้ใน Modifier.Node ที่กำหนดเองได้ (I70d84, b/443001320)

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

  • แก้ไขปัญหาที่เนื้อหาในบรรทัดแสดงผลไม่สำเร็จเมื่อวางไว้ในบรรทัดสุดท้ายของข้อความที่มีหลายบรรทัดซึ่งใช้เครื่องหมายจุดไข่ปลา แม้ว่าตัวยึดตำแหน่งจะอยู่ก่อนหน้าภูมิภาคที่ใช้เครื่องหมายจุดไข่ปลาก็ตาม (I76aaf, b/441829208)

เวอร์ชัน 1.10.0-alpha03

10 กันยายน 2025

androidx.compose.ui:ui-*:1.10.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปลี่ยนชื่อ DelegatableNode.invalidateLayoutForSubtree เป็น DelegatableNode.invalidateMeasurementForSubtree (I94257, b/430106107)
  • นำisInHiddenAccessibilitySubtreeตัวจับคู่ที่ซ้ำซ้อนออก (I4476c, b/443792965)
  • เปิดตัวร่องรอยสแต็กของ Compose ที่อิงตามคีย์กลุ่ม ซึ่งเปิดใช้โดยค่าเริ่มต้นสำหรับแอปที่ย่อขนาดทั้งหมด ปลั๊กอิน Gradle ของคอมไพเลอร์ Compose จะสร้างการแมป Proguard สำหรับการติดตามเหล่านี้โดยเริ่มจาก Kotlin 2.3.0 (Ifbcb5)
  • Modifier.skipToLookaheadSize ตอนนี้ใช้ Lambda ที่เปิดใช้โดยค่าเริ่มต้นซึ่งจะเปิดใช้การข้ามขนาดเมื่อการเปลี่ยนที่แชร์ทำงานอยู่เท่านั้น เช่นเดียวกับ Modifier.skipToLookaheadPosition (Ibe0f5, b/432485585)
  • ComposeUiFlags.isOutOfFrameDeactivationEnabled จะถูกนำออกและฟังก์ชันนี้จะเปิดใช้เสมอ (I421ed)
  • ย้ายฟังก์ชันของ Factory สำหรับการสร้างอินสแตนซ์ FillableData ไปยังออบเจ็กต์เสริม ให้ใช้เมธอดใหม่ของ Factory แทนการเรียก FillableData(value) ซึ่งก็คือ FillableData.createFrom(value) (I2e200, b/441719650)
  • เปิดตัว BeyondBoundsLayoutModifierNode โหนดตัวแก้ไขใหม่เพื่อดำเนินการนอกเลย์เอาต์ที่ผูกไว้สำหรับการค้นหาโฟกัส (I39be1, b/416133658)
  • FocusTargetModifierNode.requestFocus() จะส่งโฟกัสไปยังองค์ประกอบย่อยรายการใดรายการหนึ่งเมื่อโฟกัสด้วยตัวเองไม่ได้ ตอนนี้ลักษณะการทำงานนี้สอดคล้องกับ FocusRequester.requestFocus() และ FocusRequesterModifierNode.requestFocus() แล้ว หากไม่ต้องการลักษณะการทำงานนี้ ให้ตั้งค่าสถานะ ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled เป็น false ในแอป (Icca5c, b/436863604)
  • ระบุขนาดหน้าต่างตาม DP ใน WindowInfo (I9322b, b/424442112)
  • นำแฟล็ก isNestedScrollDispatcherNodeFixEnabled ออกแล้ว (If451a)
  • เพิ่มการรองรับค่าวันที่ในการป้อนข้อความอัตโนมัติใน FillableData API val dateMillisValue: Long เพิ่มเพื่อดึงข้อมูลวันที่ และเพิ่มตัวสร้าง FillableData(dateMillisValue: Long) ที่เกี่ยวข้องเพื่อสร้างอินสแตนซ์ FillableData ที่อิงตามวันที่ (Id072a)

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

  • เราได้เพิ่มออบเจ็กต์ UiModes เพื่อประกาศค่าคงที่ที่ใช้สำหรับคำอธิบายประกอบ UiMode (I03cb8)

เวอร์ชัน 1.10.0-alpha02

27 สิงหาคม 2025

androidx.compose.ui:ui-*:1.10.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

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

  • อัปเดต FillableData เพื่อรองรับคอมโพเนนต์ที่ไม่ใช่ข้อความ เช่น สวิตช์และลิสต์ รวมถึงค่าบูลีนและจำนวนเต็มภายใน FillableData และตัวสร้างจาก Factory เพื่อสร้างอินสแตนซ์บูลีนและลิสต์ของ FillableData ที่แปลเป็น AutofillValue ของแพลตฟอร์ม ระบบจะเพิ่มพร็อพเพอร์ตี้เชิงความหมายและการดำเนินการที่เกี่ยวข้องด้วย (Ia8105, Icc5cf)
  • ในโหมดที่ไม่ใช่การสัมผัส ระบบมุมมองจะกำหนดโฟกัสเริ่มต้น/ค่าเริ่มต้นให้กับรายการที่โฟกัสได้รายการใดรายการหนึ่งบนหน้าจอ ฟีเจอร์นี้จะเพิ่มลงใน Compose และเปิดใช้ได้โดยการเปิดใช้ ComposeUiFlags.isInitialFocusOnFocusableAvailable (Ib9178)
  • นำแฟล็ก isPointerInteropFilterDispatchingFixEnabled ออกแล้ว (Iaa589)
  • นำแฟล็ก isNestedScrollInteropPostFlingFixEnabled ออกแล้ว (I2a756)
  • เพิ่มตัวเทียบความหมาย isHiddenFromAccessibility() และ isInHiddenAccessibilitySubtree() (I9f5a1)
  • เพิ่ม runCurrent() ลงใน MainTestClock เพื่อเรียกใช้งานที่ครบกำหนดทั้งหมดในตัวกำหนดเวลาที่เกี่ยวข้อง ซึ่งมีไว้เพื่อรองรับการทดสอบใน StandardTestDispatcher โดยจะเพิ่มงานไปยังตัวจัดกำหนดการแทนที่จะดำเนินการทันทีเมื่อมีเวลาหน่วง 0 มิลลิวินาที คุณตั้งค่าการทดสอบให้ใช้ StandardTestDispatcher ได้โดยสร้าง ComposeTestRule และส่ง StandardTestDispatcher ไปยัง โดยค่าเริ่มต้น การทดสอบจะทำงานใน UnconfinedTestDispatcher ในกรณีนี้จึงไม่จำเป็นต้องเรียกใช้ runCurrent()
  • เพิ่มการรองรับการเรียกใช้การทดสอบใน StandardTestDispatcher ในอดีต เฟรมเวิร์กการทดสอบได้รับการตั้งค่า (และยังคงตั้งค่า) โดยใช้ UnconfinedTestDispatcher ซึ่งแตกต่างจากสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ในรายละเอียดเล็กๆ น้อยๆ ตอนนี้คุณเปลี่ยนการตั้งค่านี้ได้โดยสร้าง StandardTestDispatcher ของคุณเองและเพิ่มลงใน effectContext เมื่อสร้าง ComposeTestRule (หรือเมื่อเรียกใช้ runComposeUiTest) (I334d0, b/254115946)
  • อัปเดตรหัสสำหรับการสร้างแผนผังโหนดจาก SlotTree (I997d3)

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

  • ตอนนี้ Compose UI จะติดตั้ง RetainScopes ที่รับรู้ถึงวงจรขององค์ประกอบใน Android ตอนนี้ลักษณะการทำงานเริ่มต้นจะยังคงค่าที่retainไว้เมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Id4a09, b/177562901)

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

  • เพิ่มความสามารถให้ VelocityTracker คํานวณความเร็วของเคอร์เซอร์ตามเหตุการณ์เคอร์เซอร์ที่ติดตามโดยใช้ลักษณะการทํางานเฉพาะแพลตฟอร์ม (I621e8)

เวอร์ชัน 1.10.0-alpha01

13 สิงหาคม 2025

androidx.compose.ui:ui-*:1.10.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.10.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

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

  • ตอนนี้การกดเคอร์เซอร์ลงด้วยเมาส์หรือทัชแพดใน ComposeView จะล้างโฟกัสโดยอัตโนมัติหากการกดเคอร์เซอร์ลงไม่ได้เกิดขึ้นในขอบเขตของโหนดที่โฟกัส ซึ่งจะส่งผลให้เกิด UX แบบ "แตะเพื่อล้างโฟกัส" ที่คาดหวังมากกว่าลักษณะการทำงานปัจจุบันเมื่อใช้อุปกรณ์ป้อนข้อมูลแบบพอยน์เตอร์ คุณเลือกไม่ใช้ลักษณะการทำงานนี้ได้ด้วย AbstractComposeView.isClearFocusOnPointerDownEnabled API ใหม่ (I6322b, b/282963174)
  • เปิดตัวFillableDataอินเทอร์เฟซเพื่อรองรับคอมโพเนนต์การป้อนข้อความอัตโนมัติประเภทต่างๆ นอกเหนือจากข้อความ (If9bd2)
  • API ใหม่ที่อนุญาตให้เปิดและปิดใช้องค์ประกอบที่แชร์แบบไดนามิก ซึ่งยังช่วยให้สามารถพิจารณาได้ว่ามีการเปลี่ยนองค์ประกอบที่แชร์ที่กำลังดำเนินการอยู่แล้วหรือไม่ API ใหม่เพื่อตั้งค่าขอบเขตเป้าหมายอื่นเมื่อองค์ประกอบที่แชร์เป้าหมายถูกทิ้งระหว่างการเปลี่ยน API ใหม่สำหรับรับ LayoutCoordinates ของ LookaheadScope (I18dd4, b/409819304, b/395670637)
  • แนะนำฟีเจอร์แฟล็ก isNestedScrollInteropIntegerPropagationEnabled เพื่อควบคุมการทดสอบการส่งจำนวนเต็มที่ถูกต้องไปยังการทำงานร่วมกันของการเลื่อนที่ซ้อนกัน (If8316)
  • เพิ่ม requestFocusForChildInRootBounds() ไปยัง DelegatableNode เพื่อย้ายโฟกัสไปยังองค์ประกอบย่อยที่ทับซ้อนกับสี่เหลี่ยมผืนผ้าที่ระบุ (I001ef)
  • นำธง isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled ออกแล้ว (I36c18)
  • เพิ่ม@CheckResultคำอธิบายประกอบในSemanticsNodeฟังก์ชันค้นหาและตัวเลือกเพื่อบังคับใช้ค่าที่ส่งคืน (I6f86e, b/201652748)
  • ปรับปรุงประสิทธิภาพของกระบวนการจับภาพเนื้อหา (I3c7c0)
  • เปิดตัว CompositionLocal ที่ใช้แก้ไขแปรงไฮไลต์การเติมที่สำเร็จของการป้อนข้อความอัตโนมัติได้ (I52329)
  • เปิดตัวอินเทอร์เฟซ Interpolatable ใหม่ที่อนุญาตให้มีการประมาณค่าอัตโนมัติระหว่างประเภทต่างๆ โดยสมมติว่าประเภทหนึ่งทราบวิธีแปลงจากอีกประเภทหนึ่ง อินเทอร์เฟซนี้ใช้ในคอมโพสประเภทต่างๆ เช่น แปรงและรูปร่าง แต่ก็ใช้ภายนอกได้เช่นกัน (I58eab)
  • ตอนนี้ Scrollable รองรับเหตุการณ์การเลื่อนล้อเมาส์แบบ 2 มิติได้ดีขึ้นแล้ว เราได้เปิดตัว API การทดสอบใหม่เพื่อช่วยทดสอบกรณีการใช้งานใน MouseInjectionScope นอกจากนี้ เรายังได้เปิดตัวการโอเวอร์โหลดใหม่สำหรับเมธอดการเลื่อนใน MouseInjectionScope และฟีเจอร์ค่าสถานะเพื่อควบคุมลักษณะการทำงานใหม่ที่เรียกว่า isMouseWheel1DAxisLockingEnabled (I136df)
  • เพิ่ม DeviceConfigurationOverrides สำหรับประเภทและสถานะของแป้นพิมพ์ ประเภทและสถานะการนำทาง สถานะหน้าจอสัมผัส และประเภทโหมด UI (I282f0)
  • เพิ่มLineHeightStyle.Modeใหม่ชื่อ Tight โหมดนี้ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลงได้แม้ว่าอาจตัดกลีฟที่สูงกว่าก็ตาม (Id3849)
  • BaselineShift มีค่า Unspecified เพื่อป้องกันการจัดกลุ่ม BaselineShift, Hyphens, LineBreak, TextAlign และ TextDirection มีฟังก์ชันตัวช่วย isSpecified Hyphens, TextAlign, TextDecoration และ TextDirection มีเมธอด valueOf() และเมธอดค่าที่ช่วยให้การซีเรียล/ดีซีเรียลมีประสิทธิภาพ (I8d44c)
  • เพิ่มอินเทอร์เฟซเมธอด getDisplayName ใหม่เพื่อให้ชื่อที่แสดงที่กำหนดเองสำหรับอินสแตนซ์พารามิเตอร์ตัวอย่าง (I19bdf, b/241699422)
  • เมื่อเปรียบเทียบค่า Dp กับค่า Unspecified โดยใช้เครื่องหมายน้อยกว่าหรือมากกว่า ระบบจะแสดงผลเป็นเท็จเสมอ การใช้ Dp.compareTo(Unspecified) จะแสดงผลเป็น 0 เสมอ การตั้งค่าสถานะ ComposeUiUnitFlags.isDpCompareToChanged เป็น false จะทำให้ Dp.compareTo() กลับไปเป็นลักษณะการทำงานเดิม ซึ่งการเปรียบเทียบ Unspecified กับน้อยกว่าและมากกว่าไม่ได้แสดงผลเป็นเท็จเสมอไป และ compareTo() กับ Unspecified จะตรงกับลักษณะการทำงานของ Float.compareTo() (Ifa88b, b/429221319)

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

  • ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • แก้ไขปัญหาที่ทำให้สร้าง AndroidComposeViews ใหม่ไม่ได้ขณะที่การเปลี่ยนผ่านกำลังดำเนินอยู่ (I2e23e, b/340894487, b/287484338)
  • แก้ไขข้อบกพร่องเกี่ยวกับสีเมื่อใช้ Vector Drawable ที่ใช้สีเดียวและ fillColor ไม่ทึบแสงหรือโปร่งใสทั้งหมด (I3b041, b/328677973)
  • แก้ไขปัญหาที่ไอคอนซึ่งโหลดผ่าน painterResource ที่มีสีเฉพาะธีมไม่อัปเดตเมื่อมีการเปลี่ยนธีม (I85ea0, b/424416571)
  • เปิดตัวความหมายของ onFillData และ fillableData (I45d9e)
  • ตอนนี้ StateRestorationTester จะเปิดใช้การเข้ารหัสสถานะเฉพาะแพลตฟอร์มเสมอ ซึ่งจะช่วยให้ลักษณะการทำงานของการทดสอบสอดคล้องกับการคืนค่าสถานะแอปพลิเคชันจริง เช่น การแปลงเป็น Parcel ใน Android (I38211, b/408154192, b/382294247)
  • แก้ไขข้อขัดข้องที่เกิดขึ้นเป็นครั้งคราวเมื่อขอโฟกัส (57b31a11, b/431111149)

เวอร์ชัน 1.9

เวอร์ชัน 1.9.5

19 พฤศจิกายน 2025

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

เวอร์ชัน 1.9.4

22 ตุลาคม 2025

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

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

  • แก้ไขปัญหาที่เนื้อหาข้อความในบรรทัดหายไปหากอยู่บรรทัดสุดท้ายของข้อความแบบหลายบรรทัดที่มีจุดไข่ปลา แม้ว่าเนื้อหาในบรรทัดจะไม่ได้อยู่ในภูมิภาคที่มีจุดไข่ปลาก็ตาม (I76aaf, b/441829208)
  • แก้ไขปัญหาที่ระบบไม่ได้เรียกใช้การเรียกกลับของตัวแก้ไข onLayoutRectChanged เสมอไปเมื่อ debounceMillis ไม่ใช่ 0 (72aba47, b/445324854)

เวอร์ชัน 1.9.3

8 ตุลาคม 2025

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

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

  • แก้ไขข้อบกพร่องที่ทำให้onVisibilityChanged/onFirstVisible/onLayoutRectChangedตัวแก้ไขไม่ได้รับการเรียกกลับหากเลย์เอาต์ที่ย้ายมีลูกหลานมากกว่า 170 รายการ (4f2fdd, b/445356774)

เวอร์ชัน 1.9.2

24 กันยายน 2025

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

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

  • Modifier.onVisibilityChanged() จะเริ่มทำงานอย่างถูกต้องเมื่อมีการแยกโหนดหรือนำกลับมาใช้ใหม่ (Ic5ce20)
  • ตอนนี้ Modifier.onVisibilityChanged() และ onLayoutRectChanged() จัดการเลย์เอาต์หลักอย่างถูกต้องโดยใช้ placeWithLayer() เพื่อวางองค์ประกอบย่อย (Ia05ac9)
  • สำหรับ Modifier.onVisibilityChanged() และ onLayoutRectChanged() ให้แจ้งอย่างถูกต้องในกรณีพิเศษ เช่น การนำเลเยอร์/ตัวแก้ไขเลเยอร์ออกหรือการอัปเดตพร็อพเพอร์ตี้เลเยอร์ (Ia05ac)

เวอร์ชัน 1.9.1

10 กันยายน 2025

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

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

  • แก้ไขข้อบกพร่องเกี่ยวกับสีเมื่อใช้ Vector Drawable ที่ใช้สีเดียวและ fillColor ไม่ทึบแสงหรือโปร่งใสทั้งหมด (I3b041, b/328677973)

เวอร์ชัน 1.9.0

13 สิงหาคม 2025

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

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

  • การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.9.0 มีอธิบายไว้ในบล็อกโพสต์นี้
  • การตรวจสอบ Lint ที่มาพร้อมกับ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 เป็นอย่างน้อย หากอัปเกรด AGP ไม่ได้ คุณสามารถอัปเกรด Lint ด้วยตนเองได้โดยใช้ android.experimental.lint.version=8.8.2 (หรือเวอร์ชันที่ใหม่กว่า) ใน gradle.properties คุณต้องใช้ Android Studio Ladybug หรือใหม่กว่าจึงจะเรียกใช้การตรวจสอบ Lint ของ Compose ภายใน IDE ได้
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ตอนนี้โหนดตัวแก้ไข graphicsLayer จะใช้ SemanticsModifierNode แล้ว ซึ่งอาจส่งผลให้มีการเพิ่ม SemanticsNodes ใหม่ลงในโครงสร้างความหมาย และทำให้การทดสอบที่ตั้งสมมติฐานเกี่ยวกับโครงสร้างความหมายไม่สำเร็จ ตัวอย่างเช่น การทดสอบที่ใช้ onChild, onParent, onSibling และวิธีอื่นๆ ที่คล้ายกันเพื่อยืนยันอาจล้มเหลวหากมีการเพิ่มโหนดใหม่ระหว่างโหนดปัจจุบันและโหนดเป้าหมาย วิธีที่แนะนำในการแก้ไขความล้มเหลวเหล่านี้คือการเพิ่ม testTag ลงในโหนดเป้าหมายโดยตรง อีกวิธีหนึ่งคือการใช้ตัวจับคู่ที่ยืดหยุ่นกว่า เช่น onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) (I638b5)

เวอร์ชัน 1.9.0-rc01

30 กรกฎาคม 2025

androidx.compose.ui:ui-*:1.9.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาที่ไอคอนซึ่งโหลดผ่าน painterResource ที่มีสีเฉพาะธีมไม่อัปเดตเมื่อมีการเปลี่ยนแปลงธีมของระบบ (I85ea0, b/424416571)
  • แก้ไขข้อผิดพลาดใน API 21(Lollipop) และ 28(Pie) ซึ่งมีการเปลี่ยนชื่อเมธอดกราฟิกที่สำคัญขณะเพิ่มประสิทธิภาพ (Iebf99, b/425120571, b/420462749)
  • ตรวจสอบว่าตัวแก้ไข onLayoutRectChanged ที่แทรกใหม่จะได้รับการเรียกกลับในตอนแรก (l9aa91), (lb348a)
  • แก้ไขการล้างข้อมูลแคชออฟเซ็ตอย่างไม่ถูกต้อง ซึ่งทำให้มีการเรียกใช้ตัวแก้ไข onLayoutRectChanged โดยใช้พิกัดที่ไม่ถูกต้อง (ibd4cd), (lddc57)
  • แก้ไขเลย์เอาต์ที่หมุน/เอียงซึ่งได้รับพิกัดไม่ถูกต้องโดยตัวแก้ไข onLayoutRectChanged (lddc57, b/426750475)

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

  • แก้ไขปัญหาที่dragAndDropSourceในLazyListหายไปเมื่อเลื่อน ขอขอบคุณ Victor Rendina (dc3bcd3, b/425894792)

เวอร์ชัน 1.9.0-beta03

16 กรกฎาคม 2025

androidx.compose.ui:ui-*:1.9.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta03 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาที่เงาด้านในที่เบลออย่างสม่ำเสมอไม่เคลื่อนที่อย่างถูกต้องเมื่อมีการออฟเซ็ต

เวอร์ชัน 1.9.0-beta02

2 กรกฎาคม 2025

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

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

  • เปลี่ยนออบเจ็กต์คู่เป็นเวอร์ชันทดลองเพื่อให้ตรงกับคลาส (I8452a)
  • นำ Flag การทดสอบ isTrackFocusEnabled (I003fd) ออกแล้ว

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

  • เมื่อไม่มีWindowInsetsการละเมิดเนื้อหาของComposeView ระบบจะไม่ระบุค่าWindowInsetsRulers (I71221)

เวอร์ชัน 1.9.0-beta01

18 มิถุนายน 2025

androidx.compose.ui:ui-*:1.9.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

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

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

  • เปลี่ยน ShadowContext ให้เป็นอินเทอร์เฟซที่ปิดผนึก (I3ce40)
  • เพิ่มวิธีข้ามโมดูลเพื่อสร้างเหตุการณ์สัมผัสทางอ้อม (สําหรับการทดสอบ) (I22e4c)
  • ทำให้IndirectTouchEvent.nativeEventเป็นเวอร์ชันทดลอง (I6fda5)
  • แก้ไขแพลตฟอร์ม API ตามความคิดเห็นของสภา API (Ibf378)
  • นำค่าคงที่ FrameRateCategory.NoPreference ออก เปลี่ยนชื่อ Modifier.requestedFrameRate เป็น Modifier.preferredFrameRate (I2f976)
  • WindowInsetsRulers: เปลี่ยน rulersIgnoringVisibility เป็นสูงสุด เปลี่ยน getDisplayCutoutBounds() ให้เป็นฟังก์ชันส่วนขยายของ PlacementScope WindowInsetsAnimationProperties เปลี่ยนเป็น WindowInsetsAnimation และ getAnimationProperties() เปลี่ยนเป็น getAnimation() แล้ว (I3816f)
  • เปลี่ยนชั้นเรียน ShadowParams เป็น Shadow (I11cca)
  • เปลี่ยนแพ็กเกจสำหรับ API อัตราเฟรมจาก androidx.compose.ui.ui เป็น androidx.compose.ui (I8994e)
  • เปลี่ยน InsetsRulers ให้เป็นโค้ดทั่วไปที่มีชื่อ WindowInsetsRulers ปรับ API ให้เรียบง่ายขึ้นเพื่อให้การแทรกทั้งหมดเป็น WindowInsetsRulers แยกพร็อพเพอร์ตี้ภาพเคลื่อนไหวที่ไม่ใช่กฎไปยังคลาส AnimationProperties WindowInsetsRulers.innermostOf() ใช้เพื่อผสาน WindowInsetsRulers หลายรายการได้ (I2f0c6, b/415012444)
  • เพิ่ม API เครื่องมือสำหรับการแยกวิเคราะห์ข้อมูลแหล่งที่มาที่คอมไพเลอร์ Compose เพิ่ม (Iceaf9, b/408492167)

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

  • เราได้นำธงสำหรับ isGetFocusedRectReturnEmptyEnabled ออกแล้วเนื่องจากตอนนี้ฟีเจอร์ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722)
  • แก้ไขข้อบกพร่องใน performScrollToNode ซึ่งในบางกรณีไม่ถึงโหนดเป้าหมาย การแก้ไขนี้จะช่วยให้การส่งต่อถึงโหนดเป้าหมายได้เสมอในกรณีดังกล่าว ผลข้างเคียงของการเปลี่ยนแปลงนี้คือตำแหน่งการเลื่อนที่แน่นอนเมื่อสิ้นสุดการดำเนินการอาจแตกต่างออกไป ซึ่งจะส่งผลต่อการทดสอบภาพหน้าจอและการทดสอบที่ตั้งสมมติฐานเกี่ยวกับตำแหน่งการเลื่อนที่แน่นอน (I2c8a1)

เวอร์ชัน 1.9.0-alpha04

4 มิถุนายน 2025

androidx.compose.ui:ui-*:1.9.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่ม API ตัวแก้ไขสำหรับเงาที่ปรับแต่งได้ (I2058d, b/160665122)
  • เพิ่มSemanticsModifierNode.isImportantForBoundsพร็อพเพอร์ตี้ที่กำหนดว่าควรนำโหนดมาพิจารณาเมื่อคำนวณขอบเขตหรือไม่ โดยค่าเริ่มต้น พร็อพเพอร์ตี้จะเป็นจริง และสามารถตั้งค่าเป็นเท็จเพื่อระบุว่าไม่ควรนำโหนดมาพิจารณาสำหรับขอบเขต (I7ebec)
  • เพิ่มSemanticsPropertyKeyฟังก์ชัน Factory สำหรับประกาศพร็อพเพอร์ตี้ความหมายเฉพาะของ Android ที่พร้อมใช้งานเป็นส่วนเสริมการช่วยเหลือพิเศษที่แสดงผ่าน AccessibilityNodeInfo.getExtras (I2ed51)
  • นำการใช้งาน ComposeUiFlags.isRemoveFocusedViewFixEnabled ออกและเลิกใช้งานฟีเจอร์นี้ (I50328)
  • เปิดตัวเฟรมเวิร์กเงาใหม่ที่ปรับแต่งได้ ซึ่งรวมถึง DropShadowPainter และ InnerShadowPainter รวมถึงการขึ้นต่อกันของ DropShadow/InnerShadow โครงสร้างพื้นฐานแบบเงาจะได้รับการแชร์เพื่อให้สามารถแชร์เงาที่สร้างขึ้นเดียวกันในตำแหน่งเรียกใช้หลายตำแหน่งได้โดยไม่ต้องสร้างเงาใหม่ n ครั้ง (I24f7a, b/160665122)
  • เปิดตัว CompositeShader และ CompositeShaderBrush ซึ่งสร้างผลลัพธ์ที่คอมโพสิตระหว่าง 2 เชเดอร์ นอกจากนี้ ให้เพิ่ม ShaderBrush#transform เพื่อตั้งค่าเมทริกซ์การเปลี่ยนรูปแบบสำหรับ Shader (I2621a, b/160665122)

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

  • แก้ไขข้อบกพร่องใน NestedScrollInteropConnection ซึ่งทำให้วิธีการปัดอยู่ในลำดับที่ไม่ถูกต้องเมื่อเทียบกับมุมมอง (I56ad4)
  • ก่อนหน้านี้ กล่องโต้ตอบที่วาดแบบเต็มหน้าจอจะไม่ได้วาดภายในภูมิภาครอยบากของจอแสดงผล เราได้แก้ไขข้อบกพร่องนี้เพื่อให้กล่องโต้ตอบที่มี decorFitsSystemWindows = false และ usePlatformDefaultWidth = false สามารถใช้พื้นที่หน้าจอรอยบากได้ (I9e975)
  • แก้ไขข้อบกพร่องที่TalkBackไม่วาดตัวบ่งชี้โฟกัสสีเขียวหลังจากเปิดใช้ขณะที่แอป Compose ทำงานในเบื้องหลัง (Ifd12a)

เวอร์ชัน 1.9.0-alpha03

20 พฤษภาคม 2025

androidx.compose.ui:ui-*:1.9.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

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

  • Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ใน ComposeView ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ ComposeView และ requestFocus() ไม่สำเร็จ (Ibd0e2, b/369256395)
  • ขอแนะนำฟีเจอร์แจ้งว่าไม่เหมาะสม isNestedScrollDispatcherNodeFixEnabled (I0d24a)
  • เปลี่ยนชื่อ DialogProperties' dialogContentTitle เป็น windowTitle (Ibd27b)
  • เราได้เปิดตัวตัวแก้ไข Modifier.onFirstVisible และ Modifier.onVisibilityChanged ซึ่งเป็นตัวแก้ไขระดับสูงที่สร้างขึ้นบน Modifier.onLayoutRectChanged ตัวแก้ไขเหล่านี้สร้างขึ้นมาเพื่อจัดการข้อกำหนดในการใช้งานทั่วไปจำนวนมากโดยเฉพาะ เช่น การบันทึกการแสดงผล การเล่นวิดีโออัตโนมัติ ฯลฯ โดยคำนึงถึงประสิทธิภาพเพื่อให้ใช้ในสถานการณ์ที่สำคัญซึ่งอิงตามรายการได้โดยไม่ต้องเสี่ยงต่อการลดประสิทธิภาพการเลื่อน นอกจาก API ตัวแก้ไขเหล่านี้แล้ว เรายังได้เพิ่ม API อื่นๆ เพื่อRelativeLayoutBounds เพื่อรองรับ Use Case เหล่านี้ รวมถึงช่วยให้นักพัฒนาแอปสร้างตัวแก้ไขที่กำหนดเองที่คล้ายกันซึ่งเหมาะกับ Use Case ของตนได้อย่างง่ายดาย (I759b8)
  • เปลี่ยน setDiagnosticStackTraceEnabled เป็น "ทดลอง" เพื่อรองรับการพัฒนาฟีเจอร์นี้ในอนาคต (I11db3)
  • เปิดตัว Modifier.scrollable2D, Scrollable2DState และ API ที่แสดงร่วมสำหรับการสร้างสถานะ นอกจากนี้ ยังได้เปิดตัวฟังก์ชันส่วนขยายการเลื่อนทั่วไปด้วย (Ic61c8, b/214410040)
  • ค่าสี Compose 64 บิตไม่สามารถเปรียบเทียบกับ Android ColorLongs ได้โดยตรงเนื่องจากรหัสพื้นที่สีบางรายการไม่ได้เรียงตามลำดับ เราได้เพิ่ม API ใหม่ 2 รายการ ได้แก่ toColorLong() และ fromColorLong() เพื่อใช้แปลงเป็นและจากพื้นที่สี Android (I36899)
  • เปิดตัว ViewConfiguration.minimumFlingVelocity เพื่อให้ควบคุมความเร็วในการปัดขอบเขตล่างได้ (I11aab)

เวอร์ชัน 1.9.0-alpha02

7 พฤษภาคม 2025

androidx.compose.ui:ui-*:1.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่ม dialogContentTitle ไปยัง DialogProperties ซึ่งจะตั้งค่าชื่อหน้าต่างเนื้อหา bf9d670

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

  • เราได้ปิดใช้ไม้บรรทัดขอบหน้าต่างชั่วคราวขณะแก้ไขการทดสอบภายใน 8d1402
  • แก้ไขวิธีเพิ่มการเปลี่ยนแปลงอินพุตของเคอร์เซอร์ใน VelocityTracker ใน DragGestureNode ซึ่งควบคุมได้ด้วยฟีเจอร์ใหม่ isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled254ddb

เวอร์ชัน 1.9.0-alpha01

23 เมษายน 2025

androidx.compose.ui:ui-*: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 ได้

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

  • นำ Flag ออกเพื่อเปิดใช้คำสั่ง Trace สำหรับเครื่องมือติดตามเส้นทาง Hit (แก้ไขข้อบกพร่อง) (I1b2a1)
  • เปลี่ยน InnerRectRulers และ OuterRectRules เป็นเมธอดแทน นำพารามิเตอร์ชื่อออกจาก RectRulers API สาธารณะ DerivedRulers เป็นตัวเลือกการสร้างสำหรับไม้บรรทัดแนวตั้งและแนวนอนแล้ว MergedHorizontalRulers และ MergedVerticalRulers ถูกแทนที่ด้วยเมธอด minOf และ maxOf เพื่อสร้างอินสแตนซ์ (Iee89f, b/408192133)
  • เลิกใช้งาน androidx.compose.ui.LocalSavedStateRegistryOwner เพื่อให้ใช้ androidx.savedstate.compose.LocalSavedStateRegistryOwner แทน (I5439f, b/377946781)
  • เพิ่ม Modifier.keepScreenOn เพื่อตั้งค่าให้จอแสดงผลไม่เข้าสู่โหมดพักขณะนำเสนอ (Ib5af4, b/408284174)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่ Shape ซึ่งอาจตั้งค่าได้เมื่อรูปร่างขององค์ประกอบ UI แตกต่างจากสี่เหลี่ยมผืนผ้าล้อมรอบ เช่น สี่เหลี่ยมผืนผ้าที่มีมุมโค้ง (I1376f)
  • แก้ไขปัญหาเกี่ยวกับการส่งต่อเหตุการณ์ของเคอร์เซอร์ใน AndroidViews และเพิ่ม Flag isPointerInteropFilterDispatchingFixEnabled เพื่อป้องกันการเปลี่ยนแปลง (I0e272, b/372055500, b/408002332)
  • FocusRestorer ไม่ปักหมุดรายการที่โฟกัสก่อนหน้านี้อีกต่อไป ผู้ใช้ควรใช้คีย์เพื่อให้แน่ใจว่ารายการที่โฟกัสก่อนหน้านี้มีแฮชองค์ประกอบเดียวกัน เพื่อให้ระบบคืนค่าโฟกัสได้สำเร็จ (I4203b, b/330696779)
  • อนุญาตให้ฟีเจอร์เขียนอีเมลทริกเกอร์ ViewTreeObserver.OnScrollChanged ลักษณะการทำงานนี้จะเปิดตัวภายใต้ฟีเจอร์ isOnScrollChangedCallbackEnabled นอกจากนี้ เรายังเปิดตัวฟังก์ชันส่วนขยายของ DelegatableNode dispatchOnScrollChanged ด้วย (I34b9d, b/238109286)
  • currentCompositeKeyHash เลิกใช้งานแล้ว โปรดใช้ currentCompositeKeyHashCode แทน API การแทนที่จะเข้ารหัสแฮชเดียวกันด้วยบิตที่มากขึ้น ซึ่งจะช่วยลดโอกาสที่กลุ่มแบบสุ่มที่ไม่เกี่ยวข้อง 2 กลุ่มในลำดับชั้นการจัดองค์ประกอบจะมีคีย์แฮชเดียวกันได้อย่างมาก (I4cb6a, b/177562901)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เพิ่มการรองรับการตรวจสอบ Lint สำหรับ FocusRequester เพื่อให้แน่ใจว่าระบบจะจดจำไว้ในการเขียน (I6bf91)
  • เพิ่มความสามารถในการตั้งค่าอัตราเฟรมที่ต้องการหรือหมวดหมู่อัตราเฟรมใน Composable ที่ควรแสดงที่ (Ie5201)
  • เปิดเผย MotionEvent ดั้งเดิมใน Android (I17286)
  • เพิ่ม getChecked() + setChecked(int) เลิกใช้งาน isChecked + setChecked(boolean) (Iaac9d)
  • ตอนนี้ตัวแก้ไข graphicsLayer ยอมรับ blendMode และ colorFilter (Iab0e6) แล้ว
  • เพิ่มLocalResourcesองค์ประกอบเฉพาะที่เพื่อค้นหาทรัพยากร การเรียกใช้ LocalResources.current จะสร้างใหม่เมื่อการกำหนดค่าเปลี่ยนแปลง ดังนั้นการเรียกใช้ API เช่น stringResource() จะแสดงค่าที่อัปเดตแล้ว (I50c13, b/274786917)
  • เปิดเผย API เวอร์ชันทดลองสำหรับ Composable เพื่อจัดการเหตุการณ์การแตะโดยอ้อม (Icff57)
  • รุ่นนี้ปรับปรุงการรายงานข้อยกเว้นที่ไม่ได้จัดการซึ่งเกิดขึ้นในระหว่างเลย์เอาต์และขั้นตอนการวาดของเนื้อหาที่ใช้ร่วมกันได้ ก่อนหน้านี้ ข้อยกเว้นที่ไม่ได้จัดการที่นี่จะทำให้โปรแกรมเรียกใช้การทดสอบขัดข้องและสิ้นสุดชุดโปรแกรมทดสอบก่อนเวลาอันควร ตอนนี้คุณสามารถรายงานข้อยกเว้นเหล่านี้ได้อย่างราบรื่นมากขึ้นโดยไม่ต้องสิ้นสุดชุดโปรแกรมทดสอบ (I9928b, b/314128080)
  • เลิกใช้งาน GlobalAssertions API เวอร์ชันทดลอง โดยมีวัตถุประสงค์เพื่อใช้ในการตรวจสอบการช่วยเหลือพิเศษ โปรดดูenableAccessibilityChecks() เพื่อวัตถุประสงค์ดังกล่าวแทน (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป และตอนนี้รองรับพารามิเตอร์ relativeToOriginal เพิ่มเติมซึ่งช่วยให้คุณใช้การเลือกกับข้อความเดิมที่ไม่ได้แปลงหรือข้อความที่แปลงแล้วก็ได้ (I3a905, b/261561038, b/277018945)
  • เปิดตัว API สำหรับสร้างรายการหัวข้อย่อยที่กำหนดเองผ่าน AnnotatedString (I1d066, b/383269496, b/139326648)
  • เลิกใช้งาน runWithTimingDisabled เพื่อใช้ runWithMeasurementDisabled แทน ซึ่งอธิบายลักษณะการทำงานได้ชัดเจนกว่า นั่นคือระบบจะหยุดเมตริกทั้งหมดชั่วคราว นอกจากนี้ ให้แสดง MicrobenchmarkScope คลาสแม่เนื่องจากไม่สามารถประกาศฟังก์ชัน runWithMeasurementDisabled อีกครั้งเพื่อเปิดการเข้าถึงได้เนื่องจากเป็นฟังก์ชันอินไลน์ (I9e23b, b/389149423, b/149979716)
  • อัปเดต API อุปกรณ์ ui-tooling ให้รวมอุปกรณ์รุ่นใหม่กว่า (Ia2ac1)
  • เพิ่มแท็บเล็ตแนวตั้งในคอลเล็กชันขนาดหน้าจอแสดงตัวอย่างเพื่อช่วยให้นักพัฒนาแอปพิจารณาหน้าต่างที่ใหญ่ขึ้น (Ia1976)
  • เปิดตัว Trace Value API สำหรับการทำเครื่องหมาย/บันทึกการติดตามด้วยค่า ณ จุดเวลาที่กำหนด ค่าการติดตามจะแสดงใน Prefetto เป็นเลนใหม่ที่ดูได้ผ่านไทม์ไลน์ของการติดตาม ใน Android จะมีการติดตั้งใช้งานโดยใช้ Trace.setCounter (Idcf48)

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

  • แก้ไขการเรียกใช้ฟังก์ชัน remember สำหรับ Observer ใน Composition ที่หยุดชั่วคราวได้เพื่อหลีกเลี่ยงการเรียกใช้ฟังก์ชัน remember/forget ในการเรียกใช้เดียวกัน (I570b2, b/404645679, b/407931790)
  • android:dialogTheme สามารถตั้งค่าเพื่อควบคุมพร็อพเพอร์ตี้ของกล่องโต้ตอบได้เมื่อ decorFitsSystemWindows เป็นเท็จ (I7922f, b/246909281)
  • แก้ไขข้อบกพร่องที่เหตุการณ์การเคลื่อนไหวที่ตรวจพบนอกกล่องโต้ตอบอาจปิดกล่องโต้ตอบได้ (Ia78fd)
  • ตอนนี้การตรวจสอบ Lint ของ Compose ต้องใช้ AGP เวอร์ชัน 8.8.2 ขั้นต่ำจากบรรทัดคำสั่ง และต้องใช้ Android Studio Ladybug อย่างน้อยสำหรับการรองรับ IDE หากใช้ AGP เวอร์ชันเก่า คุณสามารถตั้งค่า android.experimental.lint.version=8.8.2 ใน gradle.properties เพื่ออัปเกรดเวอร์ชัน Lint โดยไม่ส่งผลต่อ AGP (I6f2a8)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่ InputText ที่บันทึกค่าของ textfield ก่อนที่จะใช้การเปลี่ยนรูปแบบเอาต์พุต (Iae46a, b/395911609, b/176949051)
  • ย้าย enableAccessibilityChecks() API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหากซึ่งคือ compose:ui:ui-test-accessibility หากคุณไม่ได้ใช้ TestRule และ compose:ui:ui-test-junit4-accessibility เมื่อเรียกใช้ TestRule (I3c318, b/391560768)
  • เพิ่มการรองรับการเขียนสแต็กเทรซใน LaunchedEffect และ rememberCoroutineScope (I705c0, b/354163858)

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

  • การเปลี่ยนแปลงฟังก์ชันrunComposeUiTestเวอร์ชันทดลองเพื่อยอมรับการบล็อกการระงับ นอกจากนี้ ยังได้เพิ่มฟังก์ชัน runComposeUiTest ที่เลิกใช้งานแล้วเพื่อความเข้ากันได้แบบไบนารี (I3b88c, b/361577328)

เวอร์ชัน 1.8

เวอร์ชัน 1.8.3

18 มิถุนายน 2025

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

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

  • เราได้นำธงสำหรับ isGetFocusedRectReturnEmptyEnabled ออกแล้วเนื่องจากตอนนี้ฟีเจอร์ได้รับการยืนยันอย่างสมบูรณ์แล้ว (Ife722)
  • Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ทำให้เมื่อไม่มีอะไรที่โฟกัสได้ใน ComposeView ระบบจะตั้งค่า Rect เป็นค่าว่าง ซึ่งจะป้องกันไม่ให้การค้นหาโฟกัสเลือกมุมมองที่จะโฟกัส ซึ่งมีความสำคัญอย่างยิ่งในกรณีที่ IME มีตัวเลือกถัดไปและอาจพยายามโฟกัสที่ ComposeView แต่ requestFocus() ไม่สำเร็จ (Ibd0e2, b/369256395)

เวอร์ชัน 1.8.2

20 พฤษภาคม 2025

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

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

  • แก้ไข NPE เมื่อมีการนำกล่องโต้ตอบออกในระหว่างสตรีมเหตุการณ์ที่ใช้งานอยู่ในกล่องโต้ตอบ (6a7e7f)
  • แก้ไขปัญหาที่ onLayoutRectChange ไม่อัปเดตตามไทม์ไลน์ที่ถูกจำกัดเมื่อมีการอัปเดตแบบวาดอย่างเดียว (03b82d)

เวอร์ชัน 1.8.1

7 พฤษภาคม 2025

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

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

  • แก้ไขปัญหาบางอย่างเกี่ยวกับ onLayoutRectChanged และ LazyLayout d791b11
  • ข้ามคำขอวัดซ้ำสำหรับรายการที่สร้างไว้ล่วงหน้า ข้อบกพร่องนี้ส่งผลต่อประสิทธิภาพการเลื่อนเลย์เอาต์แบบ Lazy เนื่องจากในบางกรณีการดึงข้อมูลล่วงหน้าทำงานได้อย่างไม่มีประสิทธิภาพ และการวัดผลเกิดขึ้นภายในเฟรม 742087a

เวอร์ชัน 1.8.0

23 เมษายน 2025

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

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

  • Compose 1.8 มีการรองรับการเติมข้อความอัตโนมัติเชิงความหมายที่เพิ่มเข้ามาใหม่ ตรวจสอบว่า UI และ Foundation ที่คุณใช้เป็นเวอร์ชัน 1.8 ขึ้นไป เนื่องจากการป้อนข้อความอัตโนมัติสำหรับคอมโพเนนต์ข้อความต้องใช้ทั้ง 2 โมดูลเวอร์ชันล่าสุด ดูรายละเอียดการใช้งาน API และตัวอย่างได้ในเอกสารประกอบเกี่ยวกับการป้อนข้อความอัตโนมัติที่นี่
  • Compose 1.8 รองรับการตอบสนองแบบรู้สึกได้เพิ่มเติม ได้แก่ Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey ซึ่งเข้าถึงได้ผ่าน LocalHapticFeedback และใน Android จะพร้อมใช้งานโดยค่าเริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการโต้ตอบการสัมผัส
  • ตอนนี้ Focus API หลายรายการเสถียรแล้ว ซึ่งรวมถึง Modifier.focusRestorer() และ onEnter และ onExit FocusProperties (I6e667) ตอนนี้คุณระบุ FocusDirection ได้แล้วเมื่อโทรหา requestFocus เราได้เพิ่ม requestFocus(FocusDirection) API ลงในทั้ง focusRequester และ FocusTargetModifierNode เพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

เวอร์ชัน 1.8.0-rc03

9 เมษายน 2025

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

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

เวอร์ชัน 1.8.0-rc02

26 มีนาคม 2025

androidx.compose.ui:ui-*:1.8.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-rc02 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาที่มุมมองที่โฟกัสซึ่งฝังอยู่ในลำดับชั้นของ Compose จะทำให้เกิดการจัดองค์ประกอบแบบ Re-entrant เมื่อนำมุมมองที่โฟกัสออกจาก LazyList (765562)

เวอร์ชัน 1.8.0-rc01

12 มีนาคม 2025

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

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

  • แก้ไขข้อขัดข้องเมื่อนำ AndroidView ที่โฟกัสอยู่ออกขณะที่แป้นพิมพ์เสมือนทำงานอยู่ (Ic725a)
  • แก้ไขปัญหาบางอย่างในการติดตั้งใช้งานการจัดการสถานะโฟกัสใหม่ (b/395895685)
  • แก้ไขปัญหาที่บล็อกการป้อนข้อความอัตโนมัติเมื่อใช้ LaunchedEffect เพื่อขอโฟกัสในช่องข้อความ (b/392539099)

เวอร์ชัน 1.8.0-beta03

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

androidx.compose.ui:ui-*:1.8.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta03 มีการเปลี่ยนแปลงเหล่านี้

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

  • ย้าย enableAccessibilityChecks() API ที่เปิดการตรวจสอบการช่วยเหลือพิเศษสำหรับ Android ไปยังแพ็กเกจแยกต่างหากซึ่งคือ compose:ui:ui-test-accessibility หากคุณไม่ได้ใช้ TestRule และ compose:ui:ui-test-junit4-accessibility เมื่อเรียกใช้ใน TestRule (I547ef, b/391560768)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายใหม่ InputText ที่บันทึกค่าของช่องข้อความก่อนที่จะใช้การแปลงเอาต์พุต (Iae46a)

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

  • แก้ไขปัญหาที่ทำให้บริการป้อนข้อความอัตโนมัติบันทึกข้อความเอาต์พุตที่แปลงแล้วแทนที่จะเป็นข้อความอินพุต (Iae46a, b/395911609, b/176949051)

เวอร์ชัน 1.8.0-beta02

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

androidx.compose.ui:ui-*:1.8.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการตรวจสอบ Lint เพื่อเตือนการเรียกใช้ Configuration#screenWidth/heightDp - LocalWindowInfo.current.containerSize สามารถใช้แทนเพื่อดึงขนาดหน้าต่างปัจจุบันได้

เวอร์ชัน 1.8.0-beta01

29 มกราคม 2025

androidx.compose.ui:ui-*:1.8.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

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

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

  • แก้ไขปัญหาโฟกัสที่ requestFocus() ที่มีพารามิเตอร์ previouslyFocusedRect ที่ไม่สมเหตุสมผล (เกี่ยวข้องกับทิศทางโฟกัส) จะข้าม ComposeView (Ifdc2f, b/388590015)
  • แก้ไข NPE ที่เกิดขึ้นเป็นครั้งคราวเมื่อใช้ GraphicsLayer.record { this@ContentDrawScope.drawContent() } หากคุณบันทึก drawContent() ด้วยวิธีนี้ โปรดตรวจสอบว่าได้ใช้ฟังก์ชันส่วนขยาย GraphicsLayer#record ภายใน DrawScope และไม่ได้ใช้ฟังก์ชันสมาชิกใน GraphicsLayer (I75fc0, b/389046242)
  • แก้ไขเลย์เอาต์ข้อความที่มีจุดไข่ปลาซึ่งบางครั้งแปลไม่ถูกต้องระหว่างภาพเคลื่อนไหว ดูข้อมูลเพิ่มเติมได้ที่ b/389707025 (Ie55b1, b/389707025)

เวอร์ชัน 1.8.0-alpha08

15 มกราคม 2025

androidx.compose.ui:ui-*:1.8.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

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

  • ทำให้ AutofillManager เป็นคลาสแบบนามธรรม (I0a3b0)
  • แก้ไขปัญหาที่เกี่ยวข้องกับโฟกัสหลายอย่าง รวมถึงปัญหาแอปขัดข้องเมื่อ IME พยายามโฟกัสที่ ComposeView โดยไม่มีรายการที่โฟกัสได้ การเปลี่ยนโฟกัสภายใน AndroidViews ขององค์ประกอบย่อย และคำขอโฟกัสที่ทำให้ AndroidView ค้างอยู่ (Ia03c3, b/369256395, b/378570682, b/376142752)
  • เปลี่ยน FocusEnterExitScope.cancelFocus() เป็น cancelFocusChange() (I89959)
  • ตอนนี้คุณสามารถคำนวณการบดบังที่ประกอบได้ด้วย RectInfo.calculateOcclusions()
  • เพิ่มฟังก์ชันส่วนขยายใน DelegatableNode เพื่อลงทะเบียน Listener สำหรับการเปลี่ยนแปลงเลย์เอาต์ส่วนกลาง (I68b59)

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

  • กิจกรรมที่ใช้เป็นโฮสต์สำหรับ Composable ที่อยู่ภายใต้การทดสอบเมื่อใช้ ComposeContentTestRule.setContent จะใช้ธีม Theme.Material.Light.NoActionBar เพื่อหลีกเลี่ยงไม่ให้ ActionBar ทับซ้อนกับเนื้อหาการทดสอบเมื่อกำหนดเป้าหมายเป็น SDK 35 หากต้องการเลือกไม่ใช้ลักษณะการทำงานนี้ คุณสามารถนำทรัพยากร Dependency ใน ui-test-manifest ออก และเพิ่มรายการกิจกรรมใน AndroidManifest.xml ของแอปทดสอบสำหรับ ComponentActivity ด้วยธีมที่คุณเลือก (I7ae1b, b/383368165)
  • ตอนนี้แบบอักษรของทรัพยากรที่มีการตั้งค่ารูปแบบเดียวกันจะหลีกเลี่ยงการแคชมากเกินไป ซึ่งทำให้มีการใช้การตั้งค่ารูปแบบที่ไม่ถูกต้อง (If3dff, b/372044241)
  • AnnotatedString.fromHtml รองรับแท็ก <ul>/<li> แล้ว (I7c2fe, b/299662276, b/139326648)

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

  • เพิ่มอินเทอร์เฟซคลิปบอร์ดใหม่และองค์ประกอบในเครื่องสำหรับการใช้งาน (I80809)

เวอร์ชัน 1.8.0-alpha07

11 ธันวาคม 2024

androidx.compose.ui:ui-*:1.8.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปิดเผยเจ้าของจาก LayoutNode สำหรับเครื่องมือ (I26f7f)
  • มีLocalAutofillHighlightColor องค์ประกอบการใช้งานในพื้นที่เป็นประเภทสี (I0e05b)
  • คงสถานะ UrlAnnotation ที่เลิกใช้งานแล้วและวิธีการของคลาสนี้เป็นสถานะทดลอง (Ic0021)

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

  • แก้ไขข้อขัดข้อง IndexOutOfBoundsException เมื่อใช้ LinkAnnotation ภายใน BasicText หรือ Text composable (be7605, b/374115892)
  • แก้ไขปัญหาที่ช่องข้อความที่กรอกซึ่งมีรูปร่างที่กำหนดเองไม่ได้ตัดเส้นตัวบ่งชี้ (I4f87f, b/380704151)
  • แก้ไขพื้นหลังที่ขาดหายไปเมื่อใช้ภาพหน้าจอยาว (I4d57a)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Idfef8, b/326456246)
  • อัปเดตการรองรับ Compose สำหรับสีแบบ Wide Gamut และ HDR เมื่อเรียกใช้ใน Android Q ขึ้นไป (Icd8be, b/379135036)
  • ตอนนี้แบบอักษรของทรัพยากรที่โหลดไม่สำเร็จจะเปลี่ยนไปใช้แบบอักษรเริ่มต้นโดยไม่มีการแจ้งเตือนแทนที่จะแสดงข้อยกเว้นในหน่วยวัดเหมือนก่อนหน้า (Ib6a49)
  • แก้ไขปัญหาโฟกัสหายไปเมื่อAndroidViewถูกแยกออกและติดใหม่ (I53446)
  • ยอมรับ requestFocus() จากการดำเนินการเลย์เอาต์ที่อยู่นอกขอบเขต (Ia8461)

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

  • เพิ่ม BringIntoViewResponderModifierNode ลงใน UI ซึ่งจะช่วยให้มีวิธีใหม่ในการใช้ฟังก์ชันการทำงาน "นำมาแสดง" รวมถึงอนุญาตให้ใช้ในระดับแพลตฟอร์ม (Ia6dd8)

เวอร์ชัน 1.8.0-alpha06

13 พฤศจิกายน 2024

androidx.compose.ui:ui-*:1.8.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มตัวปรับแต่ง stylusHoverIcon (Iff20a, b/331289114)
  • เปลี่ยนเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้เป็นอินเทอร์เฟซ (I84914, b/376080755)
  • เพิ่ม requestFocus(FocusDirection) ให้กับทั้ง focusRequester และ FocusTargetModifierNode เพื่อให้โฟกัสไปในทิศทางที่เฉพาะเจาะจงได้ (I5d9ec, b/245755256)
  • FocusProperties.enter และ FocusProperties.exit ถูกแทนที่ด้วย onEnter และ onExit โดยใช้ขอบเขตผู้รับแทนพารามิเตอร์ FocusDirection (I6e667)
  • เพิ่มการรองรับการป้อนข้อความอัตโนมัติในแถบเครื่องมือข้อความ (Ie6a4c)
  • การเปลี่ยนแปลง API ใน Modifier.focusRestorer() (I99c03)
    • เปลี่ยนชื่อพารามิเตอร์เป็น "fallback"
    • ตอนนี้พารามิเตอร์คือ FocusRequester ไม่ใช่ Lambda
    • ตอนนี้พารามิเตอร์เป็นแบบไม่เป็นค่าว่าง โดยมีค่าเริ่มต้นเป็น "ค่าเริ่มต้น"
  • นำคำอธิบายประกอบ @Experimental ออกจากอินเทอร์เฟซของเครื่องมือจัดการการป้อนข้อความอัตโนมัติ ฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนาเพื่อกำหนดเป้าหมายการเปิดตัวนี้ แต่เราไม่ต้องการเปิดตัว @Expemiental API (Id8398)
  • ตอนนี้ LocalHapticFeedback มีการใช้งาน HapticFeedback เริ่มต้นเมื่อ Vibrator API ระบุว่ารองรับการโต้ตอบการสัมผัส เราได้เพิ่มรายการต่อไปนี้ลงใน HapticFeedbackType - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey ตอนนี้คอมโพเนนต์ที่คลิกค้างได้ของ Wear Compose เช่น Button, IconButton, TextButton และ Card จะแสดงการสั่นLONG_PRESS เมื่อมีการระบุตัวแฮนเดิลการคลิกค้าง (I5083d)
  • นำ OverscrollConfiguration และ LocalOverscrollConfiguration ออก และเพิ่ม rememberPlatformOverscrollFactory เพื่อสร้างอินสแตนซ์ของ / ปรับแต่งพารามิเตอร์ของการใช้งานการเลื่อนเกินเริ่มต้น หากต้องการปิดใช้การเลื่อนเกิน ให้ใช้ LocalOverscrollFactory provides null แทน LocalOverscrollConfiguration provides null หากต้องการเปลี่ยนสีเรืองแสง / ระยะขอบ ให้ใช้ LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) แทน LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) (Ie71f9, b/255554340, b/234451516)
  • นํา GlobalAssertions API เวอร์ชันทดลองออกแล้ว โดยมีวัตถุประสงค์เพื่อใช้ในการเรียกใช้การตรวจสอบการช่วยเหลือพิเศษ โปรดดู enableAccessibilityChecks() เพื่อวัตถุประสงค์ดังกล่าวแทน (I59322)

เวอร์ชัน 1.8.0-alpha05

30 ตุลาคม 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

ฟีเจอร์ป้อนข้อความอัตโนมัติจะแสดงอยู่หลังแฟล็กฟีเจอร์ในรุ่นนี้ เรากำลังดำเนินการปรับปรุงประสิทธิภาพและต้องการรับความคิดเห็นเบื้องต้นเกี่ยวกับ API เราคาดว่า API จะได้รับการพัฒนาให้เสถียรยิ่งขึ้นโดยอิงตามความคิดเห็น

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

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

  • แก้ไขอินเทอร์เฟซการป้อนข้อความอัตโนมัติให้เป็นไปตามโครงสร้าง expect/actual (I22dce)
  • เปิดตัว CompositionLocal ที่ใช้เพื่อแก้ไขเฉดสีของไฮไลต์การป้อนข้อความอัตโนมัติที่สำเร็จ (I32092)
  • เพิ่ม Modifier.onRectChanged API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของ LayoutNode API นี้แก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไข onGloballyPositioned ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่น้อยกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมการเรียกกลับตามที่ Use Case ต้องการ (Id28c7, b/372765423, b/372757007, b/372994338)
  • ขยายเครื่องมือจัดการการป้อนข้อความอัตโนมัติให้รวม API ของ commit() และ cancel() ที่ช่วยให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบที่ป้อนใหม่ได้ (I2da00)
  • เปิดตัวAutofillManagerอินเทอร์เฟซใหม่ที่ใช้ปรับแต่งเส้นทางการป้อนข้อความอัตโนมัติของผู้ใช้ได้ และisSemanticAutofillEnabledฟีเจอร์ที่ใช้เปิดใช้การป้อนข้อความอัตโนมัติเวอร์ชันใหม่นี้ (I9d484)
  • เพิ่ม Modifier.onRectChanged API ซึ่งเป็น API ที่อนุญาตให้ผู้ใช้สมัครรับข้อมูลตำแหน่งและขนาดที่สัมพันธ์กับรูท/หน้าต่าง/หน้าจอของ LayoutNode API นี้แก้ปัญหา Use Case หลายอย่างที่ตัวแก้ไข onGloballyPositioned ที่มีอยู่ทำได้ แต่ API นี้มีค่าใช้จ่ายที่น้อยกว่ามาก และมีสิ่งอำนวยความสะดวกในการดีบาวซ์และการควบคุมการเรียกกลับตามที่ Use Case ต้องการ (I3c8fa)
  • เพิ่มพร็อพเพอร์ตี้เชิงความหมายและประเภทข้อมูลเพื่อรองรับการป้อนข้อความอัตโนมัติเพิ่มเติม (I52c7d)
  • ตอนนี้เมธอดทั้งหมดในเครื่องมือสร้าง AnnotatedString ไม่ใช่เวอร์ชันทดลองแล้ว (Ia89c8, b/261561823)

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

  • ตอนนี้มุมมองที่ฝังใน Compose สามารถรับเหตุการณ์หมุนได้หากมีการโฟกัส (I4d53a, b/320510084)
  • แก้ไขปัญหาที่ทรัพยากรประเภทต่างๆ จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (Ia9b99, b/352336694)
  • แก้ไขปัญหาที่ทำให้ TextField ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (Ia9b99, b/373743376)
  • แก้ไขปัญหาเกี่ยวกับกล่องโต้ตอบที่แสดงที่ด้านล่างของหน้าจอแทนที่จะอยู่ตรงกลาง (Ia2ec, b/373093006)
  • การกำหนดเป้าหมาย API 35 ขึ้นไปจะไม่บังคับให้กล่องโต้ตอบมี decorFitsSystemWindows ตั้งค่าเป็น false อีกต่อไป (Ibc94, b/364492593)
  • แก้ไขข้อขัดข้องเมื่อย้ายเลเยอร์ระหว่างหน้าต่าง (เช่น กล่องโต้ตอบและเนื้อหาหลัก) (I675ba, b/330955281)

เวอร์ชัน 1.8.0-alpha04

16 ตุลาคม 2024

androidx.compose.ui:ui-*:1.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มการเรียกกลับ DelegatableNode#onDensityChange และ DelegatableNode#onLayoutDirectionChange เพื่ออนุญาตให้อัปเดตสถานะโหนดเมื่อมีการเปลี่ยนแปลง (I04f3e, b/340662451)
  • เพิ่ม WindowInfo#containerSize เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน โดยสามารถดึงข้อมูลนี้ได้โดยใช้ LocalWindowInfo (Idc38c, b/369334429, b/360343819)
  • เปิดตัวการแก้ไขสำหรับรายการที่เลื่อนได้แบบซ้อนกันซึ่งถูกนำออกจากแผนผังโหนดระหว่างการปัดที่กำลังดำเนินการอยู่ ตอนนี้โหนดเหล่านี้จะยกเลิกการส่งและส่งเหตุการณ์ onPostFling อย่างถูกต้องด้วยความเร็วที่เหลือ นอกจากนี้ เรายังเปิดตัวฟีเจอร์ NewNestedScrollFlingDispatchingEnabled เพื่อควบคุมลักษณะการทำงานในกรณีที่เกิดการถดถอย เราจะนำฟีเจอร์นี้ออกก่อนเปิดตัวเวอร์ชันเบต้า (I05c37, b/371168883)
  • เปิดตัว PointerInputModifierNode#touchBoundsExpansion ซึ่งใช้เพื่อขยายขอบเขตการแตะของตัวแก้ไขอินพุตพอยน์เตอร์เดียวได้ (Iccf02, b/335339283)
  • เพิ่ม WindowInfo#containerSize เพื่อระบุขนาดคอนเทนเนอร์เนื้อหาของหน้าต่างปัจจุบัน โดยสามารถดึงข้อมูลนี้ได้โดยใช้ LocalWindowInfo (I27767, b/369334429, b/360343819)
  • นำ readOnly ออกจาก TextFields เพื่อปักหมุดเวอร์ชันพื้นฐานที่เสถียร (I3aaba)
  • ตอนนี้ Paragraph และ ParagraphIntrinsics จะใช้รายการคำอธิบายประกอบทั้งหมดที่ใช้กับ AnnotatedString ก่อนหน้านี้มีเพียงรายการ SpanStyles (I12f80)

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

  • อัปเดตวิธีจัดการย่อหน้าใน AnnotatedString ก่อนหน้านี้คุณสร้างได้เฉพาะย่อหน้าที่ไม่ทับซ้อนกัน ตอนนี้ AnnotatedString อนุญาตให้ย่อหน้าที่ทับซ้อนกันอย่างสมบูรณ์ซึ่งจะผสานรวมกัน และย่อหน้าที่ซ้อนกันในกรณีที่ย่อหน้าด้านนอกจะแยกตามขอบเขตของย่อหน้าด้านใน และรูปแบบของย่อหน้าด้านในจะผสานรวมกับรูปแบบของย่อหน้าด้านนอก (Ic9554)
  • แก้ไขข้อขัดข้องใน AnnotatedString ด้วย LinkAnnotation ที่มีความยาวเป็น 0 (89aac6)

เวอร์ชัน 1.8.0-alpha03

2 ตุลาคม 2024

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

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

  • อัปเดต Kotlin เป็นเวอร์ชัน 1.9 (I1a14c)
  • เปิดตัวบทบาทเชิงความหมายใหม่ที่เรียกว่า Carousel เพื่อจำลองลักษณะการทำงานของรายการใน Pager สำหรับบริการ a11y (Id354b, b/354109776, b/239672673)
  • เปลี่ยนชื่อ invisibleToUser() เป็น hideFromAccessibility ฟังก์ชันการทำงานจะยังคงเหมือนเดิม ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบ (Ib43a3)

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

  • อัปเดตเอกสารสำหรับตัวแก้ไข SensitiveContent (Ib0442)
  • แก้ไขปัญหาที่ระบบจะไม่สนใจคลิป Outline ทั่วไปบางรายการเมื่อใช้ร่วมกับเงาความสูงใน Android บางเวอร์ชัน
  • แก้ไขปัญหาที่ระบบจะใช้คลิปเปล่าเมื่อมีการระบุคลิปโครงร่างทั่วไปใน Android บางเวอร์ชัน
  • แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน ComposeView clearFocus() มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่ง clearFocus() อาจทำให้ View เริ่มต้นได้รับการโฟกัส
  • แก้ไขปัญหาที่การวางเกิดขึ้นในโหนดที่แยกออกมาใน LazyList โดยแยกการจัดการองค์ประกอบย่อยสำหรับการส่งผ่านเลย์เอาต์ต่างๆ
  • แก้ไขปัญหาที่แป้นพิมพ์ซอฟต์แวร์กะพริบเมื่อโฟกัสเปลี่ยนจาก TextField เป็น EditText หรือโปรแกรมแก้ไขอื่นๆ ที่อิงตามมุมมอง
  • ตอนนี้โหนด Nested Scroll จะส่งเหตุการณ์ onPostFling อย่างถูกต้องหลังจากที่แยกออกแล้ว
  • การปรับปรุงประสิทธิภาพทั่วไป

เวอร์ชัน 1.8.0-alpha02

18 กันยายน 2024

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

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

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

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

  • แก้ไขกล่องโต้ตอบ dismissOnClickoutside (39a3d, b/364508685)
  • อย่าตัดเงาของเนื้อหาในกล่องโต้ตอบ (e8e2f, b/363027803)
  • แก้ไขลักษณะการทำงานที่ไม่ถูกต้องเมื่อการค้นหาโฟกัสย้ายระหว่างการเขียนและการดู (58377, b/350534714)

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

  • ตอนนี้ AlignmentLines Map ยอมรับคอนกรีตประเภท VerticalAlignmentLine หรือ HorizontalAlignmentLine แล้ว (I02912)
  • วิธีByteArray.decodeToImageBitmap(): ImageBitmapใหม่ที่ใช้กันโดยทั่วไป (I83c21)

เวอร์ชัน 1.8.0-alpha01

4 กันยายน 2024

androidx.compose.ui:ui-*:1.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.8.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.7

เวอร์ชัน 1.7.8

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

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

เวอร์ชัน 1.7.7

29 มกราคม 2025

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

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

  • แก้ไข IndexOutOfBoundsException เมื่อส่ง AnnotatedString ที่มี LinkAnnotation ไปยัง Composable ของข้อความ (Ic96d2)
  • แก้ไขปัญหาการหมดเวลาในการทดสอบในบางกรณีที่เกิดขึ้นไม่บ่อยนักเมื่อใช้ LinkAnnotation ใน AnnotatedString (I04a03)

เวอร์ชัน 1.7.6

11 ธันวาคม 2024

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

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

  • ก่อนหน้านี้เราเคยแสดงข้อผิดพลาดทุกครั้งที่พบเหตุการณ์สําคัญเมื่อระบบโฟกัสมีการลบล้างที่รอดําเนินการ ตอนนี้เราจะบันทึกข้อผิดพลาดแทน (I7ea0, b/346370327)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก SemanticsPropertyReceiver.invisibleToUser() แล้ว โดยจะเลิกใช้งานในเวอร์ชัน 1.8 และแทนที่ด้วย SemanticsPropertyReceiver.hideFromAccessibility() (I448f0, b/376479686)
  • แก้ไขปัญหาที่ทำให้ TextField ทำงานไม่ถูกต้องเมื่อใช้แป้นพิมพ์ภาษาญี่ปุ่น POBox ในอุปกรณ์ Sony รุ่นเก่าบางรุ่น (I94e0e, b/373743376)
  • แก้ไขปัญหาด้านการช่วยเหลือพิเศษที่ BasicText ไม่ได้ประกาศ inlineContent ของ TalkBack (I67bcb, b/376479686)

เวอร์ชัน 1.7.5

30 ตุลาคม 2024

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

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

  • แก้ไขปัญหาที่การยกระดับและการตัดด้วยเส้นขอบที่กำหนดเองแสดงผลไม่ถูกต้อง
  • แก้ไขข้อความขัดข้องที่เกิดขึ้นกับ LinkAnnotation ที่มีความกว้างเป็น 0 (Ic1e2e)
  • แก้ไขประกาศใน Talkback ของปุ่มเมื่อสร้างเป็น Text composable ที่คลิกได้ (I1f588)

เวอร์ชัน 1.7.4

16 ตุลาคม 2024

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

เวอร์ชัน 1.7.3

2 ตุลาคม 2024

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

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

  • แก้ไขปัญหาที่การระบุคลิป Outline ทั่วไปจะทําให้ขอบเขตคลิปว่างใน Android บางเวอร์ชัน
  • แก้ไขข้อยกเว้นที่เกิดขึ้นเมื่อ IME ทำงานใน View ภายนอกและใช้การดำเนินการถัดไปเพื่อเข้าสู่โฟกัสใน ComposeView clearFocus() มีลักษณะการทำงานสอดคล้องกับลักษณะการทำงานของ View ใน API < 28 ซึ่ง clearFocus() อาจทำให้ View เริ่มต้นได้รับการโฟกัส
  • แก้ไขปัญหาที่ใช้ placeOrder ไม่ถูกต้องสำหรับการลบล้างการคาดการณ์ จึงแก้ไขกรณีขอบที่ข้ามการวางโฆษณาแบบคาดการณ์

เวอร์ชัน 1.7.2

18 กันยายน 2024

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

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

  • ปรับปรุงประสิทธิภาพของข้อมูลโหนดการช่วยเหลือพิเศษและเหตุการณ์ความหมายโดยการนำการติดตามแบบละเอียดออก (I89156, b/362530618)
  • ComposeView จะไม่ขัดข้องอีกต่อไปเมื่อส่งขนาดการวัดที่ใหญ่มากเป็นพิเศษ (da5db, b/347036173)
  • แก้ไขปัญหาโปรแกรมอ่านหน้าจอสำหรับการช่วยเหลือพิเศษที่LiveRegion ไม่ประกาศบนปุ่ม (f66fa7, b/348590026)

เวอร์ชัน 1.7.1

10 กันยายน 2024

  • ไม่มีการเปลี่ยนแปลงอาร์ติแฟกต์ Android ระบบได้นำอาร์ติแฟกต์ -desktop ออกแล้ว และเพิ่มอาร์ติแฟกต์ -jvmStubs และ -linuxx64Stubs เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้

เวอร์ชัน 1.7.0

4 กันยายน 2024

androidx.compose.ui:ui-*:1.7.0 ได้รับการเผยแพร่แล้ว

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

การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 1.7.0 จะกล่าวถึงในบล็อกโพสต์นี้

เวอร์ชัน 1.7.0-rc01

21 สิงหาคม 2024

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

การเปลี่ยนแปลงที่สำคัญ

  • ตอนนี้โมดูล ui:ui จะบังคับให้ต้องใช้ foundation:foundation เวอร์ชันขั้นต่ำเป็น 1.7.0-rc01 ขึ้นไป การบังคับใช้ครั้งนี้มีขึ้นเพื่อแก้ไขความไม่เข้ากันของลักษณะการทำงานระหว่าง UI กับ Foundation ในส่วนของการเปลี่ยนแปลง NestedScrollSource ที่เกิดขึ้นในช่วงต้นของ 1.7.0-alpha01

เวอร์ชัน 1.7.0-beta07

7 สิงหาคม 2024

androidx.compose.ui:ui-*:1.7.0-beta07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta07 มีการเปลี่ยนแปลงเหล่านี้

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

  • ตอนนี้อินพุตข้อความที่เกี่ยวข้องกับSemanticsNodeInteractionฟังก์ชันperformTextReplacement performTextInput และ performTextClearance จะแสดงข้อผิดพลาดในการยืนยันเมื่อมีการเรียกใช้ใน TextFields แบบอ่านอย่างเดียว (I4ae8f)

เวอร์ชัน 1.7.0-beta06

24 กรกฎาคม 2024

androidx.compose.ui:ui-*:1.7.0-beta06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta06 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.7.0-beta05

10 กรกฎาคม 2024

androidx.compose.ui:ui-*:1.7.0-beta05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta05 มีการเปลี่ยนแปลงเหล่านี้

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

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

เวอร์ชัน 1.7.0-beta04

26 มิถุนายน 2024

androidx.compose.ui:ui-*:1.7.0-beta04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta04 มีการเปลี่ยนแปลงเหล่านี้

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

  • หลีกเลี่ยงการขัดข้องเมื่อวัดบรรทัดข้อความขนาดใหญ่มาก (เช่น 10,000 อักขระ) (8157ab)
  • ปิดใช้การรองรับการแสดงผลซอฟต์แวร์สำหรับ GraphicsLayer API (35ddd8)
  • แก้ไขการขัดข้องในตรรกะการคงอยู่ของเลเยอร์ (70b13e)
  • เราได้เปลี่ยนกลับการเพิ่มประสิทธิภาพการใช้ออบเจ็กต์เลเยอร์ซ้ำ เนื่องจากทำให้เกิดปัญหาในการแสดงผล (70b13e)

เวอร์ชัน 1.7.0-beta03

12 มิถุนายน 2024

androidx.compose.ui:ui-*:1.7.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta03 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.7.0-beta02

29 พฤษภาคม 2024

androidx.compose.ui:ui-*:1.7.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปลี่ยนชื่อ SemanticsProperties.Editable เป็น IsEditable และเปลี่ยน SemanticsPropertyReceiver.editable เป็นค่า isEditable ตอนนี้พร็อพเพอร์ตี้เป็นบูลีนและระบุโดยช่องข้อความเสมอ (I8acd8)
  • เปลี่ยนชื่อพารามิเตอร์การเปรียบเทียบการช่วยเหลือพิเศษ (I3d440)
  • อัปเดต API สำหรับการจัดรูปแบบลิงก์: ตอนนี้ TextLinkStyles เป็นส่วนหนึ่งของตัวสร้าง LinkAnnotation และเมธอด AnnotatedString.fromHtml (I90b2b) แล้ว นอกจากนี้ ยังนำ TextDefaults ออกจากเนื้อหา (I5477b)

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

  • เปลี่ยนชื่อ LayoutCoordinates.introducesFrameOfReference เป็น LayoutCoordinates.introducesMotionFrameOfReference เพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น เปลี่ยนชื่อฟังก์ชันที่เกี่ยวข้องเพื่อคำนวณพิกัดตามธงนั้น (I3a330)

เวอร์ชัน 1.7.0-beta01

14 พฤษภาคม 2024

androidx.compose.ui:ui-*:1.7.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • เปลี่ยนชื่อ performCustomAccessibilityActionLabelled เป็น performCustomAccessibilityActionWithLabel และ performCustomAccessibilityActionWhere เป็น performCustomAccessibilityActionWithLabelMatching (I5387f)
  • ตอนนี้ AnnotatedString.hasEqualsAnnotations เปลี่ยนชื่อเป็น hasEqualAnnotations แล้ว (I685c0)
  • อัปเดต API สำหรับรับลิงก์ที่มีธีม Material ในข้อความ กล่าวคือ เราได้นำวิธีการต่างๆ ออกจากTextDefaultsสำหรับการสร้างLinkAnnotationsที่มีธีมและแยกวิเคราะห์ HTML ด้วยลิงก์ที่มีธีม แต่ได้เพิ่มTextLinkStylesคลาสที่อนุญาตให้จัดรูปแบบลิงก์เป็นพารามิเตอร์ไปยัง Text composable แทน (I31b93)

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

  • แก้ไข Use Case เพิ่มเติมเมื่อเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกระหว่างเหตุการณ์ 63e1504

เวอร์ชัน 1.7.0-alpha08

1 พฤษภาคม 2024

androidx.compose.ui:ui-*:1.7.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่มการรองรับการใช้งานรูปร่างที่เปลี่ยนแปลงได้ ตอนนี้ Shape#createOutline จะสังเกตได้ภายในเลเยอร์กราฟิก ดังนั้นการอ่านค่าสถานะภายในจะทำให้เกิดการลบล้างเมื่อสถานะเปลี่ยนแปลง ซึ่งช่วยให้ภาพเคลื่อนไหวของรูปร่างมีประสิทธิภาพมากขึ้น (Id1629, b/326070216)
  • เปลี่ยนชื่อ isPositionedByParentWithDirectManipulation เป็น introducesFrameOfReference แล้ว โปรดทราบว่าตอนนี้การตั้งค่านี้มีผลในทางตรงกันข้าม ซึ่งหมายความว่าโดยค่าเริ่มต้น LayoutCoordinates ส่วนใหญ่จะใช้เฟรมอ้างอิง และพร็อพเพอร์ตี้จะเป็นเท็จเมื่อวางไว้ภายใต้การจัดการโดยตรงเท่านั้น หากต้องการค้นหาตำแหน่งที่มีเฉพาะตำแหน่งที่แนะนำกรอบอ้างอิง ให้ใช้ positionInLocalFrameOfReference(...) หรือ positionInLocalLookaheadFrameOfReference จาก LookaheadScope (Ifc5f7)
  • LookaheadScope API มีความเสถียรแล้ว (I21507)
  • เปลี่ยน Lambda การดำเนินการสำหรับ getScrollViewportLength ตามความคิดเห็นจากสภา API (Ibc74a)
  • อัปเดต GraphicsLayer Outline API เพื่อใช้พารามิเตอร์แบบลอยแทนพารามิเตอร์แบบจำนวนเต็ม นำค่า UnsetOffset/UnsetSize IntSize Sentinel ออกเพื่อใช้ค่าคงที่ Unspecified ที่มีอยู่แล้วในคลาสอินไลน์ Offset และ Size ที่อิงตาม Float (I2fb03, b/333863462)
  • เมื่อแทรกอินพุตจากเมาส์ระหว่างการทดสอบ MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick(), MouseInjectionScope.longClick() จะยอมรับพารามิเตอร์ button: MouseButton เพื่อให้ใช้ได้ในวงกว้างมากขึ้น ค่าเริ่มต้นคือ MouseButton.Primary สำหรับทุกวิธี (I31a23, b/190493367, b/261439695)
  • เปลี่ยนชื่อ onClicked เป็น onClick ใน LinkInteractionListener แล้ว (Iaa35c)
  • เปลี่ยนชื่อ TextInclusionStrategy.isInside เป็น isIncluded ทำให้Paragraph/MultiParagraph#getRangeForRect()ประเภทการแสดงผลไม่เป็นค่าว่าง (I51f26)

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

  • แก้ไขการจับภาพหน้าจอแบบยาวสำหรับคอนเทนเนอร์ที่เลื่อนได้ด้วย reverseScrolling=true (I7c59c)

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

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

เวอร์ชัน 1.7.0-alpha07

17 เมษายน 2024

androidx.compose.ui:ui-*:1.7.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้

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

  • ClickableText ถูกทำเครื่องหมายว่าเลิกใช้งานแล้ว หากต้องการเพิ่มลิงก์ไปยังข้อความ ให้สร้าง AnnotatedString ที่มี LinkAnnotation ที่สอดคล้องกับลิงก์ แล้วส่ง AnnotatedString นี้ไปยัง Text composable (I34d4b, b/323346994)
  • เปิดตัว ViewConfiguration.HandwritingGestureLineMargin สำหรับท่าทางสัมผัสลายมือ รองรับท่าทางสัมผัส JoinOrSplit สำหรับ BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter และ FocusProperties.exit ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป FocusDirection.Enter และ FocusDirection.Exit ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป FocusRequester.Cancel ไม่ใช่เวอร์ชันทดลองอีกต่อไป (I461a1, b/261564106)
  • เมื่อค้นหาพิกัดเลย์เอาต์ ตอนนี้คุณสามารถใช้อาร์กิวเมนต์ excludeDirectManipulationOffset เพื่อยกเว้นออฟเซ็ตที่กำหนดโดยเลย์เอาต์หลักซึ่งวางองค์ประกอบย่อยโดยใช้ Placeable.PlacementScope.withDirectManipulationPlacement ได้แล้ว ในทำนองเดียวกัน ตอนนี้เลย์เอาต์ที่เปลี่ยนตำแหน่งขององค์ประกอบย่อยบ่อยๆ อาจวางองค์ประกอบย่อยโดยใช้ withDirectManipulationPlacement (เช่น Scroll ซึ่งมีการติดตั้งใช้งานโดยค่าเริ่มต้น) ซึ่งช่วยให้approachLayoutภาพเคลื่อนไหวตามเส้นทางใช้งานง่ายขึ้น เนื่องจากตอนนี้คุณมีโอกาสที่จะแยกความแตกต่างระหว่างสิ่งที่ต้องชดเชยเพื่อเคลื่อนไหวกับสิ่งที่ต้องใช้โดยตรงเมื่อตัดสินใจที่จะเคลื่อนไหวตามเส้นทาง (I60ec7)
  • เราได้นำแฟล็กฟีเจอร์สำหรับภาพหน้าจอยาวออกแล้ว (I28648, b/329128246)
  • LazyColumn จะแสดงผลส่วนหัวที่ไม่เคลื่อนที่อย่างถูกต้องในภาพหน้าจอแบบยาว (I8d239, b/329296635)
  • NestedScroll แหล่งที่มา การลากและดีดจะถูกแทนที่ด้วย UserInput และ SideEffect เพื่อรองรับคำจำกัดความที่ขยายออกไปของแหล่งที่มาเหล่านี้ ซึ่งตอนนี้รวมถึงภาพเคลื่อนไหว (Side Effect) และล้อเมาส์และคีย์บอร์ด (UserInput) (I40579)
  • ApproachLayoutModifierNode และ Modifier.approachLayout ตอนนี้เสถียรแล้ว โดยมี isMeasurementApproachInProgress() และ isPlacementApproachInProgress() ใหม่มาแทนที่ isMeasurementApproachComplete() และ isPlacementApproachComplete() ตามลำดับ
  • นำตัวแก้ไข intermediateLayout ที่เลิกใช้งานแล้วออก (I3e91c)
  • เปลี่ยนชื่อ GraphicsLayer#buildLayer เป็น record เพื่อให้สอดคล้องกับเมธอด begin/endRecording ของ API ที่มี Displaylist เป็นข้อมูลสำรอง เช่น RenderNode และ Picture
  • อัปเดต rememberGraphicsLayer เพื่อใช้ประโยชน์จาก rememberObserver (I312c1, b/288494724, b/330758155)
  • UrlAnnotation เลิกใช้งานแล้ว โปรดใช้ LinkAnnotation.Url แทน หากใช้การจัดธีม Material ให้ใช้ออบเจ็กต์ TextDefaults เพื่อสร้างคำอธิบายประกอบที่มีการจัดธีม Material (I8d180, b/323346545)
  • ลิงก์ข้อความมีตัวเลือกการจัดรูปแบบสถานะที่กดนอกเหนือจากการจัดรูปแบบปกติ การวางเมาส์ และการโฟกัส (I5f864, b/139312671)
  • เปลี่ยนชื่อ String.parseAsHtml เป็น AnnotatedString.Companion.fromHtml แล้ว (I43dcd)
  • เพิ่มอาร์กิวเมนต์การจัดรูปแบบ (linkStyle, focusedLinkStyle, hoveredLinkStyle) และเครื่องมือตรวจหาการโต้ตอบลิงก์ไปยังเมธอด parseAsHtml เมื่อแยกวิเคราะห์สตริงที่ติดแท็ก HTML ด้วยแท็ก <a> เมธอดจะสร้าง LinkAnnotation.Url สำหรับแท็กดังกล่าวแต่ละแท็ก และส่งออบเจ็กต์การจัดรูปแบบและเครื่องมือฟังการโต้ตอบลิงก์ไปยังคำอธิบายประกอบแต่ละรายการ (I7c977)
  • ตอนนี้ LinkAnnotation รับอาร์กิวเมนต์การจัดรูปแบบตามสถานะและ LinkInteractionListener แล้ว เพิ่มคำอธิบายประกอบนี้ลงใน AnnotatedString เพื่อรับไฮเปอร์ลิงก์ การส่ง focusedState และ/หรือ hoveredState จะช่วยให้คุณกำหนดconfigurationภาพสำหรับลิงก์เมื่อมีการโฟกัสและ/หรือวางเมาส์เหนือลิงก์ (I81ce4, b/139312671)
  • ImeOptions.hintLocales จะไม่ใช่ค่า Null อีกต่อไป หากต้องการส่งรายการภาษาที่ว่างเปล่า โปรดใช้ LocaleList.Empty (Ic5bc4)

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

  • จัดการข้อมูลเหตุการณ์อินพุตย้อนหลังที่ไม่ถูกต้อง/เสียหายอย่างเหมาะสม (ไม่สนใจข้อมูลออฟเซ็ตที่ไม่ถูกต้อง)
  • แก้ไขเหตุการณ์ของเคอร์เซอร์ที่ไม่คาดคิดเมื่อมีการเพิ่มตัวแก้ไขอินพุตของเคอร์เซอร์แบบไดนามิกก่อนตัวแก้ไขอินพุตของเคอร์เซอร์อื่นในระหว่างสตรีมเหตุการณ์อินพุตของเคอร์เซอร์ที่ใช้งานอยู่ (เช่น ระหว่างการวางเมาส์และการวางเมาส์ออก [เมาส์/สไตลัส])

เวอร์ชัน 1.7.0-alpha06

3 เมษายน 2024

androidx.compose.ui:ui-*:1.7.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.7.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มเมธอด parseAsHtml สำหรับสตริงที่มีสไตล์ ซึ่งช่วยให้แปลงสตริงที่ทำเครื่องหมายด้วยแท็ก HTML เป็น AnnotatedString ได้ โปรดทราบว่าระบบไม่รองรับแท็กบางรายการ เช่น คุณจะยังแสดงรายการหัวข้อย่อยไม่ได้ (I84d3d, I30626, b/139326648)
  • เพิ่มการรองรับเวอร์ชันทดลองสำหรับภาพหน้าจอยาวในคอนเทนเนอร์เลื่อนของ Compose โดยใช้ Android API อย่างเป็นทางการ (ScrollCaptureCallback) ฟีเจอร์นี้เป็นเวอร์ชันทดลองและอาจยังจัดการบางกรณีได้ไม่ถูกต้อง ด้วยเหตุนี้ เราจึงปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้นในขณะนี้ หากต้องการเลือกใช้ ให้ตั้งค่า Flag ComposeFeatureFlag_LongScreenshotsEnabled เป็น true (I2b055, b/329296471)

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

  • เปลี่ยน fun ClipEntry.getMetadata() เป็น val ClipEntry.clipMetadata แล้ว (I50155)
  • นำฟังก์ชัน ClipboardManager.getClipMetadata และ ClipboardManager.hasClip ออกแล้ว โปรดใช้ clipEntry.getMetadata() เพื่ออ่านข้อมูลเมตาของรายการคลิปปัจจุบัน นอกจากนี้ ให้ตรวจสอบผลลัพธ์ของ ClipboardManager.getClip ว่าเป็นค่าว่างหรือไม่ เพื่อดูว่าคลิปบอร์ดมีคลิปปัจจุบันหรือไม่ (I50498)
  • ตอนนี้คุณสามารถส่งออบเจ็กต์ GraphicsLayer ไปยังฟังก์ชัน placeable.placeWithLayer() (I1b22f) ได้แล้ว
  • ตอนนี้ ClipboardManager.setClip ยอมรับค่า Null เพื่อล้างคลิปบอร์ดได้แล้ว (I7d2e9)
  • เพิ่มรหัสทรัพยากรเพื่อช่วยในการซ่อนมุมมองที่ใช้เป็นรายละเอียดการติดตั้งใช้งานภายในเครื่องมือบิลด์ (I99531)
  • เพิ่มเมธอด GraphicsLayer#toImageBitmap เพื่อรองรับการแสดงผลเนื้อหาของบิตแมปลงใน GraphicsLayer นี่คือการดำเนินการแสดงผลที่เร่งด้วยฮาร์ดแวร์ในระดับ API 22 ขึ้นไป (รวม) ซึ่งรองรับอุปกรณ์ Android ทั้งหมดกว่า 99% ใน Android API ระดับ 21 ระบบจะกลับไปใช้การแสดงผลซอฟต์แวร์ (I9e114)
  • เมธอดตัวช่วยในการแปลง RectF ของ Android เป็น ComposeRect (I39925, b/325660505)
  • ตอนนี้KeyboardOptionsพารามิเตอร์ทั้งหมดมีค่า "ไม่ได้ระบุ" โดยค่าเริ่มต้น เพิ่มKeyboardOptions.mergeแล้ว
  • เปลี่ยนชื่อ KeyboardOptions.autoCorrect เป็น autoCorrectEnabled และทำให้เป็นค่า Null ได้ ซึ่งค่า Null จะบ่งบอกว่าไม่มีการระบุค่า (Ia8ba0, b/295951492)
  • BasicTextField(state) variant และ BasicSecureTextField จะใช้ KeyboardActionHandler แทน KeyboardActions ในการประมวลผลการกระทำที่แป้นพิมพ์เสมือนดำเนินการ (I58dda)

เวอร์ชัน 1.7.0-alpha05

20 มีนาคม 2024

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

ฟีเจอร์ใหม่

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

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

  • GraphicsLayer.draw(Canvas) ไม่ใช่ API สาธารณะอีกต่อไป โปรดใช้ฟังก์ชันส่วนขยาย DrawScope.drawLayer(GraphicsLayer) แทนเพื่อวาดเลเยอร์ (I7a7c0)
  • แยก restrictedConstraints() เป็น 2 วิธี ได้แก่ fitPrioritizingWidth() และ fitPrioritizingHeight() (I6d7fd)
  • เปิดตัวHardwareCanvas สตับสำหรับการใช้งาน Android L (I1c3b5, b/288494724)
  • อัปเดตเฟรมเวิร์ก Compose เพื่อแสดง GraphicsContext CompositionLocal พร้อมกับการอัปเดต Owner, DelegateableNode และการใช้งาน drawWithCache Modifier เพื่อแสดงสิทธิ์เข้าถึง GraphicsContext สำหรับการเข้าถึงที่กำหนดขอบเขตซึ่งจะล้างข้อมูลอินสแตนซ์ GraphicsLayer โดยอัตโนมัติเมื่อมีการยกเลิก Modifier (I64a2f, b/288494724)
  • เปิดตัว InterceptPlatformTextInput เพื่อช่วยเขียนการทดสอบที่เกี่ยวข้องกับ IME ระดับต่ำและ Use Case อื่นๆ ของ IME ระดับต่ำ PlatformTextInputTestOverride เลิกใช้งานแล้ว (I862ed, b/322680547)
  • เพิ่มฟังก์ชันส่วนขยาย GraphicsLayer.setOutline(Outline) แล้ว (Ib81f4)
  • เปิดตัวตัวสร้างฟังก์ชัน GraphicsContext เพื่อสร้าง Factory สำหรับสร้างอินสแตนซ์ GraphicsLayer (Ib98d6, b/288494724)
  • เปิดเผย GraphicsLayer API เพื่อให้ความยืดหยุ่นที่นักพัฒนาซอฟต์แวร์กำหนดในการบันทึกคำสั่งการวาดที่สามารถใช้ในการวาดที่อื่น และยังใช้เอฟเฟกต์ภาพต่างๆ กับผลลัพธ์สุดท้ายได้ด้วย (I80245, b/288494724)
  • ขอแนะนำ Paragraph#getRangeForRect ซึ่งจะแสดงผลช่วงของข้อความที่ครอบคลุมพื้นที่สี่เหลี่ยมที่กำหนด (Iee516, b/325660505)
  • นำการลบล้างการทดสอบของ BasicText ออกด้วยอาร์กิวเมนต์ onLinkClicked และเราจะเปิดตัว API ที่มาแทนที่การรองรับไฮเปอร์ลิงก์ในอนาคต (I107d5)

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

  • เพิ่มคำจำกัดความ API ของ GraphicsLayer expect/actual เพื่อรองรับการบันทึกและเล่นคำสั่งการวาดซ้ำพร้อมเอฟเฟกต์ภาพและการเปลี่ยนรูปแบบการคอมโพสิตที่ไม่บังคับ เปิดตัวอินเทอร์เฟซ GraphicsContext เพื่อให้มีทรัพยากร Dependency ของกราฟิก รวมถึงการสร้างและการจัดการอินสแตนซ์ GraphicsLayer (I4a8d6, b/288494724)
  • แก้ไขปัญหาการทำงานร่วมกันกับการค้นหาโฟกัส 1 มิติ ซึ่งโฟกัสจะติดอยู่ภายใน ComposeView ที่ฝังอยู่ในมุมมองอื่นๆ (I08fd4)

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

  • LocalLifecycleOwner ย้ายจาก Compose UI ไปยัง lifecycle-runtime-compose เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วม (I6c41b, b/328263448)
  • แสดงพร็อพเพอร์ตี้การลอยตัวของอคติอย่างสม่ำเสมอในประเภทการจัดแนวตามอคติทั้งหมด (I69f0f, b/328088992)

เวอร์ชัน 1.7.0-alpha04

6 มีนาคม 2024

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

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

  • รองรับฟีเจอร์การเขียนด้วยลายมือโดยใช้สไตลัสสำหรับ BasicTextField2 ในอุปกรณ์ที่ใช้ Android U ขึ้นไป (I002e4)
  • ใน CL นี้ เราจะเพิ่มGetScrollViewportLengthการดำเนินการเชิงความหมายเพื่อให้เราสามารถส่งข้อมูลเกี่ยวกับคอมโพเนนต์ที่กำลังเลื่อนใน Compose ไปยังระบบ a11y ได้ CL นี้ยังใช้การใช้งานพร็อพเพอร์ตี้ดังกล่าวในรายการที่เลื่อนได้ของ Foundation ด้วย (Ic5fa2)
  • FocusRequester.createRefs ตอนนี้เสถียรแล้ว (I4d92c, b/261436820)
  • เปิดตัว DelegatableNode.requireView() เพื่อให้โหนดตัวแก้ไขรับ View ของ Android ปัจจุบันได้โดยไม่ต้องอ่าน CompositionLocal (I40768)
  • API ใหม่ Path.reverse() เพื่อย้อนกลับทิศทางของเส้นทาง (I36348)
  • เพิ่ม hintLocales ใน KeyboardOptions เพื่อให้ TextFields สามารถแนะนำ IME ด้วยภาษาที่เฉพาะเจาะจงเพื่อตั้งค่าภาษาที่ต้องการล่วงหน้า
  • เปิดเผยพร็อพเพอร์ตี้ platformLocale จาก Locale ที่แสดงผลออบเจ็กต์แพลตฟอร์มพื้นฐาน เช่น java.util.Locale (I921c6)

เวอร์ชัน 1.7.0-alpha03

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

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

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

  • ขอแนะนำ ContextualFlowRow และ FlowRow/Column ที่ปรับปรุงแล้วพร้อม MaxLines และ Overflow เรายินดีที่จะประกาศการปรับปรุง FlowRow และ FlowColumn เวอร์ชันทดลอง ซึ่งตอนนี้รองรับ maxLines และการล้นแล้ว พร้อมกับการเปิดตัว ContextualFlowRow และ ContextualFlowColumn การอัปเดตนี้ออกแบบมาเพื่อให้คอมโพเนนต์ที่มีประสิทธิภาพสูงสุด โดย ContextualFlow* เหมาะสำหรับสินค้าจำนวนมากที่ใช้การกำหนดค่า maxLines ขนาดเล็กและปุ่มดูเพิ่มเติมแบบไดนามิก +N ส่วน FlowRow และ FlowColumn เหมาะสำหรับสินค้าจำนวนน้อย ซึ่งมีสินค้าน้อยกว่า 100 รายการ สำคัญ: หากต้องการคงลักษณะการทำงานที่มีอยู่ไว้ใน FlowRow หรือ FlowColumn ที่รายการทั้งหมดประกอบขึ้นโดยไม่คำนึงว่ารายการนั้นจะพอดีกับแกนไขว้สูงสุดหรือไม่ ให้ตั้งค่า overflow เป็น FlowRowOverflow.Visible หรือ FlowColumnOverflow.Visible ในระหว่างการเริ่มต้น ดูตัวอย่างการใช้งานฟีเจอร์ใหม่เหล่านี้ได้ใน ContextualFlowRowSample และ FlowRowSample (Ib9135, b/293577082)
  • เพิ่มพร็อพเพอร์ตี้ maxTextLength semantics ที่ควรตั้งค่าในช่องข้อความซึ่งกรองจำนวนอักขระสูงสุดที่อนุญาต (I24d9f, b/170648072)
  • เลิกใช้งาน Wrapper Modifier.inspectable แล้ว API นี้จะสร้างการลบล้างตัวแก้ไขมากกว่าที่จำเป็น จึงไม่แนะนำให้ใช้ เราขอแนะนําให้นักพัฒนาแอปใช้เมธอด inspectableProperties() ใน ModifierNodeElement หากต้องการแสดงพร็อพเพอร์ตี้ตัวแก้ไขต่อเครื่องมือ (Ib3236)
  • ตัวสร้างใหม่สำหรับ PopupProperties ซึ่งช่วยให้ควบคุมแฟล็ก WindowManager.LayoutParams ได้อย่างเต็มที่ (Ibb33e, b/312485503)
  • เปิดตัว DelegatableNode.requireLayoutCoordinates() เพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Ia8657)
  • เปิดตัว DelegatableNode.currentLayoutCoordinates เพื่อเป็นวิธีรับModifier.NodeปัจจุบันของLayoutCoordinatesโดยไม่ต้องลบล้าง onPlaced และจัดเก็บพิกัดในพร็อพเพอร์ตี้ด้วยตนเอง (Iaebaa)
  • BasicTextField2 และ API ที่เกี่ยวข้องในแพ็กเกจ androidx.compose.foundation.text2 จะย้ายไปที่ androidx.compose.foundation.text (I9f635)
  • เพิ่ม ApproachLayoutModifierNode API ใหม่เพื่อรองรับการสร้างตรรกะแนวทางที่กำหนดเองในโหนดตัวแก้ไขที่ชัดเจน นอกจากนี้ ยังได้เพิ่ม DeferredTargetAnimation API ใหม่ที่อยู่ระหว่างการทดลองสำหรับภาพเคลื่อนไหวที่ไม่ทราบเป้าหมายเมื่อสร้างอินสแตนซ์ (I60745)
  • Path API ใหม่สำหรับค้นหาทิศทางของเส้นทางและดึงเส้นชั้นความสูงจาก Path (I63d04)
  • เพิ่ม PathHitTest และ Path.contains(Offset) เพื่อตรวจสอบว่า Path มีจุดที่เฉพาะเจาะจงหรือไม่ (I3b218)
  • ตอนนี้ TextLayoutResult แสดงเมธอด getLineBaseline(lineIndex) แล้ว ซึ่งจะช่วยให้อ่านบรรทัดฐานของข้อความบรรทัดใดก็ได้ นอกเหนือจากพร็อพเพอร์ตี้ความสะดวกที่มีอยู่ firstBaseline และ lastBaseline (Ide4e8, b/237428541)
  • เพิ่มวิธีการเปรียบเทียบเฉพาะคำอธิบายประกอบของ AnnotatedStrings 2 รายการ (I32659)

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

  • แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ SemanticsPropertyReceiver.performImeAction และ SemanticsActions.PerformImeAction (Id0528, b/322269946)

เวอร์ชัน 1.7.0-alpha02

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

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

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

  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับ SemanticsPropertyReceiver.performImeAction (I65865, b/322269946)
  • PopupProperties เครื่องมือสร้างที่ใช้พารามิเตอร์ usePlatformDefaultWidth ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I8f8d2)
  • เพิ่มการโอเวอร์โหลดของ ComposeTestRule.waitUntil ที่ใช้คำอธิบายสตริงของเงื่อนไขที่จะรวมไว้ในข้อความหมดเวลา (I9413e)
  • API ความหมายใหม่ unset() เพื่อนำพร็อพเพอร์ตี้ความหมายที่เพิ่มในเชนตัวแก้ไขเดียวกันออก พร็อพเพอร์ตี้ความหมายใหม่ isOpaque (I8c583, b/317966058, b/246056649)
  • นำ originalEventPosition ออกจากเมธอดคัดลอกใน API สาธารณะของ PointerInputChange (I7bead)

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

  • แก้ไขข้อบกพร่องด้านการช่วยเหลือพิเศษที่อนุญาตให้คลิกองค์ประกอบที่ไม่ใช่แท็บและไม่ใช่ปุ่มตัวเลือกได้เมื่อเลือก (I2181c)
  • VelocityTracker จะมีการแก้ไขเพื่อเพิ่มคะแนนโดยค่าเริ่มต้น คุณยังคงปิดการแก้ไขได้โดยตั้งค่า VelocityTrackerAddPointsFix เป็น false หากพบปัญหา (Ib3877, b/269487059)
  • แก้ไขความเข้ากันไม่ได้แบบย้อนกลับของไบนารีใน TextStyle และ ParagraphStyle (I179f0, b/320819734)

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

  • เพิ่มDialogPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I45829)
  • เพิ่มPopupPropertiesตัวสร้างใหม่ที่ไม่มีพารามิเตอร์เฉพาะแพลตฟอร์ม (I9a038)

เวอร์ชัน 1.7.0-alpha01

24 มกราคม 2024

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

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

  • ขยาย ClipboardManager โดยเพิ่ม ClipEntry และ ClipMetadata เพื่อรองรับเนื้อหาที่กำหนดเอง เช่น รูปภาพ
  • เพิ่ม DeviceConfigurationOverride API ไปยัง ui-test เพื่ออนุญาตให้แทนที่ลักษณะการทำงานของเนื้อหาที่อยู่ระหว่างการทดสอบในเครื่อง เช่น เพื่อระบุขนาด ภาษา ทิศทางเลย์เอาต์ ขนาดแบบอักษร หรือธีมที่ใช้ได้

เวอร์ชัน 1.6

เวอร์ชัน 1.6.8

12 มิถุนายน 2024

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

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

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

เวอร์ชัน 1.6.7

1 พฤษภาคม 2024

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

เวอร์ชัน 1.6.6

17 เมษายน 2024

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

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

  • แก้ไขข้อขัดข้องของ BasicTextField ที่เกิดขึ้นไม่บ่อย

เวอร์ชัน 1.6.5

3 เมษายน 2024

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

เวอร์ชัน 1.6.4

20 มีนาคม 2024

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

เวอร์ชัน 1.6.3

6 มีนาคม 2024

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

เวอร์ชัน 1.6.2

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

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

เวอร์ชัน 1.6.1

7 กุมภาพันธ์ 2024 androidx.compose.ui:ui-*:1.6.1 เปิดตัวแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังกับ SemanticsPropertyReceiver.performImeAction และ SemanticsActions.PerformImeAction (Ie0bb2, b/322269946)
  • ตอนนี้เลย์เอาต์จะแสดงข้อผิดพลาดขณะวัดเมื่อเลย์เอาต์ใดเลย์เอาต์หนึ่งแสดงขนาดที่ใหญ่ผิดปกติ ข้อผิดพลาดประเภทนี้มักเกิดขึ้นเมื่อการวัดผลใช้ข้อจํากัดสูงสุดโดยตรงโดยไม่ได้ตรวจสอบ Constraints.Infinity การตรวจสอบจะช่วยให้นักพัฒนาแอปพบปัญหาเกี่ยวกับเลย์เอาต์ที่มีขนาดไม่ถูกต้องแทนที่จะเป็นเลย์เอาต์ที่มีปัญหา (I339a9)

เวอร์ชัน 1.6.0

24 มกราคม 2024

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

เวอร์ชัน 1.6.0-rc01

10 มกราคม 2024

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

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

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

เวอร์ชัน 1.6.0-beta03

13 ธันวาคม 2023

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

ฟีเจอร์ใหม่

  • ตอนนี้คุณสามารถแยก LayoutCoordinates ออกได้โดยไม่ต้องแยกโหนด ป้องกันไม่ให้เกิดเหตุการณ์ดังกล่าวในเครื่องมือตรวจสอบเลย์เอาต์ของ Compose (If693)

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

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

เวอร์ชัน 1.6.0-beta02

29 พฤศจิกายน 2023

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

เวอร์ชัน 1.6.0-beta01

15 พฤศจิกายน 2023

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

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

  • ตอนนี้ตัวแก้ไข DragAndDropTarget จะรับ DragAndDropTarget ที่รับอย่างชัดเจนและมี Lambda เพื่อเลือกใช้เซสชันการลากและวาง ตอนนี้มีฟังก์ชัน Factory 2 รายการสำหรับ DragAndDropModifierNode 1 สำหรับรับการโอนและ 1 สำหรับโอนข้อมูล (I69481)
  • อัปเดต maximumFlingVelocity ให้แสดงเป็น Float อัปเดตเอกสารประกอบให้ชัดเจนยิ่งขึ้นเกี่ยวกับ maximumFlingVelocity unity (I8adc7)
  • onDragAndDropStart ในโรงงาน DragAndDropModifierNode เปลี่ยนชื่อเป็น acceptDragAndDropTransfer แล้วเพิ่ม acceptsDragAndDropTransfer ลงในตัวแก้ไข dragAndDropTarget เพื่อยอมรับจากเซสชันการลากและวาง Lambda นี้จะแสดง DragAndDropTarget ที่ใช้งานได้หากสนใจเซสชันการลากและวาง ฟังก์ชัน Lambda อื่นๆ สำหรับการประมวลผลเหตุการณ์การลากถูกแทนที่ด้วยฟังก์ชันนี้ มีการเพิ่มฟังก์ชัน Factory DragAndDropTarget เพื่อรับจากเซสชันการลากและวาง (Iebf3a)
  • นำ DragAndDropInfo ออกเนื่องจากเป็นประเภท DragAndDropModifierNode.drag ตอนนี้ใช้พารามิเตอร์สำหรับ transferData, ขนาดการตกแต่ง และ Lambda การตกแต่งแบบลาก DrawScope

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

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

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

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

  • ปรับปรุงชื่อ API ของโหนดที่สามารถข้ามได้เพื่อให้เข้าใจได้ง่ายขึ้น (Ia4474)

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

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

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

  • นำ FocusDirection.In และ FocusDirection.Out ออกแล้ว ให้ใช้ FocusDirection.Enter และ FocusDirection.Exit แทน (I2f660)

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

  • เลิกใช้งานตัวสร้าง FontStyle(int) แล้ว โปรดใช้ FontStyle.Normal หรือ FontStyle.Italic แทน (I66610)

  • เปลี่ยนชื่ออินเทอร์เฟซ FontScalable เป็น FontScaling (Ie804a)

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

  • SoftwareKeyboardController.show() จะไม่แสดงแป้นพิมพ์เสมือนอีกต่อไปหากไม่มีการโฟกัสโปรแกรมแก้ไขข้อความ (I2165a, b/301477279)
  • ตอนนี้ระบบจะละเว้นเหตุการณ์กดขึ้นของคีย์ฮาร์ดแวร์สำหรับคีย์ที่ยังไม่ได้รับเหตุการณ์กดลงใน Compose View เดียวกัน (Ib37b4, b/305518328)
  • เพิ่มการรองรับโปรแกรมแสดงผลสำหรับการไล่ระดับสีแบบกวาดใน ArcLine (I4d5bb)
  • ใช้ equals และ hashcode สำหรับ PageSize.Fixed (Ie3ede, b/300134276)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับการเปลี่ยนแปลง Window Inset (Iee695)
  • นำเลเยอร์หลักของ Material ออกสำหรับชิป/ปุ่ม Material3 เนื่องจาก Microbenchmark แสดงให้เห็นว่าไม่มีเลเยอร์ดังกล่าวแล้วประสิทธิภาพจะดีกว่า (I55555)
  • TestDispatcherที่ส่งเป็น effectContext ไปยัง Compose Tests จะใช้ในการสร้างการทดสอบและกรอบนาฬิกา (Ia7178)

เวอร์ชัน 1.6.0-alpha08

18 ตุลาคม 2023

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

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

  • Modifier.dragAndDrawSource ได้เปลี่ยนชื่อ lambda onDrawDragShadow เป็น drawDragDecoration และ DragAndDropInfo ได้เปลี่ยนชื่อพารามิเตอร์ขนาดเป็น dragDecorationSize (Id0e30, b/303904810)
  • แนะนำ SemanticsNodeInteraction.isDisplayed() และ SemanticsNodeInteraction.isNotDisplayed() เพื่อตรวจสอบว่าโหนดที่ตรงกันมองเห็นได้หรือไม่โดยไม่ต้องยืนยันด้วย (I2c196, b/302100809)
  • เปิดตัวค่า Unspecified พิเศษสำหรับฟิลด์ TextAlign, TextDirection, Hyphens และ LineBreak ของ ParagraphTextStyle เพื่อแทนที่ null เนื่องจากคลาสเหล่านี้เป็นคลาสแบบอินไลน์ การแทนที่ค่าที่อนุญาตให้เป็น Null ด้วย Unspecified จะช่วยหลีกเลี่ยงการ Boxing ประเภทดั้งเดิมได้ เราได้อัปเดตตัวสร้าง ตัวรับ และเมธอดอื่นๆ ใน TextStyle และรูปแบบย่อหน้าให้ยอมรับพารามิเตอร์ที่กล่าวถึงเป็นประเภทที่ไม่ใช่ Null (I4197e, b/299490814)
  • เพิ่มโอเวอร์โหลด GoogleFont สำหรับการอ่าน GoogleFont จาก XML (If8f59)
  • ทำให้LoremIpsum PreviewParameterProviderเป็นชั้นเรียนแบบเปิด (I41bf5, b/266918816, b/300116360)

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

  • ตอนนี้ FontFamilyResolver ใช้ Dispatchers.Main สำหรับรูทีนย่อยของการจัดการแคชแล้ว (Ie8dd9)
  • AndroidViewBinding จะนำอินสแตนซ์ Fragment ที่เพิ่มขึ้นโดยการใส่ FragmentContainerView ในเลย์เอาต์เป็นส่วนหนึ่งของ onRelease ออกพร้อมกันโดยใช้ commitNow (แทน commit ที่ใช้ก่อนหน้านี้) ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับวิธีการของ Live Edit ในการแทนที่คอมโพสิชันเมื่อมีการเปลี่ยนแปลง (I58fbf)

เวอร์ชัน 1.6.0-alpha07

4 ตุลาคม 2023

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

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

  • เปิดตัว PlatformTextInputMethodTestOverride สำหรับการเขียนการทดสอบสำหรับโปรแกรมแก้ไขข้อความที่กำหนดเอง (Id159b)
  • เพิ่มตัวแก้ไข dragAndDropSource สำหรับเริ่มเซสชันการลากและวาง และตัวแก้ไข dragAndDropTarget สำหรับรับจากเซสชันการลากและวาง (Ib7828, b/286038936)
  • เพิ่มคอลเล็กชัน ColorList และ ColorSet ที่หลีกเลี่ยงการจัดสรร (I744bd)
  • เพิ่มDisableNonLinearFontScalingInComposeฟีเจอร์ชั่วคราวเพื่อปิดใช้การปรับขนาดแบบอักษรที่ไม่ใช่แบบเชิงเส้น ตั้งค่า DisableNonLinearFontScalingInCompose = true ในการทดสอบหากคุณต้องการเวลาในการล้างข้อมูล เราจะนำฟีเจอร์นี้ออกใน Compose 1.6.0-beta01 (Ic9486)

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

  • การแยกวิเคราะห์ภาพเวกเตอร์ XML ที่เพิ่มประสิทธิภาพ (Ibb015)

เวอร์ชัน 1.6.0-alpha06

20 กันยายน 2023

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

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

  • การเพิ่มประสิทธิภาพเพิ่มเติมสำหรับไอคอน Material (I3e08d)
  • เพิ่มความสามารถในการเลื่อนขึ้น/ลงในโครงสร้างตัวแก้ไขเพื่อค้นหาโหนดที่คล้ายกัน (I2d234)
  • เพิ่ม Callback onRestoreFailed() ไปยังตัวปรับแต่ง focusRestorer() (Ie1d43)
  • เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ ColorInt, FloatRange, IntRange, Size และอื่นๆ (Id65c8, b/290950582)
  • เพิ่ม showSystemUi=true ลงในคำจำกัดความของ PreviewScreenSizes (Ib61d3)

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

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

เวอร์ชัน 1.6.0-alpha05

6 กันยายน 2023

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

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

  • เปิดใช้การจับภาพเนื้อหาใน AndroidComposeViewAccessibilityDelegateCompat (Ib2969)
  • ความเร็วในการดีดในคอมโพเนนต์ View เช่น ScrollView และ RecyclerView จะจำกัดไว้ที่ ViewConfiguration.ScaledMaximumFlingVelocity ตอนนี้ Compose มี maximumFlingVelocity เวอร์ชันของตัวเองซึ่งใช้กับ Draggable ได้แล้ว (Ibf974)
  • เพิ่มโครงสร้างเริ่มต้นเพื่อรองรับ API การลากและวางของแพลตฟอร์ม (If84ce)
  • เพิ่ม deviceId ลงใน RotaryScrollEvent (Iba3bf)
  • อัปเดต ui-tooling Devices API เพื่อรวมอุปกรณ์รุ่นใหม่กว่า (Ib25b4)

เวอร์ชัน 1.6.0-alpha04

23 สิงหาคม 2023

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

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

  • เพิ่มวิธีปิดใช้งาน ReusableComposition ซึ่งจะนำการสังเกตการณ์ออกแต่ยังคงโหนดไว้ คุณเปิดใช้งานการเรียบเรียงที่ปิดใช้งานแล้วได้อีกครั้งโดยโทรหา setContent (Ib7f31)
  • เพิ่มอินเทอร์เฟซ ReusableComposition สำหรับจัดการวงจรและนำองค์ประกอบย่อยกลับมาใช้ซ้ำ (I812d1, b/252846775)
  • Modifier.focusGroup ได้รับการเลื่อนขั้นเป็น API ที่เสถียรแล้ว (I7ffa3)
  • เพิ่มคำอธิบายประกอบ androidx ลงใน Graphics API ต่างๆ เพื่อระบุ ColorInt, FloatRange, IntRange, Size และอื่นๆ (I70487, b/290950582)
  • อัปเดต ColorFilter API ให้มีประเภทคลาสย่อยที่เฉพาะเจาะจงเพื่อปรับปรุงความสามารถในการตรวจสอบพารามิเตอร์ (I5fe29)
  • เปิดตัวไลบรารี wear-tooling-preview เพื่อแสดงรายการอุปกรณ์ Wear ที่ถูกต้องซึ่งใช้แสดงตัวอย่าง UI ได้ (Ib036e)
  • สร้างอินเทอร์เฟซ FontScalable เพื่อจัดการส่วนการปรับขนาดแบบอักษรของอินเทอร์เฟซความหนาแน่น (I2cf3f)

เวอร์ชัน 1.6.0-alpha03

9 สิงหาคม 2023

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

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

  • การเปลี่ยนฉากเข้า/ออกประเภทใหม่ที่ปรับขนาดเนื้อหาตามขนาดของคอนเทนเนอร์ที่เคลื่อนไหวระหว่างภาพเคลื่อนไหวเข้าและออก LookaheadScope ตอนนี้ฟีเจอร์สนุกๆ และอินเทอร์เฟซที่ประกอบได้ก็เสถียรแล้ว (Ifb2ce)
  • เพิ่มการรองรับการกำหนดค่า privateImeOptions (Idb772)

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

  • ตอนนี้ PopupPositionProvider.calculatePosition จะอัปเดตตำแหน่งของป๊อปอัปโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงสถานะที่อ่านในการคำนวณ (I676a1, b/292257547)
  • แก้ไขช่องข้อความแบบคงที่ที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ readOnly เป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยน readOnly จากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)
  • การใช้การยืนยันส่วนกลางที่ขยายในการทดสอบ UI (I1f90d)

เวอร์ชัน 1.6.0-alpha02

26 กรกฎาคม 2023

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

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

  • เพิ่มอินเทอร์เฟซตัวระบุตำแหน่งบริการที่ผู้ใช้ที่ใช้การคอมโพสิชันสามารถนำไปใช้ได้ ซึ่งจะช่วยให้การใช้งานการคอมโพสิชันที่มอบหมายให้การค้นหาบริการตัวแทนการคอมโพสิชันอื่นไปยังการคอมโพสิชันเดิม ไม่ควรเรียกใช้โดยตรง และใช้เพื่อเปิดใช้การสร้าง API ทดสอบในรันไทม์ที่พบได้จากเวอร์ชันที่ห่อหุ้มของคอมโพสเซอร์ เช่น โมดูล UI (I296b9)
  • ออกแบบ PlatformTextInput* API ใหม่ทั้งหมด (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController และ LocalSoftwareKeyboardController ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป นอกจากนี้ LocalSoftwareKeyboardController ยังเป็นCompositionLocalอย่างเป็นทางการแล้วด้วย (I4c364)
  • LookaheadLayout และ LookaheadLayoutScope เลิกใช้งานแล้วใน 2-3 รุ่นที่ผ่านมาและถูกนำออกแล้ว API ที่ใช้แทนคือ LookaheadScope ซึ่งใช้ได้กับเลย์เอาต์ทุกแบบ (I12ac3)
  • เพิ่ม SemanticsNodeInteraction.requestFocus เพื่อให้เป็นวิธีที่สะดวกและค้นพบได้ง่ายขึ้นในการขอโฟกัสในการทดสอบ (Ie8722)
  • เพิ่ม API เวอร์ชันทดลองสำหรับการลงทะเบียนการยืนยันส่วนกลาง เพื่อให้เฟรมเวิร์กการทดสอบใช้ในอนาคต (I12d77)

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

  • ตอนนี้ระบบจะเลื่อนการเรียกใช้ครั้งแรกของAndroidViewupdate Callback จนกว่าจะแนบ View แทนที่จะเรียกใช้เมื่อใช้การจัดองค์ประกอบที่แนะนำ AndroidView การแก้ไขนี้จะแก้ข้อบกพร่องที่การเรียกกลับ update จะไม่ถือว่าไม่ถูกต้องหากเอฟเฟกต์เปลี่ยนสถานะที่อ่านทันที (Ie9438, b/291094055)

เวอร์ชัน 1.6.0-alpha01

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

การเปลี่ยนแปลงลักษณะการทำงาน: ตอนนี้ includeFontPadding เป็นเท็จโดยค่าเริ่มต้นใน Compose

ตอนนี้ includeFontPadding เป็นเท็จโดยค่าเริ่มต้น (21d806) ใน Compose

includeFontPadding เป็นแอตทริบิวต์เดิมที่ควบคุมว่าจะรวมการเว้นวรรคเพิ่มเติมที่ด้านบนของบรรทัดแรกและบรรทัดสุดท้ายของข้อความหรือไม่ เพื่อรองรับอักขระที่อาจขยายเหนือหรือใต้บรรทัดฐานของข้อความ

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

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

คุณเลือกใช้ includeFontPadding ได้โดยใช้ PlatformTextStyle สำหรับข้อความแต่ละรายการ

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

คุณเลือกใช้ includeFontPadding สำหรับข้อความทั้งหมดได้โดยกำหนดค่าสไตล์ Material โปรดทราบว่าชื่อพารามิเตอร์จะแตกต่างกันระหว่าง M2 กับ M3

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /**/,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /**/
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Compose includeFontPadding ได้ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์และบล็อกโพสต์นี้

หากพบปัญหา/ข้อบกพร่องที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ โปรดรายงานข้อบกพร่องโดยใช้ Issue Tracker

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

  • การสนับสนุน InputConnection#requestCursorUpdates (I0c69b)
  • เพิ่ม FocusRequester.saveFocusedChild และ FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • เพิ่ม ResourceResolutionException type เพื่อห่อ Throwable ที่เกิดขึ้นเมื่อพยายามโหลดชิ้นงานบิตแมปพร้อมคำอธิบายเส้นทางชิ้นงานที่โหลดไม่สำเร็จ (I19f44, b/230166331, b/278424788)
  • การเพิ่มประสิทธิภาพการช่วยเหลือพิเศษเพื่อการจัดสรรประสิทธิภาพและหน่วยความจำ (Iede48)
  • เพิ่มพร็อพเพอร์ตี้และการดำเนินการทางความหมายเพื่อรองรับการแปลข้อความ (I4a6bc)
  • พร็อพเพอร์ตี้ใหม่ใน IntrinsincMeasureScope และการติดตั้งใช้งาน (เช่น MeasureScope) เพื่อระบุว่าการวัดปัจจุบันเป็นการวัดแบบมองไปข้างหน้าหรือไม่ (I7a812)
  • อัปเดต API ของ DrawScope เพื่อเพิ่มความสามารถในการกำหนดเป้าหมายใหม่ในการแสดงผลลงใน Canvas อื่นที่มีความหนาแน่น/ทิศทางเลย์เอาต์ และขนาดอื่น
  • อัปเดต DrawContext เพื่อรองรับการกำหนดค่าความหนาแน่นและทิศทางเลย์เอาต์ รวมถึงทำให้กำหนดค่า Canvas ได้ (Ie1f9b, b/225408150)
  • เพิ่ม Paragraph#fillBoundingBoxes เพื่อคำนวณกรอบล้อมรอบอักขระ (If30ee)
  • เพิ่มชุด MultiPreviews ทั่วไป (Ia5a27)

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

  • เพิ่มFocusTargetModifierNodeอินเทอร์เฟซที่ใช้สร้างFocusTargetที่กำหนดเองได้ (I9790e)
  • เปลี่ยนชื่อพารามิเตอร์ fallback* ในตัวสร้าง TextMeasurer เป็น default* (I940a5)
  • เปลี่ยนชื่อ SemanticsPropertyReceiver.performImeAction เป็น onImeAction และ SemanticsActions.PerformImeAction เป็น OnImeAction (I8e841)
  • เพิ่ม Wheel เพื่อแยกความแตกต่างระหว่างการเลื่อนเมาส์กับการลากในการเลื่อนที่ซ้อนกัน (โดยเฉพาะใน NestedScrollConnection) (Ie57e4)
  • เพิ่ม asComposePaint API เพื่อแทนที่ toComposePaint เนื่องจากออบเจ็กต์ที่ส่งคืนจะห่อหุ้ม android.graphics.Paint เดิม (I22b4c)
  • เลิกใช้งาน SemanticsProperties.imeAction และแทนที่ด้วยพารามิเตอร์ใหม่ใน SemanticsActions.performImeAction (I4a587)
  • เพิ่มการรองรับการเลือกด้วยเมาส์ การเลือกแบบสัมผัสจะขยายตามคำและลดตามอักขระ (Ic0c6c, b/180639271)
  • ตอนนี้เมธอด Paragraph ที่เคยส่ง AssertionError สำหรับออฟเซ็ตที่อยู่นอกขอบเขตจะส่ง IllegalArgumentException เหมือนกับ MultiParagraph (I549d3, b/243338896)

รุ่น 1.5

เวอร์ชัน 1.5.4

18 ตุลาคม 2023

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

เวอร์ชัน 1.5.3

4 ตุลาคม 2023

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

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

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

รุ่น 1.5.2

27 กันยายน 2023

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

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

  • เพิ่มวิธีแก้ปัญหาชั่วคราวสำหรับข้อขัดข้องเมื่อเข้าถึง API การเลื่อนการช่วยเหลือพิเศษจากเธรดเบื้องหลัง
  • แก้ไขการเพิ่มโหนดที่ไม่ได้แนบไปกับทรีความหมาย

รุ่น 1.5.1

6 กันยายน 2023

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

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

  • แก้ไขช่องข้อความแบบคงที่ที่แสดงแป้นพิมพ์และแก้ไขได้เมื่อ readOnly เป็นจริง นอกจากนี้ ยังแก้ไขปัญหาที่แป้นพิมพ์ไม่แสดงเมื่อเปลี่ยน readOnly จากจริงเป็นเท็จขณะโฟกัส (I34a19, b/246909589)

เวอร์ชัน 1.5.0

9 สิงหาคม 2023

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

เวอร์ชัน 1.5.0-rc01

26 กรกฎาคม 2023

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

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

  • แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อใช้ SubcomposeLayout ภายใน movableContentOf()

เวอร์ชัน 1.5.0-beta03

28 มิถุนายน 2023

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

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

  • เพิ่มอินเทอร์เฟซ FocusTargetModifierNode ที่ใช้สร้าง FocusTarget ที่กำหนดเองได้ (Ifb1d6)
  • แก้ไขปัญหาเกี่ยวกับ Composable ของกล่องโต้ตอบและป๊อปอัปที่อาจทําให้หน้าต่างย่อยไม่ปรับขนาดตามที่คาดไว้เมื่อ usePlatformDefaultWidth=true (I112ee)

เวอร์ชัน 1.5.0-beta02

7 มิถุนายน 2023

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

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

  • เพิ่ม asComposePaint API เพื่อเปิดใช้การใช้งานอินสแตนซ์ android.graphics.Paint ที่จะใช้ใน Compose

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

  • เพิ่ม asComposePaint API เพื่อแทนที่ toComposePaint เนื่องจากออบเจ็กต์ที่ส่งคืนจะห่อหุ้ม android.graphics.Paint เดิม (I22b4c)

เวอร์ชัน 1.5.0-beta01

24 พฤษภาคม 2023

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

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

  • นำการจัดสรรในการจัดองค์ประกอบใหม่ ภาพเคลื่อนไหวสี และ AndroidComposeView (Ib2bfa) ออกแล้ว
  • เพิ่มฟังก์ชันสนุกๆ ของตัวช่วย CacheDrawModifierNode() เพื่ออนุญาตการมอบสิทธิ์ (Icf8f9)
  • ขอแนะนำพร็อพเพอร์ตี้ isLookingAhead ซึ่งเข้าถึงได้จาก MeasureScope เพื่อสังเกตผลลัพธ์การคาดคะเนและมีอิทธิพลต่อการส่งผ่านหลักหากต้องการ (Ibf4c3)
  • พร็อพเพอร์ตี้เชิงความหมายใหม่ traversalIndex ซึ่งเป็นค่าลอยที่ใช้เพื่อจัดลําดับโหนดใหม่ในการข้ามผ่าน TalkBack (ค่าที่ต่ำกว่าจะอยู่ก่อน) (I9a81b, b/186443263)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ Semantics isContainer เป็น isTraversalGroup (I121f6)
  • ตอนนี้ ColorProducer มี operator fun invoke แทน produce (I4a9a2)
  • เพิ่ม Path transform API เพื่อใช้การแปลงการแปล/การปรับขนาด/การหมุนกับออบเจ็กต์เส้นทาง (I23434, b/233772232)
  • เมธอดของ ColorProducer เรียกว่า produce (I78bde)
  • เปลี่ยนชื่อ toFrameworkColorSpace เป็น toAndroidColorSpace (I4f547)
  • เปลี่ยนชื่อ ColorLambda เป็น ColorProducer (I73b1a)
  • เปิดตัว API เพื่อแปลงระหว่างประเภทพื้นที่สีของ Android และ Compose (Ie7db4, b/279979665)
  • เพิ่มพารามิเตอร์สีลงใน BasicText เพื่อให้สามารถตั้งค่าหรือเปลี่ยนสีข้อความได้อย่างมีประสิทธิภาพ (Iffd88, b/246961787)
  • เปลี่ยนชื่อ TextRange.constrain เป็น TextRange.coerceIn แล้ว (I31be2)
  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • ปรับปรุง Text API หลายรายการ ซึ่งรวมถึง Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding เลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)
  • เพิ่มTextRange.constrainเมธอดสาธารณะ (I97912)
  • ตอนนี้คุณเปิด UrlAnnotation ใน AnnotatedString ได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่น TalkBack (If4d82, b/253292081)
  • เพิ่มInsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5)
  • LineHeightStyle.Alignment(topRatio) เครื่องมือสร้าง จะได้รับการเลื่อนขั้นเป็น API ที่เสถียร (I79c32, b/261565383)
  • TextMeasurer และ API ที่เกี่ยวข้องไม่ใช่เวอร์ชันทดลองอีกต่อไป (I74647, b/261581753)
  • เพิ่มPerformImeActionการดำเนินการเชิงความหมายเพื่อเรียกใช้การดำเนินการ IME ในโหนดเอดิเตอร์ข้อความ (Ic606f, b/269633506)
  • PlatformTextInput API ไม่ใช่เวอร์ชันทดลองสำหรับ Android อีกต่อไป (I668eb)
  • เปลี่ยนชื่อพารามิเตอร์ค่าสำหรับ Enum.valueOf (Ia9b89)
  • ข้อยกเว้นที่เกิดขึ้นเพิ่มเติมจาก enum valueOf (I818fe)
  • เปิดตัว PlatformTextInputAdapter API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)
  • เพิ่มพารามิเตอร์ BlendMode ลงในเมธอด DrawScope.drawText, Paragraph.paint และ MultiParagraph.paint เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)
  • เปลี่ยนชื่อ Font.MaximumAsyncTimeout เป็น Font.MaximumAsyncTimeoutMillis เปลี่ยนชื่อเท่านั้น (I07af5)
  • ค่า DPI ที่อัปเดตของ@Previewอุปกรณ์อ้างอิง (Id6151, b/254528382)
  • เพิ่มพารามิเตอร์ brush, alpha ลงใน BasicText เพื่อให้สามารถเคลื่อนไหวหรือตั้งค่าแปรงข้อความได้อย่างมีประสิทธิภาพ
  • กำหนดประเภท Lambda ที่ไม่มีกล่องสำหรับ Float, Double, Long, Int, Short ใน :ui:ui-unit (I6f18d, b/246961787)

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

  • นำการจัดสรรหลายรายการในการติดตามความเร็วของเคอร์เซอร์ออก (I26bae)
  • ลดการจัดสรรในการจัดการเลย์เอาต์และการป้อนข้อมูลตัวชี้ (I5333a)
  • เพิ่มประสิทธิภาพการใช้งานหน่วยความจำเวกเตอร์และการแสดงเฟรมแรก (I2f3c6)
  • นำการจัดสรรออกเมื่อวาดเส้นและจุดด้วย Canvas (I9f535)
  • เพิ่มเอกสารสำหรับ AndroidFont.fontVariationSettings (I7d9e2)

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

  • ปรับปรุงประสิทธิภาพและลดการจัดสรรใน Vector API (I906cb)

เวอร์ชัน 1.5.0-alpha04

10 พฤษภาคม 2023

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

ฟีเจอร์ใหม่

  • Modifier.Node การปรับปรุงการมอบสิทธิ์ เพิ่มความสามารถในการมอบสิทธิ์ที่ดียิ่งขึ้นให้กับอินสแตนซ์ Modifier.Node อื่นๆ จาก DelegatingNode ซึ่งทำได้ด้วย API delegate และ undelegate ก่อนการเปลี่ยนแปลงนี้ API ทุกรายการจากโหนดที่มอบสิทธิ์จะต้องได้รับการมอบสิทธิ์อย่างชัดเจนไปยังโหนดที่มอบสิทธิ์ หลังจากการเปลี่ยนแปลงนี้ ระบบจะมอบสิทธิ์อินเทอร์เฟซของโหนดโดยนัย เว้นแต่ DelegatingNode จะลบล้างอย่างชัดเจน (67352bc)

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

  • เปิดตัว NestedScrollModifierNode ซึ่งเป็น NestedScroll Modifier.Node ที่มอบสิทธิ์ให้ได้ (I69513)
  • เพิ่มพารามิเตอร์ onReset และ onRelease ลงใน AndroidViewBinding ที่ใช้ร่วมกันได้ ซึ่งเป็นการจำลอง AndroidView ที่ใช้ร่วมกันได้และเปิดใช้การรองรับการใช้ View ซ้ำด้วย ViewBinding (I00b1e, b/276802519)
  • อัปเดต Compose Path API เพื่อรองรับการดำเนินการย้อนกลับเพื่อรองรับกรณีการใช้งานการจัดการเส้นทางบ่อยๆ ด้วยการนำกลับมาใช้ซ้ำได้เร็วขึ้น (I7b797)
  • เพิ่ม TextStyle.merge(...) ที่เพิ่มประสิทธิภาพพร้อมรายการพารามิเตอร์ทั้งหมด (Iad234, b/246961787)
  • ปรับปรุง Text API หลายรายการ ซึ่งรวมถึง Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding เลิกเลิกใช้งานแล้ว เดิมทีเราตั้งใจจะนำช่องนี้ออก แต่ความคิดเห็นแสดงให้เห็นว่านักพัฒนาแอปต้องการตัวเลือกการกำหนดค่านี้ จึงนำการเลิกใช้งานออกจากฟิลด์ (I98e96, b/277703184)

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

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

เวอร์ชัน 1.5.0-alpha03

19 เมษายน 2023

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

ฟีเจอร์ใหม่

  • ลักษณะการทำงานเริ่มต้นใหม่สำหรับ SubcomposeLayout ใน LookaheadScope: SubcomposeLayouts ที่ไม่มีช่องแบบมีเงื่อนไข (เช่น TabRow, Scaffold, BoxWithConstraints ฯลฯ) จะทำงานร่วมกับภาพเคลื่อนไหวแบบคาดการณ์ได้อย่างราบรื่น

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

  • intermediateMeasurePolicy เริ่มต้นใหม่ที่ใช้ซ้ำนโยบายการวัดจาก Lookahead Pass ช่วยให้SubcomposeLayoutประเภทต่างๆ ที่ไม่มีช่องแบบมีเงื่อนไข เช่น Scaffold, TabRow และ BoxWithConstraints ทำงานร่วมกับ Lookahead ได้โดยค่าเริ่มต้น (Id84c8)
  • ตอนนี้ Recomposer ที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกเฉพาะการโทรไปยัง withFrameNanos เท่านั้นแทนที่จะบล็อกการคอมโพสทั้งหมดเมื่อได้รับแจ้งเตือน ON_STOP ซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดแล้วจะยังคงจัดองค์ประกอบใหม่ต่อไปเมื่อมีการเปลี่ยนแปลงข้อมูล แต่ภาพเคลื่อนไหวหรือผู้เรียกใช้ withFrameNanos อื่นๆ จะถูกบล็อก (Id9e7f, b/240975572)
  • เปลี่ยน motionEventSpy เป็นเวอร์ชันเสถียร (Ic5ec4, b/261560988)
  • เพิ่มTextRange.constrainเมธอดสาธารณะ (I97912)
  • PlatformTextStyle.includeFontPadding ไม่ถือว่าเลิกใช้งานแล้วเพื่อกระตุ้นให้นักพัฒนาแอปใช้ API ความเข้ากันได้นี้เพื่อเปลี่ยนและทดสอบการตั้งค่า includeFontPadding เป็นเท็จ (I98e96, b/277703184)

เวอร์ชัน 1.5.0-alpha02

5 เมษายน 2023

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

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

  • SubcomposeLayout API ใหม่ที่ใช้นโยบายการวัดระดับกลางเพิ่มเติมสำหรับการจัดการตรรกะการวัด/เลย์เอาต์ระหว่างภาพเคลื่อนไหวที่อิงตามการมองไปข้างหน้า (I017d3)
  • ตอนนี้ PointerInput จะทำงานแบบ Lazy และใช้ Modifier.Node เพื่อให้มีประสิทธิภาพดียิ่งขึ้น (อ่านเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานเล็กน้อย) (15dab9)
  • เปลี่ยน API ที่เป็นเวอร์ชันทดลองให้เป็นเวอร์ชันที่เสถียรด้วยเหตุการณ์สำคัญ (I9c7d8, b/261566839, b/261567368)
  • เปลี่ยน API ที่เป็นเวอร์ชันทดลองเป็นเวอร์ชันเสถียรใน PointerInputChange (I1b543, b/261560988, b/261565762, b/261565749)
  • เพิ่มวิธีสร้างอินสแตนซ์ SuspendingPointerInputModifierNode สำหรับการติดตั้งใช้งาน Modifier.Node ที่ซับซ้อนมากขึ้น (Ic4933)
  • ตอนนี้คุณเปิดUrlAnnotationในAnnotatedStringได้แล้วผ่านบริการช่วยเหลือพิเศษ เช่น TalkBack (If4d82, b/253292081)
  • เพิ่ม API เพื่อสกัดคีย์ฮาร์ดแวร์ก่อนที่จะส่งไปยังแป้นพิมพ์เสมือน (I4f4c6, b/186800395)
  • เพิ่มInsertTextAtCursorการดำเนินการเชิงความหมายสำหรับช่องข้อความ (I11ed5)
  • ตอนนี้การดำเนินการทดสอบที่เกี่ยวข้องกับข้อความ (เช่น performTextInput) จะขอโฟกัสโดยตรงโดยใช้การดำเนินการทางความหมายแทนการคลิกช่อง (I6ed05)

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

  • ตอนนี้การดำเนินการทดสอบข้อความกำหนดให้ต้องเปิดใช้ช่องข้อความ (Iab328)

เวอร์ชัน 1.5.0-alpha01

22 มีนาคม 2023

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

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

  • ตอนนี้ Modifier.intermediateLayout ไม่จำเป็นต้องมี LookaheadScope ที่ชัดเจนแล้ว บล็อกการวัดใน intermediateLayout มี IntermediateMeasureScope เป็นตัวรับ ซึ่งให้ CoroutineScope, LookaheadScope และ MeasureScope ที่สะดวก (Ibe2e5)
  • LookaheadLayout ถูกแทนที่ด้วย LookaheadScope ซึ่งไม่ใช่ Layout อีกต่อไป ซึ่งจะช่วยให้ MeasurePolicy ของผู้ปกครองควบคุมเนื้อหาของบุตรหลานใน LookaheadScope ได้โดยตรง (Ibe2e5)
  • เพิ่ม Modifier.Node#coroutineScope เพื่ออนุญาตให้ Modifier.Nodes เปิดใช้โครูทีน (I76ef9)
  • อนุญาตให้ Modifier.Nodes อ่าน CompositionLocals โดยการใช้ CompositionLocalConsumerModifierNode interface (Ib44df)
  • การส่งต่อคลาส @Deprecated ไปยังพร็อพเพอร์ตี้ (I882d1)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.3

3 พฤษภาคม 2023

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

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

  • แก้ไขปัญหาที่ AndroidView อาจแสดงผลไม่ถูกต้องเมื่อใช้กับตัวแก้ไขบางรายการ (I4dc77, b/274797771)
  • แก้ไขข้อบกพร่องในการค้นหาโฟกัส 2 มิติที่ส่งผลต่อDropDown เมนู (b/276811828)
  • แก้ไขข้อบกพร่องในพร็อพเพอร์ตี้การเข้า/ออกโฟกัสที่กำหนดเองซึ่งเรียกใช้บล็อกการเข้า/ออกเฉพาะครั้งแรกที่เรียกใช้ Lambda (b/277234245)
  • แก้ไขการถดถอยในระบบโฟกัสที่ทำให้เกิดข้อขัดข้องขณะอ่าน focusProperties (b/271324781, b/274897776)

เวอร์ชัน 1.4.2

19 เมษายน 2023

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

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

  • แก้ไขปัญหาที่ AndroidView จะไม่นำตัวแก้ไขกลับมาใช้ซ้ำอย่างถูกต้อง ซึ่งอาจส่งผลให้เกิดลักษณะการทำงานที่ไม่คาดคิดและเกิดข้อขัดข้อง (Ib67ee, b/275919849)
  • แก้ไขการถดถอยที่แป้นพิมพ์ไม่แสดงสำหรับช่องข้อความภายในกล่องโต้ตอบที่ไม่ได้สร้างโดย Dialog Composable (I82551, b/262140644)

เวอร์ชัน 1.4.1

5 เมษายน 2023

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

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

  • แก้ไขปัญหาที่ ParentDataModifier ไม่ส่งผลต่อ AndroidView (b/274797771)

เวอร์ชัน 1.4.0

22 มีนาคม 2023

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

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

  • เพิ่ม API PinnableContainer ใหม่ที่ช่วยให้ปักหมุดรายการใน Lazy List ได้ เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010)
  • เราเขียนระบบโฟกัสใหม่โดยใช้ Modifier.NodeAPI ทดลองใหม่ (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • เพิ่มพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ DropdownList ซึ่งใช้เพื่อจำลองลักษณะการทำงานของ TalkBack เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณสามารถใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277)
  • เพิ่มTextMotionทดลองTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือเคลื่อนไหว ใช้ TextMotion.Animated หากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)

เวอร์ชัน 1.4.0-rc01

8 มีนาคม 2023

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

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

  • เพิ่มฟังก์ชันที่ประกอบกันได้ของ AndroidView ที่รับพารามิเตอร์ onReset ซึ่งจะช่วยให้สามารถนำอินสแตนซ์ของ View กลับมาใช้ซ้ำได้เมื่อทิ้งโหนดในองค์ประกอบและนำกลับมาใช้ซ้ำในลักษณะที่เข้ากันได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับLazyRowsและLazyColumnsของยอดดู (I3f10d, b/230099236)
  • เปิดตัว PlatformTextInputAdapter API ระดับต่ำใหม่สำหรับการสร้างการใช้งานอินพุตข้อความที่กำหนดเองซึ่งสื่อสารกับ API ของแพลตฟอร์มโดยตรง (I58df4)

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

  • ตอนนี้การดำเนินการตามความหมายของ BasicTextFieldSetText จะอัปเดตบัฟเฟอร์ข้อความโดยใช้เส้นทางโค้ดเดียวกันกับการอัปเดต IME และฟังก์ชันการทดสอบ (เช่น performTextReplacement)
  • ฟังก์ชันการทดสอบข้อความ performTextClearance, performTextReplacement และ performTextSelection จะใช้ SemanticsActions แล้ว (I0807d, b/269633168, b/269624358)

เวอร์ชัน 1.4.0-beta02

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

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

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

  • นำ modifierElementOf() API ออกแล้ว โปรดขยายจาก ModifierNodeElement โดยตรงแทน (I2256b)
  • เพิ่มModifier.Node.onReset()การเรียกกลับใหม่ที่ช่วยให้คุณรีเซ็ตสถานะในเครื่องบางอย่างเพื่อจัดการกรณีที่Layoutจะนำกลับมาใช้ใหม่ได้อย่างเหมาะสม (เช่น เป็นรายการของ LazyColumn) แก้ไข FocusTargetModifierNode เพื่อรีเซ็ตสถานะที่โฟกัสอย่างถูกต้อง (I65495, b/265201972)
  • เพิ่มพารามิเตอร์ BlendMode ลงในเมธอด DrawScope.drawText, Paragraph.paint และ MultiParagraph.paint เพื่อรองรับอัลกอริทึมการผสมผสานที่แตกต่างกันเมื่อวาดข้อความบน Canvas (I57508)

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

  • ปรับปรุงอัลกอริทึมลำดับการโฟกัสเพื่อการช่วยเหลือพิเศษ เช่น แถบด้านบน/ด้านล่างมักจะอ่านเป็นอันดับแรก/สุดท้ายตามลำดับ (74e9c5)

เวอร์ชัน 1.4.0-beta01

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

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

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

  • เปลี่ยนชื่อ PinnableContainer.PinnedHandle.unpin() เป็น release() แล้ว (I4667a)
  • เพิ่ม waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists และ waitUntilDoesNotExist เป็น API เวอร์ชันทดลองใน ComposeTestRule เพื่อขยาย waitUntil API ให้ยอมรับตัวจับคู่และจำนวนโหนดใดก็ได้ ดูเอกสารประกอบเพิ่มเติมได้ที่ ComposeTestRule (Ifa1b9, b/226934294)
  • เปลี่ยนชื่อ Font.MaximumAsyncTimeout เป็น Font.MaximumAsyncTimeoutMillis (I07af5)
  • นำ GoogleFont.Provider.AllFontsListUri ออกและลิงก์ไปยัง ใน ktdoc แทน (I16f29)

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

  • เพิ่มเอกสารสำหรับ AndroidFont.fontVariationSettings (I7d9e2)

เวอร์ชัน 1.4.0-alpha05

25 มกราคม 2023

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

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

  • เปิดตัวการโอเวอร์โหลดทดลองใหม่สำหรับฟังก์ชัน runComposeUiTest และฟังก์ชัน create*ComposeRule ที่ยอมรับพารามิเตอร์ CoroutineContext ระบบจะใช้บริบทในการเรียบเรียงการทดสอบ รวมถึงการเรียกใช้ LaunchedEffect และ rememberCoroutineScope() ในการเรียบเรียง (I10614, b/265177763)
  • เพิ่ม API ใหม่เพื่อติดตามความเร็ว 1 มิติ (If5a82)
  • ตอนนี้ระบบได้ทำเครื่องหมาย FocusRequester เป็น @Stable แล้ว (I580ee)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจากเครื่องมือสร้าง DialogProperties ที่ใช้พารามิเตอร์ usePlatformDefaultWidth (Ic4048)
  • เพิ่มฟังก์ชันในการคำนวณตำแหน่งและเส้นสัมผัสที่ระยะทางบนเส้นทางด้วย PathMeasure.getPosition() และ PathMeasure.getTangent() (I3b47c)
  • นำตัวตั้งค่าสาธารณะที่เปิดเผยโดยไม่ตั้งใจออกเมื่อวันที่ PlatformParagraphStyle (I07f47)
  • ประเภท/ค่า Null ของฟังก์ชันในบรรทัด/ที่เลิกใช้งานแล้ว/ที่ซ่อนอยู่เพิ่มเติม (I24f91)
  • เพิ่ม AnnotatedString.hasStringAnnotations เพื่อค้นหาคำอธิบายประกอบที่มีการจัดสรรเป็น 0 (I94dfe, b/246960758)
  • เพิ่มการโอเวอร์โหลดใหม่สำหรับฟังก์ชัน TextMeasurer.measure ซึ่งรับ String เป็นข้อความ (I47b2d, b/242705342)
  • LineBreak และ Hyphens API ใน TextStyle ได้รับการอัปเกรดเป็นเวอร์ชันเสถียรแล้ว (Ic1e1d)

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

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

เวอร์ชัน 1.4.0-alpha04

11 มกราคม 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha04 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เพิ่ม API PinnableContainer ใหม่ที่ช่วยให้ปักหมุดรายการใน Lazy List ได้ เพื่อไม่ให้ระบบทิ้งรายการเมื่อเลื่อนออกนอกขอบเขต เช่น Modifier.focusable() ใช้กลไกนี้เพื่อปักหมุดรายการที่โฟกัสอยู่ในปัจจุบัน (Ib8881, b/259274257, b/195049010)
  • เราเขียนระบบโฟกัสใหม่โดยใช้ Modifier.NodeAPI ทดลองใหม่ (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • เพิ่มพร็อพเพอร์ตี้ความหมาย IsContainer ใน Surfaces ระบบจะใช้พร็อพเพอร์ตี้นี้ในการเปลี่ยนแปลงในภายหลังซึ่งจะกำหนดลำดับการข้ามตามความหมายเชิงความหมายขององค์ประกอบต่างๆ เช่น พื้นผิว (I63379)
  • เพิ่มบทบาทการช่วยเหลือพิเศษใหม่ DropdownList ซึ่งใช้เพื่อจำลองลักษณะการทำงานของ TalkBack's เมื่อโฟกัส android.widget.Spinner ได้ (I177e5, b/236159001)
  • ตอนนี้คุณใช้ PlatformTextStyle(emojiSupportMatch) เพื่อเลือกปิดใช้การประมวลผลการรองรับอีโมจิสำหรับย่อหน้าเดียวได้แล้ว (Ia7100, b/139326806)
  • ตอนนี้การทดสอบ UI ของ Android Compose จะเรียกใช้การส่งเลย์เอาต์สำหรับแต่ละเฟรมเมื่อดำเนินการเฟรมเพื่อให้เข้าสู่สถานะว่าง (เช่น ผ่าน waitForIdle) ซึ่งอาจส่งผลต่อการทดสอบที่ยืนยันในแต่ละเฟรมของภาพเคลื่อนไหวเลย์เอาต์ (I8ea08, b/222093277)
  • เพิ่มTextMotionทดลองTextStyleเพื่อกำหนดข้อความให้เป็นStatic(default)หรือเคลื่อนไหว ใช้ TextMotion.Animated หากจะปรับขนาด แปล หรือหมุนข้อความผ่านภาพเคลื่อนไหว (I24dd7)

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

  • แทนที่อาร์กิวเมนต์ maxSize: IntSize ใน drawText ด้วย size: Size เพื่อให้สอดคล้องกับฟังก์ชัน DrawScope อื่นๆ size จะตั้งค่าเป็น Size.Unspecified โดยค่าเริ่มต้น ซึ่งไม่ควรเปลี่ยนลักษณะการทำงานเริ่มต้นก่อนหน้า (Icd27d)
  • นำตัวสร้างแบบอักษรทดลองที่เลิกใช้งานแล้วออก (I8a724, b/261435386)
  • ตอนนี้คลาสข้อมูลเครื่องมือ UI Group มีฟิลด์ isInline ซึ่งระบุว่ากลุ่มนี้ใช้สำหรับการเรียกฟังก์ชันที่ประกอบกันได้แบบอินไลน์หรือไม่ หาก isInline เป็น true แสดงว่าการเรียกใช้เป็นฟังก์ชันที่ประกอบกันได้แบบอินไลน์ อย่างไรก็ตาม ค่าอาจเป็นเท็จสำหรับการเรียกฟังก์ชันที่ใช้ร่วมกันได้แบบอินไลน์จากโมดูลที่คอมไพล์ด้วยปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันที่ไม่ได้สร้างข้อมูลฟังก์ชันอินไลน์ (Idb846)
  • ยกระดับ API แบบทดลองก่อนหน้านี้หลายรายการให้เป็น API ที่เสถียร
  • ตอนนี้ Rotary Scroll Event API เสถียรแล้ว (I42ad3, b/261561229)
  • FontVariation ตอนนี้ API เสถียรแล้ว (I8779f, b/241016309)
  • ตอนนี้ตัวสร้าง Font() ทั้งหมดเป็น API ที่เสถียรแล้ว (I5948b, b/261435386)
  • DeviceFontFamilyName พร้อมใช้งานแล้ว (I8b640, b/261435386)
  • AndroidFont เครื่องมือสร้างที่มี variationSettings ตอนนี้เป็น API ที่เสถียรแล้ว และสามารถใช้เพื่อสร้างตัวอธิบายแบบอักษรประเภทใหม่ได้ (I5adcc, b/261565807)
  • createFontFamilyResolver API เสถียรแล้ว ซึ่งใช้เพื่อตรวจหาข้อยกเว้นที่ไม่ได้จัดการในระหว่างการโหลดแบบอักษรแบบไม่พร้อมกันได้ (Ibb481, b/261435386)
  • Font.loadingStrategy API เสถียรแล้ว (I5937c, b/261435386)
  • GoogleFont API เสถียรแล้ว (Ic90b0, b/261435386)
  • ตอนนี้ TextUnit(float, TextUnitType) เป็น API ที่เสถียรแล้ว (I90c84, b/261561612)
  • ตอนนี้ pluralStringResource เป็น API ที่เสถียรแล้ว (I09849, b/261439703)

เวอร์ชัน 1.4.0-alpha03

7 ธันวาคม 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้

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

  • นำ ExperimentalComposeUiApi ออกจาก PointerIcon (I23af8)
  • แนะนำการดำเนินการเพื่อการช่วยเหลือพิเศษในหน้าเว็บ: PageUp, PageDown, PageLeft, PageRight โปรดทราบว่าฟีเจอร์เหล่านี้ใช้ได้ตั้งแต่ API 29 เป็นต้นไปเท่านั้น (Ida4ab)
  • อัปเดตมุมมองพารามิเตอร์ rememberNestedScrollConnection จากมุมมองรูทเป็นมุมมองโฮสต์ (Ia5200)
  • เพิ่ม Modifier API เพื่อค้นหาข้อมูลการเลื่อนขององค์ประกอบระดับบน (I2ba9d, b/203141462)
  • ใช้ใน Clickable เพื่อหน่วงเวลาการโต้ตอบการกดอย่างถูกต้อง เมื่อท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • แก้ไขปัญหาที่ Clickables ไม่หน่วงการกระเพื่อมอย่างถูกต้องเมื่อใช้ภายใน Scrollable ViewGroup
  • อัปเดตลิ้นชักและชีตเพื่อหน่วงเวลาการกดอย่างถูกต้องในกรณีที่ท่าทางสัมผัสอาจกลายเป็นเหตุการณ์การเลื่อน
  • เปลี่ยนชื่อ CompositingStrategy.Always เป็น Offscreen เพื่อระบุว่า graphicsLayer จะแสดงผลในบัฟเฟอร์กลาง (I47dc1) เสมอ
  • ตอนนี้เลย์เอาต์ที่มีช่องเนื้อหาหลายช่องทำงานได้อย่างเสถียรแล้ว (I10566, b/248294649)
  • เพิ่ม API ใหม่ในเวอร์ชันทดลอง PerfettoTrace.record {} และ PerfettoTraceRule เพื่อบันทึกการติดตามของ Perfetto (หรือที่เรียกว่าการติดตามระบบ) เป็นส่วนหนึ่งของการทดสอบ เพื่อตรวจสอบลักษณะการทำงานและประสิทธิภาพของการทดสอบ (I3ba16)
  • ในการทดสอบ UI โดยใช้กฎ Compose ระบบจะไม่ส่งต่อการดำเนินการต่อที่กลับมาทำงานอีกครั้งในระหว่างการเรียกกลับ withFrameNanos จนกว่าการเรียกกลับของเฟรมทั้งหมดจะทำงานเสร็จ ซึ่งจะตรงกับลักษณะการทำงานของ Compose เมื่อเรียกใช้ตามปกติ อย่างไรก็ตาม การทดสอบที่อิงตามลักษณะการทำงานแบบเก่าอาจล้มเหลว การเปลี่ยนแปลงนี้ควรส่งผลต่อโค้ดที่เรียกใช้ withFrameNanos หรือ withFrameMillis โดยตรงเท่านั้น และมีตรรกะภายนอก Callback ที่ส่งไปยังฟังก์ชันเหล่านั้น ซึ่งอาจต้องย้ายไปไว้ภายใน Callback ดูตัวอย่างการเปลี่ยนแปลงการทดสอบภาพเคลื่อนไหวใน CL นี้
  • เพิ่มพารามิเตอร์ onPerformTraversals: (Long) -> Unit ที่ไม่บังคับลงในตัวสร้าง TestMonotonicFrameClock และฟังก์ชัน Factory เพื่อเรียกใช้โค้ดหลังจาก Callback ของ withFrameNanos แต่ก่อนที่จะกลับมาใช้ Coroutine ของผู้โทร (Idb413, b/254115946, b/222093277, b/255802670)
  • เพิ่ม EmojiCompat ลงใน Compose (Ibf6f9, b/139326806)
  • เพิ่มพารามิเตอร์วอลเปเปอร์ใหม่ลงใน @Preview เพื่อรองรับสีแบบไดนามิก (I9f512)

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

  • ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้สแนปชอตหลังจากที่ Recomposer ใช้การเปลี่ยนแปลงเสร็จแล้ว (Iad6c0, b/222093277)
  • เปิดตัวการเปลี่ยนแปลงใน captureToImage เพื่ออนุญาตให้จับภาพหน้าจอแบบหลายหน้าต่าง ซึ่งมีประโยชน์สำหรับการทดสอบภาพหน้าจอที่ใช้ PopUp ของ Compose (I169c5)

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

  • ตอนนี้ UI ของ Compose และ Material ของ Compose ขึ้นอยู่กับ Lifecycle 2.5.1 แล้ว (I05ab0, b/258038814)

เวอร์ชัน 1.4.0-alpha02

9 พฤศจิกายน 2022

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

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

  • อัปเดต GraphicsLayerScope เพื่อแสดงขนาดปัจจุบันของ graphicsLayer ซึ่งมีประโยชน์ในการคำนวณการแปลง graphicsLayer เป็นฟังก์ชันของขนาดที่ประกอบได้ (If8c43,b/181387080)
  • เปิดตัว CompositingStrategy เพื่อกำหนดเวลาที่จะใช้ประโยชน์จากเลเยอร์การคอมโพสิตนอกหน้าจอสำหรับการแสดงผลเนื้อหา graphicsLayer อัตโนมัติจะคงลักษณะการทำงานเริ่มต้นซึ่งใช้เลเยอร์ภายในหากมีการใช้ค่าอัลฟ่าหรือ RenderEffect/Overscroll Always จะใช้บัฟเฟอร์นอกหน้าจอเสมอ ซึ่ง ModulateAlpha จะหลีกเลี่ยงการใช้บัฟเฟอร์นอกหน้าจอและจะปรับคำสั่งการวาดที่บันทึกไว้แต่ละรายการภายใน graphicsLayer แทน ModulateAlpha จะยังคงใช้ประโยชน์จากบัฟเฟอร์นอกหน้าจอสำหรับRenderEffect/Overscroll (I25e82, b/256382834)
  • เพิ่ม invalidateSubtree() ลงใน Modifier.Node เพื่ออนุญาตให้ลบล้างลำดับชั้นทั้งหมดสำหรับการจัดวางและการวาด (I4bd90)
  • โปรโมต rememberNestedScrollInteropConnection เป็นเวอร์ชันเสถียร เปิดตัวความสามารถในการส่งมุมมองรูทไปยัง rememberNestedScrollInteropConnection ซึ่งจะช่วยให้มุมมองที่กำหนดเองตอบสนองต่อข้อจำกัดในการเลื่อนได้ดียิ่งขึ้น โดยเฉพาะในมุมมองที่ไม่เป็นมาตรฐาน (เช่น ModalBottomSheetDialog) (I9e107)
  • เพิ่มObserverNodeอินเทอร์เฟซที่การติดตั้งใช้งาน Modifier.Node สามารถใช้เพื่อรับการแจ้งเตือนเมื่อค่าที่อ่านก่อนหน้านี้มีการเปลี่ยนแปลง (I5728b, b/247716483)
  • เพิ่มเครื่องมือสร้างใหม่ลงใน Paint ซึ่งยอมรับ android.graphics.Paint ดั้งเดิม นอกจากนี้ยังเพิ่มฟังก์ชันส่วนขยาย toComposePaint() ที่แปลงออบเจ็กต์ Paint เนทีฟที่มีอยู่เป็น Compose Paint (Ica91b)
  • เพิ่ม FontFamily.Resolver.resolveAsTypeface ใหม่เพื่อใช้ใน Android (I8950b)
  • เพิ่ม ToolingState เพื่ออนุญาตให้เครื่องมือเปลี่ยนสถานะภายในของ Composable (Ie6614)
  • ปรับโครงสร้างเครื่องมือเพื่อให้รองรับภาพเคลื่อนไหวใหม่ที่เพิ่มเข้ามาได้ดียิ่งขึ้น (I8677b)
  • เพิ่มพารามิเตอร์ minLines ลงในข้อความ Material และ Material3, TextField และ OutlinedTextField ซึ่งช่วยให้ตั้งค่าความสูงขั้นต่ำของคอมโพเนนต์ในแง่ของจำนวนบรรทัดได้ (I4af1d)

เวอร์ชัน 1.4.0-alpha01

24 ตุลาคม 2022

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

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

  • เพิ่มวิธีการใหม่ awaitEachGesture() สำหรับเครื่องตรวจจับท่าทางสัมผัส ซึ่งทำงานคล้ายกับ forEachGesture() แต่การวนซ้ำท่าทางจะทำงานภายใน AwaitPointerEventScope ทั้งหมด ดังนั้นเหตุการณ์จึงไม่สูญหายระหว่างการวนซ้ำ
  • เราเลิกใช้งาน forEachGesture() แล้วและหันมาใช้ awaitEachGesture() แทน เนื่องจาก ช่วยให้ระบบไม่พลาดเหตุการณ์ที่เกิดขึ้นระหว่างท่าทางสัมผัส (Iffc3f, b/251260206)
  • เลิกใช้งานการรีไซเคิลออบเจ็กต์การช่วยเหลือพิเศษใน androidx เราพบว่าการเปลี่ยนแปลงประสิทธิภาพนั้นเล็กน้อยมากแม้ในเวอร์ชันที่เก่าที่สุดที่รองรับ (I0a961)
  • เพิ่ม DrawStyle เป็นแอตทริบิวต์ทดลองใน TextStyle และ SpanStyle เพื่อเปิดใช้การวาดข้อความที่มีเส้นขอบ (If24b8, b/155421273)
  • ตอนนี้ AnnotatedString.Builder ได้ติดตั้งใช้งาน kotlin.text.Appendable แล้ว (I1a061, b/231030444)
  • AnnotatedString.Builder ตอนนี้มีเมธอด append(AnnotatedString, start: Int, end: Int) ในการต่อสตริงย่อยของ AnnotatedString และรูปแบบที่ตัดกันแล้ว
  • เพิ่มพารามิเตอร์ DrawStyle ลงในฟังก์ชันการวาด Paragraph และ MultiParagraph ซึ่งช่วยให้วาดข้อความที่มีเส้นขอบได้ (Ic8102, b/155421273)

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

  • ขอขอบคุณสำหรับvighneshที่เพิ่มอุปกรณ์ทีวีลงในการแสดงตัวอย่าง (Ie15cd)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.3

11 มกราคม 2023

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

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

  • แก้ไขข้อขัดข้องที่เกิดขึ้นในบางครั้งใน Android 9 เมื่อ Activity บันทึกสถานะของ Compose View (I0b755, b/260322832)

เวอร์ชัน 1.3.2

7 ธันวาคม 2022

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

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

  • อัปเดตให้ใช้ Profobuf 3.21.8 ซึ่งหลีกเลี่ยงการแจ้งเตือนด้านความปลอดภัยใน protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

เวอร์ชัน 1.3.1

9 พฤศจิกายน 2022

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

เวอร์ชัน 1.3.0

24 ตุลาคม 2022

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

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

  • ชุด API ทดลองใหม่ LookaheadLayout (ช่วยให้สร้างลักษณะการทำงานของภาพเคลื่อนไหวที่ก่อนหน้านี้ทำไม่ได้)
  • ชุด API ทดลองใหม่ Modifier.Node (ทางเลือกที่มีประสิทธิภาพสูงกว่า Modifier.composed)
  • ปรับปรุงการรองรับการแทรกหน้าต่าง
  • รองรับการโฟกัสสำหรับ D-Pad และแป้นพิมพ์ฮาร์ดแวร์ใน LazyList
  • ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp (การเปลี่ยนแปลงที่ทําให้เกิดการเปลี่ยนแปลงลักษณะการทํางานสําหรับระบบการออกแบบที่กําหนดเองบางระบบ - เหตุผลในหมายเหตุประจํารุ่นเบต้า 01)
  • การปรับปรุง API เล็กน้อยที่ไม่ทำให้เกิดการหยุดทำงานหลายรายการ
  • การแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพหลายรายการ

เวอร์ชัน 1.3.0-rc01

5 ตุลาคม 2022

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

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

  • เพิ่ม API ไฮเฟนทดลองใหม่เพื่อรองรับการใส่ไฮเฟนอัตโนมัติในข้อความ (Iaa869)

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

  • DeviceFontFamilyName จะไม่กำหนดค่า wght และการตั้งค่ารูปแบบ ital โดยค่าเริ่มต้น แต่จะใช้การตั้งค่าแพลตฟอร์มสำหรับ Typeface ที่โหลดแทน (Ia7a6d, b/246989332)
  • แก้ไขปัญหาLazyColumnหน่วยความจำรั่ว - onModifierLocalsUpdated ไม่ได้รับการเรียกใช้ด้วยค่าเริ่มต้นเมื่อมีการนำตัวแก้ไขกลับมาใช้ใหม่ (b/230168389)

เวอร์ชัน 1.3.0-beta03

21 กันยายน 2022

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

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

  • เพิ่มตัวเลือกเพื่อปรับแต่งการขึ้นบรรทัดใหม่ในข้อความ (I86907)
  • เปลี่ยนอาร์กิวเมนต์ size:IntSize ด้วย constraints: Constraints ในเมธอด TextMeasurer.measure เพื่อรองรับข้อจำกัดความกว้างขั้นต่ำ (I37530, b/242707525)

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

  • ตอนนี้ BackHandler API ของ AndroidX Activity ทำงานภายใน Composable Dialog ได้แล้ว (I35342)

เวอร์ชัน 1.3.0-beta02

7 กันยายน 2022

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

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

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

การเปลี่ยนแปลง API การโฟกัสเวอร์ชันทดลอง

  • FocusDirection.In และ FocusDirection.Out เลิกใช้งานแล้วและแทนที่ด้วย FocusDirection.Enter และ FocusDirection.Exit (Ia4262, b/183746982)
  • เพิ่มพร็อพเพอร์ตี้โฟกัสใหม่ 2 รายการ ได้แก่ enter และ exit เพื่อระบุลักษณะการทำงานที่กำหนดเองสำหรับ FocusManager.moveFocus(Enter) และ FocusManager.moveFocus(Exit) (I5f3f9, b/183746982)
  • ตอนนี้คุณใช้ FocusRequester.Cancel เพื่อยกเลิกการย้ายโฟกัสได้แล้ว FocusRequester.Cancel สามารถใช้ในพร็อพเพอร์ตี้โฟกัสต่อไปนี้ได้ ได้แก่ up, down, left, right, next, previous, start, end, enter และ exit (Ib300f)

เวอร์ชัน 1.3.0-beta01

24 สิงหาคม 2022

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

การปรับโครงสร้างโหนดตัวแก้ไข

เราได้ปรับโครงสร้างเลเยอร์ที่จัดการอินสแตนซ์ Modifier/Modifier.Element และประสานงานลักษณะการทำงานของอินสแตนซ์เหล่านั้นใน LayoutNodes ใหม่ การเปลี่ยนแปลงนี้เป็นการปรับโครงสร้างใหม่ซึ่งไม่มีผลต่อ API สาธารณะของตัวแก้ไขหลายรายการใน Compose และถือเป็นการเปลี่ยนแปลงเฉพาะการใช้งานเท่านั้น อย่างไรก็ตาม การเปลี่ยนแปลงนี้มีความสำคัญด้วยเหตุผลหลายประการ (Ie4313)

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

Modifier.Node API ที่เพิ่มเข้ามาในเวอร์ชันทดลองจะมีการดึงข้อมูลที่ช่วยให้สามารถรักษาสถานะในอินสแตนซ์ที่จะคงอยู่ตามวงจรของโหนดเลย์เอาต์ และจะได้รับการจัดสรรต่อโหนดเลย์เอาต์และต่อการใช้งาน Modifier.Element ที่เกี่ยวข้องซึ่งสร้างขึ้น

โดยทั่วไปแล้ว การแยกข้อมูลนี้เป็นกลไกทางเลือกในการสร้างตัวแก้ไขแบบมีสถานะโดยไม่ต้องอาศัยกลไกของ API Modifier.composed

ความเสี่ยง

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

โปรดอัปเกรดเป็นรุ่นนี้ด้วยความระมัดระวัง หากคุณเชื่อว่าการเปลี่ยนแปลงนี้ทำให้เกิดปัญหา โปรดแจ้งให้เราทราบ

API เวอร์ชันทดลอง

เราได้เพิ่ม API ทดลองต่างๆ ซึ่งทั้งหมดเกี่ยวข้องกับแนวคิดใหม่ของ "โหนดตัวแก้ไข" ระบบจะสร้าง Modifier.Node ขึ้นอันเป็นผลมาจาก

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

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

ลดระดับความสูงสูงสุดที่รองรับในกล่องโต้ตอบและป๊อปอัปเป็น 8dp

ระดับความสูงสูงสุดที่รองรับสำหรับกล่องโต้ตอบและป๊อปอัป Compose ลดลงจาก 30dp เป็น 8dp การเปลี่ยนแปลงนี้ส่งผลต่อทั้งกล่องโต้ตอบและป๊อปอัปที่กำหนดเองของ Material และ UI การเปลี่ยนแปลงนี้มีขึ้นเพื่อลดข้อบกพร่องด้านการช่วยเหลือพิเศษใน Android เวอร์ชันต่ำกว่า S และเพื่อให้มั่นใจว่าบริการการช่วยเหลือพิเศษภายในหน้าต่างเหล่านั้นจะโต้ตอบกับเนื้อหาภายในกล่องโต้ตอบหรือป๊อปอัปได้

การเปลี่ยนแปลงนี้จะส่งผลต่อคุณก็ต่อเมื่อคุณสร้างการติดตั้งใช้งานกล่องโต้ตอบหรือป๊อปอัปที่กำหนดเองโดยมีการตั้งค่าระดับการยกระดับสูงกว่า 8dp ลองลดระดับความสูงของกล่องโต้ตอบหรือป๊อปอัป หากต้องการเลือกไม่ใช้ลักษณะการทำงานใหม่นี้ ให้พิจารณาการแยกไดอะล็อกหรือป๊อปอัปของคุณเองโดยตั้งค่าการยกระดับที่ต้องการ เราไม่แนะนำให้ใช้วิธีนี้ เนื่องจากอาจส่งผลเสียต่อการช่วยเหลือพิเศษ และนักพัฒนาแอปต้องตรวจสอบว่าบริการช่วยเหลือพิเศษสามารถโต้ตอบและอ่านส่วนล่างของกล่องโต้ตอบหรือป๊อปอัปได้

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

  • แก้ไขปัญหาที่ painterResource จะไม่อัปเดตเมื่อมีการเปลี่ยนแปลงการกำหนดค่า (I58e73, b/228862715)
  • rememberTextMeasurer ไม่รับพารามิเตอร์ FontFamily.Resolver, Density หรือ LayoutDirection อีกต่อไป โปรดใช้ตัวสร้าง TextMeasurer เพื่อระบุค่าที่กำหนดเองสำหรับพารามิเตอร์เหล่านี้ (Ia1da3)
  • เพิ่มพร็อพเพอร์ตี้ DialogProperties.decorFitsSystemWindows เพื่อให้กล่องโต้ตอบรองรับ WindowInsets (I57742, b/229378542)
  • ย้ายตัวสร้างแบบอักษรกลับไปที่ไฟล์ Kotlin เดิมเพื่อรักษาความเข้ากันได้ของไบนารี ไม่มีการเปลี่ยนแปลงจากเวอร์ชันเสถียรล่าสุด (Ieb2f3)
  • นำตัวดำเนินการที่ไม่จำเป็นออกจากคำจำกัดความของเครื่องหมายเท่ากับหลายรายการ ซึ่งไม่มีผลใดๆ (I6c309)
  • FontVariation.Setting เป็นอินเทอร์เฟซที่ปิดผนึกไว้เพื่อให้ใช้ API การหนีบในอนาคตได้ (I11021, b/143703328)
  • เพิ่ม CompositionGroup.findParameters ไปยัง SlotTree.kt ซึ่งช่วยให้เครื่องมือดึงพารามิเตอร์สำหรับ CompositionGroup ได้โดยไม่ต้องแยกวิเคราะห์ตารางสล็อตทั้งหมด (I124fe)

เวอร์ชัน 1.3.0-alpha03

10 สิงหาคม 2022

androidx.compose.ui:ui-*:1.3.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้

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

  • LayoutCoordinates.findRootCoordinates() พร้อมใช้งานแล้ว (I7fa37, b/204723384)
  • เพิ่ม API เวอร์ชันทดลองเพื่อรับ LayoutCoordinates ใน PlacementScope ซึ่งจะช่วยให้นักพัฒนาแอปทราบว่าเลย์เอาต์ปัจจุบันอยู่ที่ใดเพื่อวางองค์ประกอบย่อยที่สัมพันธ์กับตำแหน่งของเลย์เอาต์ (I5482b, b/238632578)
  • เพิ่ม LayoutCoordinates.transformFrom เพื่อรับการเปลี่ยนรูปแบบเมทริกซ์จาก LayoutCoordinates หนึ่งไปยังอีก หนึ่ง (Ic5ab1, b/238632578)
  • เลิกใช้งาน SemanticsModifier.id และย้ายรหัสความหมายไปที่ LayoutInfo.semanticsId แทน (Iac808, b/203559524)
  • ตอนนี้แบบอักษรทรัพยากรรองรับการตั้งค่าตัวแปรแบบอักษร (API 26 ขึ้นไป) แล้ว (I900dd, b/143703328)
  • การรองรับแบบอักษรที่ปรับแต่งได้ใน DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • ตอนนี้ตัวสร้างแบบอักษรยอมรับรายการ FontVariation.Setting สำหรับการกำหนดค่าแบบอักษรตัวแปรในอุปกรณ์ O+ แล้ว (I11a9d, b/143703328)
  • เพิ่ม FontVariation API สำหรับการกำหนดและใช้แบบอักษรตัวแปร (I3c40c, b/143703328)
  • ตอนนี้ LineHeightStyle.Alignment constructor เป็นแบบสาธารณะแล้ว (ทดลอง) (I4bbbe, b/235876330)
  • ตอนนี้ย่อหน้าเป็น expect|actual และกำหนดไว้สำหรับ Android และเดสก์ท็อปแล้ว (Id387e, b/239962983)
  • ตอนนี้ Interface Paragraph เป็น Interface Paragarph ที่ปิดผนึกแล้ว ไม่มี Use Case สำหรับการสร้างคลาสย่อยของย่อหน้า และเราขอแนะนำให้ติดต่อเราหากการเปลี่ยนแปลงนี้ส่งผลกระทบต่อคุณ (If5247, b/239962983)
  • นำคำอธิบายประกอบเวอร์ชันทดลองออกจาก PlatformTextStyle และ LineHeightStyle แล้ว (I64bef)
  • เลิกใช้งาน TextInputService.show|hideSoftwareKeyboard โปรดใช้ SoftwareKeyboardController ในโค้ดแอปและ TextInputSession ในโค้ดการจัดการ IME แทน (I14e4c, b/183448615)
  • เพิ่ม API ใหม่สำหรับประเภทภาพเคลื่อนไหวที่มีอยู่ (I26179)

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

  • เพิ่ม @RequiresPermission ลงใน API ที่ต้องให้สิทธิ์ POST_NOTIFICATIONS ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)

เวอร์ชัน 1.3.0-alpha02

27 กรกฎาคม 2022

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

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

  • เพิ่มพร็อพเพอร์ตี้ PointerInputChange#pressure ใหม่เพื่อดึงข้อมูลแรงดัน (I45a5e, b/205164819)
  • เพิ่ม rememberTextMeasurer เพื่อสร้างและจดจำอินสแตนซ์ TextMeasurer ในการเขียนได้ง่ายๆ (I8d66e)
  • ตอนนี้ Rect, RoundRect และ MutableRect รองรับไวยากรณ์ in ของ Kotlin สำหรับการเรียกใช้ฟังก์ชัน contains แล้ว (Ie42b0, b/238642990)
  • นำฟังก์ชันที่ไม่จำเป็นออกจาก KeyInjectionScope เนื่องจากสามารถนำไปใช้กับส่วนที่ง่ายกว่าของ API ได้อย่างง่ายดาย ฟังก์ชันที่ถูกนำออก ได้แก่ pressKeys, keysDown และ keysUp (I81d77)
  • ปรับโครงสร้างชื่อค่าคงที่และพารามิเตอร์ใน KeyInjectionScope เพื่อรวมคำต่อท้าย "Millis" ในกรณีที่หน่วยของค่าคงที่และพารามิเตอร์ดังกล่าวเป็นมิลลิวินาที (Iabef5)
  • เพิ่มtoStringForLog()เมธอดไปยัง EditCommand เพื่อช่วยแก้ปัญหาการแก้ไขข้อความ (I53354, b/228862731)
  • เพิ่มฟังก์ชันส่วนขยาย drawText ใน DrawScope เพื่อให้วิธีวาดข้อความหลายรูปแบบใน Composable และตัวแก้ไขที่ทำงานใน DrawScope เช่น Canvas และ drawBehind (I16a62, b/190787898)
  • เปิดตัว API ทดลองใหม่ที่ชื่อ TextMeasurer ซึ่งช่วยให้คำนวณเลย์เอาต์ข้อความที่กำหนดเองได้ ซึ่งจะสร้างผลลัพธ์ที่เหมือนกับ BasicText โดยไม่ขึ้นอยู่กับรันไทม์ของ Compose (I17101)
  • เพิ่ม mapTree ไปยัง SlotTree.kt ซึ่งจะช่วยให้เครื่องมือตรวจสอบ SlotTree ได้โดยไม่ต้องทำสำเนาในหน่วยความจำก่อนเหมือนกับ asTree สำหรับเครื่องมือตรวจสอบเลย์เอาต์ การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า (I5e113)
  • เปลี่ยนการแสดงตัวอย่างการเขียนให้จัดเก็บไว้ในไฟล์เอาต์พุตไบนารี เพื่อให้นักพัฒนาแอปเขียนและนำMultiPreviewคำอธิบายประกอบจากไลบรารีมาใช้ซ้ำได้ (I85699, b/233511976)

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

  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงในเครื่องมือติดตาม Velocity เราจะพิจารณาเดลต้าแทนตำแหน่ง ซึ่งจะรับประกันว่าระบบจะคำนวณความเร็วได้อย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ (Icea9d, b/216582726, b/223440806, b/227709803)
  • แก้ไข NPE ที่เกิดจาก AnnotatedString.toUpperCase เมื่อมีคำอธิบายประกอบ (I0aca2, b/210899140)

เวอร์ชัน 1.3.0-alpha01

29 มิถุนายน 2022

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

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

  • LookaheadLayout ใหม่ที่รองรับการส่งผ่านล่วงหน้าก่อนการวัด/เลย์เอาต์จริง ซึ่งจะช่วยให้คำนวณเลย์เอาต์ล่วงหน้าได้เมื่อมีการเปลี่ยนแปลง ขณะเดียวกันก็อนุญาตให้การวัด/เลย์เอาต์หลังการมองไปข้างหน้าใช้ขนาด/ตำแหน่งที่คำนวณไว้ล่วงหน้าเพื่อเคลื่อนไหวขนาดและตำแหน่งไปยังเป้าหมาย SubcomposeLayouts ยังไม่รองรับ แต่จะรองรับในรุ่นที่จะเปิดตัวเร็วๆ นี้ (I477f5)
  • เพิ่มพารามิเตอร์อัลฟ่าที่ไม่บังคับลงในลักษณะแปรงของ TextStyle และ SpanStyle เพื่อแก้ไขความทึบแสงของ Text ทั้งหมด (Ic2fac, b/234117635)
  • เปิดตัวUrlAnnotationประเภทคำอธิบายประกอบและเมธอดที่เกี่ยวข้องเพื่อรองรับTalkBackการรองรับลิงก์ในAnnotatedString (I1c754, b/231495122)
  • ย้ายฟังก์ชันยูทิลิตีไปยังรันไทม์ (I4f729)

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

  • TextLayoutResult.getLineForOffset ไม่ได้โยน (Idc5d6, b/235876324)

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

  • เพิ่ม API ใหม่ WindowInfo.keyboardModifiers เพื่อสังเกตสถานะภายในฟังก์ชันที่ใช้ร่วมกันได้หรือผ่าน snapshotFlow (Icdb8a)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

10 สิงหาคม 2022

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

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

  • แก้ไข NullPointerException ในเครื่องมือตรวจสอบ (b/237987764)
  • แก้ไขข้อยกเว้นการแคสต์ชั้นเรียนระหว่างการจดจำในเครื่องมือตรวจสอบ (b/235526153)

เวอร์ชัน 1.2.0

27 กรกฎาคม 2022

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

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

  • การปรับปรุงการย้ายโฟกัส

    • ตอนนี้การเลื่อนรายการแบบ Lazy ที่ขับเคลื่อนด้วยโฟกัสใช้งานได้แล้วโดยใช้ BeyondBoundsLayout core API ใหม่
    • API การปรับแต่งลักษณะการทำงานใหม่ใน FocusOrder และ FocusProperties
    • ปรับปรุงลักษณะการทำงานเมื่อใช้แป้นพิมพ์จริงหรือรีโมตทีวี
  • API ใหม่สำหรับ

    • ส่วนที่เว้นไว้ในหน้าต่าง
    • Primitive หลักสำหรับการเคลื่อนไหวที่ขับเคลื่อนด้วยท่าทางสัมผัส ภาพเคลื่อนไหวแบบไม่สิ้นสุด และภาพเคลื่อนไหวของเลย์เอาต์
    • ความสามารถของ GraphicsLayer ซึ่งรวมถึง RenderEffect
  • การแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพหลายรายการ

เวอร์ชัน 1.2.0-rc03

29 มิถุนายน 2022

androidx.compose.ui:ui-*:1.2.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตต่อไปนี้

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

เวอร์ชัน 1.2.0-rc02

22 มิถุนายน 2022

androidx.compose.ui:ui-*:1.2.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตต่อไปนี้

เวอร์ชัน 1.2.0-rc01

15 มิถุนายน 2022

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

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

  • ตอนนี้อินเทอร์เฟซในไลบรารี Compose สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้นของ jdk8 (I5bcf1)
  • เพิ่มฟังก์ชันลำดับที่สูงกว่าลงใน KeyInjectionScope สำหรับการแทรกการกดแป้นขณะที่กดแป้นอื่นค้างไว้หรือเปิด/ปิด ฟังก์ชันเหล่านี้ ได้แก่ withKeysDown, withKeysToggled ฯลฯ นอกจากนี้ ยังเพิ่มพร็อพเพอร์ตี้สำหรับตรวจสอบว่ากดปุ่ม Meta ที่เฉพาะเจาะจงหรือไม่ เช่น isCtrlDown เพื่อตรวจสอบว่ากดปุ่มควบคุมหรือไม่ โปรดดูเอกสารประกอบเกี่ยวกับแต่ละฟังก์ชันใน KeyInjectionScope (I9f6cd, b/229831515)
  • เราได้เปิดตัว OverscrollEffect เวอร์ชันทดลองเพื่ออนุญาตให้ใช้เอฟเฟกต์การเลื่อนเกินแบบกำหนดเองควบคู่ไปกับโอเวอร์โหลด Modifier.scrollable ที่ยอมรับเอฟเฟกต์ดังกล่าว
  • LocalOverScrollConfiguration เวอร์ชันทดลองได้ย้ายจาก foundation.gesture ไปยังแพ็กเกจพื้นฐานและเปลี่ยนชื่อเป็น LocalOverscrollConfiguration (If19fb, b/204650733)
  • เปลี่ยนชื่อ runComposeUiTestWithoutActivity {} เป็น runEmptyComposeUiTest {} ซึ่งสอดคล้องกับ createEmptyComposeRule() (I6fed7)

เวอร์ชัน 1.2.0-beta03

1 มิถุนายน 2022

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

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

  • เพิ่ม pressKeyTimes รวมถึง isCapsLockOn และเพื่อนๆ ใน KeyInjectionScope นอกจากนี้ ตอนนี้ API ยังรองรับรูปแบบการแทรกที่รวมเมาส์และแป้นพิมพ์ เช่น การคลิกปุ่มเมาส์ขณะกดปุ่ม Meta ค้างไว้ (I4c8da, b/229831515)
  • เพิ่มการรองรับการแทรกเหตุการณ์สำคัญในเวอร์ชันทดลอง ใช้ performKeyInput เพื่อส่งเหตุการณ์สำคัญ หรือส่งผ่านพร็อพเพอร์ตี้ key ของ MultiModalInjectionScope ระหว่างท่าทางสัมผัสแบบหลายรูปแบบด้วย performMultiModalInput ดูเอกสารประกอบของ API ได้ที่ KeyInjectionScope (Ic5000, b/229831515)
  • เพิ่ม GoogleFont.Provider.AllFontsListUri ใหม่สำหรับการดึงแหล่งที่มาที่เชื่อถือได้บนอินเทอร์เน็ตของ Google Fonts ที่ Android รองรับ
  • ปรับปรุงข้อความแสดงข้อผิดพลาดที่ส่งกลับเมื่อ GoogleFonts โหลดใน Compose ไม่สำเร็จ (I0416c)

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

  • เมื่อเพิ่มเหตุการณ์ InputEventChange ลงใน Velocity Tracker เราจะพิจารณาเดลต้าปัจจุบันแทนตำแหน่ง ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคำนวณความเร็วอย่างถูกต้องในทุกกรณี แม้ว่าองค์ประกอบเป้าหมายจะเคลื่อนที่ก็ตาม (I51ec3, b/216582726, b/223440806, b/227709803)
  • ตอนนี้ระบบจะใช้Show Layout Boundsกับการเขียนที่ใช้ Compose ทันทีหลังจากสลับจากการ์ดการตั้งค่าด่วน โดยไม่ต้องออกจากกิจกรรมแล้วกลับเข้าไปใหม่ (I843d5, b/225937688)
  • การค้นหาสตริงการช่วยเหลือพิเศษจะไม่ทริกเกอร์การโหลดแบบอักษร ก่อนหน้านี้ ระบบจะพยายามโหลดแบบอักษรสำหรับ StyleSpans ซึ่ง จะทำให้เกิดข้อขัดข้องหากมีการเขียนทับ FontFamily.Resolver (I4609d)
  • การกดปุ่มลบไปข้างหน้าเมื่อเคอร์เซอร์อยู่ที่ท้ายช่องข้อความจะไม่ทำให้เกิดข้อขัดข้องอีกต่อไป
  • DeleteSurroundingTextCommand และ DeleteSurroundingTextInCodePointsCommand กำหนดให้อาร์กิวเมนต์ของตัวสร้างต้องไม่เป็นลบ (Ica8e6, b/199919707)

เวอร์ชัน 1.2.0-beta02

18 พฤษภาคม 2022

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

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

  • การนำฟังก์ชันการทำงานในตัวอย่างประเภทอื่นๆ มาใช้ซ้ำ (I19f39)

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

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer เปลี่ยนชื่อเป็น DisposeOnDetachedFromWindowOrReleasedFromPool เพื่อให้สะท้อนถึงการจำหน่ายได้ดีขึ้นเมื่อมีการจำหน่ายเกิดขึ้น แทนที่จะเป็นเพียงเมื่อไม่มีการจำหน่าย (If15ca)

เวอร์ชัน 1.2.0-beta01

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

  • นี่คือเวอร์ชันเบต้า 1.2 รุ่นแรก

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

  • เพิ่ม BeyondBoundsInterval เวอร์ชันทดลองที่การติดตั้งใช้งาน LazyList ที่กำหนดเองใช้ได้เมื่อจัดวางไอเทมเกินขอบเขตที่มองเห็นได้ (Ifabfb, b/184670295)
  • ตอนนี้ Modifier.composed เวอร์ชันที่ใช้คีย์เป็น API ที่เสถียรแล้ว (Ie65e4, b/229988420)
  • ปรับปรุง rememberNestedScrollConnection API ให้ใช้ CompositionLocal เพื่อรับข้อมูลมุมมองปัจจุบัน (I67ca7)
  • ตอนนี้คุณใช้@ComposableTargetคำอธิบายประกอบและคำอธิบายประกอบที่ทำเครื่องหมายด้วย @ComposableTargetMarker ได้แล้วในขอบเขตไฟล์โดยใช้คำนำหน้า @file การใช้คำอธิบายประกอบเป้าหมายที่ขอบเขตไฟล์จะทำให้คอมไพเลอร์ถือว่าฟังก์ชันที่ประกอบกันได้ทั้งหมดในไฟล์มีไว้เพื่อกำหนดเป้าหมาย Applier ที่เชื่อมโยง เช่น การใช้ @file:UiComposable จะประกาศว่าฟังก์ชัน @Composable ทั้งหมดกำหนดเป้าหมายไปยังตัวใช้ Compose UI ฟังก์ชันที่ต้องกำหนดเป้าหมายไปยังแอปพลิเคชันอื่นต้องระบุคำอธิบายประกอบเครื่องหมายเป้าหมายสำหรับแอปพลิเคชันที่ต้องการอย่างชัดเจน (I40804)
  • เปิดตัว API การทดสอบใหม่ในเวอร์ชันทดลองที่ไม่ขึ้นกับแพลตฟอร์ม interface ComposeUiTest และ fun runComposeUiTest(block: ComposeUiTest.() -> Unit) ซึ่งใช้เพื่อเรียกใช้การทดสอบ UI ของ Compose ได้ โดยไม่ต้องมี TestRule หากต้องการเรียกใช้การทดสอบโดยไม่มี ComposeTestRule ให้ส่งการทดสอบเป็น Lambda ไปยัง runComposeUiTest และใช้วิธีการและสมาชิกในขอบเขตตัวรับ ComposeUiTest ซึ่งเป็นรายการเดียวกันกับใน ComposeContentTestRule

    ระบบจะเพิ่ม interface AndroidComposeUiTest และ fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) เฉพาะของ Android เพื่อให้สิทธิ์เข้าถึง Activity พื้นฐาน ซึ่งคล้ายกับ AndroidComposeTestRule หากต้องการควบคุมได้มากยิ่งขึ้น คุณสามารถสร้างอินสแตนซ์ของ class AndroidComposeUiTestEnvironment เองได้

    การติดตั้งใช้งานบนเดสก์ท็อปคือ class DesktopComposeUiTest แต่ขณะนี้ยังไม่มีฟังก์ชันการเรียกใช้เฉพาะเดสก์ท็อป

    การย้ายข้อมูลการทดสอบจาก ComposeTestRule ไปยัง ComposeUiTest สามารถทำได้ ดังนี้ (ตัวอย่าง Android) จาก:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    ถึง:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • ขณะนี้ ComposeContentTestRule และ ComposeTestRule ยังไม่ได้ขยายจาก ComposeUiTest ซึ่งหมายความว่ายังเรียกใช้ฟังก์ชันส่วนขยายใน ComposeUiTest บนอินเทอร์เฟซ TestRule ไม่ได้ เมื่อ ComposeUiTest เปลี่ยนเป็น API ที่เสถียรแล้ว เราจะเปลี่ยน ComposeContentTestRule และ ComposeTestRule ให้ขยายจาก ComposeUiTest (Ib4e90)

  • LineHeightBehavior เปลี่ยนชื่อเป็น LineHeightStyle

  • LineVerticalAlignment เปลี่ยนชื่อเป็น LineHeightStyle.Alignment

  • เปลี่ยนชื่อ LineHeightTrim เป็น LineHeightStyle.Trim

  • นำค่าเริ่มต้นของตัวสร้างจาก LineHeightStyle ออกแล้ว (I582bf, b/181155707)

  • เพิ่ม Brush ใน 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)

  • ฟังก์ชัน PlatformParagraphStyle.lerp และ PlatformSpanStyle.lerp เปลี่ยนเป็นฟังก์ชันระดับบนสุด (I9a268)

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

  • ขณะนี้เอกสารประกอบของ PointerInputChange::copy ระบุอย่างถูกต้องว่าเป็นการคัดลอกแบบตื้น (I182f5)
  • รองรับจุดไข่ปลาเมื่อความสูงจำกัดและไม่พอดีกับข้อความทุกบรรทัด (Ie528c, b/168720622)
  • เปิดโดยค่าเริ่มต้น includeFontPadding คุณปิดincludeFontPaddingได้โดยใช้แอตทริบิวต์ TextStyle.platformTextStyle ในอนาคตอันใกล้นี้ เราจะเปลี่ยนลักษณะการทำงานเริ่มต้น แต่ในระหว่างนี้ การดำเนินการนี้จะช่วยให้เราผสานรวมการปรับปรุงความสูงของบรรทัด (aosp/2058653) ได้ดียิ่งขึ้น และแก้ปัญหาการตัดTextFieldได้ (I01423, b/171394808)

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

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

เวอร์ชัน 1.2.0-alpha08

20 เมษายน 2022

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

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

  • เราทำเครื่องหมายฟังก์ชัน pluralStringResource ว่าเป็นเวอร์ชันทดลองเพื่อให้สามารถพัฒนาเพื่อรองรับการแปลภาษาได้ดียิ่งขึ้นในอนาคต (If24e4)
  • ตอนนี้ Paragraph และ MultiParagraph รองรับพารามิเตอร์ Constraints แล้ว การส่ง Constraints.maxHeight จะไม่มีผลในตอนนี้ แต่จะช่วยให้ทำการคำนวณบางอย่างได้ในอนาคต เช่น การย่อข้อความตามความสูง (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ตอนนี้ยอมรับคลาสที่กำหนดเองซึ่งคล้ายกับ MutableSet ซึ่งไม่อนุญาตให้เพิ่มรายการใหม่ในคลาส (Icd314)
  • ตอนนี้ PointerIcon เป็น@Stableอินเทอร์เฟซแล้ว (I9dafe)
  • PointerInputChange เลิกใช้งานการดูบางส่วน (ลงหรือตำแหน่ง) แล้ว คุณใช้ consume() เพื่อใช้การเปลี่ยนแปลงให้เสร็จสมบูรณ์ได้ คุณใช้ isConsumed เพื่อพิจารณาว่ามีบุคคลอื่นใช้การเปลี่ยนแปลงไปก่อนหน้านี้หรือไม่
  • PointerInputChange::copy() จะสร้างสำเนาแบบตื้นเสมอ ซึ่งหมายความว่าระบบจะใช้สำเนาของ PointerInputChange เมื่อมีการใช้สำเนาใดสำเนาหนึ่ง หากต้องการสร้าง PointerInputChange ที่ไม่มีขอบเขต ให้ใช้เครื่องมือสร้างแทน (Ie6be4, b/225669674)
  • เปิดใช้การทำงานร่วมกันของการเลื่อนที่ฝังไว้ระหว่าง Compose กับ View ในทิศทาง Compose > View ซึ่งหมายความว่าองค์ประกอบหลักของ Compose จะรับเดลต้าการเลื่อนที่ซ้อนกันจาก NestedScrollView ได้ (If7949, b/174348612)
  • SemanticsProperty testTagsAsResourceId ใหม่ ซึ่งใช้เพื่อทำให้ Compose สอดคล้องกับการทดสอบ UIAutomator ที่ออกแบบมาสำหรับระบบ View (I39c20)
  • แสดงความหนาทั้งหมดที่มีสำหรับแบบอักษรของระบบใน Android เมื่อใช้ FontFamily.SansSerif ซึ่งจะใช้ชื่อแบบอักษรสำรอง เช่น sans-serif-medium ภายใน API 21-28 นี่เป็นการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากก่อนหน้านี้ API 21-28 รองรับเฉพาะน้ำหนัก 400 และ 700 (I380fe, b/156048036, b/226441992)
  • ผู้สอนที่ใช้ Paragraph และ Multiparagraph ได้เรียงลำดับอาร์กิวเมนต์ตำแหน่งใหม่ให้อยู่ก่อนอาร์กิวเมนต์ที่ไม่บังคับ (Idafaa)
  • AndroidFont ตอนนี้ใช้ typefaceLoader เป็นพารามิเตอร์ของตัวสร้าง (I2c971)

เวอร์ชัน 1.2.0-alpha07

6 เมษายน 2022

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

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

  • เพิ่มฟังก์ชันใหม่ Snapshot.withoutReadObservation { ... } แล้ว ซึ่งช่วยให้ผู้ใช้เรียกใช้ Lambda ที่ส่งผ่านได้โดยไม่ต้องสมัครรับข้อมูลการเปลี่ยนแปลงค่าสถานะที่อ่านในระหว่างบล็อกนี้ คุณอาจพบว่าฟีเจอร์นี้มีประโยชน์ในกรณีการใช้งานที่คุณต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยแบบเธรดตามสแนปชอต แต่ต้องการอ่านค่าได้โดยไม่ต้องทำให้เกิดการจัดองค์ประกอบหรือการวัดซ้ำที่ไม่จำเป็น (I9f365, b/214054486)
  • consumeWindowInsets พร็อพเพอร์ตี้ส่วนขยายของ ComposeView ช่วยให้นักพัฒนาแอปปิดใช้การใช้ WindowInsets ของ Android ได้ ซึ่งช่วยให้ ComposeViews แยกกันในลำดับชั้นใช้ WindowInsets ได้โดยไม่รบกวนกัน (I0ef08, b/220943142)
  • เพิ่ม KeyboardType.Decimal เป็นทางเลือกแทน Keyboard.Number เพื่อรวมตัวคั่นทศนิยมใน IME โดยเฉพาะ (Iec4c8, b/209835363)
  • PointerEventType.Scroll และ PointerEvent.scrollDelta เป็น API ที่เสถียรแล้ว (I574c5, b/225669674)
  • เปิดใช้การทำงานร่วมกันของการเลื่อนที่ซ้อนกันระหว่าง View กับ Compose สำหรับคลาส View ที่ทำงานร่วมกัน ซึ่งหมายความว่าตอนนี้ Compose สามารถส่งส่วนต่างของการเลื่อนไปยัง View ระดับบนสุด (ที่ทำงานร่วมกัน) ได้แล้ว (I5d1ac, b/174348612)
  • อัปเดต FontFamily.Resolver เพื่อผสานรวมการตั้งค่าการช่วยเหลือพิเศษสำหรับข้อความตัวหนาทั้งระบบ (I6c1e7)
  • Font(AssetManager, String, ...) เลิกใช้งานแล้ว และแทนที่ด้วย Font(String, AssetManager, ...) นี่คือ API เวอร์ชันทดลอง (I1c7a4)
  • เพิ่มตัวอธิบายแบบอักษรใหม่ Font(DeviceFontFamilyName) เพื่อค้นหาแบบอักษรที่ติดตั้งในระบบโดยไม่บังคับในระหว่างเชนการสำรองแบบอักษร (I30468, b/219754572)
  • เพิ่มการกำหนดค่าความเข้ากันได้ชั่วคราวสำหรับ includeFontPadding ใน TextStyle/ParagraphStyle คุณเปลี่ยน includeFontPadding ได้ผ่าน TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) นี่เป็นตัวเลือกการกำหนดค่าชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลและจะถูกนำออก (If47be, b/171394808)
  • เพิ่มส่วนขยาย GoogleFont.Provider.isAvailableOnDevice เพื่อช่วยในการแก้ไขข้อบกพร่อง (I64e31)
  • เพิ่มตัวสร้าง GoogleFont.Provider เพื่อใช้กับ @ArrayRes (Ic5ee1, b/225984280)
  • ตอนนี้ Compose GoogleFont เปลี่ยนชื่อเป็น Font(GoogleFont) แล้ว แต่ API ยังคงมีความเสถียร (I125f2)

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

  • เพิ่มการตรวจสอบ Lint ใน Material/Scaffold เพื่อให้แน่ใจว่ามีการใช้ระยะเว้นภายใน (Ifb111)

เวอร์ชัน 1.2.0-alpha06

23 มีนาคม 2022

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

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

  • เพิ่มการดำเนินการทางความหมาย RequestFocus เพื่อขอให้โฟกัสที่เป้าหมายที่โฟกัสได้ (I17b71)
  • อัปเดตการแยกวิเคราะห์ Vector Drawable เพื่อรองรับการมิเรอร์อัตโนมัติเพื่อพลิกเนื้อหาของ VectorPainter หากเลย์เอาต์ปัจจุบัน เป็นแบบ RTL (I79cd9, b/185760237)
  • อัปเดตสีเงา/สีโดยรอบให้เป็นพารามิเตอร์ต่อท้ายของ Modifier.graphicsLayer เพื่อความเข้ากันได้ของ API (I3f864, b/160665122)

  • เพิ่มการติดตั้งใช้งานเริ่มต้นให้กับสีเงา/สีโดยรอบใน GraphicsLayerScope เพื่อให้มั่นใจว่าการเปลี่ยนแปลง API จะไม่ทำให้เกิดข้อผิดพลาด

  • เพิ่มเวลาจัดกิจกรรมลงในกิจกรรม RSB (Ief8ae)

  • ตอนนี้เราได้รวม FocusOrder เข้ากับ FocusProperties แล้ว และ focusProperties() ก็มีความสามารถทั้งหมดของ focusOrder() แล้ว FocusOrder และ focusOrder() เลิกใช้งานแล้ว focusOrder() ที่ยอมรับ focusRequester ควรแทนที่ด้วยตัวแก้ไข focusRequester() ร่วมกับ focusProperties() ซึ่งช่วยให้ตัวแก้ไขแยกความกังวลได้ชัดเจนยิ่งขึ้น (I601b7)

  • การอัปเกรดทั้ง RecyclerView และ Compose จะส่งผลให้ประสิทธิภาพการเลื่อนของ RecyclerView ที่มีมุมมอง Compose เป็นองค์ประกอบย่อยดีขึ้นมาก

  • เพิ่ม ViewCompositionStrategy.Default เป็นวิธีการดึงกลยุทธ์เริ่มต้นในตัว

  • เพิ่ม ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer ซึ่งเป็นกลยุทธ์เริ่มต้นใหม่และจัดการคอนเทนเนอร์การจัดกลุ่มอย่างเหมาะสม เช่น RecyclerView (If7282)

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

  • เพิ่มอุปกรณ์อ้างอิงลงในรายการอุปกรณ์สำหรับ @Preview (I071c9)

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

  • อัปเดต API กราฟิกแบบเวกเตอร์ให้ใช้คำอธิบายประกอบที่เหมาะสมซึ่งประกอบได้ @VectorComposable แทน @UiComposable (I942bc)
  • นำ crossinline ออกจาก AnnotatedString.Builder.withStyle (If84d5)

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

  • compose-ui: เพิ่มพร็อพเพอร์ตี้ ambientShadowColor และ spotShadowColor ลงใน GraphicsLayerScope (I1ba1a, b/160665122)
  • ตอนนี้ระบบรองรับแหล่งข้อมูลที่เป็นพหูพจน์ผ่านฟังก์ชัน pluralStringResource แล้ว (Ib2f23, b/191375123)

เวอร์ชัน 1.2.0-alpha05

9 มีนาคม 2022

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

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

  • ตอนนี้ TextToolbar รับอาร์กิวเมนต์ Lambda แทน ActionCallback แล้ว (Ib2eb9, b/197950089)
  • อัปเดตค่า Null ใน Core และ Appcompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
  • ตอนนี้อินเทอร์เฟซที่วัดผลได้จะแสดงพร็อพเพอร์ตี้ parentData (I3313f)
  • Modifier.onPlaced และอินเทอร์เฟซ OnPlacedModifier ตอนนี้เสถียรแล้ว (Ib5482)
  • ไชโย! ตอนนี้ฟีเจอร์ Compose Animation รองรับการตั้งค่า "สเกลระยะเวลาของ Animator" จากตัวเลือกสำหรับนักพัฒนาแอปแล้ว (I5a4fc, b/161675988)
  • เพิ่มตัวแก้ไข BeyondBoundsLayout local (If8b51, b/184670295)
  • ข้อความ: ตอนนี้ระบบจะปิด includeFontPadding โดยค่าเริ่มต้น เราได้includeFontPadding=falseจัดการปัญหาการตัด แล้ว และไม่ควรมีการตัดสคริปต์ที่ยาว (I31c84, b/171394808)

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

  • ComposeContentTestRule.setContent จะแสดง IllegalStateException หากคุณพยายามตั้งค่าเนื้อหาในขณะที่มีเนื้อหาอยู่แล้ว (I888a5, b/199631334)
  • แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
  • ปรับปรุงตัวอย่างการเลื่อน RSB (I6a596)

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

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

เวอร์ชัน 1.2.0-alpha04

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

androidx.compose.ui:ui-*:1.2.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตต่อไปนี้

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

  • เพิ่ม ComposableTarget, ComposableTargetMarker และ ComposableOpenTarget ที่ช่วยให้รายงานเวลาคอมไพล์ได้เมื่อ มีการเรียกใช้ฟังก์ชันที่ประกอบกันได้ซึ่งกำหนดเป้าหมายไปยัง Applier ที่ไม่ได้ ออกแบบมาให้ใช้

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

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

  • Font(resId, ...) ตอนนี้ใช้ loadingStrategy ใน API ที่เสถียรแล้ว (Ief3d2)

  • ตอนนี้ FontLoadingStrategy เป็น API ที่เสถียรแล้ว (I1ee35, b/174162090)

  • รองรับการโหลดแบบอักษรแบบไม่พร้อมกันในข้อความ (I77057, b/214587005)

  • เพิ่ม Bridge API เพื่อแปลง Font.ResourceLoader ที่กำหนดเองเป็น FontFamily.Resolver (Ia0060)

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

  • FontFamily.Resolver ที่ระบุจะส่งไปยังองค์ประกอบย่อย เช่น ป๊อปอัป
  • Font.ResourceLoader ที่ระบุจะส่งไปยังองค์ประกอบย่อย เช่น ป๊อปอัป (I48fa5)

เวอร์ชัน 1.2.0-alpha03

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

androidx.compose.ui:ui-*:1.2.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตต่อไปนี้

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

  • ตอนนี้เราเลิกใช้งานเมธอด notifyFocusedRect ใน TextInputSession และ TextInputService แล้ว และจะไม่เรียกใช้เมธอดดังกล่าว โปรดใช้ BringIntoViewRequester แทน (Ia4302, b/192043120, b/216842427, b/178211874)
  • เปิดตัวเมธอด destroyDisplayListData ในคลาส Stub RenderNode (I1e659, b/216660268)
  • เพิ่ม API ใหม่ที่ช่วยให้วัดขนาดล่วงหน้าขององค์ประกอบย่อยของ SubcomposeLayout ที่คุณคอมโพสล่วงหน้าได้ (I857ea)
  • เพิ่ม movableContentOf ซึ่งแปลง Composable Lambda เป็น Lambda ที่ย้ายสถานะและโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกใช้ เมื่อการโทรครั้งก่อนออกจาก การคอมโพส ระบบจะเก็บรักษาสถานะไว้ชั่วคราว และหากมีการโทรใหม่ ไปยัง Lambda เข้ามาในการคอมโพส ระบบจะย้ายสถานะและโหนดที่เชื่อมโยง ไปยังตำแหน่งของการโทรใหม่ หากไม่มีการเพิ่มการโทรใหม่ ระบบจะนำสถานะออกอย่างถาวรและแจ้งให้ผู้สังเกตการณ์ที่จดจำทราบ

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

  • FontFamilyResolver พร้อมให้บริการแล้วผ่าน LocalFontFamilyResolver.current

  • เพิ่ม createFontFamilyResolver(context) และ createFontFamilyResolver(context, coroutineScope) เพื่อสร้างตัวแก้ไข FontFamily ใหม่นอกการใช้งาน Compose

  • ตอนนี้ Paragraph และ MultiParagraph ใช้ FontFamily.Resolver

  • ตอนนี้ TextLayoutResult.layoutInput.fontFamilyResolver มี รีโซลเวอร์ที่ใช้สำหรับเลย์เอาต์นี้ ซึ่งเลิกใช้งาน TextLayoutResult.layoutInput.resourceLoader แล้วเนื่องจากไม่มีการใช้งานอีกต่อไป (Id5a45, b/174162090)

  • รองรับการโหลดแบบไม่พร้อมกันและแบบไม่บังคับของแบบอักษร พร้อมลักษณะการทำงานสำรอง เส้นทางนี้ใช้โดย Text และ TextField และแสดงผ่าน FontFamilyResolver

  • รองรับการโหลดแบบอักษรล่วงหน้าผ่าน FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext อนุญาตให้ตั้งค่า บริบทของโครูทีนส่วนกลางที่ใช้ในการโหลดแบบอักษรแบบไม่พร้อมกัน (I87fe8, 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) แทน

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

  • เปิดเผยฟังก์ชัน HSV และ HSL ใน Color เป็น API ที่ไม่ใช่เวอร์ชันทดลอง ตอนนี้พื้นที่สี Oklab เป็น API สาธารณะแล้ว (I08fb6, b/180731008)

  • เลิกใช้งาน AndroidComposeTestRule.AndroidComposeStatement ซึ่งไม่ได้มีไว้ใน API สาธารณะและไม่ได้ทำอะไรให้คุณ อยู่แล้ว (Ibc46b)

  • เปลี่ยนชื่อคลาส kt ที่สร้างขึ้นภายใน (Ia0b9e, b/174162090)

  • นำออกแล้ว FontLoadingStrategy.values (I42a9d, b/174162090)

  • ตอนนี้ตัวโหลดแบบอักษรส่วนกลางเปลี่ยนชื่อเป็น FontFamilyResolver แล้ว (I4f773, b/174162090)

  • ใช้ระบบการโหลดแบบอักษรใหม่สำหรับเดสก์ท็อป (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve returns State<Any> (I4406c, b/174162090)

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

  • ตอนนี้ TextField จะอยู่เหนือแป้นพิมพ์เมื่อมีการโฟกัสและแสดงแป้นพิมพ์เมื่อโหมดป้อนข้อมูลแบบนุ่มเป็น ADJUST_PAN (I8eaeb, b/190539358, b/192043120)
  • เดสก์ท็อปใช้ Composition Local สำหรับ FontFamily.Resolver
  • เลิกใช้งานเดสก์ท็อป FontLoader แล้ว
  • createFontFamilyResolver ใหม่ในเดสก์ท็อป (I6bbbb, b/174162090)
  • ประเภทการป้อนข้อมูลของแป้นพิมพ์เสมือนจะไม่กะพริบอีกต่อไปเมื่อเปลี่ยน โฟกัสระหว่างช่องข้อความ (I1bf50, b/187746439)

เวอร์ชัน 1.2.0-alpha02

26 มกราคม 2022

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

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

  • เพิ่ม Modifier.onRotaryScrollEvent() และ Modifier.onPreRotaryScrollEvent() สำหรับอุปกรณ์สวมใส่ที่มีปุ่มด้านข้างแบบหมุน (I18bf5, b/210748686)
  • เพิ่มส่วนขยายView.createLifecycleAwareRecomposer เวอร์ชันทดลอง (I0cde6)

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

  • PointerEvent.scrollDelta.y ใน Android จะกลับด้านแล้ว (ตอนนี้จะแสดงผลเป็น 1 แทน -1 หากเราเอียงล้อเมาส์ไปทางขวา) (Ia9811)

เวอร์ชัน 1.2.0-alpha01

12 มกราคม 2022

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

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

  • เลิกใช้งานแล้ว FontFamily.canLoadSynchronously พร็อพเพอร์ตี้นี้ไม่มีความหมายเชิงความหมาย (Ica5ef)
  • เพิ่มฟิลด์ข้อมูลระบุตัวตนลงใน CompositionData เพื่อสร้างรหัสที่ไม่เปลี่ยนแปลงในเครื่องมือตรวจสอบเลย์เอาต์ (Ic116e)
  • เพิ่มรหัสอุปกรณ์ Wear OS ลงในรายการอุปกรณ์ตัวอย่าง (I93232)

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

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

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

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

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

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

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

เวอร์ชัน 1.1.0

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

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

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

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

เวอร์ชัน 1.1.0-rc03

26 มกราคม 2022

androidx.compose.ui:ui-*:1.1.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้

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

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

เวอร์ชัน 1.1.0-rc01

15 ธันวาคม 2021

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

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

  • แก้ไขข้อบกพร่องที่ทำให้การเลื่อนเพื่อการช่วยเหลือพิเศษหายไป (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() จะใช้งานได้ด้วยหาก HardwareRenderer.isDrawingEnabled() เป็น false โดยการเปิดใช้ในระยะเวลาของการโทร (Idf3d0)

เวอร์ชัน 1.1.0-beta04

1 ธันวาคม 2021

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

ฟีเจอร์ใหม่

  • อัปเดตให้เข้ากันได้กับ Kotlin 1.6.0

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

  • ล้างค่า Null ใน androidx.core.view (I7078a, b/204917439)
  • เพิ่ม API เวอร์ชันทดลองที่อนุญาตให้ผู้ใช้ใช้ PointerInputchange ทั้งหมดหรือตรวจสอบว่ามีการใช้หรือไม่ (I2e59d)
  • เพิ่มการรองรับเหตุการณ์วงล้อเลื่อนของเมาส์ในเลเยอร์ UI (Ia14eb, b/198214718)
  • เพิ่มModifier.composedโอเวอร์โหลดทดลองที่ยอมรับ คีย์เพื่อเปรียบเทียบความเท่ากันและมีสิทธิ์สำหรับการเพิ่มประสิทธิภาพการข้าม (Ice799, b/205851704)
  • ComposeNotIdleException ตอนนี้ขยายจาก Exception แทนที่จะมาจาก Throwable โดยตรง โปรดทราบว่าการดำเนินการนี้หมายความว่า ข้อความที่ครอบคลุม ซึ่งเคยจับException อาจจับ ComposeNotIdleException ได้ในตอนนี้ ซึ่งก่อนหน้านี้จะไม่เป็นเช่นนั้น (I9c217)

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

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

เวอร์ชัน 1.1.0-beta03

17 พฤศจิกายน 2021

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

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

  • เพิ่มตัวแก้ไข Modifier.onPlaced ใหม่เพื่อให้สังเกตการเปลี่ยนแปลงการวางได้ ดังนั้นจึงสามารถทำการเปลี่ยนแปลงเพิ่มเติมในออฟเซ็ตของตัวปรับแต่งย่อยได้ตาม การเปลี่ยนแปลงตำแหน่งที่สังเกตได้ (I558fd)
  • นำ InjectionScope.flush() และ InjectionScope.dispose() ออกแล้ว การล้างเหตุการณ์ทั้งหมดและการทิ้ง ขอบเขตจะเกิดขึ้นที่ส่วนท้ายของเมธอด perform*Input() ที่เรียกใช้เหมือน ก่อนหน้านี้ (I2bed8)
  • นำ MultiModalInjectionScope.Touch และ MultiModalInjectionScope.Mouse ออกแล้ว หากต้องการแทรกเหตุการณ์การแตะและเมาส์ สำหรับท่าทางสัมผัสแบบหลายรูปแบบ ตอนนี้คุณสามารถใช้ MultiModalInjectionScope.touch() และ MultiModalInjectionScope.mouse() ซึ่งทั้ง 2 อย่างนี้ยอมรับ Lambda ที่มีขอบเขตตัวรับของรูปแบบนั้น (Idde18)

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

  • ตอนนี้ระบบจะคำนวณค่าเริ่มต้นสำหรับ durationMillis ใน TouchInjectionScope.swipeWithVelocity เพื่อให้ การปัดเป็นไปได้ (I19deb)

เวอร์ชัน 1.1.0-beta02

3 พฤศจิกายน 2021

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

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

  • เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
  • API ภาพเคลื่อนไหวใหม่สำหรับการสนับสนุนเครื่องมือ กล่าวคือ อนุญาตให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน ทรานซิชัน (I4116e)

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

  • เพิ่ม Modifier.pointerHoverIcon (I95f01)

เวอร์ชัน 1.1.0-beta01

27 ตุลาคม 2021

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

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

  • เพิ่ม BringIntoView API เวอร์ชันทดลองที่ให้คุณส่งคำขอไปยังผู้ปกครองเพื่อให้เลื่อนเพื่อนำรายการมาแสดง (Ib918d, b/195353459)
  • API ภาพเคลื่อนไหวใหม่สำหรับการรองรับเครื่องมือ กล่าวคือ อนุญาตให้เครื่องมือตรวจสอบภาพเคลื่อนไหวและการกำหนดค่าใน ทรานซิชัน (I4116e)

เวอร์ชัน 1.1.0-alpha06

13 ตุลาคม 2021

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

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

  • นำ ExperimentalComposeUiApi ออกจาก ViewRootForInspector และ LayoutInfo.ownerViewId (I5c2e3)
  • เพิ่มการโอเวอร์โหลดที่ไม่มีองค์ประกอบย่อยสำหรับเลย์เอาต์พร้อมประสิทธิภาพที่ดียิ่งขึ้น (Ib0d9a)
  • นำ InternalCompilerApi ออกจากเมธอด Composer ที่ต้องเรียกใช้ข้ามโมดูล (I1aa0b)
  • ตอนนี้ SemanticsNodeInteraction.performSemanticsAction จะแสดงผล SemanticsNodeInteraction ที่มีการเรียกใช้ฟังก์ชัน (I9e5db)
  • เพิ่ม CompositionLocal ของ LocalInputModeManager เพื่อตรวจหา TouchMode/NonTouchMode (I6a83c, b/175899786)
  • เพิ่ม viewConfiguration: ViewConfiguration ใน LayoutInfo เพื่อให้ผู้บริโภคได้รับค่าที่ถูกต้องสำหรับสิ่งต่างๆ เช่น การหมดเวลา การกดค้าง (I76ca6)
    • เพิ่ม viewConfiguration: ViewConfiguration to InjectionScope เพื่อให้การทดสอบปรับการแทรกอินพุตตาม สิ่งต่างๆ เช่น การหมดเวลาการกดค้างหรือการสัมผัสที่คลาดเคลื่อน
    • เปลี่ยนระยะเวลาเริ่มต้นของการกดค้างและการแตะสองครั้งสําหรับทั้งการป้อนข้อมูลด้วยการสัมผัสและอินพุตจากเมาส์ให้เป็นไปตามค่าใน InjectionScope.viewConfiguration
  • การใช้งาน ExposedDropdownMenu โดยอิงตาม ExposedDropdownMenuBox ที่มี TextField และ DropdownMenu อยู่ภายใน (If60b2)
  • เพิ่ม dismissOnOutsideClick ลงใน PopupProperties เพื่อแทนที่ dismissOnClickOutside ซึ่งเลิกใช้งานแล้ว พร็อพเพอร์ตี้ใหม่จะได้รับตำแหน่งการคลิกและขอบเขตของจุดยึด ซึ่งช่วยให้ควบคุมได้ละเอียดยิ่งขึ้นว่าจะเรียกใช้ onDismissRequest หรือไม่ เช่น อาจมีประโยชน์ในการป้องกันไม่ให้เลิกใช้การตรึงเมื่อมีการแตะที่ออบเจ็กต์ที่ตรึง
    • เพิ่ม updateAndroidWindowManagerFlags ลงใน PopupProperties เพื่อให้ควบคุมแฟล็กที่ป๊อปอัปส่งไปยัง WindowManager ของ Android ได้ในระดับต่ำ พารามิเตอร์ของ Lambda จะเป็นค่าสถานะที่คำนวณจากค่า PopupProperties ซึ่งส่งผลให้เกิดค่าสถานะ WindowManager เช่น focusable ผลลัพธ์ของ Lambda จะเป็น Flag สุดท้ายที่จะส่งไปยัง WindowManager ของ Android โดยค่าเริ่มต้น updateAndroidWindowManagerFlags จะไม่เปลี่ยนแปลงแฟล็กที่คำนวณจากพารามิเตอร์ ควรใช้ API นี้ด้วยความระมัดระวัง เฉพาะในกรณีที่ป๊อปอัปมีข้อกำหนดด้านลักษณะการทำงานที่เฉพาะเจาะจงมาก (I6e9f9)
  • Recomposer.state ถูกเลิกใช้งานแล้วและแทนที่ด้วย Recomposer.currentState เพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)
  • เพิ่ม flush() และ dispose() ไปยัง InjectionScope แล้ว ใช้เมื่อต้องการล้างเหตุการณ์ที่อยู่ในคิวทั้งหมดทันทีและเมื่อต้องการทิ้งขอบเขตตามลำดับ (Ifb73a)
  • เพิ่ม performScrollToNode(matcher: SemanticsMatcher) ที่ เลื่อนคอนเทนเนอร์ที่เลื่อนได้ไปยังเนื้อหาที่ตรงกันโดย ตัวจับคู่ที่ระบุ (Ic1cb8)
  • ตอนนี้ InjectionScope ได้ติดตั้งใช้งาน Density แล้ว ซึ่งช่วยให้คุณ แปลงระหว่าง px กับ dp ใน performTouchInput และอื่นๆ ได้อย่างง่ายดาย (I8fe1f)

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

  • ตอนนี้ AndroidView จะส่งต่อ LocalLifecycleOwner และ LocalSavedStateRegistryOwner ไปยังมุมมองผ่าน ViewTreeLifecycleOwner และ ViewTreeSavedStateRegistryOwner (I38f96, b/179708470)
  • แก้ไขปัญหาที่ WearOS SwipeToDismissBox ไม่จัดการการปัดในบางครั้ง (I9387e)
  • เวลาเริ่มต้นระหว่างเหตุการณ์การป้อนข้อมูลที่แทรกได้เปลี่ยนจาก 10 มิลลิวินาทีเป็น 16 มิลลิวินาทีแล้ว ซึ่งอาจเปลี่ยนผลลัพธ์ของการทดสอบ ที่ดำเนินการท่าทางสัมผัสอินพุต เช่น การปัดที่เฉพาะเจาะจง (I829fd)

เวอร์ชัน 1.1.0-alpha05

29 กันยายน 2021

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

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

  • เพิ่มการรองรับการสื่อสารระหว่างตัวแก้ไข (Id5467, b/198826874)
  • เพิ่มตัวชี้ประวัติการทดลองไปยัง PointerEventChange (Ic1fd8, b/197553056, b/199921305)
  • เพิ่ม density: Density และ layoutDirection: LayoutDirection ไปยัง LayoutInfo แล้ว ซึ่งช่วยให้ผู้ใช้ LayoutInfo ตีความมิติข้อมูลและตำแหน่งที่แสดงใน LayoutInfo ได้อย่างถูกต้อง (I002f1)
  • เพิ่มการรองรับการแทรกเหตุการณ์ของเมาส์ในเวอร์ชันทดลอง ใช้ performMouseInput เพื่อเริ่มส่งเหตุการณ์ของเมาส์ หรือส่งเหตุการณ์ของเมาส์ ผ่านพร็อพเพอร์ตี้ Mouse ของ MultiModalInjectionScope ระหว่าง ท่าทางสัมผัสการป้อนข้อมูลหลายรูปแบบด้วย performMultiModalInput ดูเอกสารประกอบของ API ที่พร้อมใช้งานได้ที่ MouseInjectionScope (Iaa4a8, b/190493367)

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

  • แก้ไขการรองรับการช่วยเหลือพิเศษสำหรับรายการที่เลื่อนได้ (ทั้งแบบเลื่อนและแบบไม่เลื่อน) เกี่ยวกับการเลื่อน (I6cdb0)
  • ปรับปรุงแล้ว TouchInjectionScope.swipeWithVelocity ตอนนี้ฟีเจอร์นี้ ยอมรับตัวแปรอินพุตที่หลากหลายมากขึ้น และจะแนะนำการเปลี่ยนแปลงอินพุต หากสร้างการปัดไม่ได้ (I40fbe, b/182477143)

เวอร์ชัน 1.1.0-alpha04

15 กันยายน 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตต่อไปนี้

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

  • ตอนนี้ PointerEvent มี PointerEventType เพื่อรองรับเหตุการณ์การวางเมาส์แล้ว (I091fa)
  • อนุญาตให้บุตรหลานยอมรับอินพุตของเคอร์เซอร์นอกขอบเขตอินพุตของเคอร์เซอร์ของ ผู้ปกครอง ผู้ปกครองอาจสกัดกั้นการเรียกเหล่านั้นด้วยพร็อพเพอร์ตี้ PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • เลิกใช้งาน performGesture และ GestureScope ซึ่งถูกแทนที่ด้วย performTouchInput และ TouchInjectionScope (Ia5f3f, b/190493367)
  • เพิ่ม touchBoundsInRoot ใน SemanticsNode ที่ มีขนาดเป้าหมายการสัมผัสขั้นต่ำ เพื่อให้นักพัฒนาแอป มั่นใจได้ว่าเป้าหมายการสัมผัสเป็นไปตามข้อกำหนดขั้นต่ำด้านการช่วยเหลือพิเศษ (I2e14b, b/197751214)
  • การติดตั้งใช้งานที่ตรวจสอบได้อีกครั้ง (I927bc, b/191017532)
  • เปลี่ยนชื่อพารามิเตอร์ของ inspectable ให้ตรงกับ composed (I3a482, b/191017532)
  • เปิดตัว performTouchInput และ TouchInjectionScope เพื่อใช้แทน performTouchInput และ TouchInjectionScope ซึ่งเป็นการปูทางสำหรับรูปแบบอื่นๆ (เช่น เมาส์)

    TouchInjectionScope มีเมธอดเหมือนกับ GestureScope ยกเว้น movePointerTo และ movePointerBy ซึ่งเปลี่ยนชื่อเป็น updatePointerTo และ updatePointerBy วิธีการอื่นๆ ทั้งหมด จะเหมือนกัน

    ลักษณะการทำงานของ TouchInjectionScope จะเหมือนกับ GestureScope เกือบทุกประการ โดยมีรายละเอียดเล็กๆ น้อยๆ 2 อย่างดังนี้

    1. เมื่อส่งเหตุการณ์ "ลง" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (กล่าวคือใช้ updatePointerTo() แต่ไม่ได้ใช้ move() แล้วเรียกใช้ down()) การติดตั้งใช้งานก่อนหน้านี้จะเลื่อนเวลาเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ลง" การติดตั้งใช้งานใหม่จะยังคงส่งเหตุการณ์ move แต่จะไม่เลื่อนเวลาเหตุการณ์ใน สถานการณ์เฉพาะนี้
    2. เมื่อส่งเหตุการณ์ "ขึ้น" ขณะที่ย้ายเคอร์เซอร์โดยไม่ส่งเหตุการณ์ "ย้าย" (คล้ายกับด้านบน) การติดตั้งใช้งานก่อนหน้า จะเลื่อนเวลาของเหตุการณ์และส่งเหตุการณ์ "ย้าย" ก่อนที่จะส่งเหตุการณ์ "ขึ้น" การใช้งานใหม่จะไม่ทำทั้ง 2 อย่างนี้ โดยตำแหน่งใหม่ของ เคอร์เซอร์จะแสดงผ่านเหตุการณ์ "ขึ้น" เท่านั้น

    สุดท้าย TouchInjectionScope ขอแนะนำวิธีใหม่ currentPosition(pointerId: Int) ในการรับตำแหน่งปัจจุบันของ เคอร์เซอร์ที่ระบุ (If1191, b/190493367)

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

  • อนุญาตให้คลิปขยายขอบเขตเป้าหมายการสัมผัสเกินกว่า ขอบเขตของคลิปเพื่อวัตถุประสงค์ของเป้าหมายการสัมผัสขั้นต่ำ (I43e10, b/171509422)
  • เพิ่มการรองรับการเลื่อนเกินขอบเขตแบบยืดในอุปกรณ์ Android 12 แล้ว (Iccf3c, b/171682480)

เวอร์ชัน 1.1.0-alpha03

1 กันยายน 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

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

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

  • เพิ่ม Modifier.inspectable สำหรับการรวมตัวแก้ไขอื่นๆ (I1909b, b/191017532)
  • เพิ่ม BlurredEdgeTreatment API เพื่อลดความซับซ้อนของ Use Case การเบลอให้เป็นชุดค่าผสมของ แฟล็กคลิปและ TileMode ที่ใช้กันโดยทั่วไป กรณีการใช้งานส่วนใหญ่เกี่ยวข้องกับ การอนุญาตให้แสดงเนื้อหาที่เบลอ นอกขอบเขตของเนื้อหาต้นฉบับ และการเบลอภูมิภาคนอกขอบเขตเหล่านี้ ด้วยสีดำโปร่งใส หรือการตัดเนื้อหา ไปยังขอบเขตของเนื้อหาโดยการสุ่มขอบที่ใกล้ที่สุด สำหรับเคอร์เนลเบลอที่ขยายออกไปนอกขอบเขตของเนื้อหา (I6b4b7, b/166927547)
  • เพิ่มการรองรับ RenderEffect ใน Compose Desktop เปิดตัว OffsetEffect รวมถึง ตัวปรับแต่งเบลอเป็นวิธีง่ายๆ ในการ นำเอฟเฟกต์ภาพเบลอมาใช้กับส่วนหนึ่ง ของลำดับชั้นการจัดองค์ประกอบ (I0f6aa, b/166927547)
  • เปิดตัว RenderEffect API ที่กำหนดค่าได้โดยไม่บังคับใน Modifier.graphicsLayer เพื่อเปลี่ยน เนื้อหาของเลเยอร์เอง ซึ่งใช้เพื่อเบลอเนื้อหาของ Composable และ Composable ย่อยภายในลำดับชั้นของ Composition ได้ (I47c4d, b/166927547)
  • ตอนนี้ AwaitPointerEventScope มี withTimeout() และ withTimeoutOrNull() แล้ว (I507f0, b/179239764, b/182397793)
  • เพิ่มขนาดเป้าหมายการสัมผัสขั้นต่ำลงใน ViewConfiguration เพื่อใช้ในอินพุตเชิงความหมายและอินพุตของเคอร์เซอร์เพื่อให้มั่นใจว่ามีการช่วยเหลือพิเศษ (Ie861c)
  • เพิ่มการรองรับ TileMode.Decal ซึ่งมีประโยชน์ในการกำหนดขอบ ลักษณะการทำงานสำหรับ RenderEffect ที่อิงตามการเบลอ (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction และ hasScrollToKeyAction เป็น API ที่เสถียรแล้ว (I142ae, b/178483889)
  • เพิ่มวิธีการทดสอบเพื่อรับขอบเขตที่ตัดแล้ว (I6b28e)

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

  • นำเมธอด isBounded ออก จาก BlurredEdgeTreatment เพื่อ ตรวจสอบอย่างชัดเจนว่าพารามิเตอร์รูปร่าง เป็น Null หรือไม่ (I85d68)

เวอร์ชัน 1.1.0-alpha02

18 สิงหาคม 2021

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

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

  • ตอนนี้ PointerEvent รองรับการอ่าน สถานะปุ่มเมาส์และสถานะตัวแก้ไขแป้นพิมพ์แล้ว (I6310c, b/180075467)
  • ตอนนี้ท่าทางสัมผัสที่แทรกจะใช้เวลาของ MainTestClock เป็น แหล่งข้อมูลที่ถูกต้องสำหรับเวลา ระบบจะเริ่มต้นเวลาปัจจุบันสำหรับเหตุการณ์ที่แทรกใน performGesture เป็นเวลาปัจจุบันของ MainTestClock (Ifb364, b/192064452)
  • เพิ่มตัวสร้าง DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • เพิ่มคลาส DpSize (I7abb1, b/194219828)

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

  • อัปเดตการแยกวิเคราะห์ XML ของกราฟิกแบบเวกเตอร์ เพื่อรองรับ ColorStateLists เป็น พร็อพเพอร์ตี้การปรับสีรูทใน VectorDrawable (I86915, b/195668138)

เวอร์ชัน 1.1.0-alpha01

4 สิงหาคม 2021

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

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

  • RelocationRequester.bringIntoView ตอนนี้ยอมรับสี่เหลี่ยมผืนผ้าเป็นพารามิเตอร์แล้ว ซึ่งช่วยให้เรานำส่วนหนึ่งของ Composable มาแสดงได้ (Ice2c5, b/194330245)
  • AnimatedImageVector และ API ที่เกี่ยวข้องอยู่ในโมดูลใหม่ androidx.compose.animation:animation-graphics แล้ว (I60873)
  • เพิ่มตัวแก้ไขเวอร์ชันทดลองเพื่อจัดการคำขอเปลี่ยนเส้นทาง (I65a97, b/178211874)
  • เปิดตัว BrushPainter API เพื่อรองรับการวาด Brush ที่กำหนดเองภายใน Painter ซึ่งคล้ายกับ ColorPainter

    อัปเดต Brush API ให้มีพารามิเตอร์ขนาดโดยธรรมชาติ ที่ค้นหาภายใน BrushPainter (Ia2752, b/189466433)

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

  • เพิ่มเมธอด GestureScope.advanceEventTime เพื่อให้ควบคุมช่วงเวลาของเหตุการณ์ในท่าทางสัมผัสได้มากขึ้น (Ibf3e2)

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

  • เพื่อให้รองรับการเชื่อมต่อตัวแก้ไขการวาดได้ดียิ่งขึ้น โปรดตรวจสอบว่าการติดตั้งใช้งาน Modifier.paint เรียกใช้ drawsContent ก่อนหน้านี้ Modifier.paint คาดว่าจะเป็นโหนดใบใน ห่วงโซ่ของตัวปรับแต่ง แต่การทำเช่นนั้นจะป้องกันไม่ให้ มีการกำหนดค่าในคอนเทนเนอร์ที่ใช้ได้ (เช่น กล่อง) หรือเพิ่มการตกแต่งเพิ่มเติมด้านบน เช่น Modifier.paint().border() การเรียก Modifier.paint ให้ drawContent หลังจากวาดเนื้อหาของ painter ที่ระบุจะช่วยให้เรามีความสอดคล้องของลักษณะการทำงานที่ดีขึ้นในลักษณะการทำงาน ด้วยรูปแบบตัวแก้ไข (Ibb2a7, b/178201337, b/186213275)
  • ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการกําหนดขนาดของแพลตฟอร์มแล้ว ตั้งค่า usePlatformDefaultWidth เป็น "เท็จ" เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)
  • ย้าย InfiniteAnimationPolicy ไปยัง :compose:ui (I5eb09, b/160602714)
  • ตอนนี้การเลื่อนผ่านการดำเนินการทางความหมายสำหรับรายการที่โหลดแบบ Lazy และคอมโพเนนต์การเลื่อนปกติจะมีการเคลื่อนไหวแล้ว (Id9066, b/190742024)

รุ่น 1.0

เวอร์ชัน 1.0.5

3 พฤศจิกายน 2021

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

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

  • แก้ไขข้อขัดข้องในการติดตามอินสแตนซ์ derivedStateOf (aosp/1792247)

เวอร์ชัน 1.0.4

13 ตุลาคม 2021

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

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.31

เวอร์ชัน 1.0.3

29 กันยายน 2021

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

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.30

เวอร์ชัน 1.0.2

1 กันยายน 2021

androidx.compose.ui:ui-*: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.ui:ui-*:1.0.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.1 มีคอมมิตต่อไปนี้

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

  • อัปเดตให้ขึ้นอยู่กับ Kotlin 1.5.21

เวอร์ชัน 1.0.0

28 กรกฎาคม 2021

androidx.compose.ui:ui-*: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.ui:ui-*:1.0.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้

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

  • ตอนนี้กล่องโต้ตอบจะทําตามลักษณะการกําหนดขนาดของแพลตฟอร์มแล้ว ตั้งค่า usePlatformDefaultWidth เป็น "เท็จ" เพื่อลบล้างลักษณะการทำงานนี้ (Iffaed, b/192682388)

เวอร์ชัน 1.0.0-rc01

1 กรกฎาคม 2021

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

ฟีเจอร์ใหม่

  • แยกโมดูล ui-tooling ออกเป็น ui-tooling และ ui-tooling-preview (Iefa28, b/190649014)

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

  • นำฟีเจอร์ทดลอง FocusManager#moveFocusIn และ FocusManager#moveFocusOut ที่เลิกใช้งานแล้วออก (I227d7, b/170154986, b/186567354, b/168510304)
  • ตอนนี้ Canvas รองรับพารามิเตอร์ contentDescription สำหรับ การช่วยเหลือพิเศษแล้ว (Ib547c)
  • useDefaultMaxWidth ใน PopupProperties เปลี่ยนชื่อเป็น usePlatformDefaultWidth แล้ว (I05710)
  • ตอนนี้กล่องโต้ตอบใช้ความกว้างของทั้งหน้าจอได้แล้ว (I83929, b/190810877)
  • เพิ่มการรองรับการแสดงค่าสี HSV และ HSL ในเวอร์ชันทดลอง (Id7cf8, b/180731008)

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

  • ตอนนี้ Compose @Preview มีLocalActivityResultRegistryOwnerที่ช่วยให้คุณ แสดงตัวอย่าง Composables ที่ใช้ API เช่น rememberLauncherForActivityResult() ซึ่งขึ้นอยู่กับ การมีอยู่ของเจ้าของนั้น (Ib13d1, b/185693006)
  • ตอนนี้ Compose @Preview มีLocalOnBackPressedDispatcherOwner ที่ช่วยให้คุณ แสดงตัวอย่าง Composable ที่ใช้ API เช่น BackHandler ซึ่งขึ้นอยู่กับการมีอยู่ของเจ้าของนั้น (Ia1c05, b/185693006)

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

  • ย้าย InfiniteAnimationPolicy ไปยัง androidx.compose.ui:ui (I5eb09, b/160602714) แล้ว
  • เราได้นำ AnimatedImageVector ออกชั่วคราวเพื่อเปลี่ยนโครงสร้างโมดูล (I41906, b/160602714)

เวอร์ชัน 1.0.0-beta09

16 มิถุนายน 2021

androidx.compose.ui:ui-*:1.0.0-beta09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta09 มีคอมมิตต่อไปนี้

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

  • เปลี่ยน enum Role และ LiveRegionMode เป็นคลาสอินไลน์ ที่มีตัวสร้างส่วนตัว (Id1890)
  • ระบบจะแปลง KeyboardCapitalization เป็นคลาสอินไลน์ (Id5a1c)
  • เปลี่ยน HapticFeedbackType เป็นคลาสแบบอินไลน์ (I255ec)
  • Modifier.pointerInteropFilter เป็น @ExperimentalComposeUiApi (Iede6c)
  • ตอนนี้ TextAlign, FontSynthesis และ TextDirection เป็นคลาสแบบอินไลน์แล้ว (I212fe)
  • เปลี่ยน TextOverflow เป็นคลาสอินไลน์ (I433af)
  • ตอนนี้ FontStyle เป็นคลาสแบบอินไลน์แล้ว (I9e48b)

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

  • ค่าคงที่หลักคือ @ExperimentalComposeUiApi ในตอนนี้ โค้ดที่ใช้ สามารถประกาศค่าคงที่ส่วนตัวก่อนการทำให้เสถียรได้ (Ia5d48)
  • ตอนนี้คุณสามารถเรียกใช้การทดสอบ Compose ใน Robolectric ได้แล้ว ข้อจำกัดต่อไปนี้ ที่เราพบจนถึงตอนนี้มีดังนี้
    • ไม่มีบิตแมปเนทีฟ ImageBitmap() จึงทำให้เกิด NullPointerException
    • ไม่มีการวาดภาพ ดังนั้น captureToImage() จะรอการส่งผ่านการวาดภาพครั้งถัดไปอย่างไม่มีกำหนด (กล่าวคือ เกิดการหยุดชะงัก)
    • ไม่มีการโหลดแบบอักษร ดังนั้นข้อความใดๆ จะได้รับการวัดอย่างไม่ถูกต้อง อักขระทั้งหมด มีความสูงคงที่ประมาณ 20 พิกเซลและความกว้าง 1 พิกเซล
    • ComposeTestRule.waitUntil {} จะไม่เรียกใช้เธรดหลักขณะรอ ซึ่งทำให้มีประสิทธิภาพเหมือนกับ ComposeTestRule.mainClock.advanceTimeUntil {} คาดว่าจะพบข้อจำกัดเพิ่มเติมในอนาคต (I284fa)

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

การเปิดตัวนี้จะเพิ่มกฎโปรไฟล์ลงในโมดูลการเขียนต่อไปนี้ (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.ui:ui-*:1.0.0-beta08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta08 มีคอมมิตเหล่านี้

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

  • NestedScrollSource enum จะถูกแทนที่ด้วยคลาสแบบอินไลน์ (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) เปลี่ยนชื่อเป็น FocusManager.clearFocus(force = true) (Ia0c41)
  • ปรับโครงสร้างการใช้งาน enum เป็นคลาสแบบอินไลน์เพื่อหลีกเลี่ยง ปัญหาเกี่ยวกับคำสั่ง when แบบครอบคลุมเมื่อ มีการเพิ่มค่า enum ใหม่ (I2b5eb)
  • นำ @ExperimentalComposeUiApi ออกจาก PopupProperties (I01fa6)
  • เปลี่ยน PointerType จาก Enum เป็นคลาสอินไลน์ (If5058)
  • พร็อพเพอร์ตี้ ContentDescription และ Text semantics ไม่ใช่ค่าเดียวอีกต่อไป แต่เป็นรายการ ซึ่งจะช่วยให้ผสานรวมได้โดยไม่ต้องต่อกัน นอกจากนี้ เรายังได้จัดเตรียม API การทดสอบที่ดีขึ้นเพื่อใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้ (Ica6bf, b/184825850)
  • Modifier.focusModifier() เลิกใช้งานแล้วและแทนที่ด้วย Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() และ Modifier.onGloballyPositioned() ไม่ใช่ฟังก์ชันแบบอินไลน์อีกต่อไป (I727f6, b/186109675)
  • KeyboardType enum จะถูกแทนที่ด้วยคลาสแบบอินไลน์ (I73045, b/187055290)
  • แทนที่ enum FocusState ด้วยอินเทอร์เฟซ FocusState (Iccc1a, b/187055290)
  • แทนที่ enum ImeAction ด้วยคลาสแบบอินไลน์ (I18be5, b/187055290)
  • PlaceholderVerticalAlign จะแปลงเป็นคลาสแบบอินไลน์ (If6290)
  • ตอนนี้ TextUnitType เป็นคลาสแบบอินไลน์แล้ว (I4cba9)
  • AnnotatedString.withAnnotation ตอนนี้เป็น ExperimentalTextApi แทน ExperimentalComposeApi แล้ว (I0cd0a)
    • ตอนนี้ตัวสร้าง TextUnit ที่มี TextUnitType จะเป็น ExperimentalTextApi แทนที่จะเป็น ExperimentalComposeApi

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

  • แก้ไขข้อบกพร่องที่เกิดขึ้นใน beta07 ซึ่งรายการ LazyColumn/Row แสดงผลบางส่วนหลังจากเลื่อน (I8c9ac, b/188566058)
  • ตอนนี้ detectDragGesures, detectVerticalGestures และ detectHorizontalGestures จะใช้การเปลี่ยนแปลงตำแหน่งโดยอัตโนมัติ ไม่จำเป็นต้องเรียกใช้ change.consumePositionChange ในการเรียกกลับ onDrag (I42fc4, b/185096350, b/187320697)
  • แก้ไข LayoutModifiers ที่แสดงเส้นแนว แก้ไขข้อบกพร่องที่ทำให้ระบบไม่วัดผลผู้ปกครองอีกครั้งเมื่อมีการเปลี่ยนแปลงเส้นแนวของบุตรหลาน (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() เปลี่ยนเป็นรายงานพิกัดของตัวแก้ไขนี้ในเชนตัวแก้ไข ไม่ใช่พิกัดเลย์เอาต์หลังจากใช้ตัวแก้ไขทั้งหมด ซึ่งหมายความว่าตอนนี้ลำดับของตัวแก้ไขจะส่งผลต่อพิกัดที่จะรายงาน (Ieb67d, b/177926591)

เวอร์ชัน 1.0.0-beta07

18 พฤษภาคม 2021

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

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

  • เพิ่มอินเทอร์เฟซ ViewRootForInspector สำหรับใช้ในเครื่องมือตรวจสอบ (Ib70df)
  • ตอนนี้ SubcomposeLayoutState รองรับการตั้งค่าจำนวนสล็อตที่ใช้ซ้ำได้แล้ว เลย์เอาต์จะทำให้ช่องจำนวนนี้ยังคงใช้งานได้แทนที่จะทิ้งช่องเหล่านั้นเพื่อนำช่องไปใช้ซ้ำในครั้งถัดไปที่เราต้องการช่องใหม่ (Ieb981)
  • แทนที่ enum KeyEventType ด้วยคลาสอินไลน์ (Id670a, b/187055290)
  • FocusDirection enum จะถูกแทนที่ด้วยคลาสแบบอินไลน์ (Ib6d03, b/187055290, b/184086802)
  • เพิ่มความสามารถในการยกสถานะ SubcomposeLayout ซึ่งช่วยให้คุณสามารถคอมโพสเนื้อหาล่วงหน้าลงใน slotId ที่จำเป็นได้ ซึ่งจะทำให้การวัดผลครั้งถัดไปเร็วขึ้น เนื่องจากเมื่อเราพยายามคอมโพสย่อยด้วย slotId ที่ระบุในครั้งถัดไป ก็จะไม่จำเป็นต้องคอมโพสอีก (I42580, b/184940225)
  • เพิ่มแฮนเดิลการเลือกคลิป (Iff80d, b/183408447)
  • นำ API ที่ไม่ได้ใช้ซึ่งเกี่ยวข้องกับการรองรับ LayoutInspector ออก (I2ac78)

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

  • ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นก่อนหน้านี้สูงสุด 2 รายการให้ใช้งานอยู่ (ไม่ทิ้ง) แม้ว่าจะเลื่อนออกไปแล้วก็ตาม ซึ่งจะช่วยให้คอมโพเนนต์นำองค์ประกอบย่อยที่ใช้งานอยู่กลับมาใช้ซ้ำได้เมื่อเราต้องสร้างรายการใหม่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
  • ระบบจะใช้TextGeomerticTransformและTextDecorationในAnnotatedString ตามที่ระบุ (I61900, b/184760917)

เวอร์ชัน 1.0.0-beta06

5 พฤษภาคม 2021

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

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

  • แก้ไขความขัดแย้งด้วยท่าทางการนำทาง (I1145e)
  • @ComposeCompilerApi ไม่@RequiresOptInอีกต่อไป (Iab690)
  • เพิ่ม API การช่วยเหลือพิเศษ CollectionInfo และ CollectionItemInfo ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันและรายการของคอลเล็กชันสำหรับบริการการช่วยเหลือพิเศษ (Id54ef, b/180479017)
  • เพิ่ม SemanticsActions.ScrollToIndex เพื่อเลื่อนรายการที่มี รายการที่จัดทำดัชนีไปยังรายการที่มีดัชนีที่เฉพาะเจาะจง และ SemanticsProperties.IndexForKey เพื่อรับดัชนีของรายการในรายการ ที่มีรายการที่ใช้คีย์ การดำเนินการทั้ง 2 อย่างนี้จะดำเนินการโดย LazyList
    • เพิ่ม SemanticsNodeInteraction.performScrollToIndex ที่ เลื่อนรายการไปยังดัชนีที่ระบุ และ SemanticsNodeInteraction.performScrollToKey ที่เลื่อนรายการไปยัง รายการที่มีคีย์ที่ระบุ (I4fe63, b/178483889, b/161584524)
  • เพิ่ม ownerViewId ไปยัง GraphicLayerInfo (I19f62)
  • เพิ่มการโอเวอร์โหลด Added Font() เพื่อโหลดแบบอักษร จากเนื้อหา ไฟล์ และ FileDescriptor (I5d382)
  • เพิ่ม API การช่วยเหลือพิเศษ error ที่อนุญาตให้ทำเครื่องหมายโหนดที่มีอินพุตที่ไม่ถูกต้อง (I12997, b/180584804, b/182142737)
  • เพิ่มการโอเวอร์โหลด Font() เพื่อโหลดแบบอักษร จากเนื้อหา ไฟล์ และ FileDescriptor (I43007)
  • รองรับการบันทึก AnnotatedString ไปยัง TextFieldValue.Saver เพิ่มฟังก์ชันยูทิลิตี addTtsAnnotation and withAnnotation ลงใน AnnotatedString.Builder (I8cbdc, b/178446304)
  • เพิ่มฟังก์ชันตัวสร้าง TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

เวอร์ชัน 1.0.0-beta05

21 เมษายน 2021

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

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

  • เพิ่มฟีเจอร์ทดลอง FocusManager.moveFocus(In) และ FocusManager.moveFocus(Out) (Ic5534, b/183746743)
  • เพิ่ม performTextInputSelection API เวอร์ชันทดลอง (I2dcbb, b/178510628)
  • อินเทอร์เฟซ InputEventCallback เลิกใช้งานแล้ว ไม่สามารถใช้อินเทอร์เฟซใน API สาธารณะใดๆ และไม่มีการใช้งานในโค้ด (I34a02, b/184003208)
  • ฟังก์ชัน TextLayoutResult/createTextLayoutResult ที่เลิกใช้งานแล้ว เป็นฟังก์ชันสาธารณะที่ไม่ได้ใช้ซึ่งเพิ่มเข้ามา เพื่อการทดสอบ ฟังก์ชันนี้ไม่ได้ทำอะไรที่ใช้ได้กับ Compose Text API ตอนนี้ฟังก์ชันนี้เลิกใช้งานแล้วและจะ ถูกนำออกในภายหลัง (I80413)

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

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

เวอร์ชัน 1.0.0-beta04

7 เมษายน 2021

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

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

  • เปลี่ยนชื่อ hideSoftwareKeyboard และ showSoftwareKeyboard ใน SoftwareKeyboardController เป็น hide() และ show() ตามลำดับ
    • ระบุอินเทอร์เฟซ CompositionLocal แบบเต็มสำหรับ LocalSoftwareKeyboardController เพื่อให้ตั้งค่าได้ (มีประโยชน์อย่างยิ่ง ในการทดสอบ) (I579a6)
  • เพิ่ม API การช่วยเหลือพิเศษ LiveRegion หากมีการทำเครื่องหมายโหนดเป็นขอบเขตแบบสด บริการการช่วยเหลือพิเศษ จะแจ้งให้ผู้ใช้ทราบโดยอัตโนมัติเกี่ยวกับการเปลี่ยนแปลง (Idcf6f, b/172590946)
  • เปิดตัว TextOverflow.Visible (Ic8f89)

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

  • แก้ไขปัญหาที่รายการของ LazyColumn/LazyRow ซึ่งอยู่บริเวณขอบได้รับการจัดตำแหน่งอย่างไม่ถูกต้องหลังจากที่โยนอย่างรวดเร็ว (Ie4d13, b/183877420)
  • ตอนนี้ AndroidViewBinding จะนำ Fragment ที่ขยายผ่าน FragmentContainerView ออกอย่างถูกต้องเมื่อ นำ AndroidViewBinding ออกจากลำดับชั้น Compose (Ib0248, b/179915946)
  • AndroidViewBinding จะซ้อนกันอย่างถูกต้องแล้ว เมื่อมีการขยาย Fragment ผ่าน FragmentContainerView เมื่อComposeView อยู่ภายใน Fragment ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับการบันทึกและกู้คืนสถานะของ Fragment เหล่านั้น (I70eb0, b/179915946)
  • ตอนนี้ Compose ViewBinding ขึ้นอยู่กับ Fragment 1.3.2 และตอนนี้จะแสดง Fragment ที่ขยายผ่าน FragmentContainerView อย่างสม่ำเสมอหลังจากการเปลี่ยนแปลงการกำหนดค่า (I0743d, b/179915946)

เวอร์ชัน 1.0.0-beta03

24 มีนาคม 2021

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

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

  • เลื่อนการตรวจสอบการขึ้นต่อกันของ ViewTree ของ ComposeView (I8dbbf, b/182466548)
  • เพิ่มพารามิเตอร์ startX/endX และ startY/endY ที่ไม่บังคับ ลงในฟังก์ชัน swipeUp/swipeDown/swipeLeft/swipeRight ใน GestureScope (I49e2d, b/182063305)

เวอร์ชัน 1.0.0-beta02

10 มีนาคม 2021

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

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

  • เพิ่ม LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I5951e, b/168778053)
  • เพิ่ม LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I84472, b/168778053)
  • นำSemanticsMatcherต่อไปนี้ออกแล้ว
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • ทำเครื่องหมาย SemanticsMatchers ต่อไปนี้เป็น @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • เพิ่มSemanticsMatcherต่อไปนี้
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

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

  • บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองต่อสาธารณะ (I6aa29, b/174531520)
  • androidx.compose.ui:ui ไม่ได้ขึ้นอยู่กับ AppCompat หรือ Fragment อีกต่อไป หากคุณใช้ ComposeView ในแอปพลิเคชัน และใช้ Fragment และ/หรือ AppCompat โปรดตรวจสอบว่าคุณใช้ AppCompat 1.3 ขึ้นไป / Fragment 1.3 ขึ้นไป เนื่องจากคุณต้องใช้เวอร์ชันเหล่านี้เพื่อตั้งค่าวงจรและเจ้าของสถานะที่บันทึกไว้ที่จำเป็นสำหรับ ComposeView อย่างถูกต้อง (I1d6fa, b/161814404)
  • แก้ไข rememberSaveable { mutableStateOf(0) } ที่ใช้งานไม่ได้เมื่อใช้ภายในปลายทางของ navigation-compose (I1312b, b/180042685, b/180701630)
  • เพิ่ม LocalSoftwareKeyboardControllercomposition local API ใหม่เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)
  • แก้ไข NoSuchElementException ที่พบได้ยากใน ComposeRootRegistry tearDownRegistry() (Iddce1)

เวอร์ชัน 1.0.0-beta01

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

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

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

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

  • เพิ่มการเรียกกลับ onStart ไปยัง detectDragGestures (I67269, b/179995594) แล้ว
  • ตัวปรับแต่งสำหรับการปรับขนาดให้ตรงกับ Intrinsics ไม่ได้อยู่ในระยะทดลองอีกต่อไป (I15744)
  • เราเปลี่ยนชื่อ MeasureBlocks เป็น MeasurePolicy ซึ่งกลายเป็นอินเทอร์เฟซที่สนุกสนาน เราได้อัปเดต / ลดความซับซ้อนของ Layout API เพื่อให้ใช้ MeasurePolicy ได้ (Icab48, b/167662468, b/156751158)
  • InteractionState ถูกแทนที่ด้วย [Mutable]InteractionSource
    • อินเทอร์เฟซมีหน้าที่ในการปล่อย / รวบรวมเหตุการณ์การโต้ตอบ
    • แทนที่จะส่ง interactionState = remember { InteractionState() } ไปยังคอมโพเนนต์ เช่น Button และ Modifier.clickable() ให้ใช้ interactionSource = remember { MutableInteractionSource() }
    • แทนที่จะเป็น: Interaction.Pressed in interactionState คุณควรใช้ฟังก์ชันส่วนขยายใน InteractionSource แทน เช่น InteractionSource.collectIsPressedAsState()
    • สำหรับกรณีการใช้งานที่ซับซ้อน คุณสามารถใช้ InteractionSource.interactions เพื่อสังเกตสตรีมของการโต้ตอบได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบและตัวอย่าง InteractionSource
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • เพิ่มอินเทอร์เฟซ AccessibilityMananger และ LocalAccessibilityMananger ใน CompositionLocals (I53520)
  • นำเมธอด LayoutCoordinates ที่เลิกใช้งานแล้วออก ให้ใช้ฟังก์ชันแทนพร็อพเพอร์ตี้สำหรับ positionInParent และ boundsInParent (I580ed, b/169874631, b/175142755)
  • แทนที่นามแฝงประเภทด้วยประเภทพื้นฐาน
    • ColorStop เปลี่ยนชื่อเป็น Pair<Float, Color> แล้ว
    • ตอนนี้ SpanStyleRange คือ `AnnotatedString.Range
    • ParagraphStyleRange เปลี่ยนชื่อเป็น AnnotatedString.Range<ParagraphStyle> แล้ว
    • StringAnnotation เปลี่ยนชื่อเป็น AnnotatedString.Range<String> แล้ว
    • (I8dd1a)
  • สร้าง TextInputSession ใหม่สำหรับเซสชันการป้อนข้อมูลจากคอมโพเนนต์ข้อความระดับต่ำ เช่น CoreTextField (I8817f, b/177662148)
  • ตอนนี้ Placeable จะแสดง measuredSize ซึ่งแสดงถึงขนาดที่เลย์เอาต์ย่อยวัดจริง ขนาดนี้อาจไม่เป็นไปตามข้อจำกัดในการวัด (Ib2729, b/172560206, b/172338608)
  • เพิ่มตัวแก้ไข selectionGroup ที่อนุญาตให้ทำเครื่องหมายคอลเล็กชันของแท็บหรือ RadioButton เพื่อวัตถุประสงค์ในการช่วยเหลือพิเศษ (Ie5c29)
  • ตอนนี้ต้องระบุ defaultFactory สำหรับ compositionLocalOf และ staticCompositionLocalOf แทนที่จะเป็น ไม่บังคับ

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

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

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

  • นำวิธีการที่เลิกใช้งานแล้วจากโมดูล UI ออกแล้ว (I646f6)

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

  • Modifier.tapGestureFilter ถูกลบออกไปแล้ว โปรดใช้ Modifier.pointerInput { detectTapGestures(...) } แทน (I266ed, b/175294473)

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

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

  • ตอนนี้ imageResource และ vectorResource เป็นฟังก์ชันส่วนขยาย ใน ImageBitmap และ ImageVector ตามลำดับ ลบฟังก์ชัน load{Image,Vector,Font}Resource แล้ว (I89130)

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

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

    • ตัวสร้าง Composition ไม่รับพารามิเตอร์คีย์อีกต่อไป และเลิกใช้งานแล้ว
    • currentCompositeKeyHash ได้รับการเปลี่ยนให้เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบกันได้แทนที่จะเป็นฟังก์ชันระดับบนสุดที่ประกอบกันได้
    • CompositionData และ CompositionGroup ได้รับการย้ายไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
    • เราได้เปลี่ยน ComposableLambda ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • เราได้เปลี่ยน ComposableLambdaN ให้เป็นอินเทอร์เฟซแทนที่จะเป็นคลาสที่เฉพาะเจาะจง และไม่มีพารามิเตอร์ประเภทอีกต่อไป
    • ฟังก์ชัน snapshotFlow ย้ายไปที่เนมสเปซ androidx.compose.runtime แล้ว
    • วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
    • ระบบได้นำฟังก์ชัน clearRoots ระดับบนสุด @TestOnly ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • ระบบได้นำฟังก์ชัน keySourceInfoOf และ resetSourceInfo ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • ระบบได้นำ Composer.collectKeySourceInformation ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • ระบบได้นำเมธอด isJoinedKey, joinedKeyLeft และ joinedKeyRight ออกแล้ว ไม่จำเป็นต้องดำเนินการอีกต่อไป
    • เราได้ย้ายและจัดระเบียบ API ระดับบนสุดต่างๆ ลงในไฟล์ที่แตกต่างกัน เนื่องจากความหมายของคลาสไฟล์ของ Kotlin การดำเนินการนี้จะทำให้ความเข้ากันได้แบบไบนารีใช้งานไม่ได้ แต่จะไม่ทำให้ความเข้ากันได้ของแหล่งที่มาใช้งานไม่ได้ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่น่าจะพบปัญหา
    • (I99b7d, b/177245490)
  • เรานำ ComponentActivity.setContent() ออกจาก Compose:ui แล้ว ใช้รหัสที่ได้จาก androidx.activity:activity-compose:1.3.0-alpha01 ระบบได้นำ viewModel() และ LocalViewModelStoreOwner ออกจาก Compose:UI แล้ว ใช้รหัสจาก androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • เราได้ปรับปรุง Modifier.scrollable ใหม่ ตอนนี้จะใช้อินเทอร์เฟซที่เลื่อนได้แทนคลาส ScrollableController (I4f5a5, b/174485541, b/175294473)

  • นำการรองรับ CustomEvens จาก PointerInputModifier ออกแล้ว (I02707, b/175294473)

  • SnapshotStateObserver ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Id2e6a)

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

  • เราได้นำ longPressGestureFilter และ doubleClickGestureFilter ออกแล้ว ให้ใช้ Modifier.pointerInput กับฟังก์ชันตัวช่วย เช่น detectTapGestures (I2fedf, b/175294473)

  • นำ String.format API ออก ปรับโครงสร้างการใช้งานในเมธอด toString ต่างๆ เพื่อไม่ให้ใช้ String.format ภายใน (Id1290)

  • นำการยืนยัน dp ออก (I798d2)

  • นำ androidx.compose.runtime:runtime-dispatch ออกแล้ว (I55feb)

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

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

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

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

  • เพิ่มฟังก์ชันตัวช่วยที่ช่วย ตั้งค่าการดำเนินการเดียวกันสำหรับ Callback ของ ImeAction ทั้งหมด (I63447, b/179226323)

  • นำการเรียกกลับ SoftwareKeyboardController ออกจากฟิลด์ข้อความทั้งหมด เพื่อแทนที่ด้วย API ใหม่ในเร็วๆ นี้ (Iae869, b/168778053)

  • ระบบจะไม่ใช้ FontSpan และ FontWeigthStyleSpan อีกต่อไปและจะนำออก (Ie5b56, b/177423444)

  • ทำการเปลี่ยนแปลง Material API ดังนี้

    • เพิ่มพารามิเตอร์ contentPadding ลงใน Top/BottomAppBar เพื่อให้ปรับแต่งระยะเว้นเริ่มต้นได้
    • จัดเรียงพารามิเตอร์ใหม่ใน BackdropScaffold เพื่อให้เป็นไปตามหลักเกณฑ์ของ API สำหรับพารามิเตอร์ที่จำเป็นซึ่งอยู่ก่อนพารามิเตอร์ที่ไม่บังคับ
    • ย้ายพารามิเตอร์ icon ใน BottomNavigationItem ไปไว้หลัง selected และ onClick
    • เปลี่ยนชื่อพารามิเตอร์ alwaysShowLabels ใน BottomNavigationItem เป็น alwaysShowLabel
    • เปลี่ยนชื่อพารามิเตอร์ bodyContent ในคอมโพเนนต์บางรายการเป็น content
    • พารามิเตอร์ที่จัดเรียงใหม่ใน ButtonDefaults.buttonColors() โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่ได้เปลี่ยนแปลง การดำเนินการนี้จึงไม่ทำให้เกิดข้อผิดพลาดในโค้ด โปรดตรวจสอบว่าคุณใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลำดับด้วยตนเอง มิฉะนั้นโค้ดจะทำงานไม่เหมือนเดิม
    • เพิ่มพารามิเตอร์ secondaryVariant ไปยัง darkColors() แล้ว โดยปกติแล้ว สีนี้จะเหมือนกับ secondary ในธีมมืด แต่เราได้เพิ่มสีนี้เพื่อให้มีความสอดคล้องกันและปรับแต่งเพิ่มเติมได้
    • นำ ElevationDefaults และ animateElevation() ออกจาก API สาธารณะเนื่องจากไม่ได้ใช้กันทั่วไป / ไม่มีประโยชน์
    • เปลี่ยนชื่อ onValueChangeEnd ใน Slider เป็น onValueChangeFinished และทำให้เป็นค่า Null ได้
    • เปลี่ยนชื่อพารามิเตอร์ text ใน Snackbar เป็น content เพื่อให้สอดคล้องกัน
    • เพิ่มพารามิเตอร์ contentPadding ลงใน DropdownMenuItem เพื่ออนุญาตให้ปรับแต่งระยะขอบเริ่มต้น และทำให้ content เป็นส่วนขยายใน RowScope
    • เปลี่ยนชื่อ ModalDrawerLayout เป็น ModalDrawer แล้ว
    • เปลี่ยนชื่อ BottomDrawerLayout เป็น BottomDrawer แล้ว
    • (I1cc66)

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

  • เพิ่ม API เพื่อใช้ทรัพยากร AnimatedVectorDrawable ใน Compose ใช้ animatedVectorResource เพื่อโหลด <animated-vector> XML เป็น AnimatedImageVector และเคลื่อนไหว ด้วย painterFor (I8ea91)
  • เพิ่มองค์ประกอบ LocalSoftwareKeyboardController ใหม่ API เพื่อแทนที่อินเทอร์เฟซ SoftwareKeyboardController ก่อนหน้าใน TextField (I658b6, b/168778053)

เวอร์ชัน 1.0.0-alpha12

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

androidx.compose.ui:ui-*:1.0.0-alpha12 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้

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

  • นำการรองรับ ViewGroup ออกจาก UiApplier แล้ว ระบบได้นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
  • ตอนนี้ Modifier.pointerInput ต้องใช้คีย์ remember เพื่อระบุ เมื่อควรเริ่มโครูทีนการตรวจหาอินพุตของเคอร์เซอร์ใหม่สำหรับ การอ้างอิงใหม่ (I849cd)
  • เปลี่ยนชื่อ CompositionReference เป็น CompositionContext (I53fcb)
  • เปลี่ยนชื่อ Bounds เป็น DpRect (I4b32a) แล้ว
  • การอัปเดตการทดสอบ: hasText() จะตรวจสอบทั้งข้อความอินพุตและข้อความป้ายกำกับ/คำแนะนำ/ตัวยึดตำแหน่งในช่องข้อความ (Iab803)
  • ย้าย Composable viewModel() และ LocalViewModelStoreOwner ไปยัง androidx.lifecycle.viewmodel.compose แล้ว ตอนนี้คุณจะต้องเพิ่มทรัพยากร Dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 แยกต่างหากเพื่อใช้งาน (I7a374)
  • อนุญาตการดำเนินการที่อาจเป็น Null ใน AccessibilityAction เปลี่ยนป้ายกำกับการดำเนินการ ใน AccessibilityAction และ CustomAccessibilityAction จาก CharSequence เป็น String (I0dc82)
  • เราได้เปลี่ยนชื่อ ImagePainter เป็น BitmapPainter เพื่อให้สอดคล้องกับ VectorPainter มากขึ้น และเพื่อให้เป็นไปตามหลักเกณฑ์การตั้งชื่อของ ImageBitmap และ ImageVector (Iba381, b/174565889)
  • API การทดสอบสตริงย่อยที่ดีขึ้นโดยมีสตริงย่อยเป็นอาร์กิวเมนต์ (Icbe78)
  • เพิ่ม Modifier.focusOrder() ที่ ยอมรับ FocusRequester โดยไม่ต้องระบุ ลำดับโฟกัสที่กำหนดเองเป็น Lambda ซึ่งจะมีประโยชน์ เมื่อเราต้องการระบุเฉพาะการอ้างอิง แต่ไม่ต้องการลำดับโฟกัสที่กำหนดเองสำหรับ Composable (I4f52a, b/179180978)
  • ComponentActivity.setContent ย้ายไปอยู่ที่ androidx.activity.compose.setContent ในโมดูล androidx.activity:activity-compose แล้ว (Icf416)
  • ระบบได้นำเมธอด Destructuring และ copy() ออกจาก หลายๆ คลาสที่ไม่ได้ใช้บ่อย (I26702, b/178659281)
  • ย้ายป๊อปอัปให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เราได้เปลี่ยนชื่อ AndroidPopupProperties เป็น PopupProperties และย้าย isFocusable ไปยังพารามิเตอร์ focusable ใน PopupProperties (Ieeea5)
  • ย้ายกล่องโต้ตอบให้เป็นแพลตฟอร์มที่เฉพาะเจาะจง เปลี่ยนชื่อ AndroidDialogProperties เป็น DialogProperties (I4ef69, b/179138130)
  • ทำให้ LayoutNode เป็นแบบภายใน (I8a7b1, b/175103944)
  • Constraints.enforce ถูกแทนที่ด้วย Constraints.constrain (I8b8ea)
  • เลิกใช้งาน loadFontResource แล้ว ใช้ fontResource แทน imageResource, loadImageResource, vectorResource และ loadVectorResource เลิกใช้งานแล้ว ใช้ painterResource แทน (I6b809)
  • ตอนนี้ตรรกะของ ScrollAxisRange จะใช้ Lambda ที่แสดงผล Float แทนค่า Float โดยตรงเพื่อเหตุผลด้านประสิทธิภาพ (If4a35, b/178657186)
  • เพิ่ม Semantics ของ EditableText เพื่อทำเครื่องหมายข้อความอินพุตที่แก้ไขได้ของช่องข้อความสำหรับการช่วยเหลือพิเศษ และเพิ่มวิธีการทดสอบที่เกี่ยวข้องเพื่อตรวจสอบ Semantics (I8e07a)
  • ทำให้ OwnerLayer/OwnerScope/OwnerSnapshotObserver เป็นแบบภายใน (I4ffaf, b/175103944)
  • เปลี่ยนชื่อ toIntPx() เป็น roundToPx() (I9b7e4, b/173502290)
  • เปลี่ยนชื่อ IntBounds เป็น IntRect และปรับปรุง API (I1f6ff)
  • เราได้อัปเดต Snapshot API ให้สอดคล้องกับ หลักเกณฑ์ของ API มากขึ้น รวมถึงซ่อนคลาสการติดตั้งใช้งานภายใน จาก API สาธารณะ (Id9e32)
  • เพิ่มการดำเนินการทางความหมายในการขยายและยุบ เพิ่ม expand และ halfExpand ใน ModalBottomSheetState (Ib5064)
  • เลิกใช้งาน Modifier.dragGestureFilter แล้ว ให้ใช้ Modifier.pointerInput { detectDragGestures (...)} แทน หรือใช้ Modifier.draggable สำหรับการลากแกนเดียว (I0ba93, b/175294473)
  • เปลี่ยนชื่อ Ambients ให้ตรงกับการเปลี่ยนชื่อ Ambient -> CompositionLocal เดิมแอมเบียนต์ชื่อ AmbientFoo ตอนนี้คอมโพสิชันโลคัลชื่อ LocalFoo (I2d55d)
  • ตอนนี้เราได้นำ BaseTextField ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ BasicTextField แทน (I71368)
  • ย้ายการเลือกไปที่มูลนิธิแล้ว (I7892b)
  • เช่นเดียวกับที่เราเคยนำ state { 0 } ที่ใช้ร่วมกันได้ออกไปก่อนหน้านี้ และตอนนี้เรากำลังส่งเสริมการใช้งานอย่าง remember { mutableStateOf(0) } เราจะนำ savedInstanceState { 0 } ที่ใช้ร่วมกันได้ออก คุณควรใช้ rememberSaveable { mutableStateOf(0) } แทน และระบบจะบันทึกและกู้คืนโดยอัตโนมัติหากจัดเก็บประเภทที่ใช้ภายใน MutableState ไว้ใน Bundle ได้ หากก่อนหน้านี้คุณส่งออบเจ็กต์โปรแกรมประหยัดที่กำหนดเอง ตอนนี้คุณต้องใช้การโอเวอร์โหลดใหม่ของ rememberSaveable ซึ่งมีพารามิเตอร์ stateSaver การใช้งานจะมีลักษณะดังนี้ val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • เพิ่มความหมายของรหัสผ่านเพื่อการช่วยเหลือพิเศษ (I231ce)
  • เพิ่ม ProgressBarRangeInfo.Indeterminate เพื่อทำเครื่องหมายแถบความคืบหน้าที่ไม่แน่นอนเพื่อการช่วยเหลือพิเศษ (I6fe05)
  • เราได้เลิกใช้งานยูทิลิตี emptyContent() และ (@Composable () -> Unit).orEmpty() แล้ว เนื่องจากยูทิลิตีดังกล่าวไม่มีผลกระทบต่อประสิทธิภาพหรือคุณค่าในเชิงบวกอีกต่อไป (I0484d)
  • snapshotFlow และ withMutableSnapshot ไม่ใช่ฟีเจอร์ทดลองอีกต่อไป (I6a45f)
  • ตอนนี้คุณปิด Recomposer ได้แล้ว Closed recomposers จะ ทำการ Recomposition ต่อไปจนกว่าโครูทีนของ Composable Child จะเสร็จสมบูรณ์ เปลี่ยนชื่อ Recomposer.shutDown เป็น cancel เพื่อให้แตกต่างจาก close (Ib6d76)
  • UiSavedStateRegistry เปลี่ยนชื่อเป็น SaveableStateRegistry, AmbientUiSavedStateRegistry เปลี่ยนชื่อเป็น AmbientSaveableStateRegistry และทั้ง 2 รายการย้ายไปที่แพ็กเกจ androidx.compose.runtime.saveable (I30224)
  • เปลี่ยนชื่ออาร์ติแฟกต์ 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)
  • คลาส Outline.* ไม่ใช่คลาสข้อมูลอีกต่อไป (I4879e, b/178001427)
  • นำ view.captureToImage() ออกโดยไม่มีการแทนที่ (I7fcd2)
  • เปิดตัว ColorMatrix API ที่ใช้ เพื่อแก้ไขค่า RGB ของเนื้อหาต้นฉบับ ปรับโครงสร้าง ColorFilter API ให้เป็น อินเทอร์เฟซและตรงกับการใช้งาน ของ PathEffect (Ica1e8)
  • เพิ่มพารามิเตอร์ layoutDirection ลงใน createOutline ของ Shape ซึ่งช่วยให้สร้างรูปร่างที่รับรู้ทิศทางเลย์เอาต์ได้ (I57c20, b/152756983)
  • เลิกใช้งาน onImeActionPerformed แล้ว ให้ใช้ KeyboardActions แทน (If0bbd, b/179071523)
  • เพิ่มองค์ประกอบ InfiniteAnimationPolicy CoroutineContext ที่จะใช้ในภาพเคลื่อนไหวแบบวนซ้ำ โดยค่าเริ่มต้น ระบบจะไม่ติดตั้งนโยบายใดๆ ยกเว้นเมื่อเรียกใช้การทดสอบด้วย ComposeTestRule (I50ec4, b/151940543)
  • นำ canDrag ออกจาก Modifier.scrollable แล้ว (Id66e7, b/175294473)
  • เปลี่ยนชื่อ LayoutCoordinates.parentCoordinates เป็น LayoutCoordinates.parentLayoutCoordinates เพื่อให้มีพร็อพเพอร์ตี้ parentCoordinates ใหม่ พร็อพเพอร์ตี้ parentCoordinates ตอนนี้มี LayoutCoordintes ของตัวแก้ไขระดับบนแล้ว ซึ่งจะช่วยให้มี Use Case ที่สมบูรณ์ยิ่งขึ้นสำหรับ onSizeChanged() และ onGloballyPositioned() (Idfbfd, b/177926591)
  • เลิกใช้งาน tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter และ pressIndicaitonGestureFilter แล้ว โปรดใช้ Modifier.clickable หรือ Modifier.pointerInput กับฟังก์ชัน detectTapGestures แทน (I6baf9, b/175294473)
  • นำ unregisterProvider ของ SaveableStateRegistry ออกแล้ว แต่ตอนนี้ registerProvider() จะแสดงผลออบเจ็กต์ SaveableStateRegistry.Entry ซึ่งคุณใช้เพื่อยกเลิกการลงทะเบียนได้ (Ic4274, b/178583739)
  • เปลี่ยนชื่อ rememberSavedInstanceState() เป็น rememberSaveable() และย้ายไปยังแพ็กเกจ androidx.compose.runtime.saveable (I1366e, b/177338004)
  • นำ CoreText และ CoreTextField ออกจาก API สาธารณะ
    • นำการโอเวอร์โหลด SelectionContainer ที่เลิกใช้งานแล้วออก
    • (I99c19)
  • การทดสอบที่ใช้ Compose ในลำดับชั้นที่เพิ่ม/นำออกจาก WindowManager โดยตรงจะมีความเสถียรมากขึ้น (Ie81ed, b/175765614)
  • นำ Recomposer.current() ออกแล้ว [Abstract]ตอนนี้ ComposeView จะใช้ Recomposer ที่สร้างแบบเลื่อนเวลาและมีขอบเขตระดับหน้าต่างเป็นค่าเริ่มต้น ซึ่งขับเคลื่อนโดย ViewTreeLifecycleOwner สำหรับหน้าต่าง ระบบจะหยุดการจัดองค์ประกอบใหม่และเครื่องหมายภาพเคลื่อนไหวตาม withFrameNanos ชั่วคราวขณะที่หยุดวงจรของโฮสต์ (I38e11)
  • ตอนนี้ Recomposer.runningRecomposers มี StateFlow ทั่วโลก ของ RecomposerInfo แบบอ่านอย่างเดียวสำหรับการสังเกตสถานะการจัดองค์ประกอบที่กำลังดำเนินการใน กระบวนการ ใช้ API นี้แทน Recomposer.current() ซึ่งตอนนี้เลิกใช้งานแล้ว (If8ebe)
  • ย้าย Saver, listSaver(), mapSaver(), autoSaver จาก androidx.compose.runtime.savedinstancestate ไปยัง androidx.compose.runtime.saveable (I77fe6)
  • EditCommands ยอมรับ AnnotatedString อย่างไรก็ตาม การเปลี่ยนแปลงนี้เป็น การเปลี่ยนแปลงใน API เท่านั้น และยังไม่ได้ ใช้การแก้ไขข้อความแบบหลายสไตล์ (I4c3ea)
  • ระบบได้นำเวลาทำงานและระยะเวลาออกแล้ว (Ib9bf4, b/177420019)
  • ย้าย CompositionData.asTree() และ API ที่เกี่ยวข้อง ไปยังโมดูล ui-tooling-data แยกต่างหากและทำเครื่องหมายเป็นเวอร์ชันทดลอง (Ic95b8)
  • เราได้เปลี่ยนชื่อพารามิเตอร์ใน RounderCornerShape, CutCornerShape และ CornerBasedShape จากซ้าย/ขวา เป็นเริ่ม/สิ้นสุด เพื่อรองรับการมิเรอร์อัตโนมัติของรูปร่างในทิศทาง RTL เราได้เปิดตัว AbsoluteRounderCornerShape และ AbsoluteCutCornerShape สำหรับกรณีที่ไม่ต้องการการมิเรอร์อัตโนมัติ (I61040, b/152756983)
  • เราได้รีแฟคเตอร์ API ที่ปลั๊กอินคอมไพเลอร์ Compose กำหนดเป้าหมาย เพื่อใช้อินเทอร์เฟซแทน คลาสที่เฉพาะเจาะจง นอกจากนี้ อินเทอร์เฟซยังไม่ใช้พารามิเตอร์ประเภทอีกต่อไป

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

  • นำฟังก์ชัน StringBuilder.deleteAt ที่ตั้งค่าเป็นสาธารณะโดยไม่ตั้งใจออก (Id6ed9)

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

  • ComposeView ที่วางไว้ในลำดับชั้นของ View ซึ่งเป็นองค์ประกอบย่อยขององค์ประกอบอื่นจะโฮสต์องค์ประกอบย่อยขององค์ประกอบบรรพบุรุษ (I92883)
  • อัปเดต API imageFromResource ของ Compose เพื่อใช้แคช Drawable ของทรัพยากรซ้ำ เมื่อโหลดออบเจ็กต์ ImageBitmap (If3627, b/178751994)

เวอร์ชัน 1.0.0-alpha11

28 มกราคม 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตต่อไปนี้

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

  • มีการปรับปรุง WithConstraints เป็น BoxWithConstraints และย้ายไปที่ foundation.layout (I9420b, b/173387208)
  • เลิกใช้งาน Key.DPadUp แล้ว ใช้ Key.DirectionUp แทน (Iab335, b/177954892)
  • อินเทอร์เฟซเจ้าของจะอยู่ภายในนับจากนี้ (If8e35)
  • เพิ่ม API FocusManager.moveFocus() เพื่อย้ายโฟกัสโดยอัตโนมัติ (I045cb, b/177681839)
  • เปลี่ยน PopupPositionProvider ให้ใช้พิกัดที่สัมพันธ์กับหน้าต่าง ไม่ใช่พิกัดส่วนกลาง เปลี่ยนชื่อ parentGlobalBounds เป็น anchorBounds และเปลี่ยน windowGlobalBounds เป็น windowSize: IntSize (I2994a)
  • ระบบจะแทนที่ระยะเวลาและระยะเวลาทำงานด้วยมิลลิวินาทีแบบยาว และขั้นตอนนี้จะนำทรัพยากร Dependency ของอินพุตของ Pointer ในคลาสเหล่านั้นออก (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner ได้รับการเพิ่มในลักษณะเดียวกับ AmbientLifecycleOwner และ AmbientViewModelStoreOwner ที่มีอยู่แล้ว (I9a3e8, b/176756365)
  • อัปเดต API กราฟิกเวกเตอร์ เพื่อรองรับการแยกวิเคราะห์การปรับสี ที่ใช้กับรูทของกราฟิกเวกเตอร์ (Id9d53, b/177210509)
  • เพิ่ม toolType ลงใน PointerInputChange เพื่อแยกความแตกต่างของอุปกรณ์ (Iac787, b/175142755)
  • เปลี่ยนชื่อ AmbientWindowManager เป็น AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • เลิกใช้งานเมธอดพิกัดส่วนกลางและสร้าง เมธอดพิกัดใหม่ที่อิงตามหน้าต่าง (Iee284)
  • เพิ่ม Modifier.toolingGraphicsLayer ซึ่งจะเพิ่มตัวปรับแต่งเลเยอร์กราฟิกเมื่อเปิดการตรวจสอบ (I315df)
  • ตอนนี้เราได้ทำเครื่องหมาย FocusRequester.createRefs ว่าเป็นการทดลองแล้ว เนื่องจากอาจมีการเปลี่ยนแปลง (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden เปลี่ยนชื่อเป็น invisibleToUser และทำเครื่องหมาย @ExperimentalComposeUiApi เปลี่ยนชื่อ AccessibilityRangeInfo เป็น ProgressBarRangeInfo เปลี่ยนชื่อ stateDescriptionRange เป็น progressBarRangeInfo AccessibilityScrollState เปลี่ยนชื่อเป็น ScrollAxisRange horizontalAccessibilityScrollState เปลี่ยนชื่อเป็น horizontalScrollAxisRange verticalAccessibilityScrollState เปลี่ยนชื่อเป็น verticalScrollAxisRange (Id3148)
  • นำ PointerInputData ออกและแก้ไข PointerInputChange เพื่อให้มีช่องทั้งหมดของ PointerInputData ทำให้ PointerInputEvent และ PointerInputEventData เป็นแบบภายในเนื่องจากไม่ได้ใช้ใน API สาธารณะใดๆ (Ifff97, b/175142755)
  • อัปเดตการใช้งาน GraphicsLayerScope density เพื่อรองรับการแปลง dp เป็น พิกเซลดิบ (Ied528, b/176819695)
  • อัปเดต API ของเมทริกซ์ให้เป็นไปตามลำดับแถว หลักและระบุค่าคงที่ของดัชนี เพื่อช่วยในการแปลงระหว่าง การแสดงเมทริกซ์ต่างๆ ให้ตรงกับเฟรมเวิร์ก ตรรกะการแปลงระหว่าง SkMatrix กับ Matrix4 ภายใน (I432e6)
  • นำเมธอด monotonicFrameAnimationClockOf ที่เป็นเวอร์ชันทดลองออก (Ib753f, b/170708374)
  • ย้าย String.fintPrecedingBreak และ String.fingFollowingBreak ไปยัง InternalTextApi (I657c4)
  • เราได้นำ androidx.compose.ui.util.isSurrogatePair ออกจาก API สาธารณะแล้ว (Ia9494)
  • เปลี่ยนชื่อ TransformedText.transformedText เป็น TransformedText.text
    • TransformedText ไม่ใช่คลาสข้อมูลอีกต่อไป (Ie672a)
  • นำ data class ออกจากชั้นเรียนต่อไปนี้
    • InlineTextContent
    • LocaleList (I605c7)
  • คลาสต่อไปนี้ไม่ใช่คลาสข้อมูลอีกต่อไป
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • เปลี่ยน VisualTransformation ให้เป็นอินเทอร์เฟซที่ใช้งานได้ (I3bba4)
  • เพิ่มประเภทพารามิเตอร์ข้อมูลอ้างอิงฟังก์ชัน (I5e1bd)
  • เพิ่มขอบเขตที่แปลงแล้วไปยัง InspectorNode (Ice42f)

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

  • onCommit, onDispose และ onActive ถูกเลิกใช้งานแล้วเพื่อรองรับ SideEffect และ DisposableEffect API (If760e)
  • การเปลี่ยนแปลงฟังก์ชันจากโรงงานสำหรับ 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)

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

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

  • OnSizeChanged รายงานขนาดของเนื้อหาเลย์เอาต์ ตอนนี้จะรายงานขนาดที่ตำแหน่งภายใน เชนตัวแก้ไข (I36b78, b/177562900)

  • เราเลิกใช้งาน API emit() และการโอเวอร์โหลดทั้งหมดแล้ว และเปลี่ยนชื่อเป็น ComposeNode API ทั้ง 2 รายการเหมือนกันทุกประการ เพียงแต่ใช้ชื่อต่างกันเพื่อให้เป็นไปตามรูปแบบการตั้งชื่อของ Compose (I4137b)

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

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

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

  • โปรดทราบว่า RememberObserver จะแทนที่ CompositionLifecycleObserver และตอนนี้ CompositionLifecycleObserver เลิกใช้งานแล้ว

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

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

  • การดำเนินการทางคณิตศาสตร์ที่เลิกใช้งานแล้วระหว่าง TextUnit ตั้งแต่ 2 รายการขึ้นไป เลิกใช้งานฟังก์ชัน TextUnit.Sp และ TextUnit.Em เพื่อให้ใช้ฟังก์ชันส่วนขยาย เช่น Int.sp และ Int.em แทน (I48369)

  • ตอนนี้ทรัพยากรในไลบรารีที่ไม่มีการประกาศทรัพยากรสาธารณะอย่างชัดเจน (เช่น ผ่าน public.xml) จะเป็นแบบส่วนตัวโดยค่าเริ่มต้น (Ia1dcc, b/170882230)

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

  • items(count: Int) วิธีการจากโรงงานใหม่สำหรับขอบเขตของ LazyColumn/LazyRow/LazyVerticalGrid ตอนนี้ items(items: List) และ itemsIndexed(items: List) เป็นฟังก์ชันส่วนขยายแล้ว คุณจึงต้องนำเข้าด้วยตนเองเมื่อใช้งาน การโอเวอร์โหลดส่วนขยายใหม่สำหรับอาร์เรย์: items(items: Array) และ itemsIndexed(Array) (I803fc, b/175562574)

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

    • โปรดใช้ ImeAction.Default แทน ImeAction.Unspecified (Ie1bcc)
  • ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)

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

  • เลิกใช้งานการเปลี่ยนตาม TransitionDefinition แล้ว (I0ac57)

  • นำ TextUnitType.Inherit ออกแล้ว โปรดใช้ TextUnitType.Unspecified แทน (I9ff64)

เวอร์ชัน 1.0.0-alpha10

13 มกราคม 2021

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

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

  • การปรับโครงสร้าง API ของคอมไพเลอร์ภายใน ช่วยให้สามารถจัดกลุ่มการเปลี่ยนแปลงไปยังโหนดที่สร้างขึ้น อันเป็นผลมาจากการคอมโพสิชันเป็นเฟส "ใช้การเปลี่ยนแปลง" ของการคอมโพสิชัน หลังจากที่ฟังก์ชัน @Composable ทั้งหมด เสร็จสมบูรณ์

    นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดการหยุดทำงานของลักษณะการทำงาน ซึ่งอาจส่งผลต่อโค้ดของแอปพลิเคชันเนื่องจากโหนดจะไม่พร้อมใช้งานจาก API ภายในและ API ที่ทดลองใช้จนกว่าจะมีการใช้การเปลี่ยนแปลง โดยปกติแล้วสามารถหลีกเลี่ยงปัญหานี้ได้โดย การล้อมรอบโค้ดที่มีการอ้างอิงดังกล่าวใน SideEffectที่ประกอบได้เพื่อเลื่อนการดำเนินการของ โค้ดจนกว่าจะมีการสร้างและ เริ่มต้นโหนด (I018da)

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

  • เพิ่ม Modifier.focusOrder() ที่ใช้ระบุลำดับการย้ายโฟกัสที่กำหนดเองได้ (I90cf5, b/175899543, b/170155556, b/170155429)
  • นำการใช้ focusObserver ที่เลิกใช้งานแล้วออก ให้ใช้ onFocusChanged หรือ onFocusEvent แทน (I3ecb9, b/175156387)
  • การเปลี่ยนแปลง EditOperations API
    • เปลี่ยนชื่อ EditOperation เป็น EditCommand
    • เพิ่มคำต่อท้าย Command สำหรับการติดตั้งใช้งานจริงของ EditOperation
    • EditCommand ไม่ใช่คลาสข้อมูลอีกต่อไป
    • เปลี่ยนชื่อฟังก์ชัน EditOperation.process เป็น applyTo
    • เปลี่ยนชื่อ InputEventListener เป็น InputEventCallback
    • (I0a366)
  • นำ PxSquared, PxCubed, PxInverse ที่ไม่ได้ใช้ออก เปลี่ยน Size.center() ให้เป็นพร็อพเพอร์ตี้ (I973f7)
  • ตอนนี้โมดูล ui-test จะกำหนดค่าการสร้าง Recomposer สำหรับ UI ที่อยู่ระหว่างการทดสอบได้แล้ว (Ibebd8)
  • แก้ไขความเร็วให้มีส่วนประกอบและ การดำเนินการทางคณิตศาสตร์ (Ib0447)
  • เปลี่ยนชื่อ @ExperimentalTesting เป็น @ExperimentalTestApi เพื่อให้ สอดคล้องกับคำอธิบายประกอบ API ทดลองที่คล้ายกัน (Ia4502, b/171464963)
  • เปลี่ยนชื่อ Color.useOrElse() เป็น Color.takeOrElse() (Ifdcf5)
  • นำคลาส DpInverse, DpSquared และ DpCubed ที่ไม่ได้ใช้ออก (I4d62b)
  • เปลี่ยนชื่อ Constraints#satisfiedBy เป็น isSatisfiedBy (I9cf5c)
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (I72fd1)
  • เพิ่ม isSpecified, isUnspecified และ useOrElse สำหรับ คลาสอินไลน์ที่มีค่าคงที่ Unspecified (I93f7b, b/174310811)
  • ขยาย API ของ [Abstract]ComposeView เพื่ออนุญาตให้รีไซเคิล มุมมองที่อิงตาม Compose โดยทิ้งองค์ประกอบเพื่อสร้างใหม่ ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหา Recomposer ที่มีขอบเขตระดับหน้าต่าง และ CompositionReference สำหรับการสร้างองค์ประกอบย่อย

    เพิ่ม ViewCompositionStrategy เพื่อกําหนดค่ากลยุทธ์การทิ้งองค์ประกอบของ [Abstract]ComposeViews ลักษณะการทํางานเริ่มต้นคือทิ้งเมื่อหน้าต่างถูกยกเลิกการเชื่อมต่อ (I860ab)

  • นำ Any.identityHashCode() API สาธารณะออก (I025d7)

  • นำ toStringAsFixed API ออกเพื่อใช้ String.format แทนโดยตรง (Iaba6b)

  • เพิ่มสวิตช์เปิด/ปิดไปยัง foundation Strings.kt (I4a5b7, b/172366489)

  • ย้าย nativeClass ไปยัง โมดูล ui และทำให้เป็นภายใน อัปเดตการใช้งาน nativeClass ในการติดตั้งใช้งาน equals เพื่อใช้ "is MyClass" แทน (I4f734)

  • เลิกใช้งาน Modifier.focus() และ Modifier.focusRequester() แล้ว โปรดใช้ Modifier.focusModifier() และ Modifier.focusReference() แทน (I75a48, b/175160751, b/175160532, b/175077829)

  • เปิดตัว SelectionRegistrar.notifySelectableChange เพื่อแจ้งการอัปเดตที่เลือกได้ไปยัง SelectionManager (I6ff30, b/173215242)

  • เพิ่มพร็อพเพอร์ตี้ Outline.bounds เพื่อรับสี่เหลี่ยมล้อมรอบ สำหรับการใช้งานโครงร่างต่างๆ (I16e74, b/175093504)

  • เลิกใช้งาน TestUiDispatcher แล้ว โปรดใช้ Dispatchers.Main แทน (Ic171f, b/175385255)

  • ImeOptions และ KeyboardOptions ไม่ใช่คลาสข้อมูลอีกต่อไป (I3c898, b/168684531)

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

    • เปลี่ยนชื่อ OffsetMap เป็น OffsetMapping
    • เปลี่ยนชื่อ OffsetMapping.identityOffsetMap เป็น OffsetMapping.Identity
    • PasswordTransformation ไม่ใช่คลาสข้อมูลอีกต่อไป
    • ย้าย OffsetMapping ไปยังไฟล์ของตัวเอง
    • (I0bdf3)
  • เปลี่ยนชื่อตำแหน่งเป็น DpOffset และนำ getDistance() ออก (Ib2dfd)

  • เปลี่ยน fun Dp.isFinite() เป็น val Dp.isFinite (I50e00)

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

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

เวอร์ชัน 1.0.0-alpha09

16 ธันวาคม 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้

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

  • ตอนนี้ได้นำ KeyEvent.Alt ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ KeyEvent.isAltPressed แทน (Idd695)
  • เลิกใช้งาน Modifier.keyInputFilter และ Modifier.previewKeyInputFilter แล้ว ให้ใช้ Modifier.onKeyEvent และ Modifier.onPreviewKeyEvent แทน (Idbf1b, b/175156384)
  • เลิกใช้งาน Modifier.focusObserver แล้ว ใช้ Modifier.onFocusChanged หรือ Modifier.onFocusEvent แทน (I30f17, b/168511863, b/168511484)
  • สำหรับ API การป้อนข้อมูลพอยน์เตอร์ที่ระงับแล้ว เราได้เปลี่ยนชื่อ HandlePointerInputScope เป็น AwaitPointerEventScope และ handlePointerInput() เป็น awaitPointerEventScope() (Idf0a1, b/175142755)
  • ตอนนี้ Autofill API เป็น API เวอร์ชันทดลองและต้องเลือกใช้ (I0a1ec)
  • เพิ่มการประกาศการแยกโครงสร้างเพื่อสร้างอินสแตนซ์ FocuSRequester (I35d84, b/174817008)
  • เปลี่ยนชื่อ accessibilityLabel เป็น contentDescription เปลี่ยนชื่อ accessibilityValue เป็น stateDescription (I250f2)
  • นำเหตุการณ์ที่กำหนดเองออกจาก API การระงับการป้อนข้อมูลด้วยเคอร์เซอร์ (Ia54d5, b/175142755)
  • เปิดตัวฟังก์ชันใหม่หลายรายการใน SelectionRegistrar และเปลี่ยนชื่อ onPositionChange เป็น notifyPositionChange (Ifbaf7)
  • สมาชิกเพิ่มเติมของ LayoutNode ที่เราทําเครื่องหมายเป็นภายใน (I443c6)
  • มีการเปิดตัว LayoutInfo เพื่อให้เครื่องมือและการทดสอบใช้งาน (I9b190)
  • AndroidOwner made internal (Ibcad0, b/170296980)
  • นำคำอธิบายประกอบ ExperimentalPointerInput ออกแล้ว (Ia7a24)
  • เพิ่มระบบการเลื่อนที่ซ้อนกัน ดูรายละเอียดเพิ่มเติมได้ที่ Modifier.nestedScroll (I36e15, b/162408885)
  • เปลี่ยนให้ subcomposeInto(LayoutNode) เป็นฟังก์ชันภายใน (Id724a)
  • Applier อินเทอร์เฟซมีการเปลี่ยนแปลงเพื่อลดความซับซ้อน ในการสร้างแผนผังจากล่างขึ้นบนแทนที่จะเป็นจากบนลงล่าง

    เปลี่ยนชื่อเมธอด insert() เป็น insertTopDown() แล้ว

    เพิ่มวิธีการใหม่ insertBottomUp() แล้ว

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

    ต้นไม้บางต้น เช่น LayoutNode และ View การสร้างจากล่างขึ้นบนจะมีประสิทธิภาพมากกว่าจากบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีสแต็กของแทรกเพื่อใช้การสร้างจากล่างขึ้นบน ซึ่ง ต้องคัดลอกไปยังทุกแอปพลิเคชันที่ต้องใช้การสร้างจากล่างขึ้นบน เพื่อประสิทธิภาพ การเปลี่ยนแปลงนี้จะApplier ลบล้าง insertBottomUp()เพื่อสร้างแผนภูมิต้นไม้จากล่างขึ้นบนและ insertTopDown()เพื่อสร้างแผนภูมิต้นไม้จากบนลงล่าง (Icbdc2)

  • เพิ่มพร็อพเพอร์ตี้ dismissOnBackPress และ dismissOnClickOutside ลงใน AndroidDialogProperties ซึ่งจะช่วยให้กำหนดค่าได้ว่าจะเรียกใช้ Lambda ของ onDismissRequest ของกล่องโต้ตอบเมื่อใด (If5e17)

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

  • เพิ่ม Modifier.clearAndSetSemantics เพื่อล้างซีแมนติกขององค์ประกอบย่อย และตั้งค่าใหม่ (I277ca)

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

  • เปิดตัวกราฟิก API ของ PathEffect เพื่อให้ลวดลายที่แตกต่างกันกับรูปร่างที่ขีดเส้น การใช้งาน NativePathEffect ที่เลิกใช้งานแล้ว เพื่อรองรับการใช้งาน PathEffect แบบ expect/actual (I5e976, b/171072166)

  • เพิ่มอินเทอร์เฟซ IdlingResource ลงใน Compose เป็นตัวแปรที่รองรับ Compose ของทรัพยากรที่ไม่ได้ใช้งานของ Espresso โดยสามารถลงทะเบียน และยกเลิกการลงทะเบียนผ่าน ComposeTestRule (I433f3)

  • นำการ (ยกเลิก) การลงทะเบียนทั่วโลกของ ComposeIdlingResource และการ (ยกเลิก) การลงทะเบียนทั่วโลกของนาฬิกาใน ComposeIdlingResource ออก (I32660)

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

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

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

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

    เลิกใช้งาน API ตัวสร้างฟังก์ชันการไล่ระดับสี เพื่อสนับสนุนเมธอด Factory ในออบเจ็กต์การไล่ระดับสี (I511fc, b/173066799)

  • เลิกใช้งาน LazyColumnFor, LazyRowFor, LazyColumnForIndexed และ LazyRowForIndexed ใช้ LazyColumn และ LazyRow แทน (I5b48c)

  • เลิกใช้งาน BuildCompat.isAtLeastR (Idb37e)

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

  • นำเมธอดส่วนขยาย ใน Float และ Double ออกเพื่อแปลงค่า เป็นเรเดียน ย้ายไปเป็นฟังก์ชันส่วนตัว ภายใน PathParser ซึ่งเป็นที่เดียวที่มีการใช้งาน (I25f52)

เวอร์ชัน 1.0.0-alpha08

2 ธันวาคม 2020

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

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

  • เพิ่มการดำเนินการทางความหมาย Dismiss (I2b706)
  • ย้าย API ของ DrawModifier จากแพ็กเกจ androidx.compose.ui ไปยังแพ็กเกจ androidx.compose.ui.draw สร้างไฟล์ DrawModifierDeprecated.kt เพื่อ รวมนามแฝงของประเภท/วิธีการช่วยเพื่อช่วยในการ ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้วไปยัง API ปัจจุบัน (Id6044, b/173834241)
  • เปลี่ยนชื่อ Modifier.drawLayer เป็น Modifier.graphicsLayer นอกจากนี้ยังอัปเดตคลาสที่เกี่ยวข้องเป็น GraphicsLayer ตาม ความคิดเห็นเกี่ยวกับ API (I0bd29, b/173834241)
  • เราได้เพิ่มเมธอดใหม่ที่วางได้ placeable.placeWithLayer() และ placeable.placeRelativeWithLayer() ซึ่งช่วยให้เลย์เอาต์ที่กำหนดเองและตัวแก้ไขเลย์เอาต์วางองค์ประกอบย่อยได้โดยการเพิ่มเลเยอร์กราฟิกสำหรับการวาด ซึ่งจะช่วยให้เราสามารถเพิ่มประสิทธิภาพการวาดใหม่ได้ก่อนเป็นอันดับแรก ดังนั้นเมื่อเราต้องการย้ายองค์ประกอบย่อย เราจึงไม่ต้องวาดเนื้อหาขององค์ประกอบนั้นใหม่ และอันดับที่สองคือเราสามารถใช้การเปลี่ยนรูปการวาดสำหรับองค์ประกอบย่อยได้ (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • นำ <T> ออกจากการประกาศ SubcomposeLayout ตอนนี้คุณใช้ได้โดยไม่ต้องระบุประเภท (Ib60c8)
  • เพิ่ม Modifier.scale/rotate APIs เพื่ออำนวยความสะดวกในการใช้ drawLayer
    • เปลี่ยนชื่อ Modifier.drawOpacity เป็น Modifier.alpha แล้ว
    • เปลี่ยนชื่อ Modifier.drawShadow เป็น Modifier.shadow (I264ca, b/173208140)
  • ทำให้ฟิลด์เวลาทำงานและตำแหน่งของ PointerInputData ไม่เป็นค่าว่าง (Id468a)
  • ตอนนี้ MaterialTheme จะตั้งค่าสีที่ถูกต้องสำหรับแฮนเดิลการเลือกและพื้นหลังการเลือกแล้ว แอปที่ไม่ใช่ Material สามารถใช้ AmbientTextSelectionColors ด้วยตนเองเพื่อปรับแต่งสีที่ใช้สำหรับการเลือก (I1e6f4, b/139320372, b/139320907)
  • เพิ่ม WindowManager.isWindowFocused เพื่อตรวจสอบว่าหน้าต่างโฮสต์อยู่ในโฟกัสหรือไม่ และ WindowFocusObserver ที่ให้การเรียกกลับ onWindowFocusChanged (I53b2a, b/170932874)
  • อัปเดต TransformOrigin API ให้มีไวยากรณ์การแยกโครงสร้างเพื่อแสดงผล pivotFractionX และ pivotFractionY เป็น component1 และ component2 (If43c4, b/173586560)
  • เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ Lambda ที่ใช้ร่วมกันได้ เพื่อตรวจสอบความสอดคล้องกับหลักเกณฑ์ของ Compose นอกจากนี้ เรายังย้ายข้อมูล API บางรายการโดยใช้ children เป็นชื่อของ Lambda ต่อท้ายไปยัง content ตามการตรวจสอบและคำแนะนำของ Lint (Iec48e)
  • เพิ่ม API เพื่อตรวจสอบว่ามีการกดแป้นกดร่วม Alt, Ctrl, Meta หรือ Shift เมื่อมีการส่ง Keyevent หรือไม่ (I50ed9)
  • เพิ่มModifier.drawLayer()โอเวอร์โหลดใหม่แล้ว โดยจะใช้บล็อก Lambda ใน GraphicsLayerScope ใหม่ ซึ่งคุณจะกำหนดพารามิเตอร์เลเยอร์ในลักษณะที่ช่วยให้ข้ามการจัดองค์ประกอบใหม่และการจัดเลย์เอาต์ใหม่ได้เมื่อมีการเปลี่ยนแปลงสถานะ ตอนนี้ DrawLayerModifier อยู่ภายในเพื่อเตรียมพร้อมที่จะย้ายตรรกะไปยังเมธอด placeable.placeWithLayer() ของ LayoutModifier (I15e9f, b/173030831)
  • เลิกใช้งาน Ambient ที่มี Ambient เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย Ambient ตามหลักเกณฑ์อื่นๆ ของ Ambient และ Compose API (I33440)
  • ย้าย androidx.compose.ui.text.Typeface ไปยัง androidx.compose.ui.text.font.Typeface (Ic2b81)
  • เปลี่ยนชื่ออาร์กิวเมนต์ Semantics mergeAllDescendants เป็น mergeDescendants (Ib6250)
  • เครื่องตรวจจับท่าทางลากแบบใหม่ที่ระงับ API อินพุตของเคอร์เซอร์ รวมถึงการล็อกการวางแนว (Icef25)
  • เปลี่ยนชื่อ VectorAsset เป็น ImageVector ย้ายและเปลี่ยนชื่อ VectorAsset เป็น Builder เพื่อ ให้เป็นคลาสในของ ImageVector ตาม หลักเกณฑ์ของ API เพิ่มชื่อแทนของ VectorAssetBuilder เพื่อลิงก์ไปยัง ImageVector.Builder เพื่อความเข้ากันได้ (Icfdc8)
  • เปลี่ยนชื่อ ImageAsset และ เมธอดที่เกี่ยวข้องเป็น ImageBitmap (Ia2d99)
  • เพิ่มพารามิเตอร์ zIndex สำหรับ place() ของ PlacementScope เพื่อให้ Modifier.zIndex() ทำงานเป็น LayoutModifier ได้แล้ว และเลย์เอาต์ที่กำหนดเองจะตั้งค่า zIndex สำหรับองค์ประกอบย่อยได้โดยตรงในบล็อกการจัดวาง (I711f7, b/171493718)
  • ย้ายพร็อพเพอร์ตี้ความหมายพื้นฐานไปยัง ui (I6f05c)
  • เลิกใช้งาน place(Offset) และ placeRelative(Offset) ใช้การโอเวอร์โหลดที่มีออฟเซ็ต int แทน (I4c5e7)
  • นำ API ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว โดยนำ Modifier.onPositioned ออก และใช้ Modifier.onGloballyPositioned แทน นำ Modifier.onDraw ออกแล้ว ให้ใช้ Modifier.onDrawBehind แทน ระบบได้นำ Modifier.plus ออกแล้ว ให้ใช้ Modifier.then แทน นำ Color.Unset ออกแล้ว ให้ใช้ Color.Unspecified แทน ระบบนำคลาส PxBounds ออกแล้ว โปรดใช้ Rect แทน (Ie9d02, b/172562222)
  • เราได้อัปเดตอินเทอร์เฟซการจัดแนวและทำให้ใช้งานได้ (I46a07, b/172311734)
  • เพิ่มเครื่องตรวจจับท่าทางสัมผัสสำหรับการแตะ แตะสองครั้ง กดค้าง และการกดโดยใช้การป้อนข้อมูลตัวชี้แบบระงับใหม่ นอกจากนี้ เรายังได้เพิ่มยูทิลิตีบางอย่างเพื่อให้ นักพัฒนาแอปเขียนเครื่องตรวจจับท่าทางสัมผัสของตนเองได้ง่ายขึ้น (I00807)
  • เปลี่ยนชื่อ id เป็น layoutId สำหรับ LayoutIdParentData แล้ว เปลี่ยนชื่อ Measurable.id เป็น Measurable.layoutId แล้ว (Iadbcb, b/172449643)
  • เครื่องตรวจจับท่าทางสัมผัสแบบมัลติทัชใหม่ ซึ่งรวมถึง ฟังก์ชันช่วยในการตรวจจับการหมุน การซูม และการเลื่อน (Ic459d)
  • เปิดตัว SweepGradientShader และ SweepGradientBrush API (Ia22c1)
  • การควบคุมเวลาในการทดสอบ (TestAnimationClock และการใช้งาน) อยู่ในระยะทดลองแล้ว (I6ef86, b/171378521)
  • เพิ่ม API การเลื่อนตามโครูทีน

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

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

  • ระบุการใช้งานเริ่มต้นของเมธอดและพร็อพเพอร์ตี้ใน AnimationClockTestRule ที่สามารถมอบสิทธิ์ให้กับ clock (I7ea3d, b/173399709)

  • ตอนนี้ AndroidComposeTestRule ยอมรับตัวเรียกใช้กิจกรรมที่กำหนดเองได้แล้ว (Ib8288, b/153623653, b/154135019)

  • เลิกใช้งาน TextLayoutResult.getLineVisibleEnd แล้ว ตอนนี้ TextLayoutResult.getLineEnd มีพารามิเตอร์ใหม่ชื่อ visibleEnd แล้ว (I73282)

  • อัปเดต TextFieldValue API

    • ทำให้ TextFieldValue.composition เป็นแบบอ่านอย่างเดียว
    • นำข้อยกเว้นที่เกิดขึ้นสำหรับช่วงการเลือกที่ไม่ถูกต้องออกแล้ว (I4a675, b/172239032)
  • รองรับ TtsAnnotation สำหรับเครื่องมืออ่านออกเสียงข้อความ (I54cc6)

  • API ใหม่สำหรับการเรียกใช้ภาพเคลื่อนไหวในโครูทีน (Ied662)

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

  • พารามิเตอร์การจัดแนวของ Box เปลี่ยนชื่อเป็น contentAlignment (I2c957)
  • เปลี่ยนชื่อตัวแก้ไข offsetPx เป็น offset ตอนนี้ฟังก์ชันเหล่านี้รับพารามิเตอร์ Lambda แทน State แล้ว (Ic3021, b/173594846)
  • เพิ่มพารามิเตอร์ resetInput ไปยัง TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • เพิ่มการตรวจสอบ Lint สำหรับพารามิเตอร์ Modifier ในฟังก์ชันที่ใช้ร่วมกันได้ การตรวจสอบ Lint นี้จะตรวจสอบการตั้งชื่อ ประเภทการคืนค่า ค่าเริ่มต้น และลำดับของพารามิเตอร์เพื่อให้สอดคล้องกับหลักเกณฑ์ของ Compose (If493b)
  • เพิ่มตัวเลือกชั่วคราวเพื่อให้ TestAnimationClock ทำงานโดย MonotonicFrameClock (I1403b, b/173402197)
  • เพิ่ม Wrapper ของแบบอักษร Android แล้ว คุณโหลด Android Typeface ผ่านฟังก์ชัน typeface ได้ เช่น typeface(Typeface.DEFAULT) เปลี่ยนชื่อ typefaceFromFontFamily() เป็น typeface() (I52ab7) ด้วย
  • เพิ่มการตรวจสอบ Lint เพื่อตรวจสอบว่าฟังก์ชัน Factory ของตัวแก้ไขได้รับการกำหนดเป็นส่วนขยายในตัวแก้ไข เพื่อให้สามารถเชื่อมโยงเข้าด้วยกันได้อย่างราบรื่น (I07981)
  • Remove old ui-test module and its stubs (I3a7cb)
  • Recomposer ไม่รับ EmbeddingContext อีกต่อไป แต่จะรับการขึ้นต่อกันในการจัดกำหนดการที่จำเป็นจาก effectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตส่วนกลางของตนเอง (I02369)
  • ส่งข้อมูลรูปแบบไปยังโหนดการช่วยเหลือพิเศษ (If5e8d)
  • เราเปลี่ยนชื่อ TextUnit.Inherit เป็น TextUnit.Unspecified เพื่อให้สอดคล้องกับหน่วยอื่นๆ (Ifce19)

Compose UI เวอร์ชัน 1.0.0-alpha07

11 พฤศจิกายน 2020

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

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

  • เปิดตัวคลาส ScaleFactor inline เพื่อแสดงปัจจัย การปรับขนาดสำหรับแกนนอนและแกนตั้ง โดยไม่ขึ้นต่อกันเพื่อ รองรับกรณีการใช้งานการปรับขนาดที่ไม่สม่ำเสมอ
    • เพิ่มเมธอด computeScaleFactor ลงใน ContentScale
    • เพิ่ม ContentScale.FillBounds เพื่อทำการ ปรับขนาดแบบไม่สม่ำเสมอเพื่อยืดขอบเขต src ให้ครอบคลุมปลายทางทั้งหมด
    • เพิ่มวิธีการดำเนินการเพื่อคำนวณ พารามิเตอร์ ScaleFactor ด้วยพารามิเตอร์ Size
    • (Ic96a6, b/172291582)
  • เพิ่มโรงงาน BiasAlignment และ BiasAbsoluteAlignment สำหรับสร้างการจัดแนว (Iac836, b/169406772)
  • อนุญาตให้นักพัฒนาแอปบังคับล้างโฟกัส (I90372)
  • แก้ไขข้อบกพร่องที่ทำให้ไม่ได้วาดระดับความสูงสำหรับมุมมองภายใน Compose (If7782)
  • สร้าง API onDrawBehind ภายใน ContentDrawScope เพื่อให้เป็นไปตามรูปแบบการตั้งชื่อเดียวกับ Modifier.drawBehind (I4fc3a, b/171955269)
  • เพิ่มการรองรับระยะกล้อง เพื่อเสริมการแปลง 3 มิติ rotationX/rotationY ใน API เลเยอร์ (I40213, b/171492100)
  • เพิ่ม SelectionContainer โดยไม่มีการเรียกกลับ (Ibfadb)
  • นำ ExperimentalSubcomposeLayoutApi ออกแล้ว ตอนนี้คุณใช้ SubcomposeLayout ได้โดยไม่ต้องเพิ่ม @OptIn (I708ad)
  • ย้าย FirstBaseline และ LastBaseline ไปยังแพ็กเกจ androidx.compose.ui.layout (Ied2e7)
  • นำความทึบแสงออกจากตัวแก้ไข drawShadow() เนื่องจากทำให้เกิดความสับสน (I82c62, b/171624638)
  • ย้าย MeasureResult ออกจาก MeasureScope (Ibf96d, b/171184002)
  • เราได้ย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
  • นำ FocusState2 ที่เลิกใช้งานแล้วออก (I686cb, b/168686446)
  • ตอนนี้ ZIndexModifier เป็นแบบภายในแล้ว (I1808b, b/171493718)
  • อัปเดตประเภทการแสดงผลของเมธอด lerp ในพารามิเตอร์ Size เพื่อคืนค่า Size ที่ไม่ใช่ Null เพื่อหลีกเลี่ยงการ Boxing ที่ไม่จำเป็น (Ib0044)
  • เพิ่ม TestMonotonicFrameClock สำหรับทดสอบโค้ดที่ต้องใช้ MonotonicFrameClock ของ Compose เพื่อรอเหตุการณ์เฟรมการจัดองค์ประกอบ โดยใช้ runBlockingTest ของ kotlinx-coroutines-test (I4402f)
  • นำ GestureScope.localToGlobal ออกแล้ว (I15299, b/171462785)
  • เพิ่มเครื่องมือค้นหา onAllNodesWithSubstring (I81dd7, b/171462889)
  • เลิกใช้งานโมดูล androidx.ui.test แล้ว โปรดย้ายข้อมูลไปยัง androidx.compose.ui.test และ androidx.compose.ui.test.junit4 (I452e8)

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

  • ย้าย captureToBitmap ไปยัง captureToImage (I86385)
  • เลิกใช้งาน foundation.Text แล้วและแทนที่ด้วย material.Text หากต้องการใช้ API ข้อความพื้นฐานที่ไม่แสดงความคิดเห็นซึ่งไม่ได้ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
  • อัปเดต TextField ให้ยอมรับ KeyboardOptions (Ida7f3)
  • เปลี่ยนชื่อ KeyboardOptions เป็น ImeOptions (I82f36)
  • ย้าย KeyboardType และ ImeAction ไปยัง KeyboardOptions (I910ce)
  • เราได้เพิ่ม provideDefault เป็นทางเลือกในการระบุแอมเบียนต์ และสามารถใช้เพื่อระบุค่าแอมเบียนต์ที่จะตั้งค่าเฉพาะเมื่อไม่มีค่าแอมเบียนต์ที่ระบุไว้แล้ว (Id6635, b/171024925)
  • เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
  • เปิดตัวโมดูล ui-test-junit4 (Ib91f8)
  • relativePaddingFrom เปลี่ยนชื่อเป็น paddingFrom แล้ว เพิ่มตัวแก้ไข paddingFromBaseline เพื่อความสะดวกในการระบุระยะทางจากขอบเขตเลย์เอาต์ไปยังบรรทัดฐานของข้อความ (I0440a, b/170633813)
  • เปลี่ยนชื่อ LaunchedTask เป็น LaunchedEffect เพื่อให้สอดคล้องกับ SideEffect และ DisposableEffect API ไม่อนุญาตให้ใช้ LaunchedEffect โดยไม่มีพารามิเตอร์ของ Subject เพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
  • เปิดตัวทรัพยากรที่สามารถเขียนร่วมกันได้ซึ่งจะเขียนใหม่เมื่อมีการอัปเดตการกำหนดค่า (I6387c, b/167352819)
  • ตอนนี้ Recomposer ต้องมี CoroutineContext ในการสร้าง (Ic4610)
  • รวมค่า zIndex เมื่อใช้ Modifier.zIndex() หลายรายการ ก่อนหน้านี้รายการแรกชนะ (Ic514c, b/170623936)
  • การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่ง ไม่ควรส่งผลต่อ API สาธารณะ (If9828)
  • เพิ่มตัวเลือก IME การแก้ไขอัตโนมัติของแป้นพิมพ์ (I57b8d)
  • ย้าย androidx.ui.test ไปยัง androidx.compose.ui.test (I9ffdb)
  • นำ KeyboardOptions.toImeOptions ออกจาก API สาธารณะ (Ic2e45)

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

  • ปิดใช้การเผยแพร่สิ่งประดิษฐ์ภายใน androidx.compose.ui:ui-text-android (Ib93fa)

เวอร์ชัน 1.0.0-alpha06

28 ตุลาคม 2020

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

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

  • ตอนนี้ Recomposer เป็น CompositionReference และเป็น องค์ประกอบหลักที่ถูกต้องแล้ว ตอนนี้คุณต้องใช้ Explicit Recomposer ในที่ต่างๆ น้อยลง (I4036f)
  • เลิกใช้งาน VectorPainter เพื่อใช้ rememberVectorPainter แทนเพื่อระบุให้ดียิ่งขึ้นว่า Composable API ใช้ "remember" ภายในเพื่อคงข้อมูลไว้ในองค์ประกอบต่างๆ (Ifda43)
  • อัปเดต Modifier.drawWithCache API เพื่อแสดง ContentDrawScope เป็นขอบเขตตัวรับ แทน DrawScope เพื่อให้การ ติดตั้งใช้งานสามารถจัดลำดับคำสั่ง การวาดใหม่ได้ ซึ่งมีประโยชน์สำหรับกรณีการใช้งานการผสม/ การปรับสีที่ต้องแสดงผลพิกเซลเนื้อหาก่อน เพื่อให้ระบบใช้อัลกอริทึมโหมดการผสมที่เกี่ยวข้องได้อย่างถูกต้อง (Ie7ec8)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I78c57)
  • ConsumedData ไม่ใช่คลาสข้อมูลอีกต่อไป ดูรายละเอียดได้ที่ https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • แก้ไขตำแหน่งแฮนเดิล RTL (I6e1e0)
  • ปรับโครงสร้าง DrawScope และ ContentDrawScope ให้เป็นอินเทอร์เฟซ แทนที่จะเป็นคลาสแบบนามธรรม
    • สร้างการติดตั้งใช้งาน CanvasDrawScope ของ DrawScope
    • การติดตั้งใช้งาน DrawScope ที่ปรับโครงสร้างใหม่เพื่อใช้ CanvasScope แทน
    • สร้าง DrawContext เพื่อรวมการอ้างอิง สำหรับ DrawScope
    • นำวิธีการที่เลิกใช้งานแล้วใน DrawScope (I56f5e) ออก
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: นำค่าที่ส่งคืนออกจาก PointerInputFilter.onPointerEvent(...) เนื่องจากค่าเดียวที่ควรเปลี่ยนได้ในเหตุการณ์ของเคอร์เซอร์คือข้อมูลการใช้งาน ตอนนี้คุณสามารถเปลี่ยนข้อมูลการใช้งานของ PointerEvents ที่ส่งผ่านได้เลยแทนที่จะส่งคืนข้อมูลจาก PointerInputFilter.onPointerEvent(...) (I6acd0)
  • MeasureScope และ IntrinsicMeasureScope ได้รับการสร้างเป็นอินเทอร์เฟซ (I1a087, b/170461665)
  • ซ่อนฟังก์ชันผสานสำหรับ AlignmentLine แล้ว (I9da1a, b/170612900, b/170611568)
  • เพิ่มความสามารถในการระบุข้อมูลเครื่องมือตรวจสอบในตัวแก้ไขที่ประกอบขึ้น (Idee08, b/163494569)
  • เพิ่มตัวเลือก "เลือกทั้งหมด" ลงในเมนูการเลือก (Ief02b)
  • อัปเดต DrawTransform.rotate เพื่อใช้ พารามิเตอร์ Pivot เริ่มต้นของกึ่งกลางให้ตรงกับ เอกสารประกอบ
    • อัปเดต DrawScope.rotateRad เพื่อใช้ Offset สำหรับ จุดหมุนให้ตรงกับวิธีการเปลี่ยนรูปแบบอื่นๆ
    • เลิกใช้งาน DrawScope.rotateRad ที่โอเวอร์โหลดซึ่งใช้ โฟลตสำหรับพิกัด x และ y ของจุดหมุน
    • (Iffcbb, b/170434992)

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

  • เปิดใช้การตรวจสอบ Lint ของ API สำหรับ MissingGetterMatchingBuilder สำหรับ androidx (I4bbea, b/138602561)
  • เพิ่มการทดสอบ (I6b8ae)
  • เปิดใช้การเปลี่ยนฉากใน ComposeTestRule และนำตัวเลือกในการ เปิดใช้เคอร์เซอร์กะพริบออกจาก ComposeTestRule (If0de3)
  • เพิ่มตัวเลือก IME สำหรับการใช้อักษรตัวพิมพ์ใหญ่ในแป้นพิมพ์ (I8ac38)
  • เพิ่มตัวเลือกแป้นพิมพ์แบบบรรทัดเดียวลงใน CoreTextField (I72e6d)
  • ย้าย SimpleContainer ไปยัง PopupTestUtils.kt (I65c3e)
  • เปลี่ยนชื่อ Radius API เป็น CornerRadius เพื่อให้แสดงถึงวิธีใช้ใน Compose ได้ดียิ่งขึ้น อัปเดตเอกสารประกอบเพื่อระบุว่า รัศมีมุมที่เป็นลบจะถูกจำกัด เป็น 0 (I130c7, b/168762961)
  • ปรับปรุงการทำงานร่วมกันของ Android โดยส่ง MotionEvents ไปยัง Android View ย่อยที่แสดงผลเป็นเท็จสำหรับ onTouchEvent สำหรับการดำเนินการทั้งหมด ยกเว้น ACTION_DOWN (I94c5a, b/170320973)
  • Box ได้รับการปรับให้เป็นฟังก์ชันอินไลน์ (Ibce0c, b/155056091)

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

  • รองรับภาษาต่างๆ สำหรับ AnnotatedString.capitalize และ AnnotatedString.decapitalize (I4aa7f)

เวอร์ชัน 1.0.0-alpha05

14 ตุลาคม 2020

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

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

  • เพิ่ม DSL สำหรับระบุข้อมูลเครื่องมือตรวจสอบ (Ic9a22)
  • ย้าย LongPress ไปยัง Text (Iff2bc)
  • ตัวแก้ไขทดลอง Modifier.pointerInput ที่ระงับตัวแก้ไขอินพุต (Ia77d2)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษในการคัดลอก/วาง/ตัด (I6db4f)
  • นำเครื่องมือสร้างสาธารณะสำหรับ AndroidOwner ออกแล้ว (Iacaef)
  • ตอนนี้ป๊อปอัปและกล่องโต้ตอบจะรับค่า FLAG_SECURE จากหน้าต่างหลัก นอกจากนี้ ยังเพิ่มตัวเลือกในการกำหนดค่านี้อย่างชัดแจ้ง (I64966, b/143778148, b/143778149)
  • ตอนนี้ข้อมูลการใช้งานสามารถเปลี่ยนแปลงได้แล้ว นอกจากนี้ การเรียกฟังก์ชันส่วนขยายที่ใช้การบริโภค จะไม่แสดงผล PointerInputChange ใหม่ แต่จะเปลี่ยน PointerInputChange ที่ระบุแทน

    นี่คือขั้นตอนแรกในกระบวนการ 2 ขั้นตอนเพื่อ ทำให้ข้อมูล PointerEvent เปลี่ยนแปลงได้เพื่อไม่ให้โค้ดของผู้ใช้ แก้ไขข้อมูลพอยน์เตอร์อื่นๆ ได้ ขั้นตอนที่ 2 คือการนำ List<PointerInputChange> ประเภทการแสดงผลออกจาก PointerInputFilter.onPointerEvent(...) (Id067e)

  • ปิดใช้การเลือกในข้อความและเดโม (Ie7e97)

  • ทำให้ GloballyPositioned เป็นฟังก์ชันแบบอินไลน์ (I15830)

  • เปลี่ยนชื่อ OnPositionedModifier เป็น OnGloballyPositionedModifier และเปลี่ยนชื่อ onPositioned() เป็น onGloballyPositioned() (I587e8, b/169083903)

  • เพิ่มพร็อพเพอร์ตี้ hasPendingMeasureOrLayout ลงใน Owner เพื่อระบุว่า Owner มีงานเลย์เอาต์ที่รอดำเนินการหรือไม่ (I3d9f8, b/169038599)

  • เพิ่ม API เพื่อล้างโฟกัสโดยอัตโนมัติ (Ie1dc2, b/161487952)

  • นำ PointerInputFilter.onPointerInput(...) ออกแล้ว คุณควรใช้ PointerInputFilter.onPointerEvent(...) แทน (I6f04a)

  • การเปลี่ยนแปลงขนาด

    • นำ Size.getFlipped ออกแล้ว
    • นำ Size.rem ออก
    • นำ Size.truncDiv ออก (Ief44d, b/169790720)
  • เนื่องจากเป็นส่วนหนึ่งของการกำหนดค่า Sentinel สำหรับคลาสอินไลน์ให้เป็นมาตรฐาน จึงเปลี่ยนชื่อ Color.Unset เป็น Color.Unspecified เพื่อให้สอดคล้องกับคลาสอินไลน์อื่นๆ (I97611, b/169797763)

  • เปิดตัว TextOverflow.None เมื่อการล้นเป็น None ข้อความจะไม่จัดการการล้นอีกต่อไป และจะรายงานขนาดจริงไปยัง LayoutNode (I175c9, b/158830170)

  • พารามิเตอร์ขอบเขตภายใน AnnotatedString.Builder.addStringAnnotation เปลี่ยนชื่อเป็นแท็กเพื่อให้ API สอดคล้องกัน (I7c8cb)

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

  • ประสิทธิภาพการเลื่อนของ LazyColumn/Row ได้รับการปรับปรุงด้วยการทำงานในองค์ประกอบย่อยน้อยลงทุกครั้งที่เลื่อน เราได้เพิ่มเมธอด hasInvalidations() ใหม่สำหรับคลาส Composition และเปลี่ยนชื่อเมธอด hasPendingChanges() จาก Recomposer เป็น hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • อัปเดตพารามิเตอร์ Size.Unspecified เป็น Float.NaN แทน Float.POSITIVE_INFINITY อัปเดตการใช้งาน Painter เพื่อ ตรวจสอบกับ Size.Unspecified รวมถึง ขนาดที่ไม่ใช่ค่าจำกัด (I95a7e)
  • ตอนนี้ลำดับการเรียกใช้ place() ในเลย์เอาต์ที่กำหนดเองจะกำหนดลำดับการวาดสำหรับองค์ประกอบย่อย (Ibc9f6)
  • รองรับการแปลง AnnotatedString เป็น SpannableString เพื่อการช่วยเหลือพิเศษ (Ief907)
  • เพิ่ม Stub สำหรับคลาส Android ที่อยู่ในแพลตฟอร์มรุ่นเก่าเพื่อหลีกเลี่ยงการใช้ Reflection เมื่อเป็นไปได้ (Ia1790)
  • แก้ไขข้อบกพร่อง: หากแป้นพิมพ์ซอฟต์แวร์แสดงขึ้นทำให้แอปแปล พิกัดอินพุตของเคอร์เซอร์จะกลายเป็นไม่ถูกต้อง (Ic4cec, b/163077821)

เวอร์ชัน 1.0.0-alpha04

1 ตุลาคม 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตต่อไปนี้

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

  • เพิ่ม OwnerScope เพื่ออนุญาตให้รวบรวม ขอบเขตการสังเกตเลย์เอาต์และการวาดเมื่อ ไม่ถูกต้องอีกต่อไป (Ic4cf8)
  • เพิ่ม OnRemeasuredModifier และ onSizeChanged() เพื่อรับการเรียกกลับเมื่อมีการวัดเลย์เอาต์เนื้อหาอีกครั้งและมีการเปลี่ยนแปลงขนาดตามลำดับ (I657cf, b/154108792)
  • เพิ่มการดำเนินการตามความหมายของการคลิกแบบยาว (I6281b, b/156468846)
  • กำหนดให้ FocusManager เป็นแบบส่วนตัว (I7872f)
  • อัปเดตการใช้งานเพื่อสร้าง การใช้งาน DrawCacheModifier โดยเฉพาะ แทนการเพิ่มพร็อพเพอร์ตี้ที่ไม่บังคับใน DrawModifier

    อัปเดตเอกสารประกอบสำหรับเมธอดต่างๆ (Ibd166)

  • ทำให้ TextRange เป็นแบบอินไลน์เพื่อหลีกเลี่ยงการสร้างออบเจ็กต์ (Id034b)

  • อ่าน PlacementScope#parentWidth และ PlacementScope#parentLayoutDirection จากบล็อกตำแหน่งของเลย์เอาต์ที่กำหนดเองไม่ได้อีกต่อไป (Icc1ae, b/168295623)

  • เพิ่ม AccessibilityScrollState ลงในพร็อพเพอร์ตี้ความหมาย (Ifeda9)

  • เปิดตัว Modifier.drawWithCache เพื่อรองรับการสร้างออบเจ็กต์การวาด ที่สร้างการอ้างอิงใหม่แบบมีเงื่อนไข ซึ่งขึ้นอยู่กับข้อมูลขนาด/สถานะ (I376dc)

  • นำ ParagraphConstraints ออกแล้ว ตอนนี้ระบบจะส่งความกว้างไปยัง Paragraph โดยตรง (Ica712)

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

  • อัปเดต Graphics API หลายรายการ
    • อัปเดต API การเปลี่ยนรูปแบบการปรับขนาดและการหมุน เพื่อใช้พารามิเตอร์ออฟเซ็ตเดียว เพื่อแสดงพิกัดจุดหมุน แทนพารามิเตอร์ลอยตัวแยกกัน สำหรับพิกัด 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)
  • เลิกใช้งาน foundation.Box แล้ว โปรดใช้ foundation.layout.Box แทน (Ie5950, b/167680279)
  • เปลี่ยนชื่อ Stack เป็น Box แล้ว ระบบจะเลิกใช้งาน Box ที่มีอยู่ก่อนหน้านี้เพื่อรองรับ Box ใหม่ใน compose.foundation.layout ลักษณะการทำงานของ Box ใหม่คือการวางองค์ประกอบย่อยซ้อนกันเมื่อมีองค์ประกอบย่อยหลายรายการ ซึ่งแตกต่างจาก Box ก่อนหน้าซึ่งทำงานคล้ายกับคอลัมน์ (I94893, b/167680279)
  • เลิกใช้งานพารามิเตอร์การตกแต่งกรอบแล้ว หากต้องการมีการตกแต่ง/การเว้นที่ว่างในช่อง ให้ใช้ตัวแก้ไขแทน (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • อัปเดต 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)
  • ใส่คำอธิบายประกอบ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled และ textInputServiceFactory ด้วย @VisibleForTesting เพื่อให้เป็น API ภายในและซ่อน KDoc (I554eb, b/168308412)
  • นำ SelectionContainer ออกจากด้านบนเพื่อปิดใช้การเลือกเริ่มต้นและหลีกเลี่ยงลักษณะการทำงานที่ไม่คาดคิด คุณสามารถใช้ SelectionContainer เพื่อห่อหุ้มเนื้อหาที่ต้องเลือกได้แทน (I8dfe0, b/158459594)

เวอร์ชัน 1.0.0-alpha03

16 กันยายน 2020

androidx.compose.ui:ui-*:1.0.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้

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

  • นำการดำเนินการเชิงความหมายของการเลื่อนไปข้างหน้า/ข้างหลังออก เพิ่มขั้นตอน ใน AccessibilityRangeInfo (Ia47b0)
  • นำ onInvalidate() ออกจาก Owner -- OwnedLayer จัดการการทำให้เป็นโมฆะ (Ica72b, b/162061312)
  • นำวิธีการของโอเปอเรเตอร์ใน Size API ที่ใช้พารามิเตอร์ออฟเซ็ตออก ผลลัพธ์ของการดำเนินการเหล่านี้ไม่ชัดเจน และประเภทของผลลัพธ์ไม่คาดคิด สำหรับรายการเหล่านี้ เช่น ควรส่งคืนขนาด - ออฟเซ็ต ออฟเซ็ตหรือผลลัพธ์ขนาดที่มีความแตกต่าง

    นอกจากนี้ยังนำเมธอดที่เลิกใช้งานแล้วในคลาส Size ออกด้วย (Iec902, b/166514214)

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

  • แก้ไขปัญหาที่บางครั้งมีการวาดรายการของ LazyColumn อย่างไม่ถูกต้อง ซึ่งทำให้เกิดข้อขัดข้องในบางกรณีด้วย (Ibcf17, b/163066980, b/165921895)
  • เราได้เลิกใช้งาน DpConstraints และ API ที่ใช้ DpConstraints แล้ว (I90cdb, b/167389835)
  • ย้าย createAndroidComposeRule และ AndroidInputDispatcher จาก androidx.ui.test.android ไปยัง androidx.ui.test (Idef08, b/164060572)
  • การใช้งานแรงโน้มถ่วงได้รับการเปลี่ยนชื่ออย่างสม่ำเสมอเป็น "การจัดแนว" หรือ "การจัดตำแหน่ง" ใน Layout API (I2421a, b/164077038)
  • เพิ่ม onNode และเมธอดส่วนกลางอื่นๆ ใน ComposeTestRule เนื่องจาก เมธอดส่วนกลางปัจจุบันจะเลิกใช้งาน (Ieae36)

เวอร์ชัน 1.0.0-alpha02

2 กันยายน 2020

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

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

  • remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
  • เพิ่มการรองรับพารามิเตอร์ filltype ในเส้นทางกราฟิกแบบเวกเตอร์ เพื่อรองรับการตัดรูปร่างตาม กฎการเติมเส้นทาง evenOdd หรือ NonZero (I43dd2)
  • ตอนนี้ Uptime และ Velocity เป็นคลาสอินไลน์แล้ว (I48f4a)
  • ตอนนี้ระยะเวลาเป็นคลาสอินไลน์ (I565eb) แล้ว
  • เพิ่มการเรียกกลับเพื่อแจ้งให้เจ้าของทราบเมื่อขอบเขตของ LayoutNode เปลี่ยนแปลง (Ic40b3)
  • แก้ไขปัญหาที่ตัวสร้างฟังก์ชัน Rect ที่มีออฟเซ็ตและรัศมีจะสร้าง Rect ตามลำดับซ้าย ขวา บน ล่าง แทนที่จะเป็น ซ้าย บน ขวา ล่าง

    นำเมธอดที่เลิกใช้งานแล้วใน Rect ออก เพื่อใช้ตัวสร้างฟังก์ชันแทน

    เพิ่มการทดสอบเพื่อยืนยันวิธีการใน Rect.kt (I08460, b/165822356)

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

  • เพิ่ม MutableRect ซึ่งเป็นสี่เหลี่ยมผืนผ้าที่แก้ไขได้ (I71bd2, b/160140398)
  • แทนที่ Matrix4 ด้วย Matrix ส่วนอื่นๆ ทั้งหมด ของแพ็กเกจ vectormath ถูกนำออกแล้ว (Ibd665, b/160140398)
  • รูปแบบการเรียกใช้ฟังก์ชันที่ประกอบกันได้มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ทำให้ไบนารีใช้งานไม่ได้ ต้อง คอมไพล์ไลบรารีทั้งหมดอีกครั้งเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้

    การเปลี่ยนแปลงนี้ไม่ได้สร้างการเปลี่ยนแปลงที่ทําให้เกิดข้อขัดข้องในระดับแหล่งที่มา เนื่องจากมีเพียง API ของคอมไพเลอร์เท่านั้นที่เปลี่ยนแปลงและต้องเลือกใช้โดยชัดแจ้ง (I7afd2, b/158123185)

  • แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อ การส่งไปยัง PointerInputFilter อาจทำให้ ระบบนำ PointerInputFilter ออกพร้อมกัน (I58f25)

เวอร์ชัน 1.0.0-alpha01

26 สิงหาคม 2020

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

เวอร์ชัน 0.1.0-dev

เวอร์ชัน 0.1.0-dev17

19 สิงหาคม 2020

androidx.compose.ui:ui-*:0.1.0-dev17 ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้

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

  • emitView ถูกเลิกใช้งานแล้ว หากเป็นไปได้ ให้ใช้ AndroidView แทนสำหรับการปล่อย View ภายใน Compose โปรดทราบว่าในอนาคตระบบจะไม่รองรับการเขียน View และ ViewGroup โดยตรง เว้นแต่จะเป็นใบในแผนผังการเขียน ซึ่งในกรณีนี้จะทำได้โดยใช้ AndroidView (I29b1e, b/163871221)
  • FocusState2 ถูกเลิกใช้งานและแทนที่ด้วย FocusState (Ia8b79, b/160822876, b/160923332)
  • นำการโอเวอร์โหลด AndroidView ที่เลิกใช้งานแล้วออก (I946b9, b/163802393)
  • ตอนนี้ Custom emits สามารถประกาศได้ว่าสามารถข้ามตัวตั้งค่าอย่างน้อย 1 รายการ และสามารถประกอบใหม่ได้โดยไม่ขึ้นอยู่กับ emit (Ibbd13)
  • เปลี่ยนคลาส Vector เพื่อไม่ให้เป็นคลาสข้อมูลอีกต่อไป เนื่องจากใช้ออบเจ็กต์อินสแตนซ์เดียวกัน สำหรับการคอมโพสิต

    เพิ่มแฟล็ก mutableStateOf สำหรับ VectorPainter เพื่อวาดซ้ำแบบมีเงื่อนไขหากเนื้อหาของ เวกเตอร์มีการเปลี่ยนแปลง

    ปรับโครงสร้างอินสแตนซ์ VectorComponent ให้เป็นส่วนหนึ่งของ VectorPainter เนื่องจากมีการนำกลับมาใช้ซ้ำในองค์ประกอบต่างๆ

    อัปเดต GroupComponent และ PathComponent เพื่อให้ฟิลด์ชื่อเปลี่ยนแปลงได้ (Ieae45, b/151378808)

  • นำ onChildPositioned และ OnChildPositionedModifier ออกแล้ว นักพัฒนาแอปควรใช้ onPositioned และ OnPositionedModifier ในเลย์เอาต์ย่อยแทน (I4522e, b/162109766)

  • Offset กลายเป็นคลาสอินไลน์ (Iaec70)

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน SelectionContainer (I4aada, b/161487952)

  • นำ FocusModifier ที่เลิกใช้งานแล้วออก (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

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

  • ตอนนี้ข้อจำกัดเป็นคลาสแบบอินไลน์แล้ว (I88736)

  • เพิ่ม FocusManager ที่ย้ายตรรกะโฟกัสทั่วไปออกจาก AndroidComposeView (I528ef, b/161487952, b/162206799)

  • อัปเดตชื่อ PointerEventPass สำหรับรุ่นอัลฟ่า (Ifda6f)

  • ตอนนี้ IntOffset เป็นคลาสอินไลน์ (Iac0bf) แล้ว

  • ตอนนี้ IntSize เป็นคลาสแบบอินไลน์ (I2bf42) แล้ว

  • PlacementScope.placeAbsolute() เปลี่ยนชื่อเป็น PlacementScope.place() และ PlacementScope.place() ก่อนหน้าเปลี่ยนชื่อเป็น PlacementScope.placeRelative() ด้วยเหตุนี้ วิธี PlacementScope.place() จะไม่สะท้อนตำแหน่งในบริบทจากขวาไปซ้ายโดยอัตโนมัติอีกต่อไป หากต้องการใช้ฟีเจอร์นี้ โปรดใช้ PlacementScope.placeRelative() แทน (I873ac, b/162916675)

  • ตอนนี้ AlertDialog ใช้ FlowRow สำหรับปุ่มแล้ว (I00ec1, b/161809319, b/143682374)

  • ทำให้ยูทิลิตีการทดสอบบางอย่างเป็นแบบไม่ สาธารณะเนื่องจากไม่ได้อยู่ในตำแหน่งที่ ควรอยู่ จะเผยแพร่ต่อสาธารณะในอนาคต (I32ab1)

  • จัดระเบียบโค้ดอินพุตของพอยน์เตอร์ใหม่ (Ie3f45)

  • เลิกใช้ PxBounds ใน Rect อัปเดตการใช้งานทั้งหมด ของ PxBounds ด้วย rect และเพิ่ม คำอธิบายประกอบที่เลิกใช้งาน/แทนที่อย่างเหมาะสม เพื่อช่วยในการ ย้ายข้อมูล (I37038, b/162627058)

  • นำ KeyEvent2 ที่เลิกใช้งานแล้วออก โปรดใช้ KeyEvent แทน (Ied2d0, b/162097587)

  • KeyEvent มีพร็อพเพอร์ตี้ Unicode ที่ใช้เพื่อรับอักขระ Unicode ที่สร้างขึ้นโดยชุดค่าผสมของสถานะคีย์และสถานะเมตาคีย์ที่ระบุได้ (If3afc)

  • ทำให้เหตุการณ์ที่กำหนดเอง DelayUp และคลาสที่เกี่ยวข้องเป็น API ที่ต้องเลือกใช้ เนื่องจากมีแนวโน้มที่จะมีการเปลี่ยนแปลง (I56d6f)

  • นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I3dd9d)

  • เพิ่มพารามิเตอร์สี เงา และ TextDecoration ไปยัง Paragraph.paint ฟังก์ชันนี้มีประโยชน์ในการหลีกเลี่ยงการสร้าง Paragraph ใหม่โดยไม่จำเป็น (I81689)

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

  • นำการเรียกกลับ onFocusChanged ออกจาก TextField ใช้ Modifier.focusObserver แทน (I51089, b/161297615)
  • เลิกใช้งาน Modifier.drawBorder แล้ว โปรดใช้ Modifier.border แทน เราได้แทนที่คลาสข้อมูลเส้นขอบด้วย BorderStroke (I4257d, b/158160576)
  • นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก

    มีการเปลี่ยนแปลง API Compose ภายในเพื่อลดปริมาณ ค่าใช้จ่ายในการติดตามออบเจ็กต์สถานะ เช่น mutableStateof() (I80ba6)

  • ระบบได้นำ VerticalScroller และ HorizontalScroller ออกแล้ว ใช้ ScrollableColumn/Row แทน นำ Modifier.drawBackground ออกแล้ว ใช้ Modifier.background (I73b0d, b/163019183)

  • แก้ไขข้อขัดข้องเมื่อใช้สิ่งที่บันทึกสถานะภายในลูป for ตอนนี้ระบบอนุญาตให้มีคีย์เดียวกันใน savedInstanceState() แล้ว เราจึงปรับ API ของ UiSavedStateRegistry ให้เป็นไปตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • ตอนนี้เราเลิกใช้งาน state { ... } ที่ใช้ร่วมกันได้แล้วเพื่อ เรียกใช้ remember { mutableStateOf(...) } อย่างชัดเจนเพื่อความชัดเจน ซึ่งจะช่วยลดพื้นผิว API โดยรวมและจำนวนแนวคิดสำหรับการจัดการสถานะ และตรงกับรูปแบบ by mutableStateOf() สำหรับการมอบสิทธิ์พร็อพเพอร์ตี้คลาส (Ia5727)

  • เปลี่ยนชื่อ RRect เป็น RoundRect เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อของ Compose มากขึ้น สร้างตัวสร้างฟังก์ชันที่คล้ายกัน สำหรับ RRect และเลิกใช้งานตัวสร้างฟังก์ชัน RRect (I5d325)

เวอร์ชัน 0.1.0-dev16

5 สิงหาคม 2020

androidx.compose.ui:ui-*:0.1.0-dev16 ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้

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

  • เลิกใช้งาน OnChildPositioned แล้ว ให้ใช้ OnPositioned ในองค์ประกอบย่อยแทน (I87f95, b/162109766)
  • เลิกใช้งาน setViewContent แล้ว โปรดใช้ setContent แทน (I7e497, b/160335130)
  • เพิ่ม AndroidViewBinding API สำหรับการขยายและจัดองค์ประกอบทรัพยากรเลย์เอาต์ตาม ViewBinding (I081c6)
  • KeyEvent2 ถูกแทนที่ด้วย KeyEvent (I2d770, b/162097585)
  • เพิ่มการรองรับคีย์ฮาร์ดแวร์ Alt (I9036b)
  • เลิกใช้งาน FocusManager แล้ว ใช้ Modifier.focus(), Modifier.focusObserver() และ Modifier.focusRequester() แทน (I74ae4, b/162211322)
  • loadVectorResource รองรับแอตทริบิวต์ trimPath (I808fe)
  • ย้ายกล่องโต้ตอบไปยัง UI (I47fa6)
  • นำ PointerEventPasses 2 รายการที่ไม่จำเป็นอีกต่อไปออก (I33ca7)
  • ใช้ PointerInteropModifier ซึ่งช่วยให้รับ MotionEvent และโต้ตอบกับ Compose ได้ ราวกับว่าคุณใช้ Android View (Ieb08c)
  • นำตัวแก้ไขแท็กที่เลิกใช้งานแล้วออก โปรดใช้ layoutId แทน (Idaa05, b/162023919)
  • เราได้อัปเดต API สำหรับการรองรับจากขวาไปซ้ายแล้ว เพิ่ม LayoutDirectionAmbient ซึ่งใช้เพื่ออ่านและเปลี่ยนทิศทางเลย์เอาต์ได้ นำ Modifier.rtl และ Modifier.ltr ออกแล้ว (I080b3)
  • รองรับการตัดเส้นทางในภาพกราฟิกเวกเตอร์ (Ie16c9, b/158188351)
  • เพิ่ม Modifier.layout() ที่ช่วยให้สร้างตัวแก้ไขเลย์เอาต์ที่กำหนดเองได้อย่างสะดวก (I73b69, b/161355194)
  • เพิ่ม AndroidView API ใหม่และเลิกใช้งาน API ที่มีอยู่ (I5bcfd)
  • เลิกใช้งาน Modifier.plus แล้ว โปรดใช้ Modifier.then แทน "จากนั้น" มีสัญญาณที่ชัดเจนกว่าในการเรียงลำดับ และยังห้ามพิมพ์ Modifier.padding().background() + anotherModifier ซึ่งจะทำให้การอ่านยากขึ้น (Iedd58, b/161529964)
  • เพิ่มคลาสย่อยของ View [Abstract]ComposeView สำหรับโฮสต์เนื้อหา Compose ในลำดับชั้นการแสดงผล (I46357)
  • ตอนนี้ Row และ Column เป็นฟังก์ชันแบบอินไลน์แล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งานได้อย่างมาก (I75c10)
  • เพิ่ม SubcomposeLayout แล้ว ซึ่งเป็นองค์ประกอบระดับล่างที่ช่วยให้เราจัดวางองค์ประกอบย่อยในระหว่างการวัดได้ หากต้องการใช้ค่าบางอย่างที่ใช้ได้ในภายหลังระหว่างการวัดสำหรับการจัดวางองค์ประกอบย่อย เช่น WithConstraints ไม่ได้ใช้ SubcomposeLayout (I25cc8)
  • เพิ่ม SemanticsNode.positionInRoot เพื่อรับตำแหน่งของ SemanticsNode ที่สัมพันธ์กับรูทของลำดับชั้น Compose (Icdf26, b/161336532)
  • MotionEvents จะส่งผ่านจาก Android ไปยัง Compose และกลับไปยัง Android (I14be8, b/158034713)
  • นำ DropdownPopup ออกแล้ว (I00430)
  • แก้ไขตำแหน่งป๊อปอัปในจอแสดงผลที่มีรอยบาก (Idd7dd)
  • เพิ่มการดำเนินการสำหรับการช่วยเหลือพิเศษเพื่อรับ TextLayoutResult (I9d6e6)
  • เพิ่ม RemeasurementModifier ซึ่งช่วยให้วัดเลย์เอาต์อีกครั้งแบบซิงโครนัสได้ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้เนื่องจากระบบจะทำการวัดซ้ำ/จัดเลย์เอาต์ใหม่โดยอัตโนมัติ แต่เราใช้ภายใน LazyColumnItems ระหว่างการเลื่อน (I5f331, b/160791058)
  • นำ getLineEllipsisOffset/getLineEllipsisCount ออก โปรดใช้ getLineVisibleEnd/getLineEnd/isLineEllipsized แทน (I85aa2)
  • เพิ่มเครื่องหมาย/คำอธิบายประกอบเพื่อเป็นแนวทางปฏิบัติแนะนำ (I66b20)
  • เปิดเผย API บรรทัดเพิ่มเติมใน TextLayoutResult (I79bd2)
  • ตอนนี้คุณเข้าถึงตัวแปลงเวกเตอร์ในตัวเพื่อแปลงหน่วยในตัวได้แล้วผ่าน Foo.VectorConverter เช่น Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter เป็นต้น (I3e273)

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

  • แก้ไข API แบบกว้าง (I077bc)
    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. เปลี่ยนชื่อ Enum ของ PointMode ให้เป็น Pascal Case
    10. เปลี่ยนชื่อการแจงนับ PaintingStyle ให้เป็น Pascal Case
    11. เปลี่ยนชื่อ enum ของ PathFillType ให้เป็น Pascal Case
    12. เปลี่ยนชื่อการแจงนับ StrokeCap เป็น Pascal Case
    13. อัปเดตการใช้งาน DrawCache เพื่อไม่ให้ใช้พารามิเตอร์ lateinit อีกต่อไป
    14. อัปเดต DrawScope เพื่อไม่ให้ใช้การมอบสิทธิ์แบบเลื่อนเวลา สำหรับพารามิเตอร์ภายใน fillPaint และ strokePaint อีกต่อไป
    15. อัปเดต Composable ของรูปภาพเพื่อหลีกเลี่ยงการใช้ Box เพื่อลดค่าใช้จ่าย
    16. อัปเดตคลาส Outline ให้มีคำอธิบายประกอบ @Immutable
    17. อัปเดต PathNode ให้มีคำอธิบายประกอบ @Immutable สำหรับ แต่ละคำสั่งเส้นทาง
    18. อัปเดตองค์ประกอบย่อยของเวกเตอร์เพื่อนำการตรวจสอบแบบมีเงื่อนไขที่ซ้ำซ้อนออก สำหรับการตรวจสอบความเท่ากัน เนื่องจาก Compose จัดการ การตรวจสอบดังกล่าวอยู่แล้ว
    19. เลิกใช้งานเมธอดตัวสร้าง Rect Companion เพื่อใช้ตัวสร้างฟังก์ชันแทน
    20. อัปเดตคลาส Brush และตัวสร้างฟังก์ชันด้วย @Immutable และ @Stable API
    21. อัปเดตการแจงนับ VertexMode ให้เป็น PascalCase
    22. อัปเดตเมธอด selectPaint ของ DrawScope เพื่อเขียนทับพารามิเตอร์การขีดเขียนแบบมีเงื่อนไขในสีหากมีการเปลี่ยนแปลง
    23. อัปเดตขนาดเพื่อเพิ่ม API การแยกโครงสร้าง เปลี่ยนชื่อ UnspecifiedSize เป็น Unspecified และนำเมธอดที่ไม่ได้ใช้ออก
  • อัปเดตการใช้งาน BlendMode API ของ Compose เพื่อแมประหว่าง BlendMode ของเฟรมเวิร์ก Android กับโหมด PorterDuff อย่างถูกต้องตามระดับ API เปิดตัว BlendMode#isSupported API เพื่อทำหน้าที่ เป็นคำค้นหาความสามารถเพื่อพิจารณาว่าอุปกรณ์รองรับ BlendMode หรือไม่ก่อนที่จะใช้งาน (I0ef42)
  • เพิ่ม LazyItemScope สำหรับพารามิเตอร์ itemContent ของรายการ Lazy โดยจะระบุตัวแก้ไขเพื่อเติมขนาดสูงสุดขององค์ประกอบระดับบน ซึ่งจะแก้ Use Case เมื่อรายการควรเติมวิวพอร์ตและ Modifier.fillMaxSize() ปกติใช้ไม่ได้เนื่องจากระบบวัดรายการด้วยข้อจำกัดแบบอนันต์ (Ibd3b2, b/162248854)
  • นำ SemanticsNodeInteraction.performPartialGesture ออกแล้ว โปรดใช้ SemanticsNodeInteraction.performGesture แทน (Id9b62)
  • เปลี่ยนชื่อ LazyColumnItems เป็น LazyColumnFor แล้ว เปลี่ยนชื่อ LazyRowItems เป็น LazyRowFor (I84f84) แล้ว
  • foundation.shape.corner package was flattened to foundation.share (I46491, b/161887429)
  • เปลี่ยนชื่อ AndroidComposeTestRule เป็น createAndroidComposeRule แล้ว (I70aaf)
  • เพิ่ม API ลงใน TextLayoutResult (Id7e04)
  • เราเปลี่ยนชื่อ Material FilledTextField เป็น TextField และเปลี่ยนชื่อ TextField พื้นฐานเป็น BaseTextField เพื่อให้ค้นพบและใช้ API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
  • เปลี่ยนชื่อ Modifier.drawBackground เป็น Modifier.background (I13677)

เวอร์ชัน 0.1.0-dev15

22 กรกฎาคม 2020

androidx.compose.ui:ui-*:0.1.0-dev15 ได้รับการเผยแพร่แล้ว เวอร์ชัน 0.1.0-dev15 มีคอมมิตต่อไปนี้

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

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

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

  • เลิกใช้งาน FocusModifier แล้วเพื่อใช้ Modifier.focus, Modifier.focusRequester, Modifier.focusObserver แทน เราเลิกใช้งาน FocusState และ FocusDetailedState แล้วเพื่อเปลี่ยนไปใช้ FocusState2 (I46919, b/160822875, b/160922136)
  • เพิ่มตัวแก้ไขเพื่อสังเกตการเปลี่ยนแปลงสถานะโฟกัส (I05866, b/160924455, b/160923326)
  • เพิ่มตัวแก้ไขเพื่อขอการเปลี่ยนแปลงโฟกัส (I8dd73, b/161182057, b/160924778)
  • ปรับเมนูแถบเครื่องมือเพื่อให้แสดงการคัดลอก ตัด วางได้อย่างถูกต้อง (Id3955)
  • ตอนนี้พร็อพเพอร์ตี้เชิงความหมายแบบค่าเดียวใช้รูปแบบการเรียก เช่น ตอนนี้เขียน 'semantics { hidden = true }' เป็น semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • เพิ่ม Modifier.focus ซึ่งจะแทนที่ FocusModifier (Ib852a, b/160924778)
  • เพิ่ม FloatingToolbar สำหรับการเลือก TextField (Ie8b07)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ที่เกี่ยวข้องกับการป้อนคีย์ (I53c0a)
  • เพิ่มคำอธิบายประกอบ API เวอร์ชันทดลองสำหรับ API ทั้งหมดที่เกี่ยวข้องกับโฟกัส (I53b24, b/160903352)
  • เพิ่ม FocusState2 ซึ่งจะแทนที่ FocusDetailedState (I0a3ba, b/160822595)
  • เพิ่ม ExperimentalFocus ซึ่งเป็นคำอธิบายประกอบ @OptIn สำหรับ Focus API (I1544b, b/160820961)
  • เพิ่มคลาสหน่วย IntBounds ซึ่งแสดงขอบเขตพิกเซลจำนวนเต็มจากการจัดวาง เราได้อัปเดต API ของ PopupPositionProvider เพื่อให้ใช้ได้แล้ว (I0d8d0, b/159596546)
  • ตอนนี้ Applier ต้องมีเมธอด clear() สำหรับการทิ้งองค์ประกอบ (Ibe697)
  • เลิกใช้งาน KeyEvent แล้วและแทนที่ด้วย KeyEvent2 (I68730)
  • เพิ่มแฟล็กที่ไม่บังคับใหม่ useUnmergedTree ลงในเครื่องมือค้นหาการทดสอบ (I2ce48)
  • สร้าง LayoutNode Experimental API (I4f2e9)
  • เพิ่มวิธีการคัดลอกไปยังคลาสประเภทต่างๆ แบบอินไลน์ ซึ่งรวมถึง

    • ออฟเซ็ต
    • ขนาด
    • รัศมี
    • การเคลื่อนไหว
    • TransformOrigin

    • เลิกใช้งานเมธอด Size.copy companion object เพื่อใช้เมธอดการคัดลอกอินสแตนซ์แทน (Ife290, b/159905651)

  • ตอนนี้ป๊อปอัป กล่องโต้ตอบ และเมนูจะรับค่า MaterialTheme ตามบริบทแล้ว (Ia3665, b/156527485)

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

  • นำพารามิเตอร์ทิศทางเลย์เอาต์ออกจากบล็อกการวัดของฟังก์ชัน Layout() อย่างไรก็ตาม คุณสามารถดูทิศทางเลย์เอาต์ได้ภายในโค้ดเรียกกลับผ่านออบเจ็กต์ขอบเขตการวัด (Ic7d9d)

  • ปรับโครงสร้าง SelectionHandles เพื่อนำกลับมาใช้ใหม่ (I420e0)

  • นำ Clickable ออกแล้ว ใช้ Modifier.clickable (I84bdf)

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

  • ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ Compose จะดักจับการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable อย่างไม่ชัดเจน หากมี (I5205a, b/158123804)

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

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

  • เพิ่มพารามิเตอร์ตัวแก้ไขลงใน Composable ของ AndroidView (I48a88, b/158746303)

  • เลิกใช้งาน Semantics() แล้ว โปรดใช้ Modifier.semantics() แทน (I72407, b/158841414)

  • เพิ่ม Composable viewModel() ซึ่งช่วยให้สร้างหรือรับ ViewModel ที่สร้างไว้แล้วได้ในลักษณะเดียวกับที่ทำงานใน Activity หรือ Fragment (I5fdd1)

  • แทนที่การใช้งาน IntPx ด้วย Int แทนที่ IntPxPosition ด้วย IntOffset แทนที่ IntPxSize ด้วย IntSize (Ib7b44)

  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการปรับขนาด ให้ใช้คลาส Size แทน PxSize ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก Long ในการแพ็กค่า Float 2 ค่าเพื่อแสดง ความกว้างและความสูงที่แสดงเป็น Float (Ic0191)

  • เพื่อรวมจำนวนคลาสที่ใช้เพื่อแสดงข้อมูลการวางตำแหน่ง ให้ใช้คลาส Offset แทน PxPosition ซึ่งจะให้ประโยชน์ ของคลาสอินไลน์เพื่อใช้ประโยชน์จาก long ในการแพ็กค่าลอยตัว 2 ค่าเพื่อแสดงออฟเซ็ต x และ y ที่แสดงเป็นค่าลอยตัว (I3ad98)

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

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

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

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

  • ตอนนี้เราเลิกใช้งาน TestTag แล้ว โปรดใช้ Modifier.testTag แทน (If5110, b/157173105)

  • เราได้นำการใช้งานเริ่มต้นแบบไม่มีการดำเนินการของ ParentDataModifier#modifyParentData ออกแล้ว ซึ่งเทียบเท่ากับการไม่ใช้งานอินเทอร์เฟซตั้งแต่แรก (I0deaa)

  • เลิกใช้งาน ScaleFit ก่อนหน้านี้แล้ว จึงนำออก โปรดใช้ ContentScale แทน (Ifbc5b)

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

  • เพิ่มคอมโพเนนต์ DropdownMenu ใน ui-material ซึ่งเป็นการติดตั้งใช้งานเมนู Material Design (I9bb3d)

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

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

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

  • การใช้งาน CanvasScope ที่รวมกัน ตอนนี้จึงมีเพียง DrawScope และ ContentDrawScope เปลี่ยนชื่อ CanvasScope เป็น DrawScope อัปเดต DrawScope เพื่อใช้ Density interface และระบุ LayoutDirection อัปเดตคลาสย่อย DrawScope ที่ลบแล้วใน ContentDrawScope Painter และ PainterModifier เพื่อไม่ให้รักษาพร็อพเพอร์ตี้ RTL ด้วยตนเองอีกต่อไป เนื่องจาก DrawScope มีพร็อพเพอร์ตี้นี้อยู่แล้ว โดยไม่ต้องระบุด้วยตนเอง (I1798e)

  • ตอนนี้ DoubleTapGestureFilter จะแยกความแตกต่างของ SingleTapGestureFilter ในโครงสร้าง (If92b1)

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

  • มีการเปลี่ยนแปลง API ตัวแก้ไข DrawLayer โดยเปลี่ยนชื่อ outlineShape เป็น shape และมีค่าเริ่มต้นเป็น RectangleShape และตอนนี้ไม่สามารถเป็น Null ได้ เปลี่ยนชื่อ clipToOutline เป็น clip และนำ clipToBounds ออกเนื่องจากเหมือนกับ clip == true ที่มี RectangleShape (I7ef11, b/155075735)

  • อัปเดต API Compose ระดับสูงขึ้น ซึ่งแสดง Canvas เพื่อ แสดง CanvasScope แทน ซึ่งจะช่วยให้ผู้บริโภคไม่ต้องดูแลออบเจ็กต์ Paint ของตนเอง สำหรับผู้บริโภคที่ยังคงต้องเข้าถึง Canvas สามารถใช้วิธี drawCanvas extension ซึ่งมีฟังก์ชันเรียกกลับเพื่อออกคำสั่งวาดด้วย Canvas พื้นฐาน (I80afd)

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

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

  • นำอินเทอร์เฟซ LayoutModifier ที่เลิกใช้งานแล้วออก (I2a9d6)

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

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

  • เพิ่ม Modifier.zIndex() ใหม่เพื่อควบคุมลำดับการวาดขององค์ประกอบย่อยภายในเลย์เอาต์หลักเดียวกัน พร็อพเพอร์ตี้ elevation ใน DrawLayerModifier เปลี่ยนชื่อเป็น shadowElevation และจะไม่ควบคุมลำดับการวาดอีกต่อไป มีการเปลี่ยนลำดับพารามิเตอร์ของ DrawShadow โดยตอนนี้ค่าระดับความสูงจะเป็นค่าแรก และรูปร่างจะเป็นค่าที่ 2 โดยมี RectangleShape เป็นค่าเริ่มต้น (I20150, b/152417501)

  • นำ onSizeChange และ onPositionChange ออกใน Owner (I5c718)

  • เพิ่ม Constraints2 ซึ่งเป็นสำเนาของ Constraints ที่รองรับเฉพาะค่าข้อจำกัด Int ไม่ใช่ IntPx ระบบจะนำ IntPx ออก และจะถือว่าข้อจำกัดจำนวนเต็มทั้งหมดเป็นพิกเซลเหมือนใน Android

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

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

  • (I45f09, b/152842521)

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

  • เปิดตัว API สำหรับขยาย Android View จาก XML ดูรายละเอียดเพิ่มเติมได้ที่การสาธิต ViewInCompose (I42916)

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

    • สร้างขอบเขตตัวรับสำหรับ draw() ContentDrawScope
    • นำพารามิเตอร์ทั้งหมดใน draw() ออกแล้ว
    • DrawScope มีอินเทอร์เฟซเหมือนกับ CanvasScope รุ่นก่อน
    • ContentDrawScope มีเมธอด drawContent() (Ibaced, b/152919067)
  • เพิ่ม positionInParent และ boundsInParent สำหรับ LayoutCoordinates (Icacdd, b/152735784)

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

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

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

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

  • เพิ่มพร็อพเพอร์ตี้ translationX/Y เพื่อรองรับ การชดเชยรายการที่แสดงของคำสั่งการวาดสำหรับ เลเยอร์ที่กำหนด ซึ่งมีประโยชน์ในการย้ายเนื้อหา เพื่อตอบสนองต่อภาพเคลื่อนไหวหรือเหตุการณ์การแตะ (I8641c)

  • เพิ่มพารามิเตอร์ pivotX, pivotY ลงใน Layer API เพื่อรองรับการหมุนและการปรับขนาด รอบจุดใดจุดหนึ่งในเลเยอร์ (Icf7c3)

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

  • เพิ่ม LayerModifier ซึ่งเป็นตัวแก้ไขที่อนุญาต ให้เพิ่ม RenderNode สำหรับเลย์เอาต์ ซึ่งช่วยให้ตั้งค่า การครอบตัด ความทึบ การหมุน การปรับขนาด และเงาได้ ซึ่งจะแทนที่ RepaintBoundary (I7100d, b/150774014)

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

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

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

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

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

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

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

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

  • สร้าง CanvasScope API ที่ครอบคลุมออบเจ็กต์ Canvas เพื่อแสดงพื้นผิว API การวาดภาพแบบประกาศที่ไม่มีสถานะ การเปลี่ยนรูปแบบจะอยู่ในขอบเขตของตัวรับสัญญาณเอง และข้อมูลการปรับขนาดจะอยู่ในขอบเขตของขอบเขตส่วนที่เว้นไว้ที่เกี่ยวข้องด้วย โดยไม่จำเป็นต้องให้ผู้ใช้ดูแลรักษาสถานะ Paint ของตนเอง เพื่อกำหนดค่าการดำเนินการวาด

    • เพิ่ม CanvasScopeSample รวมถึง อัปเดตแอปเดโมให้มีเดโมกราฟิกแบบประกาศ (Ifd86d)
  • นำ MaskFilter API ที่ไม่ได้ใช้ออก เนื่องจากมีการใช้งานที่จำกัดและไม่ได้ปรับให้เหมาะสม สำหรับการเร่งด้วยฮาร์ดแวร์ใน Use Case ส่วนใหญ่ (I54f76)

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

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

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

  • เพิ่มสีที่ไม่ได้ตั้งค่าเพื่อแสดงค่าที่ไม่ได้ตั้งค่าโดยไม่ต้อง ใส่สีในกรอบ (If901a)

  • เพิ่มเมธอดส่วนขยาย Canvas.rotate และ Canvas.scale เพื่อใช้พิกัดจุดหมุนที่ไม่บังคับสำหรับการเปลี่ยนรูป ค่าเริ่มต้นเหล่านี้จะอยู่ที่มุมซ้ายบนของ การแปล Canvas ปัจจุบัน

    ย้าย Canvas.rotateRad ให้เป็น เมธอดส่วนขยายเพื่อความสอดคล้องกัน (Ibaca6)

  • สร้าง PixelMap API เพื่อรองรับ การค้นหาข้อมูลพิกเซลจาก ImageAsset (I69ad6)

  • เปลี่ยนชื่อเป็น toFrameworkRect/toFrameworkRectF เป็น toAndroidRect/toAndroidRectF เพื่อให้ตรงกับหลักเกณฑ์การตั้งชื่อ สำหรับการแปลงออบเจ็กต์ระหว่าง Compose กับ Android framework API ที่สร้างขึ้น นอกจากนี้ เรายังได้อัปเดตเอกสารเกี่ยวกับ API เหล่านี้ (I86337)

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

    เปลี่ยนชื่อ Image(Painter) API เป็น PaintBox(Painter) สร้าง Vector ที่ใช้ร่วมกันได้ซึ่งทำงานเหมือน Image ที่ใช้ร่วมกันได้ แต่ใช้ VectorAsset แทน ImageAsset (I9af9a, b/149030271)

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

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

  • เพิ่มตัวดำเนินการ TextDecoration.plus (I0ad1a)

  • Force จะนำออกจากค่า enum ของ TextDirectionAlgorithm (Icc944)

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

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

  • เพิ่ม AnnotatedString.getStringAnnotations ที่แสดงผลคำอธิบายประกอบทั้งหมดภายในช่วง (I1fa00)

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

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

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

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

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

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

  • เพิ่มโอเปอเรเตอร์บวกสำหรับ (Text/Paragraph/Span)Style ซึ่ง มอบหมายให้ฟังก์ชัน merge() (Ia1add)

  • FontWeight.lerp ไม่ได้สแนปอีกต่อไป แต่ก็ยังคงเป็นคลาสข้อมูล (I521c2)

  • ตอนนี้ตัวสร้าง FontWeight เป็นแบบสาธารณะแล้วและไม่ใช่คลาสข้อมูลอีกต่อไป (Id6b1f)

  • เพิ่ม getLineStart, getLineEnd, getEllipsisOffset และ getEllipsisCount ลงใน TextLayoutResult (Ibc801)

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

  • นำคลาสขนาดที่ไม่ได้ใช้ออก เนื่องจากมีคลาสขนาดที่ซ้ำกัน ในโมดูล ui-geometry ที่ กำลังใช้งานอยู่ (I1b602)

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

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

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

  • เปลี่ยนชื่อการเรียกกลับ onFocusChange ในช่องข้อความเป็น onFocusChanged (Ida4a1)
  • เลิกใช้งาน VerticalScroller และ HoriziontalScroller แล้ว ใช้ ScrollableColumn และ ScrollableRow เพื่อสร้างประสบการณ์การใช้งานในตัวที่มีลักษณะการทำงานและพารามิเตอร์ของ Column/Row หรือ Modifier.verticalScroll และ Modifier.horizontalScroll ในองค์ประกอบของคุณเอง ในทำนองเดียวกัน เราได้เลิกใช้งาน ScrollerPosition เพื่อให้ใช้ ScrollState' แทน (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleComposeเปลี่ยนชื่อเป็น runOnIdle (I83607)
  • เราได้เปลี่ยนชื่อ API การทดสอบหลายรายการเพื่อให้ใช้งานง่ายขึ้น เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย findXYZ เป็น onNodeXYZ เราได้เปลี่ยนชื่อ API ทั้งหมดที่ขึ้นต้นด้วย doXYZ เป็น performXYZ (I7f164)
  • ตอนนี้คุณสามารถเขียน UI ของ Compose ภายใน ViewGroup ได้โดยไม่ต้องเขียนใหม่ ดูตัวอย่างได้ที่ ViewInteropDemo (I9ab0b, b/160455080)
  • เพิ่ม sortWith และ removeRange ลงใน MutableVector (Icccf7)
  • ใช้แฮนเดิลการเลือกแบบลากเพื่อเปลี่ยนการเลือกสำหรับ TextField (I27032)
  • นำคลาส Shader แบบอินไลน์ที่ ห่อหุ้มคลาส NativeShader ที่คาดไว้ เปลี่ยนชื่อ NativeShader เป็น Shader คลาสอินไลน์ Shader ที่ห่อไว้ไม่ได้เพิ่มสิ่งที่มีประโยชน์ใดๆ ให้กับพื้นผิว API และเป็นคลาสอินไลน์ ดังนั้นให้ใช้คลาส NativeShader โดยตรง (I25e4d)
  • ปรับโครงสร้าง PainterModifier เพื่อไม่ให้มีการปรับขนาดตาม ข้อจำกัดและพารามิเตอร์ ContentScale ที่ระบุอีกต่อไป การใช้งาน Painter จะต้องปรับขนาดเนื้อหาการวาด ด้วยตนเองตามขนาดที่กำหนดของ DrawScope ที่วาด

    แก้ไขปัญหาที่แคชของ VectorPainter บิตแมปมีขนาดเป็นขนาดเริ่มต้น แทนที่จะเป็นขนาดที่ระบุเพื่อวาด

    อัปเดต ImagePainter เพื่อปรับขนาดเนื้อหา แทนที่จะใช้ PainterModifier เพื่อดำเนินการในนามของตน (I6ba90)

  • เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับเวลาของภาพเคลื่อนไหว (Ie34c5)

  • เราเลิกใช้งาน @Untracked annotation แล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)

  • เลิกใช้งาน androidx.ui.foundation.TextFieldValue และ androidx.ui.input.EditorValue แล้ว นอกจากนี้ ยังมีการเลิกใช้งาน Composable TextField, FilledTextField และ CoreTextField ที่ใช้ประเภทดังกล่าวด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)

  • แก้ไขปัญหาที่การส่งอินพุตของเคอร์เซอร์ จะทำให้เกิดข้อขัดข้องหาก PointerInputFilters ถูกนำออกผ่าน subcomposition ระหว่างการส่ง ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (I1f48b, b/157998762)

  • แก้ไขปัญหาที่การเรียกใช้การป้อนข้อมูลเคอร์เซอร์จะทำให้เกิดข้อขัดข้องหากมีการนำ PointerInputFilters ออกผ่านการประกอบย่อยระหว่างการเรียกใช้ ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว (Iab398, b/157998762)

  • ปรับโครงสร้างคลาส Radius ให้เป็น คลาสอินไลน์ นำวิธีการสร้างองค์ประกอบเสริมออก เพื่อใช้ตัวสร้างฟังก์ชัน ที่มีพารามิเตอร์เริ่มต้นเพื่อให้รัศมี ตามแกน y ตรงกับพารามิเตอร์รัศมีแกน x ที่จำเป็น

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

  • Composable ของ Recompose ไม่ใช่การแยกส่วนที่มีประโยชน์อีกต่อไป การจัดองค์ประกอบใหม่ส่วนใหญ่ควรเกิดขึ้นจากการกำหนด MutableState หากต้องการดำเนินการอื่นๆ นอกเหนือจากนี้ เราขอแนะนำให้คุณใช้ฟังก์ชัน invalidate เพื่อทริกเกอร์การจัดองค์ประกอบใหม่ของขอบเขตปัจจุบัน (Ifc992)

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

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

    ซึ่งหมายความว่าตรรกะส่วนใหญ่ที่สื่อสารกับรันไทม์ของ Compose จะเกิดขึ้นที่จุดเริ่มต้นของเนื้อหาฟังก์ชัน แทนที่จะเป็นที่ตำแหน่งการเรียก

    การเปลี่ยนแปลงนี้ควรเข้ากันได้กับแหล่งที่มาสำหรับการใช้งาน Compose ทั้งหมด ผู้ใช้ Compose ส่วนใหญ่ไม่จำเป็นต้องอัปเดตโค้ดใดๆ อันเป็นผลมาจากการเปลี่ยนแปลงนี้

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

    ตอนนี้ Compose จะแปลงอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชันที่ประกอบกันได้ด้วย โดยการดำเนินการนี้จะไม่ทำให้ฟังก์ชันเองมีโอเวอร์โหลดเริ่มต้นสังเคราะห์เพิ่มเติม การเปลี่ยนแปลงนี้จึงส่งผลให้มีการกำหนดฟังก์ชันน้อยลง

    การเปลี่ยนแปลงลักษณะการทำงานที่ทราบและตั้งใจให้เกิดขึ้นจากสิ่งนี้มีดังนี้

    1. การโทรบางสายจะข้ามไปในกรณีที่ก่อนหน้านี้จะไม่ข้าม
    2. ตอนนี้ระบบจะสมัครใช้และจัดการนิพจน์ที่ประกอบได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นอย่างถูกต้องแล้ว

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

    การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องส่วนใหญ่เป็น API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้ Compose โดยทั่วไปจะไม่ได้รับผลกระทบ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. เลิกใช้งาน Composer::call แล้ว 4. เราได้นำโอเวอร์โหลดที่ไม่ใช่ varargs ของ key ออกแล้ว โปรดใช้เวอร์ชัน vararg ต่อไป 5. เราเลิกใช้งานคำอธิบายประกอบที่สำคัญแล้ว ใช้ key แทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope ให้คาดหวัง Function3 แทน Function1 7 มีการอัปเดต restartableFunction และ restartableFunctionN ให้รวมพารามิเตอร์เวลาคอมไพล์เพิ่มเติม (I60756, b/143464846)

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

  • นำ RepaintBoundary ออกเพื่อใช้ DrawLayerModifier แทน (I00aa4)

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

  • แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและนำการโอเวอร์โหลดข้อความ (สตริง) ออก ดูตัวอย่างที่อัปเดตแล้วสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)

  • การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบของ Ambient API ดูรายละเอียดได้ในบันทึกและเอกสาร Ambient<T> (I4c7ee, b/143769776)

  • เปลี่ยนลักษณะการทำงานของ TextDirection เริ่มต้นให้กำหนดโดย LayoutDirection กล่าวคือ หาก LayoutDirection เป็น RTL TextDirection เริ่มต้นจะเป็น RTL ก่อนหน้านี้คือ TextDirection.ContentOrLtr/Rtl (I4e803)

  • การแก้ไขข้อบกพร่อง: เมื่อมีการซ้อนน้ำหนักแบบอักษรและรูปแบบแบบอักษรใน AnnotatedString ระบบจะไม่แสดงข้อความอย่างถูกต้อง (I77a9d)

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

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