WindowManager

ไลบรารี WindowManager ของ Jetpack ช่วยให้นักพัฒนาแอปพลิเคชันรองรับรูปแบบของอุปกรณ์ใหม่ๆ และสภาพแวดล้อมแบบหลายหน้าต่างได้ เวอร์ชันแรกจะมุ่งเน้นที่อุปกรณ์แบบพับได้ แต่เวอร์ชันในอนาคตจะขยายการให้บริการไปยังจอแสดงผลประเภทต่างๆ และฟีเจอร์หน้าต่างเพิ่มเติม
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
16 ตุลาคม 2024 1.3.0 - - 1.4.0-alpha05

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

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

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

ดึงดูด

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.3.0")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

ความคิดเห็น

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

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

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

เวอร์ชัน 1.4

เวอร์ชัน 1.4.0-alpha05

16 ตุลาคม 2024

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

ฟีเจอร์ใหม่

  • เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อรับ widthDp และ heightDp จาก WindowMetrics

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

  • เพิ่ม widthDp และ heightDp ลงใน WindowMetrics (Ide026)
  • นํา WindowInsets API เวอร์ชันทดลองออก (I68a71)
  • อัปเดตชื่อเมธอดการตรวจสอบขอบเขตเป็น isAtLeast (Ib0ab7)

เวอร์ชัน 1.4.0-alpha04

2 ตุลาคม 2024

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

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

  • เพิ่มวิธีการคํานวณ WindowSizeClass จาก WindowMetrics (874dba)
  • เปลี่ยนวิธีการ WindowSizeClass เป็น containsWidthDp, containsHeightDp และ containsWindowSizeDp เพื่อให้ชัดเจน (fa760d)
  • แปลง WindowAreaController เป็นคลาสฐานแบบนามธรรม (I90893)

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

  • เพิ่มการรองรับขอบเขตแบบสัมพัทธ์เมื่อสร้างการทดสอบ FoldingFeature (2e6b3e)
  • การแก้ไขข้อบกพร่องทั่วไปเมื่อเลือก WindowSizeClass

เวอร์ชัน 1.4.0-alpha03

18 กันยายน 2024

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

ฟีเจอร์ใหม่

  • เพิ่มเมธอดยูทิลิตีเพื่อรับ WindowSizeClass จาก WindowMetrics (I83f1f)
  • เปลี่ยนชื่อ isAtLeast เป็น containsBreakpoint (I85b47)
  • เพิ่มการโอเวอร์โหลดใน computeWindowSizeClass โดยใช้ตัวเลขทศนิยม (I3dcb2, b/364677934, b/364677802, b/364680886)

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

  • เพิ่มเบรกพอยต์ที่ขาดหายไปลงในชุดเบรกพอยต์ WindowSizeClass เริ่มต้น
  • แก้ไขข้อบกพร่องที่ระบบเลือกขนาดกะทัดรัดไม่ถูกต้องในบางกรณี

เวอร์ชัน 1.4.0-alpha02

4 กันยายน 2024

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

ฟีเจอร์ใหม่

เพิ่มการรองรับ WindowSizeClass ที่กําหนดเอง

  • เปิดคอนสตรัคเตอร์สําหรับ WindowSizeClass เพื่อให้นักพัฒนาซอฟต์แวร์ใช้คอนสตรัคเตอร์ของตัวเองได้
  • เพิ่มเมธอดยูทิลิตี isAtLeast เพื่อให้นักพัฒนาซอฟต์แวร์ประมวลผลช่วงค่า WindowSizeClass ได้
  • เพิ่มฟังก์ชันส่วนขยายใน Set<WindowSizeClass> เพื่อคํานวณรายการที่ตรงกันที่สุดจากชุด
  • เพิ่มค่าคงที่สำหรับเบรกพอยต์ที่แนะนำของ Android
  • เพิ่มชุดเบรกพอยต์ที่สอดคล้องกับเบรกพอยต์ที่ Android แนะนำ

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

  • อัปเดตชื่อเมธอดขอบเขตสำหรับ WindowSizeClass (If89a6)
  • อัปเดต WindowSizeClass API เพื่อรองรับการเพิ่มค่าจุดหยุดพักใหม่ในอนาคต เราใช้ขอบเขตล่างแทนขอบเขตสัมบูรณ์ และขอแนะนําให้นักพัฒนาซอฟต์แวร์ใช้การตรวจสอบขอบเขตล่างเมื่อประมวลผล WindowSizeClass เราจะเลิกใช้งาน WindowWidthSizeClass และ WindowHeightSizeClass ที่มีอยู่เนื่องจากจะไม่พัฒนาต่อไป (I014ce)

เวอร์ชัน 1.4.0-alpha01

7 สิงหาคม 2024

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

ฟีเจอร์ใหม่

  • การปักหมุด ActivityStack ช่วยให้แอปปักหมุดเนื้อหาในคอนเทนเนอร์หนึ่งและแยกการนําทางออกจากคอนเทนเนอร์อื่นได้
  • ตัวแบ่งแบบอินเทอร์แอกทีฟช่วยให้แอปแสดงตัวแบ่งแบบคงที่หรือแบบลากไปมาได้ระหว่างกิจกรรม 2 รายการในงานนำเสนอแบบแยก
  • การลดแสงกล่องโต้ตอบแบบเต็มหน้าจอช่วยให้แอประบุพื้นที่การลดแสงของกล่องโต้ตอบได้ เพื่อลดแสงทั้งหน้าต่างงานหรือลดแสงเฉพาะคอนเทนเนอร์ที่แสดงกล่องโต้ตอบ
  • การเรียกกลับข้อมูลกรอบเวลากิจกรรมที่ฝังช่วยให้แอปได้รับการอัปเดตกรอบเวลากิจกรรมที่ฝังอย่างต่อเนื่อง
  • การฝังพื้นหลังภาพเคลื่อนไหวช่วยให้แอประบุพื้นหลังของภาพเคลื่อนไหวได้ ซึ่งจะช่วยปรับปรุงคุณภาพของภาพเคลื่อนไหวการเปลี่ยนเมื่อใช้ ActivityEmbedding
  • การจัดการ ActivityStack ที่ปรับปรุงแล้วช่วยให้แอปควบคุม ActivityStacks ได้มากขึ้นเมื่อใช้ ActivityEmbedding ซึ่งรวมถึงการดำเนินการต่อไปนี้
  • การเริ่มกิจกรรมใน ActivityStack ที่ระบุ
  • การทำ ActivityStack ให้เสร็จ

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

  • API ใหม่ WindowInfoTracker#supportedPostures

    • API เพื่อระบุว่าอุปกรณ์รองรับโหมดตั้งโต๊ะสำหรับอุปกรณ์แบบพับได้หรือไม่ เพิ่ม WindowAreaSessionPresenter#getWindow
  • เพิ่ม API เพื่อรองรับActivityStackการปักหมุด

    • ชั้นเรียน SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • เพิ่ม API เพื่อเปิดใช้และกําหนดค่าตัวแบ่งแบบอินเทอร์แอกทีฟ

    • ชั้นเรียน DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • เพิ่ม API เพื่อตั้งค่า EmbeddingConfiguration และ DimAreaBehavior สำหรับกล่องโต้ตอบ

    • ชั้นเรียน EmbeddingConfiguration
    • ชั้นเรียน DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • เพิ่ม API เพื่อรับการอัปเดตข้อมูลกรอบเวลากิจกรรมที่ฝัง

    • ชั้นเรียน EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • เพิ่ม API เพื่อตั้งค่าพื้นหลังของภาพเคลื่อนไหวที่ฝัง

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • เพิ่ม API เพื่อดำเนินการให้เสร็จสิ้น ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • เพิ่ม API เพื่อตั้งค่าการเปิดตัว ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • API ต่อไปนี้เป็นเวอร์ชันที่เสถียรและไม่ใช่เวอร์ชันทดลองอีกต่อไป

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (ย้ายมาจาก SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • เพิ่ม API สำหรับ 1.4 (I56774)

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

  • แก้ไขข้อบกพร่องในอุปกรณ์บางรุ่นที่ระบบจะแสดงผลเป็น "ไม่พร้อมใช้งาน" แทน "ใช้งานอยู่" เมื่อเซสชันทำงานอยู่
  • นำการรองรับ transferActivityToWindowArea บนอุปกรณ์ที่มี vendorApiLevel เป็น 2 ออกเนื่องจากการรองรับ API ไม่เสถียร
  • เปิดตัว API เพื่อเปิดใช้การลากเพื่อขยายเป็นหน้าจอเต็มสำหรับตัวแบ่งที่ลากได้ของการฝังกิจกรรม (I645c9)
  • อนุญาตให้แอปปิดใช้ภาพเคลื่อนไหว ActivityEmbedding ผ่านพารามิเตอร์ภาพเคลื่อนไหวสําหรับ SplitAttributes (Idc01a)
  • นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะดำเนินการโดยอัตโนมัติผ่านการจําลอง API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
  • อนุญาตให้ส่วนขยายใช้พารามิเตอร์ภาพเคลื่อนไหวสําหรับ SplitAttributes เพื่อให้อุปกรณ์ใช้พารามิเตอร์ดังกล่าวสําหรับการเปลี่ยนภาพเคลื่อนไหวได้ (Iede00)
  • ซ่อน API การวางซ้อน (Ic4251)
  • แนะนำ API เพื่อกำหนดค่าตัวแบ่งแบบคงที่หรือแบบลากได้สำหรับการแยก (Ia7a78)
  • เพิ่มความหนาแน่นลงใน WindowMetrics (Id6723)
  • เพิ่ม API เพื่อรับ SupportedPostures (If557a)
  • นำ setLaunchingActivityStack ออกจาก API เวอร์ชันทดลอง (I191cf)
  • แนะนำ ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • เลิกใช้งาน #getToken และเพิ่ม #getActivityStackToken (Ie0471)
  • เปิดตัวอะแดปเตอร์การเรียกกลับสําหรับ embeddedActivityWindowInfo flow API (Ida77f)
  • เพิ่มอะแดปเตอร์การเรียกกลับสําหรับ API เวิร์กโฟลว์ overlayInfo (I7264f)
  • แนะนำ WindowSdkExtensionsRule เพื่อลบล้าง extensionsVersion สำหรับการทดสอบ (Ifb928)
  • - ย้ายข้อมูล #setLaunchingActivityStack ไปยัง Bundle เพื่อให้ใช้งานร่วมกับ ActivityOptionsCompat ได้
    • ผู้ใช้ควรส่ง activityOptions.toBundle แทน ActvityOptions
    • นำ #setLaunchingActivityStack(Activity) ออก ผู้ใช้ควรย้ายข้อมูลเพื่อใช้ ActivityEmbeddingController#getActivityStac(Activity) เพื่อรับ ActivityStack และส่ง ActivityStack ไปยัง #setLaunchingActivityStack (Ie0ccc)
  • - แนะนำ ActivityStack.Token และ SpltInfo.Token เป็นตัวระบุเพื่อสื่อสารระหว่าง WM Jetpack กับส่วนขยาย
    • เลิกใช้งาน/แทนที่ API เพื่อรับ/แสดงผลโทเค็นแทน IBinder (I12b24)
  • - แนะนำ ActivityEmbeddingController#invalidateVisibleActivityStacks
    • นำ SplitController#invalidateTopVisibleSplitAttributes ออกเนื่องจากฟีเจอร์นี้รวมเข้ากับ #invalidateVisibleActivityStacks แล้ว (I02ef5)
  • - การเพิ่ม API เพื่อกำหนดค่าการฝัง (I59a4a)
  • - เพิ่ม/เลิกปักหมุด ActivityStack androidx.Window API ยอดนิยม
    • การอัปเดตแอปเดโมเพื่ออนุญาตให้ปักหมุด/เลิกปักหมุดรายการยอดนิยม ActivityStack (I24dd3)
  • เพิ่ม #finishActivityStacks และ ActivityEmbeddingOptions อีกครั้ง (Ic1ab3)
  • นำ API ที่ไม่เสถียรออก (Ibc534, b/302380585)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.0

29 พฤษภาคม 2024

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

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

  • การรองรับ Kotlin Multiplatform สำหรับคลาสขนาดหน้าต่าง

เวอร์ชัน 1.3.0-rc01

14 พฤษภาคม 2024

WindowManager Jetpack 1.3 รองรับ Kotlin Multiplatform สำหรับฟีเจอร์ WindowSizeClass รวมถึงการแก้ไขข้อบกพร่องหลายรายการ

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

เวอร์ชัน 1.3.0-beta02

1 พฤษภาคม 2024

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

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

  • นำการรองรับการสร้างและใช้ WindowSizeClass ที่กําหนดเองออก (Id1143)

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

  • แก้ไข KotlinReflectionInternalError ที่เกิดจาก ProGuard ตัดไฟล์บางไฟล์ออกในการใช้งานอุปกรณ์บางรุ่น (I01b02)

เวอร์ชัน 1.3.0-beta01

3 เมษายน 2024

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

เวอร์ชัน 1.3.0-alpha03

6 มีนาคม 2024

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

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

  • แยก WindowSizeClassUtil ออกเป็นวิธีการที่มุ่งเน้นมากขึ้น (Ie9292)
  • กู้คืน WindowSizeClass#compute (I21355, b/324293374)

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

  • แก้ไขข้อขัดข้องเมื่อระบบเปิดบริบทที่ระบุไม่ถูกต้อง (94d10ce , b/318787482)

เวอร์ชัน 1.3.0-alpha02

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

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

ฟีเจอร์ใหม่

  • การอัปเดตที่ดำเนินการกับอินเทอร์เฟซ API ของ Window Size Class API เพื่อเพิ่มความยืดหยุ่นให้กับนักพัฒนาแอปที่ต้องการใช้คลาสขนาดของตนเอง

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

  • เพิ่มข้อจำกัดความสูงลงในตัวเลือกความกว้าง (I23393)
  • เพิ่มฟังก์ชันยูทิลิตีสําหรับการเลือก WindowSizeClass จากชุด เพิ่มฟังก์ชันการให้คะแนนเวอร์ชันทดลองเพื่อให้นักพัฒนาแอปเขียนตัวเลือกของตนเองได้ เพิ่มฟังก์ชันส่วนขยายตัวเลือกเพื่อเลือก WindowSizeClass ที่กว้างที่สุดภายในขอบเขตที่ระบุ (I0c944)
  • เปิดคอนสตรัคเตอร์ WindowSizeClass เพื่อให้เพิ่มเบรกพอยต์ที่กำหนดเองได้ (Ic1ff3)
  • เพิ่มฟังก์ชันอำนวยความสะดวกเพื่อสร้างคลาสขนาดจากความกว้าง ความสูง และค่าความหนาแน่น (If67f4)

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

  • แก้ไขข้อยกเว้นเมื่อมีการตัดค่าทศนิยมให้เหลือ 0 (272ffac)

เวอร์ชัน 1.3.0-alpha01

15 พฤศจิกายน 2023

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

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานข้อมูลการพับฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์
  • WindowProperties ค่าคงที่สำหรับการลบล้างระดับผู้ใช้ต่อแอปมีดังนี้
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกการลบล้างความเข้ากันได้ของขนาดหน้าจอที่แสดงต่อผู้ใช้
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE - แจ้งให้ระบบทราบว่าแอปไม่ได้เลือกใช้ตัวเลือกแบบเต็มหน้าจอของการตั้งค่าการลบล้างความเข้ากันได้ของอัตราส่วนภาพสำหรับผู้ใช้

เวอร์ชัน 1.2

เวอร์ชัน 1.2.0

15 พฤศจิกายน 2023

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

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

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานข้อมูลการพับฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์

เวอร์ชัน 1.2.0-rc01

1 พฤศจิกายน 2023

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

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานข้อมูลการพับฟีเจอร์ไปยังพารามิเตอร์ UiContext
  • แสดงเวอร์ชันของส่วนขยายในอุปกรณ์

เวอร์ชัน 1.2.0-beta04

18 ตุลาคม 2023

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

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

เวอร์ชัน 1.2.0-beta03

20 กันยายน 2023

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

ฟีเจอร์ใหม่

  • เพิ่มRequiresApiการตรวจสอบ API ที่ต้องมีส่วนขยายเวอร์ชันที่เฉพาะเจาะจงจึงจะทํางานได้อย่างถูกต้อง
  • เพิ่ม API เพื่อแสดงเวอร์ชันของส่วนขยายในอุปกรณ์

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

  • กำกับเนื้อหาเกี่ยวกับเวอร์ชันส่วนขยาย SDK ของกรอบเวลาที่จำเป็นใน API สาธารณะ
    • นํา isXXXSupported ออกจากคอมโพเนนต์การฝังกิจกรรม (Ie3dae)
  • แนะนำ WindowSdkExtensions เพื่อรายงานเวอร์ชันส่วนขยายในอุปกรณ์
    • แนะนำ RequiresWindowSdkExtension เพื่อกำกับเนื้อหาเกี่ยวกับเวอร์ชันส่วนขยายขั้นต่ำที่จำเป็น (I05fd4)
  • ทำให้ WindowAreaInfo#getCapability เป็นค่าที่ไม่นิ่ง (I17048)

เวอร์ชัน 1.2.0-beta01

26 กรกฎาคม 2023

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

ฟีเจอร์ใหม่

  • แสดง API หน้าต่างทดลองสำหรับการเข้าถึงหน้าจอด้านหลัง
  • API การทดสอบสําหรับการสร้าง FoldingFeature ทำงานได้อย่างเสถียรแล้ว
  • ตอนนี้ API การทดสอบสําหรับการตั้งค่าค่า ActivityEmbedding จําลองมีความเสถียรแล้ว
  • ตอนนี้ WindowLayoutInfoPublisherRule จะรายงานการลบล้างเมื่อได้รับค่าจาก UiContext
  • WindowInfoTracker รายงานข้อมูลการพับฟีเจอร์ไปยังพารามิเตอร์ UiContext

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

  • ทำเครื่องหมาย WindowArea API เป็นเวอร์ชันทดลองเพื่อให้การเปลี่ยนแปลง API ต่อไปสำหรับรุ่นที่เสถียรใน 1.3 (I857f5)
  • อัปเดตไฟล์ API เพื่อกำกับเนื้อหาการระงับความเข้ากันได้ (I8e87a, b/287516207)

เวอร์ชัน 1.2.0-alpha03

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

  • นำ API ที่เลิกใช้งานแล้วออก (I18d39)
  • เพิ่มการรองรับการแสดงผลพร้อมกัน (Ifcbb0)

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

  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้สำหรับการบังคับปรับขนาดการลบล้าง (Ie7ab1)
  • นำ SESSION_STATE_CONTENT_INVISIBLE ออกจากอินเทอร์เฟซส่วนขยาย (I6ed19)
  • ปรับปรุง ActivityEmbeddingRule ให้เสถียรเพื่อรองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6)
  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้แบบไม่บังคับสำหรับการลบล้างสัดส่วนภาพขั้นต่ำ (I66390)
  • นำ WindowArea API ที่เลิกใช้งานแล้วออก (Ieb67c)
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ลูปคำขอการวางแนวเป็น PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED (Ie2fbd)
  • อัปเดตชื่อคงที่ของเซสชันพื้นที่หน้าต่าง (I83675)
  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ในการเลือกไม่ใช้ซึ่งละเว้นการวนคำขอการวางแนวเมื่อตรวจพบ (I0a7a2)
  • เพิ่ม WindowAreaComponent#STATUS_ACTIVE เพื่อระบุว่าฟีเจอร์ใช้งานได้แล้ว (I62bc3)
  • เพิ่ม RearDisplayPresentationMode API (I0401c)
  • นำ API สีพื้นหลังออกสำหรับเวอร์ชันเสถียร (I34c3e)
  • ซ่อน Window Area API (I39de0)
  • เพิ่มวิธีการลบล้าง SplitInfo ใน SplitController เพิ่มวิธีการทดสอบเพื่อสร้างรายการแบบคู่สําหรับ SplitInfo และ ActivityStack (Icd69f)
  • กำหนดให้แท็กเป็นแบบไม่บังคับสำหรับ ActivityRule.Builder (Ib0b44)
  • นำ RatioSplitType, ExpandContainersSplit และ HingeSplitType ออก ตอนนี้มีจำนวน SplitType
    • แทนที่ #splitEqually(), #expandContainers() และ #splitByHinge ด้วยค่าคงที่ SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND และ SPLIT_TYPE_HINGE
    • นำฟังก์ชันการทำงานในการตั้งค่าประเภทสำรองของประเภทการแยกแบบบานพับออก หากใช้การแยกแบบบานพับไม่ได้เนื่องจากสถานะอุปกรณ์หรือหน้าต่างปัจจุบัน ระบบจะเปลี่ยนไปใช้การแยกคอนเทนเนอร์งานหลักอย่างเท่าๆ กัน ใช้ SplitController#setSplitAttributesCalculator เพื่อปรับแต่งประเภทการแยกสำรอง (Ifcc59)
  • เลิกใช้งาน add/removeSplitCallback
    • ย้าย add/removeSplitCallback ไปยัง SplitControllerCallbackAdapter
    • เพิ่มการสนับสนุน Flow เพื่อดูรายการ SplitInfo (I7f1b6)
  • เพิ่มกฎทดสอบสำหรับ ActivityEmbeddingController (I42e9b)
  • เปลี่ยนชื่อ ActivityOptionsCompat เป็น ActivityEmbeddingOptions (I89301)
  • เพิ่ม splitSupportStatus เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024)
  • แนะนำ SplitAttributes.BackgroundColor เพื่อแสดงค่า DEFAULT ได้ดียิ่งขึ้น ชี้แจงว่าระบบไม่รองรับสีพื้นหลังของภาพเคลื่อนไหวที่ไม่ทึบแสง ระบบจึงจะถือว่าสีที่ไม่ทึบแสงเป็นค่าเริ่มต้น ซึ่งหมายความว่าจะใช้สีพื้นหลังของหน้าต่างธีมปัจจุบัน (Ic6b95)
  • แทนที่ alwaysAllow() และ alwaysDisallow() ด้วย ALWAYS_ALLOW และ ALWAYS_DISALLOW (I3057b)
  • เพิ่ม API สำหรับ SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23)
  • เพิ่ม TestActivityStack เพื่อสร้าง ActivityStack สำหรับการทดสอบ
    • เพิ่ม TestSplitInfo เพื่อสร้าง SplitInfo สำหรับการทดสอบ (I8e779)
  • เพิ่มวิธีสร้าง SplitAttributesCalculatorParams จำลองเพื่อให้นักพัฒนาแอปยืนยัน SplitAttributesCalculator ที่กําหนดเองได้ (Id4a6e)
  • เพิ่ม WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) และ WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

เวอร์ชัน 1.2.0-alpha02

7 มิถุนายน 2023

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

ฟีเจอร์ใหม่

  • อัปเดต API การทดสอบให้มีค่าคงที่สำหรับฟีเจอร์การพับที่ไม่ระบุ
  • การลบล้างด้วย WindowLayoutInfoPublishRule จะลบล้างค่าทั้งหมดของ windowLayoutInfo รวมถึง API ตามบริบท

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

  • เพิ่มค่าคงที่สำหรับฟีเจอร์การพับตรงกลางที่ไม่ระบุ (I7530c)

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

  • อัปเดต WindowLayoutInfoPublishRule เพื่อรองรับการลบล้างใน WindowLayoutInfo ของ Context (I2037a)

เวอร์ชัน 1.2.0-alpha01

24 พฤษภาคม 2023

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

ฟีเจอร์ใหม่

เพิ่มความเสถียรให้กับการทดสอบ API เกี่ยวกับการฝังกิจกรรมและ WindowLayoutInfoTracker ActivityEmbeddingRule ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว WindowMetricsCalculatorRule ได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว ฟังก์ชันยูทิลิตีในการสร้าง FoldingFeature สำหรับการทดสอบได้รับการโปรโมตเป็นเวอร์ชันเสถียรแล้ว

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

  • ปรับปรุง ActivityEmbeddingRule ให้เสถียรเพื่อรองรับการทดสอบหน่วยเกี่ยวกับแทรกกิจกรรม (I8d6b6)
  • WindowMetrisCalculatorTestRule เสถียรและอนุญาตให้ใช้เมตริกสแต็บสําหรับการทดสอบ JVM เราขอแนะนำให้ใช้โปรแกรมจำลองเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
  • เพิ่มความเสถียรของ API การทดสอบสําหรับ WindowLayoutInfo เพื่อรองรับการทดสอบ JVM (Ie036e)
  • เพิ่ม IntRange สำหรับค่าฟีเจอร์การทดสอบการพับ (I69f7d)

เวอร์ชัน 1.1

เวอร์ชัน 1.1.0

7 มิถุนายน 2023

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

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

การฝังกิจกรรม

  • เพิ่ม PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED เป็นพร็อพเพอร์ตี้บูลีนของแท็ก <application> ในไฟล์ Manifest ของแอป
  • เลิกใช้งาน isSplitSupported และแทนที่ด้วย splitSupportStatus เพื่อแสดงข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน
  • เพิ่มคลาสที่ฝัง SplitController.SplitSupportStatus เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้ splitSupportStatus
  • แยก SplitController ออกเป็นหลายโมดูล ดังนี้
    • โมดูล ActivityEmbeddingController สำหรับ API ที่เกี่ยวข้องกับ Activity หรือ ActivityStack
    • ย้าย isActivityEmbedded จาก SplitController ไป ActivityEmbeddingController แล้ว
    • โมดูล RuleController สําหรับการดําเนินการที่เกี่ยวข้องกับ EmbeddingRule
    • API SplitController ที่ถูกนําออก
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • API RuleController ที่เพิ่มเข้ามา
    • addRule() — เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกัน
    • removeRule() — นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียน
    • setRules() — สร้างคอลเล็กชันกฎ
    • clearRules() — นำกฎที่ลงทะเบียนไว้ทั้งหมดออก
    • parseRules() — แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
  • โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด #getInstance() ซึ่งรวมถึง
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • เพิ่มคลาส EmbeddingAspectRatio เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล
  • เพิ่มคลาส SplitAttributes เพื่อกำหนดเลย์เอาต์แบบแยก
  • เพิ่มฟังก์ชันเครื่องคิดเลข SplitAttributes ลงใน SplitController เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() เพื่อตรวจสอบว่าอุปกรณ์รองรับ SplitAttributesCalculator API หรือไม่
  • เพิ่มช่อง EmbeddingRule#tag แล้ว
  • การอัปเดต API ใน SplitRule
    • เพิ่ม defaultSplitAttributes — กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่ splitRatio และ layoutDirection
    • เพิ่มการแปลพร็อพเพอร์ตี้ XML splitRatio และ splitLayoutDirection เป็น defaultSplitAttributes
    • เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
    • เพิ่ม minHeightDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minWidth เป็น minWidthDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp ที่มีค่าเริ่มต้น 600dp
    • เพิ่ม maxAspectRatioInHorizontal ที่มีค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ที่มีค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ฝัง FinishBehavior เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝังของ SplitPairRule และ SplitPlaceholderRule ของ Builder
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก

WindowLayout

  • เพิ่มการรองรับบริบท UI ที่ไม่เกี่ยวข้องกับกิจกรรมเวอร์ชันทดลองลงใน WindowInfoTracker
  • เพิ่มบริบท UI เวอร์ชันทดลองที่ไม่ใช่กิจกรรมลงใน WindowMetricsCalculator

ขั้นตอนการย้ายข้อมูล

  • หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้ PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED ลงในแท็ก <application> ของไฟล์ Manifest ดังนี้ xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้
  • SplitInfo ratio
    • ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้ kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • ตรวจสอบอัตราส่วนปัจจุบัน kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • การย้ายข้อมูล SplitController
    • SplitController.getInstance() เปลี่ยนเป็น SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) เปลี่ยนเป็น RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) เปลี่ยนเป็น ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() เปลี่ยนเป็น RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() เปลี่ยนเป็น RuleController.getInstance(Context).getRules()
  • การย้ายข้อมูลพร็อพเพอร์ตี้ SplitRule
    • ตอนนี้ minWidth และ minSmallestWidth ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้ kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) หรือเพียงแค่หาร minWith เป็นพิกเซลด้วย displayMetrics#density
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยังFinishBehaviorค่าคงที่ของคลาสที่คล้ายกับ enum ดังนี้
    • FINISH_NEVER เปลี่ยนเป็น FinishBehavior.NEVER
    • FINISH_ALWAYS เปลี่ยนเป็น FinishBehavior.ALWAYS
    • FINISH_ADJACENT เปลี่ยนเป็น FinishBehavior.ADJACENT
  • คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น SplitAttributes.LayoutDirection โดยทำดังนี้
    • ltr เปลี่ยนเป็น SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl เปลี่ยนเป็น SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale เปลี่ยนเป็น SplitAttributes.LayoutDirection.LOCALE
    • คุณต้องย้ายข้อมูล splitRatio ไปยัง SplitAttributes.SplitType.ratio(splitRatio)
  • การย้ายข้อมูล SplitPairRule.Builder รายการ:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) เปลี่ยนเป็น kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary และ setFinishSecondaryWithPrimary ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
  • การย้ายข้อมูล SplitPlaceholder.Builder รายการ:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholder ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง

เวอร์ชัน 1.1.0-rc01

10 พฤษภาคม 2023

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

ฟีเจอร์ใหม่

  • เผยแพร่ ActivityEmbedding เป็น API ที่เสถียร
  • การแก้ไขข้อบกพร่องหลายรายการ

เวอร์ชัน 1.1.0-beta02

5 เมษายน 2023

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

ฟีเจอร์ใหม่

  • การแก้ไขและล้างข้อมูลภายใน

เวอร์ชัน 1.1.0-beta01

22 มีนาคม 2023

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

การฝังกิจกรรม

  • เพิ่ม PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED เป็นพร็อพเพอร์ตี้บูลีนของแท็ก <application> ในไฟล์ Manifest ของแอป
  • เลิกใช้งาน isSplitSupported และแทนที่ด้วย splitSupportStatus เพื่อแสดงข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่ฟีเจอร์แยกไม่พร้อมใช้งาน
  • เพิ่มคลาสที่ฝัง SplitController.SplitSupportStatus เพื่อระบุค่าคงที่สถานะสำหรับพร็อพเพอร์ตี้ splitSupportStatus
  • แยก SplitController ออกเป็นหลายโมดูล ดังนี้
    • โมดูล ActivityEmbeddingController สำหรับ API ที่เกี่ยวข้องกับ Activity หรือ ActivityStack
    • ย้าย isActivityEmbedded จาก SplitController ไป ActivityEmbeddingController แล้ว
    • โมดูล RuleController สําหรับการดําเนินการที่เกี่ยวข้องกับ EmbeddingRule
    • API SplitController ที่ถูกนําออกมีดังนี้
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • เพิ่ม RuleController API ต่อไปนี้
      • addRule() — เพิ่มกฎหรืออัปเดตกฎที่มีแท็กเดียวกัน
      • removeRule() — นำกฎออกจากคอลเล็กชันกฎที่ลงทะเบียน
      • setRules() — สร้างคอลเล็กชันกฎ
      • clearRules() — นำกฎที่ลงทะเบียนไว้ทั้งหมดออก
      • `parseRules() — แยกวิเคราะห์กฎจากคําจํากัดความของกฎ XML
  • โมดูลทั้งหมดต้องมีการเริ่มต้นบริบทด้วยเมธอด #getInstance() ซึ่งรวมถึง
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • เพิ่มคลาส EmbeddingAspectRatio เพื่อกําหนดค่าคงที่ของลักษณะการทํางานแบบ Enum ที่เกี่ยวข้องกับสัดส่วนการแสดงผล
  • เพิ่มคลาส SplitAttributes เพื่อกำหนดเลย์เอาต์แบบแยก
  • เพิ่มฟังก์ชันเครื่องคิดเลข SplitAttributes ลงใน SplitController เพื่อปรับแต่งเลย์เอาต์แบบแยก ดังนี้
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() เพื่อตรวจสอบว่าอุปกรณ์รองรับ SplitAttributesCalculator API หรือไม่
  • เพิ่มช่อง EmbeddingRule#tag แล้ว
  • การอัปเดต API ใน SplitRule
    • เพิ่ม defaultSplitAttributes — กําหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่ splitRatio และ layoutDirection
    • เพิ่มการแปลพร็อพเพอร์ตี้ XML splitRatio และ splitLayoutDirection เป็น defaultSplitAttributes
    • เปลี่ยนคำจำกัดความของขนาดขั้นต่ำให้ใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซล
    • เพิ่ม minHeightDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minWidth เป็น minWidthDp ที่มีค่าเริ่มต้น 600dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp ที่มีค่าเริ่มต้น 600dp
    • เพิ่ม maxAspectRatioInHorizontal ที่มีค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ที่มีค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ฝัง FinishBehavior เพื่อแทนที่ค่าคงที่ของลักษณะการทำงานที่เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาสที่ฝัง Builder ของ SplitPairRule และ SplitPlaceholderRule
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการแยก

WindowLayout

  • เพิ่มการรองรับบริบท UI ที่ไม่ใช่กิจกรรมลงใน WindowInfoTracker
  • เพิ่มบริบท UI ที่ไม่ใช่กิจกรรมลงใน WindowMetricsCalculator

ขั้นตอนการย้ายข้อมูล

  • หากต้องการเปิดใช้การฝังกิจกรรมเพื่อแสดงกิจกรรมแบบแยก แอปต้องเพิ่มพร็อพเพอร์ตี้ PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED ลงในแท็ก <application> ของไฟล์ Manifest ดังนี้ xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> วิธีนี้ช่วยให้ระบบเพิ่มประสิทธิภาพลักษณะการแยกสําหรับแอปพลิเคชันล่วงหน้าได้
  • SplitInfo ratio
    • ตรวจสอบว่ามีการซ้อนการแยกปัจจุบันหรือไม่ โดยทำดังนี้ kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • ตรวจสอบอัตราส่วนปัจจุบัน kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • การย้ายข้อมูล SplitController รายการ:
    • SplitController.getInstance() เปลี่ยนเป็น SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) เปลี่ยนเป็น RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) เปลี่ยนเป็น ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) เปลี่ยนเป็น RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() เปลี่ยนเป็น RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() เปลี่ยนเป็น RuleController.getInstance(Context).getRules()
  • การย้ายข้อมูลพร็อพเพอร์ตี้ SplitRule
    • ตอนนี้ minWidth และ minSmallestWidth ใช้หน่วย dp แทนพิกเซล แอปสามารถใช้การเรียกใช้ต่อไปนี้ kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) หรือเพียงแค่หาร minWith เป็นพิกเซลด้วย displayMetrics#density
  • ต้องย้ายข้อมูลค่าคงที่ของลักษณะการทำงาน "เสร็จสิ้น" ไปยังFinishBehaviorค่าคงที่ของคลาสที่คล้ายกับ Enum ดังนี้
    • FINISH_NEVER เปลี่ยนเป็น FinishBehavior.NEVER
    • FINISH_ALWAYS เปลี่ยนเป็น FinishBehavior.ALWAYS
    • FINISH_ADJACENT เปลี่ยนเป็น FinishBehavior.ADJACENT
  • คุณต้องย้ายข้อมูลการวางแนวเลย์เอาต์เป็น SplitAttributes.LayoutDirection โดยทำดังนี้
    • ltr เปลี่ยนเป็น SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl เปลี่ยนเป็น SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale เปลี่ยนเป็น SplitAttributes.LayoutDirection.LOCALE
    • คุณต้องย้ายข้อมูล splitRatio ไปยัง SplitAttributes.SplitType.ratio(splitRatio)
  • การย้ายข้อมูล SplitPairRule.Builder รายการ:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) เปลี่ยนเป็น kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary และ setFinishSecondaryWithPrimary ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง
  • การย้ายข้อมูล SplitPlaceholder.Builder รายการ:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent พร็อพเพอร์ตี้อื่นๆ จะย้ายไปยังตัวเซ็ตเตอร์ ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholder ใช้ค่าคงที่แบบ FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • setLayoutDirection(layoutDirection) และ setSplitRatio(ratio) เปลี่ยนเป็น kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกในอุปกรณ์แนวตั้ง

เวอร์ชัน 1.1.0-alpha06

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

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

ฟีเจอร์ใหม่

  • แสดงเวอร์ชันทดลองของการรับ WindowLayoutInfo จากบริบท UI

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

  • เพิ่ม splitSupportStatus เพื่อระบุว่าการฝังกิจกรรมพร้อมใช้งานหรือไม่ (I10024)
  • กำหนดให้ UI Context WindowLayoutInfo API เป็นเวอร์ชันทดลอง (I58ee0)
  • แนะนำ WindowAreaController และ API เพื่อเปิดใช้โหมด RearDisplay เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (Iffcbf)
  • อัปเดตสีพื้นหลังเริ่มต้น (I1ac1b)
  • เพิ่มพารามิเตอร์ SplitAttributes (I18bdd)
  • เพิ่ม API สำหรับ SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23)
  • ปรับปรุง API ที่เกี่ยวข้องกับ maxAspectRatio ดังนี้
    1. แทนที่ alwaysAllow() และ alwaysDisallow() ด้วย ALWAYS_ALLOW และ ALWAYS_DISALLOW
    2. อัปเดตเอกสารประกอบ API ของ @see ด้วยเอกสารประกอบแบบสแตนด์อโลน (I3057b)
  • ระบบนำตัวสร้างต่อไปนี้ออกจาก API สาธารณะเนื่องจากแอปไม่ควรเรียกใช้
    • SplitInfo constructor
    • ActivityStack constructor (Ide534)
  • ตอนนี้ SplitRule ใช้ maxAspectRatioInPortrait/Landscape โดยจะอนุญาตให้แยกกิจกรรมก็ต่อเมื่อสัดส่วนภาพของขอบเขตหลักเล็กกว่าหรือเท่ากับ maxAspectRatio ที่ขอ (Ia5990)
  • เปลี่ยน RuleController#parseRules เป็นแบบคงที่ (I785df)
  • ปรับปรุง API ที่เกี่ยวข้องกับ ActivityEmbedding
    1. ปรับชื่อ API ให้สอดคล้องกัน - ใช้เพิ่ม/นําออกสําหรับอินสแตนซ์หลายรายการ
    2. registerRule เปลี่ยนเป็น addRule
    3. unregisterRule เปลี่ยนเป็น removeRule
    4. แทนที่ getSplitRules ด้วย getRules เนื่องจาก ActivityRule ไม่ใช่กฎการแยก
    5. เพิ่ม RuleController#setRules เพื่อตั้งค่ากฎหลายรายการ
    6. ดึงข้อมูล API ที่เกี่ยวข้องกับกฎจาก SplitController ไปยัง RuleController แบบเดี่ยว ปัจจัยต่างๆ มีดังนี้
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. ดึงข้อมูล #isActivityEmbedded จาก SplitController ไปยัง ActivityEmbeddingController แบบ Singleton ปัจจัยต่างๆ มีดังนี้
    14. isActivityEmbedded
    15. นำ SplitController#initialize ออก หากต้องการตั้งค่ากฎจากไฟล์ XML โปรดใช้ RuleController#parseRules และ #setRules การเปลี่ยนแปลงก่อนนี้ SplitController.initialize(context, R.xml.static_rules) การเปลี่ยนแปลงหลังจากนี้ val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. เราไม่ได้แยกความแตกต่างระหว่างกฎแบบคงที่กับกฎรันไทม์อีกต่อไป อย่างไรก็ตาม การเรียกใช้ #clearRules จะล้างกฎทั้งหมด ไม่ว่าจะลงทะเบียนกับคําจํากัดความกฎ XML แบบคงที่หรือที่รันไทม์ หากต้องการใช้ลักษณะการทำงานเดิมของ SplitController#clearRegisteredRules โปรดเรียกใช้ RuleController#parseRules ด้วยรหัสทรัพยากร XML และเรียกใช้ RuleController#setRules เพื่อตั้งค่ากฎอีกครั้ง การเปลี่ยนแปลงก่อนนี้ SplitController.getInstance(context).clearRegisteredRules() การเปลี่ยนแปลงหลังจากนี้ val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • ปรับปรุง SplitRule API โดยทำดังนี้
    1. ใช้ขนาดขั้นต่ำเป็น DP แทนพิกเซลสำหรับ SplitRule
    2. ปรับโครงสร้างสำหรับ SplitRule Builder ให้ใช้มิติข้อมูลขั้นต่ำเป็นตัวเลือก (I95f17)
  • ส่งบริบทเพื่อเริ่มต้น SplitController (I42549)
  • เปลี่ยนชื่อ SplitRule#layoutDir เป็น #layoutDirection และ SplitRule Builder#setLayoutDir เป็น Builder#setLayoutDirection (I3f6d1)

เวอร์ชัน 1.1.0-alpha04

9 พฤศจิกายน 2022

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

ฟีเจอร์ใหม่

  • แสดงเมธอดเพื่อระบุว่า ActivityStack ว่างเปล่าสำหรับ ActivityEmbedding หรือไม่
  • นําแท็ก API เวอร์ชันทดลองออกจาก ActivityEmbedding API
  • ซ่อนตัวสร้าง ActivityRule เนื่องจาก Builder เป็นวิธีที่แนะนำในการสร้าง
  • เพิ่มวิธีการทดลองเพื่อรับ WindowInsets ใน WindowMetrics
  • อัปเดต SplitPlaceholderFinishBehavior เพื่อป้องกันไม่ให้ตัวยึดตำแหน่งเสร็จสมบูรณ์ การสิ้นสุดตัวยึดตําแหน่งทําให้เกิดลักษณะการทํางานที่ทําให้สับสน

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

  • ทำให้ val isEmpty เป็นสาธารณะเพื่อแทนที่ fun isEmpty
  • เปลี่ยนชื่อกิจกรรมพารามิเตอร์ ActivityStack เป็น activitiesInProcess (Ia5055)
  • นำ ActivityFilter#matchesClassName และ ActivityFilter#matchesClassNameOrWildCard ออกเนื่องจากทำให้สับสน
  • เพิ่ม ActivityFilter#componentName และ ActivityFilter#intentAction เพื่อให้ผู้เรียกใช้แยกแยะตัวกรองต่างๆ ได้ (I41f22)
  • นํา @Deprecated API ออกจาก API เวอร์ชันทดลอง (I216b3)
  • นํา @ExperimentalWindowApi สําหรับ Activity Embedding API ออก (I69ebe)
  • ซ่อนตัวสร้าง ActivityRule และใช้ Builder แทน (If4eb6)
  • เพิ่ม API เพื่อตรวจสอบว่ากิจกรรมเป็นส่วนหนึ่งของ ActivityFilter หรือไม่ (Ia43cf)
  • อัปเดตไฟล์ API ให้สอดคล้องกับการเปลี่ยนแปลงในคลาส WindowMetrics และ WindowMetricsCalculatorCompat (I667fe)
  • อัปเดต Javadoc ของพร็อพเพอร์ตี้ ActivityEmbedding และชื่อคลาส (Ia1386)
  • การเพิ่มชื่อแท็กพร็อพเพอร์ตี้ ActivityEmbedding เพื่อใช้ใน AndroidManifest.xml (Id1ad4)
  • เพิ่ม API ใหม่ SplitPlaceholderFinishBehavior และ SplitPlaceholderRule.finishPrimaryWithPlaceholder ซึ่งจะแทนที่ SplitPlaceholderRule.finishPrimaryWithSecondary ที่มีอยู่ ซึ่งจะกําหนดว่ากิจกรรมตัวยึดตําแหน่งจะสิ้นสุดเมื่อใด กิจกรรมที่เชื่อมโยงในการฝังกิจกรรมควรทํางานอย่างไร (I64647)

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

  • แนะนำ WindowAreaController และ API เพื่อเปิดใช้โหมด RearDisplay เพื่อย้ายหน้าต่างปัจจุบันไปยังจอแสดงผลที่สอดคล้องกับกล้องหลัง (I388ab)

เวอร์ชัน 1.1.0-alpha03

27 กรกฎาคม 2022

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

ฟีเจอร์ใหม่

  • อัปเดตค่าเริ่มต้นสำหรับกฎการฝัง

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

  • อัปเดตค่าเริ่มต้นสำหรับพร็อพเพอร์ตี้กฎการฝัง (Ic4d35)

เวอร์ชัน 1.1.0-alpha02

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

  • เผยแพร่ไลบรารีอะแดปเตอร์เพื่อรองรับ Java และ RxJava

เวอร์ชัน 1.1.0-alpha01

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

  • เผยแพร่อะแดปเตอร์เพื่อรองรับ Java และ RxJava

เวอร์ชัน 1.1.0-alpha01

20 เมษายน 2022

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

ฟีเจอร์ใหม่

  • แก้ไขข้อบกพร่องที่ทำให้แอปที่ทำงานอยู่เบื้องหลังหยุดแสดงฟีเจอร์การพับ
  • ขยายการใช้งาน ActivityEmbedding API เวอร์ชันทดลอง

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

  • API สาธารณะสำหรับตรวจสอบว่ามีการฝังกิจกรรมหรือไม่ (I39eb7)

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

  • เพิ่ม API ที่ปรับแต่งลักษณะการทำงานเมื่อสิ้นสุดสําหรับคอนเทนเนอร์ในการแยกกิจกรรม (I1a1e4)
  • เพิ่มตัวเลือกการกําหนดค่าใหม่สําหรับกฎการแยกกิจกรรม (Iec6af)

รุ่น 1.0

เวอร์ชัน 1.0.0

26 มกราคม 2022

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

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

  • รองรับโทรศัพท์แบบพับได้ตั้งแต่ WindowInfoTracker ถึง FoldingFeature WindowMetricsCalculator เพื่อช่วยคํานวณ WindowMetrics ปัจจุบัน

เวอร์ชัน 1.0.0-rc01

15 ธันวาคม 2021

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

ฟีเจอร์ใหม่

  • เพิ่มการรองรับโทรศัพท์แบบพับผ่าน WindowInfoTracker
  • เพิ่มวิธีการคํานวณ WindowMetrics ปัจจุบันและสูงสุด
  • เพิ่ม API การทดสอบที่รองรับ

เวอร์ชัน 1.0.0-beta04

17 พฤศจิกายน 2021

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

ฟีเจอร์ใหม่

  • เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
  • ทําให้ Activity เป็นวิธีการที่ต้องใช้อย่างชัดแจ้งสําหรับ WindowInfoTracker
  • เพิ่ม TestRule ง่ายๆ สําหรับ WindowMetricsCalculator เพื่อรองรับนักพัฒนาซอฟต์แวร์ที่ใช้ Robolectric

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

  • ดึงข้อมูลส่วนขยาย (I25a5f)
  • เพิ่ม isEmpty ใน ActivityStack (I5a4e6)
  • เปลี่ยนชื่อ WindowInfoRepository เป็น WindowInfoTracker
    • อัปเดต Dependency ของ java/rxjava/testing ให้ตรงกัน (I0da63)
  • เพิ่มกฎการทดสอบสําหรับ WindowMetricsCalculator ง่ายๆ (Ibacdb)

เวอร์ชัน 1.0.0-beta03

27 ตุลาคม 2021

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

ฟีเจอร์ใหม่

  • เพิ่ม API การฝังกิจกรรมเวอร์ชันทดลอง เลย์เอาต์เวอร์ชันเริ่มต้นนี้ช่วยให้แสดงกิจกรรม 2 รายการควบคู่กันได้

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

  • นํา currentWindowMetrics API ออกเนื่องจากเราไม่สามารถระบุข้อมูลได้อย่างถูกต้อง โปรดใช้ WindowMetricsCalculator แทน (Icda5f)
  • อัปเดต Extensions API แล้ว (Ica92b)
  • เพิ่มอินเทอร์เฟซสำหรับฟีเจอร์ใหม่ที่อนุญาตให้ฝังกิจกรรมและแสดงกิจกรรมควบคู่กันภายในหน้าต่างงานหลัก (I5711d)
  • ซ่อนตัวสร้างสำหรับ WindowMetrics และ WindowLayoutInfo โปรดใช้ API การทดสอบแทน (I5a1b5)
  • เพิ่ม API เพื่อสร้างออบเจ็กต์ WindowLayoutInfo ปลอม (I4a2fd)

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

  • แก้ไขปัญหาหน่วยความจำรั่วไหล (I3fc79, b/202989046)

เวอร์ชัน 1.0.0-beta02

1 กันยายน 2021

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

ฟีเจอร์ใหม่

  • เพิ่มคำอธิบายประกอบเวอร์ชันทดลองเพื่อกำกับเนื้อหา API เวอร์ชันทดลอง (I9f1b6)
  • เพิ่มวิธีการทดสอบเพื่อสร้าง FoldingFeature ทดสอบที่ยอมรับ Rect วิธีนี้จะช่วยให้ทดสอบได้ง่ายขึ้นเมื่อใช้ Robolectric แทน Activity จริง (Id1cca)

เวอร์ชัน 1.0.0-beta01

18 สิงหาคม 2021

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

ฟีเจอร์ใหม่

  • นำค่าคงที่เก่าออกและทำให้ FoldingFeature เป็นอินเทอร์เฟซ

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

  • นำค่าคงที่เก่าออกและทําให้ FoldFeature เป็นอินเทอร์เฟซ (I9a2d5)

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

  • ไลบรารีที่ขึ้นอยู่กับไลบรารี Test Core ได้รับการอัปเกรดเป็นเวอร์ชัน 1.4.0 แล้ว และจะทำงานร่วมกับแพลตฟอร์ม Android เวอร์ชัน S ได้ (I88b72, b/189353863)

เวอร์ชัน 1.0.0-alpha10

4 สิงหาคม 2021

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

ฟีเจอร์ใหม่

  • เปลี่ยนชื่อ WindowInfoRepo เป็น WindowInfoRepository และปรับคลาส / ไฟล์ที่เกี่ยวข้อง
  • แปลงเมตริกกรอบเวลาปัจจุบันเป็นโฟลว์ใน WindowInfoRepository เนื่องจากค่ามีการเปลี่ยนแปลงเมื่อเวลาผ่านไป
  • เปลี่ยนชื่อ WindowInfoRepoJavaAdapter เป็น WindowInfoRepoCallbackAdapter
  • เพิ่มเมธอดตัวช่วยเพื่อสร้างออบเจ็กต์ FoldingFeature ทดสอบ
  • อัปเดตแพ็กเกจเพื่อจัดกลุ่มคลาสตามฟีเจอร์ที่รองรับ

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

  • เปลี่ยนชื่อ ActivityExt เป็น ActivityExtensions เปลี่ยนจาก Repo เป็น Repository (I61a16)
  • อัปเดตแพ็กเกจสำหรับชั้นเรียน (I23ae2)
  • นํา WindowMetrics ออกจาก WindowInfoRepo (I24663)
  • นำ WindowManager ออกและใช้ WindowInfoRepo
    • ทำให้ WindowBackend เป็นภายใน (I06d9a)
  • แปลงเมตริกกรอบเวลาเป็น FLow
    • เปลี่ยนชื่ออะแดปเตอร์ Java เป็น WindowInfoRepoCallbackAdapter
    • นํา callbackFlow ออกเพื่อไม่ให้มีการใช้ API เวอร์ชันทดลองอีก (Ia4d15)
  • เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ
    • เปลี่ยนจาก occlusionMode เป็น occlusionType (If4cff)

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

  • แก้ไขข้อผิดพลาด ProGuard ที่มีการนําคลังหลักออก
  • แก้ไขข้อผิดพลาดที่ระบบไม่ได้ส่ง WindowLayoutInfo ไปยังผู้ติดตามเพิ่มเติม
  • แก้ไขข้อผิดพลาดที่การเปลี่ยนแปลงการกําหนดค่าจะไม่ทริกเกอร์การอัปเดตฟีเจอร์การพับ

เวอร์ชัน 1.0.0-alpha09

30 มิถุนายน 2021

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

ฟีเจอร์ใหม่

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

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

  • เพิ่มเมธอดตัวช่วยเพื่อสร้างฟีเจอร์การแสดงผลทดสอบ (I3cf54)
    • เปลี่ยนจาก occlusionMode เป็น occlusionType

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

  • ส่งค่าเริ่มต้นเมื่อเพิ่มผู้ใช้งานสตรีมข้อมูลหลายราย

เวอร์ชัน 1.0.0-alpha08

16 มิถุนายน 2021

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

ฟีเจอร์ใหม่

  • เผยแพร่อาร์ติแฟกต์การทดสอบเพื่อให้ทดสอบได้ง่ายขึ้นเมื่อใช้ WindowInfoRepository ใช้ WindowInfoRepository เพื่อรับข้อมูลเกี่ยวกับ DisplayFeatures และ WindowMetrics (I57f66, Ida620)

เวอร์ชัน 1.0.0-alpha07

2 มิถุนายน 2021

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

ฟีเจอร์ใหม่

  • ย้ายข้อมูลไลบรารีหน้าต่างหลักไปยัง Kotlin จะใช้โคโริวทีนและฟังก์ชันการระงับเพื่อแสดงข้อมูลแบบไม่พร้อมกันนับจากนี้ไป
  • เพิ่ม WindowInfoRepo เป็นแหล่งที่มาของการโต้ตอบหลักสําหรับรับ WindowMetrics และสตรีมของ WindowLayoutInfo
  • อาร์ติแฟกต์ window-java ใหม่เพื่อแสดง API ที่ใช้ร่วมกับ Java ได้เพื่อลงทะเบียนและยกเลิกการลงทะเบียนการเรียกกลับ
  • อาร์ติแฟกต์ window-rxjava2 และ window-rxjava3 ใหม่เพื่อแสดง API ที่ปรับให้เข้ากับ RxJava

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

  • เพิ่ม WindowServices เพื่อระบุการพึ่งพาอย่างสม่ำเสมอ
    • เพิ่ม API ที่อิงตาม coroutine เพื่อใช้ข้อมูลเลย์เอาต์หน้าต่าง (Iab70f)
  • ย้ายข้อมูลไลบรารีเครื่องมือจัดการหน้าต่างหลักไปยัง Kotlin (Icca34)

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

  • เพิ่มคลาสข้อมูลใหม่เพื่อแสดงขอบขององค์ประกอบ (I6dcd1)

เวอร์ชัน 1.0.0-alpha06

5 พฤษภาคม 2021

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

ฟีเจอร์ใหม่

  • เราได้เริ่มย้ายข้อมูลไปยัง Kotlin แล้ว และจะเสร็จสิ้นในรุ่นถัดไป
  • DeviceState ถูกนําออกจาก API สาธารณะแล้ว โปรดใช้ FoldingFeature แทน
  • เราได้นํา STATE_FLIPPED ออกจากสถานะ FoldingFeature แล้วเนื่องจากยังไม่มี Use Case ที่รองรับในขณะนี้
  • นอกจากนี้ เรายังได้นํา API อื่นๆ ที่เลิกใช้งานออกด้วย

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

  • การเพิ่ม Kotlin เป็นข้อกําหนด
    • ย้ายข้อมูลไลบรารีหลักไปยัง Kotlin (Idd995)
  • นำเครื่องมือสร้าง DisplayFeature ออกแล้ว (I61fa4)
  • นํา DeviceState ออกจาก Public API แล้ว ให้ใช้ FoldingFeature แทน (Id6079)
  • นําการเรียกกลับสถานะอุปกรณ์ออกจากส่วนขยาย (I5ea83)
  • นำ STATE_FLIPPED ออกจาก FoldingFeature (I9c4e1)
  • นำวิธีการลงทะเบียนที่เลิกใช้งานแล้วออก (Ib381b)

เวอร์ชัน 1.0.0-alpha05

24 มีนาคม 2021

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

ฟีเจอร์ใหม่

เราได้เพิ่มเมธอดที่สะดวกให้กับ FoldingFeature เพื่อให้แอปบอกได้ว่าฟีเจอร์แยกออกจากกัน บดบัง และระบุการวางแนวของบานพับหรือไม่ นอกจากนี้ เรายังซ่อนประเภทบานพับไว้ด้วยเพื่อให้

เราจะนําวิธีการอ่านแบบซิงค์ออกจาก WindowManager เมธอดการอ่านแบบซิงค์มีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากมีเงื่อนไขการแข่งขันโดยนัย ลงทะเบียน Listeners และ Callbacks เพื่อรับข้อมูลอัปเดตเกี่ยวกับ WindowLayoutInfo

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

  • เพิ่มเมธอดที่สะดวกสำหรับการทำงานกับ FoldingFeatures (Ie733f)
  • นำเมธอดการอ่านแบบพร้อมกันออกจาก WindowManager (I96fd4)

เวอร์ชัน 1.0.0-alpha04

10 มีนาคม 2021

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

ฟีเจอร์ใหม่

  • แก้ไขข้อบกพร่องที่ไม่มีการออก WindowLayoutInfo หากไม่มีการใช้งาน OEM ตอนนี้เราส่ง WIndowLayoutInfo ที่ว่างเปล่า
  • แก้ไขข้อบกพร่องที่สถานะจะไม่อัปเดตอย่างถูกต้องหากสถานะบานพับเปลี่ยนแปลงขณะที่แอปทำงานอยู่เบื้องหลัง ตอนนี้สถานะควรสอดคล้องกัน
  • อัปเดตไฟล์ ProGuard เพื่อละเว้นคําเตือนจากข้อกําหนดของรันไทม์

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

  • ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)

เวอร์ชัน 1.0.0-alpha03

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

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

ฟีเจอร์ใหม่

  • ส่งค่าว่างสำหรับ WindowLayoutInfo เมื่อการติดตั้งใช้งาน OEM ว่างเปล่า ซึ่งจะช่วยให้ใช้คลังเพลงในอุปกรณ์ต่างๆ ได้ง่ายขึ้น เนื่องจาก API เป็นแบบไม่พร้อมกัน เราจึงยังคงแนะนำให้แอปเขียนโค้ดป้องกันและแสดงค่าเริ่มต้นหลังจากหมดเวลา เราไม่สามารถรับประกันการติดตั้งใช้งาน OEM และค่าเริ่มต้นอาจล่าช้า

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

  • ส่งค่าว่างเมื่อไม่มีคลัง OEM (Ide935)

เวอร์ชัน 1.0.0-alpha02

27 มกราคม 2021

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

ฟีเจอร์ใหม่

  • เราได้เลิกใช้งาน API บางรายการเพื่อช่วยปรับปรุง API และลดข้อผิดพลาด ตัวอย่างที่เห็นได้ชัด ได้แก่ การนําการดำเนินการอ่านแบบซิงค์ออกจาก WindowManager และการเลิกใช้งาน DeviceState การดำเนินการอ่านแบบซิงค์อาจทำให้เกิดเงื่อนไขการแข่งขันและมี UI ที่ไม่ถูกต้อง

  • เราได้แปลง DisplayFeature เป็นอินเทอร์เฟซที่ฟีเจอร์อื่นๆ จะใช้ในอนาคต ฟีเจอร์แรกคือ FoldingFeature ซึ่งตอนนี้แสดงการพับหน้าจอหรือการบานพับ ข้อมูลนี้ยังมีสถานะของบานพับแทน DeviceState ด้วย

  • WindowMetrics เปิดตัวใน Android 11 เพื่อให้นักพัฒนาแอปมีวิธีง่ายๆ ในการค้นหาเมตริกเกี่ยวกับหน้าต่าง เช่น ตำแหน่งและขนาดบนหน้าจอ รวมถึงส่วนแทรกของระบบ เราได้พอร์ต API นี้ไปยังเวอร์ชันเก่าในรุ่นนี้เพื่อให้นักพัฒนาแอปใช้ประโยชน์จาก WindowMetrics และรองรับ Android เวอร์ชันเก่าต่อไปได้ คุณดู WindowMetrics ได้จาก WindowManager#getCurrentWindowMetrics() และ WindowManager#getMaximumWindowMetrics() API

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

  • เลิกใช้งาน API ที่จะนําออกในรุ่นอัลฟ่าถัดไป (Ib7cc4)
  • อัปเดต ExtensionInterface เพื่อยอมรับการอ้างอิงกิจกรรมที่ชัดเจน (I07ded)
  • แนะนํา WindowMetrics API (I3ccee)
  • นําวิธีการอ่านแบบซิงค์ออกจาก WindowManager (I69983)
  • ทําให้แพ็กเกจ ExtensionWindowBackend ได้รับการปกป้อง (Ied208)

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

  • อัปเดต ExtensionInterface API เพื่อยอมรับบริบทภาพ (I8e827)

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

  • ผสาน DeviceState และ WindowLayoutInfo เพื่อให้เข้าถึงข้อมูลได้ง่ายขึ้น (Id34f4)

เวอร์ชัน 1.0.0-alpha01

27 กุมภาพันธ์ 2020

androidx.window:window:1.0.0-alpha01 และ androidx.window:window-extensions:1.0.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการคอมมิตเหล่านี้ นี่เป็นรุ่นแรกของไลบรารีตัวจัดการหน้าต่าง

ฟีเจอร์ใหม่

  • DisplayFeature: API ใหม่นี้จะระบุการหยุดชะงักของพื้นผิวหน้าจอแบบแบนต่อเนื่อง เช่น บานพับหรือรอยพับ
  • DeviceState: API ใหม่นี้จะระบุลักษณะการวางโทรศัพท์ปัจจุบันจากรายการลักษณะการวางที่กําหนด (เช่น CLOSED, OPENED, HALF_OPENED เป็นต้น)