ผู้จัดการหน้าต่าง

ไลบรารี Jetpack WindowManager เปิดใช้แอปพลิเคชัน เพื่อให้นักพัฒนาซอฟต์แวร์รองรับรูปแบบของอุปกรณ์ใหม่ๆ และสภาพแวดล้อมแบบหลายหน้าต่างได้ ไลบรารีจะมีแพลตฟอร์ม API ที่ใช้ร่วมกันสําหรับ API เวอร์ชัน 14 ขึ้นไป รุ่นแรกมีเป้าหมายเป็นอุปกรณ์แบบพับได้ แต่เวอร์ชันในอนาคตจะขยายไปสู่ ประเภทการแสดงผลและคุณลักษณะของหน้าต่างมากขึ้น
อัปเดตล่าสุด รุ่นที่เสถียร ตัวเลือกถอนการอ้างสิทธิ์ รุ่นเบต้า รุ่นอัลฟ่า
4 กันยายน 2024 1.3.0 - - 1.4.0-alpha02

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

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

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

Groovy

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

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

  • API ใหม่ WindowInfoTracker#supportedPostures:

    • API ที่ระบุว่าอุปกรณ์รองรับโหมด TableTop สำหรับอุปกรณ์แบบพับได้หรือไม่ เพิ่ม WindowAreaSessionDisplayer#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)

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

  • แก้ไขข้อบกพร่องบนอุปกรณ์บางอย่างที่ระบบจะส่งคืน UNAVAILABLE แทนที่จะเป็น "ACTIVE" เมื่อเซสชันกำลังดำเนินอยู่
  • ยกเลิกการรองรับ 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)
  • แนะนำอะแดปเตอร์ Callback สำหรับ embeddedActivityWindowInfo Flow API (Ida77f)
  • เพิ่มอะแดปเตอร์ Callback สำหรับOverlayInfoflow API (I7264f)
  • แนะนำ WindowSdkExtensionsRule เพื่อลบล้าง extensionsVersion สำหรับการทดสอบ (Ifb928)
  • - ย้ายข้อมูล #setLaunchingActivityStack ไปยังแพ็กเกจเพื่อให้สอดคล้องกับการใช้งาน 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)
  • - กำลังเพิ่ม PIN/เลิกปักหมุด API ActivityStack androidx.Window ด้านบน
    • กำลังอัปเดตแอปเดโมเพื่ออนุญาตการปักหมุด/เลิกปักหมุด 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 สำหรับ Window Size Class

เวอร์ชัน 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 ที่กำหนดเอง (รหัส1143)

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

  • แก้ไข 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 รุ่นทดลองเพื่ออนุญาตให้มีการเปลี่ยนแปลง 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 คงที่เพื่อรองรับการทดสอบ 1 หน่วยเกี่ยวกับการฝังกิจกรรม

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

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

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

  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ของการเลือกไม่ใช้สำหรับการลบล้างการปรับขนาดแบบบังคับ (Ie7ab1)
  • นํา SESSION_STATE_CONTENT_INVISIBLE ออกจากอินเทอร์เฟซส่วนขยาย (I6ed19)
  • ปรับให้ ActivityEmbeddingRule คงที่เพื่อรองรับการทดสอบ 1 หน่วยเกี่ยวกับการฝังกิจกรรม (I8d6b6)
  • การเพิ่มคุณสมบัติการปฏิบัติตามข้อกำหนดของการเลือกไม่ใช้สำหรับการลบล้างสัดส่วนภาพขั้นต่ำ (I66390)
  • นำ WindowArea API ที่เลิกใช้งานแล้ว (Ieb67c) ออก
  • เปลี่ยนชื่อพร็อพเพอร์ตี้ลูปคำขอการวางแนวเป็น PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED (Ie2fbd)
  • อัปเดตชื่อคงที่ของเซสชันพื้นที่หน้าต่าง (I83675)
  • การเพิ่มพร็อพเพอร์ตี้ความเข้ากันได้ของการเลือกไม่ใช้ที่ละเว้นลูปคำขอการวางแนวเมื่อตรวจพบ (I0a7a2)
  • เพิ่ม WindowAreaComponent#STATUS_ACTIVE เพื่อแสดงว่าฟีเจอร์นี้ทำงานอยู่แล้ว (I62bc3)
  • เพิ่ม API ของ RearDisplayPresentationMode (I0401c)
  • นำ API สีพื้นหลังออกเพื่อให้เสถียร (I34c3e)
  • ซ่อน 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 คงที่เพื่อรองรับการทดสอบ 1 หน่วยเกี่ยวกับการฝังกิจกรรม (I8d6b6)
  • WindowMetrisCalculatorTestRule คงที่ซึ่งอนุญาตให้ใช้เมตริก Stub สำหรับการทดสอบ 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()เพื่อตรวจสอบว่าอุปกรณ์รองรับ API ของ SplitAttributesCalculator หรือไม่
  • เพิ่มช่อง EmbeddingRule#tag แล้ว
  • การอัปเดต API ใน SplitRule:
    • เพิ่ม defaultSplitAttributes แล้ว — กำหนดเลย์เอาต์การแยกเริ่มต้นของการแยก แทนที่ splitRatio และ layoutDirection
    • เพิ่มการแปลของคุณสมบัติ XML splitRatio และ splitLayoutDirection ใน defaultSplitAttributes
    • เปลี่ยนการกำหนดขนาดขั้นต่ำไปใช้ความหนาแน่นของพิกเซลอิสระ (dp) แทนพิกเซลแล้ว
    • เพิ่ม minHeightDp ซึ่งมีค่าเริ่มต้น 600dp
    • เปลี่ยน minWidth เป็น minWidthDp โดยมีค่าเริ่มต้นเป็น 600 dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp โดยมีค่าเริ่มต้นเป็น 600 dp
    • เพิ่ม maxAspectRatioInHorizontal ด้วยค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ด้วยค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ซ้อนกันของ FinishBehavior เพื่อแทนที่ค่าคงที่ลักษณะการทำงานให้เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาส SplitPairRule และ SplitPlaceholderRule ของเครื่องมือสร้างที่ซ้อนกัน
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมที่เกี่ยวข้องกับการแบ่งแล้ว

เลย์เอาต์หน้าต่าง

  • เพิ่มการรองรับบริบท 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
    • ตรวจสอบว่าการแบ่งปัจจุบันซ้อนกันหรือไม่ โดยทำดังนี้ 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
  • ต้องย้ายข้อมูลคงที่ลักษณะการทำงานให้เสร็จสิ้นเป็นค่าคงที่คลาสที่เหมือน enum FinishBehavior:
    • 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 ใช้ค่าคงที่ที่เหมือน enum FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกหน้าจอในอุปกรณ์แนวตั้ง
  • การย้ายข้อมูล SplitPlaceholder.Builder รายการ:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent ส่วนพร็อพเพอร์ตี้อื่นๆ จะย้ายไปที่ตัวตั้งค่า ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholder ใช้ค่าคงที่ที่เหมือน enum 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()
    • 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 โดยมีค่าเริ่มต้นเป็น 600 dp
    • เปลี่ยน minSmallestWidth เป็น minSmallestWidthDp โดยมีค่าเริ่มต้นเป็น 600 dp
    • เพิ่ม maxAspectRatioInHorizontal ด้วยค่าเริ่มต้น ALWAYS_ALLOW
    • เพิ่ม maxAspectRatioInPortrait ด้วยค่าเริ่มต้น 1.4
    • กำหนดคลาสที่ซ้อนกันของ FinishBehavior เพื่อแทนที่ค่าคงที่ลักษณะการทำงานให้เสร็จสิ้น
    • ใช้การเปลี่ยนแปลงพร็อพเพอร์ตี้กับคลาส Builder ที่ฝังของ SplitPairRule และ SplitPlaceholderRule แล้ว
  • แทนที่ SplitInfo#getSplitRatio() ด้วย SplitInfo#getSplitAttributes() เพื่อให้ข้อมูลเพิ่มเติมที่เกี่ยวข้องกับการแบ่งแล้ว

เลย์เอาต์หน้าต่าง

  • เพิ่มการรองรับบริบท 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
    • ตรวจสอบว่าการแบ่งปัจจุบันซ้อนกันหรือไม่ โดยทำดังนี้ 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
  • ต้องย้ายข้อมูลคงที่ลักษณะการทำงานให้เสร็จสิ้นเป็นค่าคงที่คลาสที่เหมือน enum FinishBehavior:
    • 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 ใช้ค่าคงที่ที่เหมือน enum FinishBehavior ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitRule"
    • ใช้ setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) เพื่อแสดงการแยกหน้าจอในอุปกรณ์แนวตั้ง
  • การย้ายข้อมูล SplitPlaceholder.Builder รายการ:
    • มีเฉพาะพารามิเตอร์ filters และ placeholderIntent ส่วนพร็อพเพอร์ตี้อื่นๆ จะย้ายไปที่ตัวตั้งค่า ดูรายละเอียดได้ที่ "การย้ายข้อมูล SplitPairRule.Builder"
    • setFinishPrimaryWithPlaceholder ใช้ค่าคงที่ที่เหมือน enum 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)
  • กำหนดให้ API บริบท UI WindowLayoutInfo เป็นเวอร์ชันทดลอง (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
    • เครื่องมือสร้าง ActivityStack (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 ไปยัง Singleton RuleController ปัจจัยต่างๆ มีดังนี้
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. ดึงข้อมูล #isActivityEmbedded จาก SplitController ไปยังซิงเกิลตัน ActivityEmbeddingController ปัจจัยต่างๆ มีดังนี้
    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 เพื่อใช้ขนาดขั้นต่ำหรือไม่ก็ได้ (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 ทดลองออกจาก API จำนวน ActivityEmbedding รายการแล้ว
  • ซ่อนตัวสร้าง ActivityRule เนื่องจาก Builder เป็นวิธีที่แนะนำในการสร้าง
  • เพิ่มวิธีทดสอบเพื่อรับ WindowInsets ใน WindowMetrics
  • อัปเดต SplitPlaceholderFinishBehavior เพื่อป้องกันไม่ให้ตัวยึดตำแหน่งเสร็จสิ้น การสร้างตัวยึดตำแหน่งให้เสร็จสิ้นทำให้เกิดลักษณะการทำงานบางอย่างที่สับสน

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

  • ทำให้ค่า isEmpty เป็นแบบสาธารณะเพื่อแทนที่ isEmpty สนุกๆ
  • เปลี่ยนชื่อกิจกรรมพารามิเตอร์ ActivityStack เป็น activitiesInProcess (Ia5055)
  • นํา ActivityFilter#matchesClassName และ ActivityFilter#matchesClassNameOrWildCard ออก เนื่องจากสร้างความสับสน
  • เพิ่ม ActivityFilter#componentName abd ActivityFilter#intentAction เพื่อให้ผู้โทรแยกตัวกรองต่างๆ ได้ (I41f22)
  • นำ API ของ @Deprecated ออกจาก API ทดลอง (I216b3)
  • นำ @ExperimentalWindowApi ออกสำหรับ API การฝังกิจกรรม (I69ebe)
  • ซ่อนตัวสร้าง ActivityRule ใช้ Builder แทน (If4eb6)
  • เพิ่ม API เพื่อตรวจสอบว่ากิจกรรมเป็นส่วนหนึ่งของ ActivityFilter หรือไม่ (Ia43cf)
  • อัปเดตไฟล์ API เพื่อแสดงการเปลี่ยนแปลงในคลาส WindowMetrics และ WindowMetricsCalculatorCompat (I667fe)
  • อัปเดต ActivityEmbedding พร็อพเพอร์ตี้ Javadoc และชื่อคลาส (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 เป็นทรัพยากร Dependency ของเมธอด 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)
  • อัปเดต 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 แทนที่จะเป็นกิจกรรมจริง (รหัส 1cca)

เวอร์ชัน 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 เป็น Activity Extensions เปลี่ยนจากที่เก็บเป็นที่เก็บ (I61a16)
  • อัปเดตแพ็กเกจสำหรับชั้นเรียน (I23ae2)
  • นำ WindowMetrics ออกจาก WindowInfoRepo (I24663)
  • นำ WindowManager ออกและใช้ WindowInfoRepo
    • ทำให้ WindowBackend เป็นแบบภายใน (I06d9a)
  • แปลงเมตริกกรอบเวลาเป็นโฟลว์
    • เปลี่ยนชื่ออะแดปเตอร์ Java เป็น WindowInfoRepoCallbackAdapter
    • นำ CallbackFlow ออกเพื่อไม่ให้มีการใช้ API ทดลองอีก (Ia4d15)
  • เพิ่มเมธอด Helper เพื่อสร้างฟีเจอร์จอแสดงผลทดสอบ
    • เปลี่ยนจาก occlusionMode เป็น occlusionType (If4cff)

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

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

เวอร์ชัน 1.0.0-alpha09

30 มิถุนายน 2021

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

ฟีเจอร์ใหม่

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

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

  • เพิ่มเมธอด Helper เพื่อสร้างฟีเจอร์จอแสดงผลทดสอบ (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 ได้เพื่อลงทะเบียนและยกเลิกการลงทะเบียน Callback
  • อาร์ติแฟกต์ window-rxjava2 และ window-rxjava3 ใหม่เพื่อแสดง API ที่ปรับเปลี่ยนของ RxJava

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

  • เพิ่ม WindowServices เพื่อระบุทรัพยากร Dependency ในแบบเดียวกัน
    • เพิ่ม 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 เป็นทรัพยากร Dependency
    • ย้ายข้อมูลไลบรารีหลักไปยัง Kotlin (Idd995)
  • นำเครื่องมือสร้าง DisplayFeature ออกแล้ว (I61fa4)
  • นำ DeviceState ออกจาก API สาธารณะแล้ว ใช้ FoldingFeature แทน (Id6079)
  • นำ Callback ของสถานะอุปกรณ์ออกจากส่วนขยาย (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 วิธีการอ่านแบบซิงโครนัสมีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากมีเงื่อนไขเกี่ยวกับเชื้อชาติโดยนัย ลงทะเบียน Listener และ Callback เพื่อรับการอัปเดตเกี่ยวกับ 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 ให้ละเว้นคำเตือนจากทรัพยากร Dependency ของรันไทม์

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

  • ปล่อยค่าว่างเมื่อไม่มีไลบรารี 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 ได้ผ่าน API ของ WindowManager#getCurrentWindowMetrics() และ WindowManager#getต่อยอดWindowMetrics()

การเปลี่ยนแปลง 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 มีคอมมิตเหล่านี้ นี่เป็นรุ่นแรกของไลบรารี Window Manager

ฟีเจอร์ใหม่

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