กราฟิก

  
ใช้ประโยชน์จากสิ่งอำนวยความสะดวกด้านกราฟิกในแพลตฟอร์ม Android หลายรุ่น

ตารางนี้แสดงอาร์ติแฟกต์ทั้งหมดในกลุ่ม androidx.graphics

อาร์ติแฟกต์ รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
กราฟิกหลัก 1.0.3 - - -
เส้นทางกราฟิก 1.0.1 - - -
กราฟิก - รูปร่าง 1.0.1 - 1.1.0-beta01 -
ไลบรารีนี้ได้รับการอัปเดตล่าสุดเมื่อวันที่ 30 กรกฎาคม 2025

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

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

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

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.3"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-beta01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.3")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.1.0-beta01")
}

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

ความคิดเห็น

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

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

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

ไม่มีบันทึกประจำรุ่นสำหรับอาร์ติแฟกต์นี้

กราฟิกเวอร์ชัน 1.1

เวอร์ชัน 1.1.0-beta01

30 กรกฎาคม 2025

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

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

  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เพิ่มเป้าหมายการคอมไพล์ mingwX64, js และ wasm (I2c46a)

เวอร์ชัน 1.1.0-alpha01

11 ธันวาคม 2024

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

ฟีเจอร์ใหม่

  • ปรับปรุงการสาธิตหลักให้เป็นเครื่องมือแก้ไขรูปร่างทั่วไป ซึ่งจะช่วยให้คุณนำเข้ารูปร่างจากเส้นทาง SVG แก้ไขฟีเจอร์ที่ตรวจพบด้วยตนเองในกรณีที่กระบวนการอัตโนมัติพลาด และส่งออกผลลัพธ์เป็นโค้ดที่ใช้ในโค้ดเวอร์ชันที่ใช้งานจริงได้ (I1ac13)
  • แทนที่การวัดมุมสำหรับความคืบหน้าของเส้นขอบรูปร่างด้วยการวัดความยาวเส้นโค้ง ซึ่งจะช่วยให้ใช้รูปร่างที่ซับซ้อนมากขึ้นสำหรับการมอร์ฟได้ (I75478) , I390dd
  • ปรับปรุงอัลกอริทึมการแมปฟีเจอร์เพื่อให้การมอร์ฟดูเป็นธรรมชาติมากขึ้น (I83287)

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

  • เพิ่มการนำเข้าเส้นทาง SVG และฟีเจอร์ Serializer โดยปกติแล้วขั้นตอนจะเป็นดังนี้
    • ใช้ SvgPathParser.parseFeatures() ใหม่เพื่อแปลงเส้นทาง SVG (ค่าของแอตทริบิวต์ d ในองค์ประกอบ path ของ SVG) เป็น List<Feature>
    • ซึ่งสามารถแก้ไขได้ จากนั้นจะแปลงเป็นสตริงด้วย FeatureSerializer.serialize()
    • สตริงที่ได้สามารถใช้ในโค้ดเวอร์ชันที่ใช้งานจริงได้โดยการนำเข้าด้วย FeatureSerializer.parse()
    • โปรดทราบว่าขั้นตอนที่ 1 และ 2 จะทำเพียงครั้งเดียว และสามารถทำได้ด้วยแอปใหม่ ส่วนโค้ดเวอร์ชันที่ใช้งานจริงควรทำเพียงขั้นตอนที่ 3 (I9bd00, b/371196190), (Ic3842), (If68ed), (I10251)
  • แสดงฟีเจอร์รูปหลายเหลี่ยมและประเภทฟีเจอร์ ตอนนี้คุณสามารถสร้าง RoundedPolygons ทั่วไปเพิ่มเติมได้ด้วยตัวสร้างพื้นฐานที่ใช้ List<Features> ฟีเจอร์ส่วนใหญ่คือรายการเส้นโค้ง Cubic Bezier แต่มีการติดแท็กเพื่อช่วยให้อัลกอริทึม Morph จับคู่ระหว่างรูปร่างเริ่มต้นและรูปร่างสิ้นสุด (มุมนูนจะจับคู่กับมุมนูน และมุมเว้าจะจับคู่กับมุมเว้า) (I61e76), (I1fc5c)
  • เพิ่มการรองรับเป้าหมาย watchosDeviceArm64 KMP และเป้าหมาย kotlin 1.9 (Icf15d, b/364652024)

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

  • แก้ไขกรณีขอบเมื่อฟีเจอร์สุดท้ายว่างเปล่า (I390dd)
  • ทำให้RoundedPolygonมีความแข็งแกร่งมากขึ้น (Ib862c, b/360888486)
  • แก้ไขข้อบกพร่องในการเริ่มต้น RoundedPolygon (I83ddb)
  • แก้ไขข้อผิดพลาดในอัลกอริทึมเพื่อประมาณจุดศูนย์กลางของรูปหลายเหลี่ยม (Ida147)

รูปร่างกราฟิกเวอร์ชัน 1.0

เวอร์ชัน 1.0.1

4 กันยายน 2024

androidx.graphics:graphics-shapes:1.0.1 androidx.graphics:graphics-shapes-android:1.0.1 และ androidx.graphics:graphics-shapes-desktop:1.0.1 ออกอากาศแล้ว เวอร์ชัน 1.0.1 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.0.0

21 สิงหาคม 2024

androidx.graphics:graphics-shapes:1.0.0 androidx.graphics:graphics-shapes-android:1.0.0 และ androidx.graphics:graphics-shapes-desktop:1.0.0 ออกอากาศแล้ว เวอร์ชัน 1.0.0 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.0.0-rc01

24 กรกฎาคม 2024

androidx.graphics:graphics-shapes:1.0.0-rc01 androidx.graphics:graphics-shapes-android:1.0.0-rc01 และ androidx.graphics:graphics-shapes-desktop:1.0.0-rc01 ออกอากาศแล้ว เวอร์ชัน 1.0.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.0.0-beta01

1 พฤษภาคม 2024

androidx.graphics:graphics-shapes:1.0.0-beta01 androidx.graphics:graphics-shapes-android:1.0.0-beta01 และ androidx.graphics:graphics-shapes-desktop:1.0.0-beta01 ออกอากาศแล้ว เวอร์ชัน 1.0.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • อนุญาตให้หมุนรูปร่างล่วงหน้าเพื่อเริ่มที่จุดอื่น การเปลี่ยนแปลงนี้ช่วยให้pillStar เริ่มเส้นโค้งจากจุดที่ไม่ใช่ค่าเริ่มต้นบนขอบได้ ซึ่งจะมีประโยชน์เมื่อสร้างภาพเคลื่อนไหวการลากเส้นของเส้นทางรูปร่าง เพื่อเริ่มวาดจากตำแหน่งที่เฉพาะเจาะจงบนโครงร่างของรูปร่าง (Ifbb4d, b/324303807)
  • เพิ่มฟังก์ชัน calculateBounds() ลงในมอร์ฟ ซึ่งเทียบเท่ากับฟังก์ชันเดียวกันใน RoundedPolygon (I8a3b6, b/325463575)

เวอร์ชัน 1.0.0-alpha05

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

androidx.graphics:graphics-shapes:1.0.0-alpha05 androidx.graphics:graphics-shapes-android:1.0.0-alpha05 และ androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • ตอนนี้ไลบรารีมีฟังก์ชัน pill() และ pillStar() ใหม่เพื่อให้สร้างรูปร่างกลม/ดาวเหล่านี้ได้ง่ายๆ นอกจากนี้ ยังมี API ใหม่สำหรับการคำนวณขอบเขตที่แน่นอนที่จำเป็นสำหรับรูปร่าง (ขอบเขตก่อนหน้านี้เป็นเพียงค่าประมาณที่อิงตามจุดยึดและจุดควบคุมของเส้นโค้งเบซิเยร์พื้นฐาน) รวมถึงขอบเขตสูงสุดที่เป็นไปได้ ซึ่งอาจเป็นประโยชน์ในการกำหนดขนาดของคอนเทนเนอร์ที่เก็บรูปร่างนั้นไว้หากจะหมุนรูปร่างภายในคอนเทนเนอร์ (I71827)

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

  • ตอนนี้มีตัวเลือกเพิ่มเติมสำหรับการดึงขอบเขตที่แน่นอนและสูงสุด (I6d49f, b/317286450)

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

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

เวอร์ชัน 1.0.0-alpha04

13 ธันวาคม 2023

androidx.graphics:graphics-shapes:1.0.0-alpha04 androidx.graphics:graphics-shapes-android:1.0.0-alpha04 และ androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • รุ่นนี้มีการเปลี่ยนแปลง API หลายอย่าง รวมถึงการแก้ไขข้อบกพร่อง
  • การเปลี่ยนแปลง API หลายอย่างทำให้ไลบรารีรูปร่างเป็นมิตรกับ KMP ซึ่งจะช่วยให้เรียกใช้จากโค้ดที่ไม่ใช่ Android ได้ง่ายขึ้น (เช่น โค้ด Compose ที่ไม่ขึ้นอยู่กับ Android) ตัวอย่างเช่น ไม่มีประเภท Android ใน API เช่น ประเภท PointF, Matrix และ Path ก่อนหน้า
  • นอกจากนี้ เรายังได้ทำการเปลี่ยนแปลง API และการติดตั้งใช้งานหลายอย่างเพื่อเหตุผลด้านประสิทธิภาพ โดยเฉพาะอย่างยิ่งเพื่อลดการจัดสรร (และการรวบรวม) ออบเจ็กต์ ตัวอย่างเช่น การย้ายจาก PointF ไปยังพารามิเตอร์ Float แยกกันจะช่วยหลีกเลี่ยงการจัดสรรโครงสร้าง PointF ชั่วคราวจำนวนมากเพื่อเก็บจุดยอดเหล่านั้น

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

  • แทนที่ Morph.asMutableCubics ด้วยฟังก์ชันเพื่อวนซ้ำใน MutableCubics เปลี่ยนอินเทอร์เฟซฟังก์ชัน PointTransformer ตอนนี้จะใช้พิกัด x และ y ของ Point และแสดงผล TransformedResult (ซึ่งสร้างขึ้นด้วยพิกัด x และ y ที่แปลงแล้ว) (I6719e)
  • นำตัวสร้าง Cubic สาธารณะออกและทำให้เป็นฟังก์ชันของ Factory (I409ce)
  • เพิ่ม API การเปลี่ยนรูปแบบและการวาดภาพเฉพาะ Android (I079f6, b/292289543)
  • นำทรัพยากร Dependency ของ Android ออก (Iadc1c, b/292289543)
  • ตอนนี้ชื่อพร็อพเพอร์ตี้ของ Anchor และ Control มีความสมเหตุสมผลมากขึ้น (If13bd, b/294562941)
  • PointF พารามิเตอร์เปลี่ยนเป็น Float คู่ (Id4705, b/276466399, b/290254314)
  • ตอนนี้ระบบจะส่ง progress ไปยังคำสั่งวาด Morph โดยตรง (Icdca2)

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

  • แก้ไขข้อบกพร่องเมื่อสร้างรูปร่างขนาดใหญ่ (I4fd66, b/313497325)

เวอร์ชัน 1.0.0-alpha03

7 มิถุนายน 2023

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

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

  • เพิ่มฟังก์ชัน RoundedPolygon.rectangle() ใหม่ (I78e7e, b/280322189)
  • ตอนนี้ฟังก์ชัน Star และ Circle จะไม่มีตัวพิมพ์ใหญ่และเรียกใช้ผ่านออบเจ็กต์คู่ของ RoundedPolygon เช่น RoundedPolygon.star(...)(I14735)

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

  • แก้ไขข้อบกพร่องในการปรับให้เรียบ (Ibf894)
  • แก้ไขข้อบกพร่องที่เกิดขึ้นเมื่อรูปร่างเริ่มต้นและรูปร่างสิ้นสุดเหมือนกัน จัดสรรพื้นที่ว่างด้านข้างให้ดีขึ้นสำหรับการตัด โดยใช้พื้นที่ว่างสำหรับการปัดเศษก่อน แล้วจึงใช้สำหรับการปรับให้เรียบหากมีพื้นที่เหลือ (Ibd320, b/277936300)

เวอร์ชัน 1.0.0-alpha02

19 เมษายน 2023

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

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

  • ระบบได้ผสานรวมคลาสระดับบนสุดของรูปหลายเหลี่ยมเข้ากับคลาสย่อย RoundedPolygon แล้ว ตอนนี้รูปหลายเหลี่ยมทั้งหมดจึงเป็นรูปหลายเหลี่ยมโค้ง [ไม่บังคับ]
  • ตอนนี้ฟังก์ชัน Star (ซึ่งยังคงแสดงผล RoundedPolygon เช่นเดิม) จะใช้ค่า innerRadius แทนพารามิเตอร์ innerRadiusRatio ก่อนหน้า โดยใช้หน่วยเดียวกันกับพารามิเตอร์รัศมีที่มีอยู่ ซึ่งจะช่วยให้การทำงานง่ายขึ้นและมีความสอดคล้องกันมากขึ้น นอกจากนี้ เรายังเปลี่ยนชื่อพารามิเตอร์ numOuterVertices เป็น numVerticesPerRadius เพื่อให้ชัดเจนว่าใช้หมายเลขเดียวกันกับทั้งรัศมีด้านในและด้านนอก
  • ก่อนหน้านี้มีการระบุว่า CornerRounding.radius สัมพันธ์กับขนาดของรูปหลายเหลี่ยม แต่ค่าดังกล่าวเป็น (และควรเป็น) ค่าสัมบูรณ์ ไม่ใช่ค่าสัมพัทธ์ เราได้อัปเดตเอกสารและแก้ไขคำอธิบายประกอบที่จำกัดค่าสูงสุดไว้ที่ 1.0 แล้ว

เวอร์ชัน 1.0.0-alpha01

5 เมษายน 2023

Graphics-Shapes เป็นไลบรารีใหม่ที่ช่วยให้สร้างและแสดงผลรูปร่างหลายเหลี่ยมแบบกลม รวมถึงการมอร์ฟ (ภาพเคลื่อนไหว) อย่างง่ายและอัตโนมัติระหว่างรูปร่างต่างๆ ได้อย่างง่ายดาย

androidx.graphics:graphics-shapes:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชันนี้เผยแพร่จากสาขาภายใน

ฟีเจอร์ใหม่

  • ใช้ Polygon API เพื่อสร้างรูปหลายเหลี่ยมปกติและรูปดาวที่มีจำนวนจุดยอดที่ต้องการ
  • ใช้พารามิเตอร์ CornerRounding ที่ไม่บังคับเพื่อระบุรัศมีการปัดเศษและพารามิเตอร์การปรับมุมให้เรียบ ซึ่งจะทำให้ได้รูปหลายเหลี่ยมที่มีมุมโค้งมน
  • ใช้ Morph(Polygon, Polygon) API ใหม่เพื่อคำนวณรูปร่าง "มอร์ฟ" โดยอัตโนมัติ ซึ่งสามารถตั้งค่าความคืบหน้าจาก 0 ถึง 1 เพื่อเคลื่อนไหวระหว่างรูปร่างเริ่มต้นและรูปร่างสิ้นสุด ทำให้ความคืบหน้าเคลื่อนไหวไปเรื่อยๆ โดยวาดผลลัพธ์ในทุกเฟรมเพื่อสร้างภาพเคลื่อนไหวที่ราบรื่นระหว่างรูปร่างกลมใหม่เหล่านี้

เส้นทางกราฟิกเวอร์ชัน 1.0

เวอร์ชัน 1.0.1

1 พฤษภาคม 2024

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

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

  • การปรับปรุงแฟล็กคอมไพเลอร์

เวอร์ชัน 1.0.0

6 มีนาคม 2024

androidx.graphics:graphics-path:1.0.0 ได้รับการเผยแพร่แล้ว

เวอร์ชัน 1.0.0-rc01

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

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

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

  • ปรับปรุงประสิทธิภาพของ PathIterator ใน API < 34 (Id4629)

เวอร์ชัน 1.0.0-beta02

10 มกราคม 2024

การเปลี่ยนแปลงในรุ่นนี้มุ่งเน้นไปที่การลดขนาดของไลบรารี ซึ่งมีขนาดใหญ่กว่าที่จำเป็นเนื่องจากข้อสันนิษฐานที่โค้ดเนทีฟสร้างขึ้น

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

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

  • ลดขนาดของ libandroidx.graphics.path.so ลง 96% (I71397)
  • ลดขนาดของ libandroidx.graphics.path.so ลง 5% (I2da7c)
  • ลดขนาดคอมโพเนนต์ดั้งเดิมของ androidx.graphics:graphics-path ลง 43% (I8e40d)

เวอร์ชัน 1.0.0-beta01

29 พฤศจิกายน 2023

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

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

  • นำการใช้งาน isAtLeastU() API เวอร์ชันทดลองออก (Ie9117, b/289269026)

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

  • การแก้ไขและการปรับปรุงประสิทธิภาพต่างๆ รวมถึงวิธีที่ไลบรารีจัดการกับรูปกรวย

เวอร์ชัน 1.0.0-alpha02

7 มิถุนายน 2023

androidx.graphics:graphics-path:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชันนี้ได้รับการพัฒนาในสาขาภายใน

ฟีเจอร์ใหม่

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

เวอร์ชัน 1.0.0-alpha01

22 มีนาคม 2023

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

ฟีเจอร์ใหม่

  • ไลบรารีใหม่นี้ช่วยให้คุณค้นหาข้อมูลเส้นทางผ่าน PathIterator API ใหม่ได้ เมื่อใช้ API นี้ ผู้เรียกจะวนซ้ำผ่านทุกกลุ่มของออบเจ็กต์เส้นทางเพื่อพิจารณาการดำเนินการและข้อมูลสำหรับกลุ่มเหล่านั้นได้
  • ไลบรารีใช้ API ที่คล้ายกันซึ่งเปิดตัวใน Android 14 Preview แต่ API เวอร์ชัน AndroidX นี้ยังใช้ได้กับเวอร์ชันย้อนกลับไปจนถึง API 21 ด้วย

Graphics Core เวอร์ชัน 1.0

เวอร์ชัน 1.0.3

26 มีนาคม 2025

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

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

  • แก้ไขการกะพริบแบบเต็มหน้าจอขณะวาดบนอุปกรณ์บางรุ่นที่มี API<33

เวอร์ชัน 1.0.2

16 ตุลาคม 2024

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

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

  • แก้ไขปัญหาที่ระบบยังคงจัดการอินสแตนซ์ SurfaceControl แม้ว่าจะมีการเผยแพร่แล้วก็ตาม
  • แก้ไขปัญหาที่ระบบจะไม่ปล่อยอินสแตนซ์ HardwareBuffer ที่กำลังนำเสนอหลังจากทิ้งการอ้างอิงที่มีเวลาในการตอบสนองต่ำ
  • แก้ไขปัญหาการกะพริบบนอุปกรณ์ Android 14 ขึ้นไปบางรุ่นที่ไม่รองรับแฟล็กการใช้งานบัฟเฟอร์ด้านหน้า

เวอร์ชัน 1.0.1

4 กันยายน 2024

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

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

  • แก้ไขปัญหาที่ระบบไม่ปล่อยทรัพยากรหน่วยความจำในบางครั้ง

เวอร์ชัน 1.0.0

29 พฤษภาคม 2024

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

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

  • การเปิดตัวไลบรารีกราฟิกหลักอย่างเป็นทางการ รวมการแก้ไขข้อบกพร่องเล็กน้อยและการปรับปรุงประสิทธิภาพจาก 1.0.0-rc01

เวอร์ชัน 1.0.0-rc01

17 เมษายน 2024

androidx.graphics:graphics-core:1.0.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชันนี้ได้รับการพัฒนาในสาขาภายใน

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

  • แก้ไขปัญหาที่อาจทำให้มีการปิดตัวอธิบายไฟล์ซ้ำกับ CanvasBufferedRendererAPI ในอุปกรณ์ Android บางรุ่นที่ใช้ Android 14
  • แก้ไขปัญหาที่ FrameBuffer ลบอินสแตนซ์ของ Framebuffer ไม่ถูกต้อง

เวอร์ชัน 1.0.0-beta01

13 ธันวาคม 2023

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

ฟีเจอร์ใหม่

  • เปิดตัว LowLatencyCanvasViewAPI ใหม่เพื่อรองรับการแสดงผลที่มีเวลาในการตอบสนองต่ำด้วย API กราฟิก 2 มิติ (Canvas + Paint) ของ Android ภายในลำดับชั้นของ View
  • เปิดตัว CanvasBufferedRenderer API เพื่อรองรับการแสดงผล Canvas ที่เร่งด้วยฮาร์ดแวร์ไปยัง HardwareBuffer ซึ่งใช้ในการวาดส่วนหนึ่งของอินเทอร์เฟซผู้ใช้ลงในบัฟเฟอร์ที่แปลงเป็นบิตแมปได้โดยใช้ Bitmap.wrapHardwareBuffer API

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

  • อัปเดต CanvasBufferRenderer#releaseBuffer API ให้มีพารามิเตอร์รั้วซึ่งไม่บังคับ อัปเดตเอกสารประกอบเพื่ออธิบายเมื่อมีการส่งคืน RenderResult#fence (If1ea7)
  • เพิ่มdraw method ไปยัง RenderRequest เพื่อรองรับการใช้ประโยชน์จากโครูทีนในการกำหนดเวลาคำขอการวาด เปลี่ยนชื่อวิธีการวาดก่อนหน้าซึ่งใช้ตัวดำเนินการเป็น drawAsync ปรับโครงสร้างเมธอด isClosed() เป็นพร็อพเพอร์ตี้ (I5bff6)
  • เปิดเผยพารามิเตอร์รูปแบบบัฟเฟอร์ต่อ CanvasFrontBufferRenderer เพื่อแมปกับ CanvasBufferedRenderer.Builder#setBufferFormat โดยตรง (I0f272)
  • สร้าง CanvasBufferedRenderer API เพื่อจัดการการแสดงผล Canvas ที่เร่งด้วยฮาร์ดแวร์เป็น HardwareBuffer ซึ่งจะช่วยให้มีการใช้งานที่พอร์ตย้อนกลับไปยัง Android Q พร้อมกับการกำหนดค่าความลึกของ Swapchain เป็น HardwareBuffers ColorSpace ยังคงจำกัดไว้ที่ Android U+ แต่การติดตั้งใช้งานความเข้ากันได้จะไม่มีการดำเนินการในนามของนักพัฒนาแอป (I9b1d8)
  • เพิ่ม API setFrameRate/clearFrameRate ลงใน SurfaceControlCompat.Transaction เพื่อควบคุมอัตราเฟรมควบคู่ไปกับกลยุทธ์การเปลี่ยนแปลงสำหรับการเปลี่ยนฉากแบบราบรื่นหรือค่าเริ่มต้น (I6045c)
  • ลดระดับ API ที่จำเป็นสำหรับ setDataSpace เป็น Android Q จาก Android T (I59c34)
  • เพิ่มonBufferReleasedการเรียกกลับไปยัง GLFrameBufferRenderer API เพื่อให้ผู้ใช้มีโอกาสล้างสถานะเมื่อไม่มีการแสดงบัฟเฟอร์อีกต่อไป (I8a4e2)
  • สร้าง LowLatencyCanvasView เพื่อรองรับ Use Case ง่ายๆ ในการแสดงผลเนื้อหาที่มีเวลาในการตอบสนองต่ำซึ่งจะซิงค์กับการแสดงผลลำดับชั้นของ View ซึ่งจะช่วยลดความซับซ้อนที่เกี่ยวข้องกับการจัดการ SurfaceView โดยการจัดการอินสแตนซ์ SurfaceView ภายในที่ได้รับการแปลนอก/ในหน้าจอเพื่อการแสดงผลที่ซิงค์และมีความหน่วงต่ำตามลำดับ (I9253b)
  • เพิ่มการรองรับการกำหนดค่าพื้นที่สีลงใน CanvasFrontBufferedRenderer API อัปเดตการเรียกกลับแบบหลายบัฟเฟอร์ให้รวม SurfaceControl ที่บัฟเฟอร์ไว้ด้านหลังด้วย (I24bd9)

เวอร์ชัน 1.0.0-alpha05

6 กันยายน 2023

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

ฟีเจอร์ใหม่

  • เปิดตัว GLFrameBufferRenderer API ซึ่งจะให้การผสมผสานระหว่างการกำหนดค่าการพึ่งพา OpenGL, การกำหนดค่า Swap Chain, รูปแบบพิกเซล และการกำหนดค่า SurfaceControl (Ic775b)

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

  • เพิ่มพารามิเตอร์ความกว้าง + ความสูงลงใน API การเรียกกลับต่างๆ เพื่อส่งต่อขนาดจาก SurfaceHolder#Callbacks (I7f9fc)
  • เพิ่ม API ที่ชัดเจนเพื่อล้างทั้งเลเยอร์บัฟเฟอร์ด้านหน้าและเลเยอร์บัฟเฟอร์หลายรายการ (Ic1f95)
  • เพิ่มการรองรับการกำหนดค่าประเภทบัฟเฟอร์พื้นฐานของ Swapchain ที่ใช้ภายใน GLFrontBufferedRenderer (I07a13)
  • เพิ่มพร็อพเพอร์ตี้ Kotlin สำหรับตัวรับในคำอธิบายประกอบ GLFrameBufferRenderer, IntRange สำหรับรายการบัฟเฟอร์สูงสุด และคำอธิบายประกอบ HardwareBufferFormart และ HardwareBufferUsage สำหรับ setFormat/setUsage ตามลำดับ (Ief89e)
  • อัปเดต setBuffer API ในธุรกรรม SurfaceControl เพื่อให้มีรั้วกั้นการเผยแพร่ (Ice1bb)
  • เพิ่ม SurfaceControlCompat.Transaction API เพื่อกำหนดค่าพื้นที่ข้อมูลและตั้งค่าช่วงความสว่างแบบขยาย (Ic378d)

เวอร์ชัน 1.0.0-alpha04

7 มิถุนายน 2023

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

ฟีเจอร์ใหม่

  • เปิดตัว CanvasFrontBufferedRenderer เพื่อรองรับกราฟิกที่มีเวลาในการตอบสนองต่ำโดยใช้ประโยชน์จาก android.graphics.Canvas API ควบคู่ไปกับการใช้งาน OpenGL ที่มีอยู่

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

  • อัปเดต SurfaceControlCompat.Transaction#setBuffer API เพื่ออนุญาตให้อินสแตนซ์ HardwareBuffer ที่เป็น Null ได้เพื่อจำลอง API ของแพลตฟอร์มที่เกี่ยวข้อง (I173d7)
  • เปลี่ยนชื่อเมธอดที่อ้างอิงการแสดงผลแบบ Double Buffered เป็น Multi Buffered แทน เนื่องจาก Swapchain ที่สำรองอาจมีบัฟเฟอร์มากกว่า 2 รายการ (I830d7)
  • สร้าง CanvasFrontBufferedRenderer API เพื่อให้บุคคลที่สามใช้ประโยชน์จากระบบการแสดงผลที่บัฟเฟอร์ด้านหน้าโดยใช้ Canvas API (Ibfc29)

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

  • แก้ไขปัญหาที่ GLFrontBufferedRenderer ไม่แสดงเนื้อหาหลังจากกลับมาทำกิจกรรมที่เกี่ยวข้องต่อ
  • แก้ไขปัญหาที่เนื้อหาที่บัฟเฟอร์ด้านหน้าจะถูกล้างก่อนเวลาอันควร
  • แก้ไขปัญหาที่ระบบจะไม่นำ SurfaceHolder.Callbacks ออกหลังจากเปิดตัวกราฟิก API ที่มีความหน่วงต่ำ

เวอร์ชัน 1.0.0-alpha03

22 มีนาคม 2023

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

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

  • อัปเดตการติดตั้งใช้งานGLFrontBufferedRendererการเรียกกลับเพื่อให้ออบเจ็กต์ BufferInfo ที่มีบัฟเฟอร์ความกว้าง/ความสูงพร้อมกับตัวระบุบัฟเฟอร์เฟรมที่ใช้กำหนดเป้าหมายใหม่ไปยังปลายทางเดิมได้หลังจากแสดงผลไปยังบัฟเฟอร์ชั่วคราวระดับกลาง (I7fe20)
  • รวมการสร้าง SyncFence เป็นเมธอดแบบคงที่ใน SyncFenceCompat
  • นำวิธีการใช้งานร่วมกันแบบสาธารณะสำหรับ eglDupNativeFenceFDANDROID ออกเพื่อสนับสนุนวิธีการจากโรงงานของ SyncFenceCompat ในการสร้าง SyncFence เพื่อให้มั่นใจว่าพื้นผิว API ทั้งหมดจะได้รับการติดตั้งใช้งาน SyncFence ที่ถูกต้องไม่ว่า API จะมีระดับใดก็ตาม (I849bb)
  • เพิ่มเอกสารประกอบสำหรับ FrameBufferRenderer และ SyncStrategy
    • ย้าย FrameBufferRenderer + FrameBuffer + FrameBufferPool ไปยังแพ็กเกจ androidx.graphics.opengl
    • ย้าย SyncStrategy ไปยังแพ็กเกจ androidx.graphics.opengl
    • เอกสาร RenderCallback#onDraw ที่อัปเดตแล้ว
    • เอกสารประกอบที่อัปเดตของ RenderCallback#obtainFrameBuffer ซึ่งผู้ใช้ API มีหน้าที่เรียก FrameBuffer.close
    • อัปเดต onDrawComplete เพื่อระบุว่าผู้บริโภคมีหน้าที่รับผิดชอบในการส่งเนื้อหาเพื่อแสดง
    • ย้ายอินเทอร์เฟซ/คลาสความเข้ากันได้ SyncFence ไปยังแพ็กเกจ androidx.hardware เพื่อมิเรอร์เฟรมเวิร์ก
    • เปลี่ยนชื่อ SyncFence API เป็น SyncFenceV19 และตั้งค่าเป็นส่วนตัวเพื่อรวมการใช้งานไว้ใน SyncFenceCompat ซึ่งใช้ประโยชน์จาก SyncFence API ของเฟรมเวิร์กได้ทุกเมื่อที่เป็นไปได้ (I5149c)
  • เพิ่มเมธอด GLFrontBufferedRenderer#cancel และ GLFrontBufferedRenderer#execute แบบแรกมีประโยชน์ในสถานการณ์การปฏิเสธฝ่ามือ ซึ่งควรยกเลิกการแสดงผลไปยังบัฟเฟอร์ด้านหน้าและซ่อนบัฟเฟอร์ด้านหน้า ซึ่งมีประโยชน์ในสถานการณ์ที่ต้องจัดการออบเจ็กต์ในเธรด GL โดยไม่ต้องกำหนดเวลาการแสดงผล (If0b7f)
  • เพิ่ม API เพื่อแสดงผลโดยตรงไปยังเลเยอร์ที่มีการบัฟเฟอร์ 2 ครั้ง ซึ่งจะช่วยในการแสดงผลฉากอีกครั้งหลังจากกลับมาทำงานต่อ รวมถึงเปิดโอกาสให้ผู้บริโภคเลือกได้ว่าจะใช้การแสดงผลแบบบัฟเฟอร์ด้านหน้าแบบไดนามิกเมื่อใดตามฉากที่ต้องการแสดงผล (Ied56c)
  • เพิ่ม API ใหม่ใน SurfaceControlCompat.Builder เพื่อรองรับการกำหนดค่า SurfaceControl หลักจากอินสแตนซ์ SurfaceControl อื่นนอกเหนือจากกลไกที่มีอยู่จาก SurfaceView (I1d1b6)
  • ความสามารถในการเป็นค่าว่างของประเภทการคืนค่าเพิ่มเติมของฟังก์ชันที่เลิกใช้งานแล้วและซ่อนอยู่ (Ibf7b0)
  • เพิ่มค่าคงที่ของส่วนขยาย EGL_ANDROID_get_native_client_buffer เพื่อสอบถามว่าอุปกรณ์ Android รองรับการนำเข้าอินสแตนซ์ HardwareBuffer ไปยังออบเจ็กต์ EGLClientBuffer ที่ใช้เป็นอินสแตนซ์ EGLImage ได้หรือไม่ (Iad767)
  • เพิ่มคำอธิบายประกอบ @JvmDefaultWithCompatibility (I8f206)

เวอร์ชัน 1.0.0-alpha02

9 พฤศจิกายน 2022

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

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

  • แก้ไขปัญหาที่ไม่มีคำอธิบายประกอบ RequiresApi สำหรับ addTransactionCommitListener ซึ่งเปิดตัวใน Android S (I0a035)
  • อัปเดตonDraw<Front/Double>การเรียกกลับของบัฟเฟอร์เพื่อให้เมทริกซ์การเปลี่ยนรูปที่ผู้ใช้ส่งไปยัง Vertex Shader ได้ นอกเหนือจากความกว้าง/ความสูงของบัฟเฟอร์ปัจจุบัน ผู้บริโภคมีหน้าที่รับผิดชอบในการใช้พารามิเตอร์เหล่านี้เพื่อหมุนรหัสการแสดงผล OpenGL อย่างถูกต้องล่วงหน้า (I82f9e)

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

  • ปรับปรุงเวลาในการตอบสนองของกราฟิกโดยการหมุนบัฟเฟอร์ล่วงหน้าก่อนที่จะออกธุรกรรม SurfaceControl
  • แก้ไขปัญหาที่บันทึกข้อผิดพลาดจะแสดงข้อผิดพลาด 300d (EGL_BAD_SURFACE)
  • แก้ไขปัญหาที่ GLFrontBufferedRenderer จะไม่ถูกต้องหลังจากที่กิจกรรมที่เกี่ยวข้องซึ่งใช้ภายในนั้นกลับมาทำงานต่อ
  • เพิ่มการรองรับโปรแกรมจำลองและอุปกรณ์ ChromeOS
  • แก้ไขปัญหาที่เลเยอร์บัฟเฟอร์ด้านหน้าอาจถูกซ่อนก่อนเวลาอันควร

เวอร์ชัน 1.0.0-alpha01

24 ตุลาคม 2022

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

ฟีเจอร์ใหม่

  • การเปิดตัวไลบรารี AndroidX หลักของกราฟิกครั้งแรก ซึ่งรวมถึง API ที่รองรับกรณีการใช้งานที่มีเวลาในการตอบสนองต่ำ เช่น การป้อนข้อมูลด้วยสไตลัส นอกจากนี้ยังมีการเปิดตัว API ตัวช่วยบางอย่างสำหรับการใช้งาน OpenGL ด้วย

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

  • เปิดตัว GLFrontBufferedRenderer เพื่อช่วยในการแสดงผลแบบบัฟเฟอร์ด้านหน้าและแบบหลายบัฟเฟอร์เพื่อให้ได้ทั้งเวลาในการตอบสนองต่ำและเอาต์พุตการแสดงผลคุณภาพสูง
  • เปิดตัว GLRenderer API เพื่อช่วยในการแสดงผล OpenGL สำหรับผู้ให้บริการ Surface ต่างๆ เช่น SurfaceView, TextureView และอื่นๆ