ชุมชน

Now in Android #121

ใช้เวลาอ่าน 9 นาที
Daniel Galpin
ผู้ประสานงานนักพัฒนาซอฟต์แวร์

ยินดีต้อนรับสู่ Now in Android ซึ่งเป็นคำแนะนำอย่างต่อเนื่องเกี่ยวกับสิ่งใหม่ๆ และสิ่งที่น่าสนใจในโลกของการพัฒนา Android

อ่านต่อเพื่อดูข้อมูลเกี่ยวกับ Android 16 QPR2 เบต้า 1, ฟีเจอร์ดรอปของ Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing และ Autofill ใน Compose และอื่นๆ อีกมากมาย

คุณดูสรุปวิดีโอได้โดยทำดังนี้

 

 

และเรายังมีพอดแคสต์ด้วย

แต่โพสต์นี้มีข้อมูลเชิงลึกมากที่สุด โปรดอ่านต่อ

Android 16 QPR2 รุ่นเบต้า 1 พร้อมให้บริการแล้ว ✨

ตอนนี้ Android 16 QPR2 รุ่นเบต้าแรกพร้อมให้บริการแล้ว ซึ่งเป็นรุ่น Android แรกที่มาพร้อม SDK เวอร์ชันย่อยของ Android เวอร์ชัน SDK ย่อยอาจมี API ใหม่ที่ขยายฟีเจอร์ของแพลตฟอร์ม แต่จะไม่มีtargetSdkVersionการเปลี่ยนแปลงลักษณะการทำงานที่ต้องมีเงื่อนไข ซึ่งจะช่วยลดจำนวนการทดสอบแอปของคุณกับ API ดังกล่าว

sdk-release-graph.webp

คุณเรียก API ใหม่ได้โดยตรวจสอบ SDK_INT_FULL กับการแจงนับ VERSION_CODES_FULL ดังนี้

  if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

ใช้ VERSION_CODES_FULL ในแอตทริบิวต์ไฟล์ Manifest ของ uses-sdk ไม่ได้

การอัปเดตที่สำคัญบางส่วนจาก QPR2 เบต้า 1 มีดังนี้

UI, ประสบการณ์การใช้งานระบบ และการช่วยเหลือพิเศษ:

  • ตัวเลือกธีมมืดแบบขยายจะกลับด้านแอปธีมสว่างอย่างชาญฉลาดสำหรับผู้ใช้ที่ต้องการรูปลักษณ์มืด
  • ระบบจะสร้างไอคอนแอปตามธีมโดยอัตโนมัติหากแอปไม่มีเลเยอร์ขาวดำ
  • เซสชันตัวเลือกแบบอินเทอร์แอกทีฟจะทำให้ UI ของแอปทำงานอยู่ขณะที่ชีตการแชร์เปิดอยู่ โดยใช้ ChooserManager และ ChooserSession
  • Data Transfer API ใหม่ช่วยให้การย้ายข้อมูลระหว่าง Android กับ iOS มีความน่าเชื่อถือและปลอดภัยมากขึ้น โดยกำหนดให้อัปเดต XML ของกฎการดึงข้อมูลของแอปและการติดตั้งใช้งาน BackupAgent
  • แพ็กเกจ android.graphics.pdf ได้ขยายการรองรับการใส่คำอธิบายประกอบและการแก้ไขเอกสาร PDF ผ่าน PdfRenderer.Page
  • ตอนนี้ค่า ViewConfiguration ได้รับการปรับให้เหมาะกับอุปกรณ์เสมือนแต่ละเครื่องแล้ว โปรดย้ายข้อมูลไปยัง ViewConfiguration.get(context) สำหรับสถานการณ์ที่มีหลายจอแสดงผล
  • คุณจะควบคุมการตอบสนองแบบรู้สึกได้ละเอียดยิ่งขึ้นโดยการระบุ VibrationAttributes ด้วย View.performHapticFeedback(HapticFeedbackRequest)
  • ตอนนี้คุณกำหนดไทล์การตั้งค่าด่วนให้กับหมวดหมู่ที่กำหนดไว้ล่วงหน้าในไฟล์ AndroidManifest.xml ได้แล้ว

สื่อและเสียง:

  • การถอดรหัสซอฟต์แวร์สำหรับโมเดลและรูปแบบเสียงสมจริง (IAMF) ซึ่งเป็นรูปแบบเสียงรอบทิศทางแบบเปิด
  • การแชร์เสียงส่วนตัวสำหรับอุปกรณ์ Bluetooth LE Audio จะผสานรวมเข้ากับตัวสลับเอาต์พุตของระบบโดยตรง
  • ผู้ใช้สามารถควบคุมความสว่างของ HDR ได้โดยใช้แถบเลื่อนความสว่าง HDR/SDR
  • ส่วนเสริมเครื่องมือเลือกรูปภาพสามารถไฮไลต์อัลบั้มหรือคำค้นหาที่เฉพาะเจาะจงได้

การเชื่อมต่อ:

  • การปรับปรุงการจัดการอุปกรณ์เสริม (CDM) ช่วยให้คุณระบุไอคอนอุปกรณ์ที่กำหนดเอง ฟังการเรียกกลับ EVENT_ASSOCIATION_REMOVED และเปิดใช้การยืนยันข้ามแอปโดยใช้ DeviceId ได้
  • การอัปเดตบลูทูธรวมถึงการรองรับการสแกนแบบพาสซีฟสำหรับ BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE) เหตุผลที่การเชื่อมต่อขาดหาย (BluetoothDevice.EXTRA_BOND_LOSS_REASON) และการดึง UUID ของบริการโดยตรง (BluetoothDevice.EXTRA_UUID_LE)
  • การอัปเดตการวัดระยะ RTT ของ Wi-Fi (RttStationRangingParams) รองรับการวัดระยะเทียบกับสถานี
  • PhoneNumberManager ใหม่พร้อมใช้งานสำหรับการแยกวิเคราะห์และตรวจสอบหมายเลขโทรศัพท์จากส่วนหัว P-Associated-URI ของ IMS
  • การปรับปรุงความเป็นส่วนตัวของเครือข่าย MediaRouter ช่วยให้แคสต์ผ่านสื่อใหม่ๆ เช่น บลูทูธและ UWB ได้ คุณควรใช้ตัวสลับเอาต์พุตของระบบหรือขอสิทธิ์ NEARBY_DEVICES สำหรับตัวเลือกในแอปที่กำหนดเอง

ความเป็นส่วนตัวและความปลอดภัย:

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

ประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์:

  • API ใหม่ของ AppWidgetManager ช่วยให้คุณค้นหาเมตริกการมีส่วนร่วมของวิดเจ็ตได้
  • ตอนนี้แอปที่แก้ไขข้อบกพร่องได้ซึ่งติดตั้งผ่าน ADB จะได้รับการแจ้งเตือนล่วงหน้าเกี่ยวกับความเข้ากันได้กับขนาดหน้าหน่วยความจำขนาด 16 KB
  • ProfilingManager เพิ่มการรองรับทริกเกอร์การจัดโปรไฟล์ใหม่ที่ระบบเริ่มต้น และ requestRunningSystemTrace เพื่อบันทึกการติดตามในเบื้องหลัง
  • ปุ่มเปิด/ปิด "การบันทึกการพิมพ์แบบละเอียด" ในตัวเลือกสำหรับนักพัฒนาแอปจะให้ข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมสำหรับเฟรมเวิร์กการพิมพ์ของ Android
  • เราได้เปิดใช้การทดสอบที่แข็งแกร่งยิ่งขึ้นสำหรับประสบการณ์การใช้งานเดสก์ท็อปและจอแสดงผลหลายจอด้วย UiAutomation API ใหม่สำหรับภาพหน้าจอในจอแสดงผลที่ไม่ใช่ค่าเริ่มต้นและ AccessibilityWindowInfo.refresh สาธารณะ
  • เพิ่มการรองรับ API สำหรับคลัง androidx.core:core-backported-fixes ใหม่
  • ตอนนี้เทอร์มินัล Linux รองรับแอป GUI แล้ว
  • WindowInspector.addGlobalWindowViewsListener รองรับการแจ้งเตือนการเปลี่ยนแปลงมุมมองรูทแบบเรียลไทม์

คุณลงทะเบียนอุปกรณ์ Pixel ที่รองรับเพื่อรับการอัปเดตเบต้าผ่านอากาศหรือใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android ใน Android Studio ได้ เราตั้งเป้าหมายที่จะเปิดตัวความเสถียรของแพลตฟอร์มในเดือนตุลาคม 2025

ฟีเจอร์ใหม่จาก Android Studio Narwhal มีความเสถียรแล้ว — เริ่มใช้โหมดตัวแทน 🐳

narwhal.webp

การอัปเดตฟีเจอร์ใหม่ของ Android Studio Narwhal พร้อมใช้งานแล้ว โดยฟีเจอร์และการปรับปรุงใหม่ๆ มีดังนี้

  • Gemini ใน Android Studio: โหมด Agent พร้อมใช้งานสำหรับงานเขียนโค้ดแบบหลายขั้นตอน
  • คลังพรอมต์ กฎปรับแต่งเอาต์พุต AI ของ Gemini ให้ตรงกับความต้องการของโปรเจ็กต์
  • เปลี่ยน UI ด้วย Gemini ใช้ UI ภาษาธรรมชาติเพื่อวนซ้ำใน Compose UI
  • การรองรับการพัฒนาแอปแบบสมจริงด้วย โปรแกรมจำลองของ Android สำหรับ XR แบบฝัง เทมเพลต XR ใหม่ และเครื่องมือตรวจสอบเลย์เอาต์แบบฝังสำหรับ XR
  • การเข้าถึงอุปกรณ์ที่ขยายผ่าน Android Partner Device Labs ในการสตรีมอุปกรณ์ Android
  • ดูตัวอย่าง Compose ได้ดียิ่งขึ้นด้วยการไปยังส่วนต่างๆ ของโค้ดที่ปรับปรุงแล้วและเครื่องมือเลือกตัวอย่าง Compose ใหม่
  • เปิดใช้คอมไพเลอร์ Kotlin K2 โดยค่าเริ่มต้นเพื่อให้บิลด์ทำงานได้เร็วขึ้น
  • เครื่องมือขนาดหน้า 16 KB พร้อมคำเตือนของ Lint, การวิเคราะห์ และโปรแกรมจำลองที่จะช่วยคุณเตรียมพร้อมสำหรับอุปกรณ์ที่มีขนาดหน้า 16 KB ที่กำลังจะเปิดตัว

การสตรีมจากอุปกรณ์ Android โดย Firebase

device-streaming.webp

การสตรีมอุปกรณ์ Android ซึ่งขับเคลื่อนโดย Firebase ได้เปิดตัวการรองรับที่เสถียรสำหรับห้องทดสอบอุปกรณ์พาร์ทเนอร์ Android ซึ่งช่วยให้คุณเชื่อมต่อกับอุปกรณ์ Android จริงที่โฮสต์โดยพาร์ทเนอร์ OEM ได้จากระยะไกล ซึ่งรวมถึง Samsung, Xiaomi, OPPO, OnePlus และ vivo

เร่งการพัฒนาด้วยการเปิดตัว Android Studio ทุกเดือน ซึ่งจะเปิดตัวบ่อยขึ้น 2 เท่ากว่าเดิม

accelarating-releases.webp

Android Studio กำลังเปลี่ยนไปใช้การเผยแพร่เวอร์ชันเสถียรรายเดือนเพื่อเร่งการนำฟีเจอร์ใหม่ๆ และการแก้ไขข้อบกพร่องที่สำคัญมาให้คุณ แม้ว่า IDE ของ Android Studio จะอัปเดตทุกเดือน แต่เราจะเปิดตัวแพลตฟอร์ม IntelliJ เวอร์ชันใหม่ทุก 2-3 เดือน โดยการอัปเดตฟีเจอร์ใหม่จะช่วยเติมเต็มการเปิดตัวเวอร์ชันเสถียรชั่วคราว โปรแกรมจำลองของ Android และปลั๊กอิน Android Gradle จะยังคงอัปเดตแยกกันทุกๆ 2 เดือน กำหนดการเผยแพร่ที่เร่งขึ้นนี้ได้รับการสนับสนุนจากการลงทุนระยะยาวในโครงสร้างพื้นฐานด้านการทดสอบ

มีอะไรใหม่ใน Jetpack Compose เวอร์ชันเดือนสิงหาคม 2025 🚀

jetpack-compose.webp

ตอนนี้ Jetpack Compose เวอร์ชัน 1.9 (รุ่นเดือนสิงหาคม 2025) พร้อมให้ใช้งานอย่างเสถียรแล้ว รุ่นนี้เปิดตัว Modifier.dropShadow และ Modifier.innerShadow สำหรับการแสดงผลเอฟเฟกต์เงาของกล่อง ตัวแก้ไข onVisibilityChanged และ onFirstVisible ใหม่ช่วยให้คุณติดตามการมองเห็นองค์ประกอบสำหรับการอัปเดต UI หรือการบันทึกการแสดงผลได้ คุณใช้การจัดรูปแบบ Rich Text ภายใน OutputTransformation ได้โดยใช้ TextFieldBuffer.addStyle สำหรับการเปลี่ยนข้อความ

ตอนนี้บล็อกการสร้าง LazyLayout เสถียรแล้ว และคุณสามารถกำหนด LazyLayoutCacheWindow เพื่อปรับปรุงประสิทธิภาพของ Lazy List และ Grid ด้วยการดึงข้อมูลล่วงหน้าที่ดียิ่งขึ้น Scrollable2D ช่วยให้เลื่อนได้ 2 มิติ รวมถึงการตวัดและการเลื่อนที่ซ้อนกัน พร้อมการปรับปรุงต่างๆ สำหรับการเลื่อนและการทำงานร่วมกันของการเลื่อนที่ซ้อนกันกับ View API แบบเลือกใช้ (Composer.setDiagnosticStackTraceEnabled) จะให้รายละเอียดตำแหน่งที่เกิดข้อขัดข้องที่ละเอียดยิ่งขึ้นในสแต็กเทรซ ซึ่งแนะนำให้ใช้เฉพาะกับบิลด์การแก้ไขข้อบกพร่อง ตอนนี้คำอธิบายประกอบ @RememberInComposition และ @FrequentlyChangingValue ใหม่ รวมถึงการตรวจสอบ Lint ที่เกี่ยวข้องพร้อมใช้งานในไลบรารีคำอธิบายประกอบรันไทม์ใหม่แล้ว คุณปรับแต่งเมนูตามบริบทได้โดยใช้ Modifier.appendTextContextMenuComponents และ Modifier.filterTextContextMenuComponents ตอนนี้คุณต้องใช้ปลั๊กอิน Android Gradle (AGP) / Lint เวอร์ชัน 8.8.2 ขึ้นไป

Media3 1.8.0 - มีอะไรใหม่ 🚀

media3.webp

ตอนนี้ Media3 1.8.0 พร้อมให้ใช้งานแล้ว โดยมาพร้อมฟีเจอร์และการปรับปรุงใหม่ๆ หลายอย่าง ExoPlayer มีโหมดการกรอสำหรับการค้นหาที่ผู้ใช้ดำเนินการบ่อยครั้ง ซึ่งคุณเปิดใช้ได้ผ่าน ExoPlayer.setScrubbingModeEnabled HlsInterstitialsAdsLoader รองรับไลฟ์สดสำหรับการแทรกโฆษณาที่เซิร์ฟเวอร์แนะนำแล้ว

เราได้อัปเดต MetadataRetriever เพื่อให้คุณเรียกข้อมูลระยะเวลาของรายการสื่อได้โดยไม่ต้องเล่น สำหรับการเปลี่ยนแปลงนี้ เราได้เปิดตัวการดำเนินการตัดที่เร็วขึ้นโดยใช้รายการแก้ไข MP4 ด้วย experimentalSetMp4EditListTrimEnabled และการเพิ่มประสิทธิภาพตัวเข้ารหัสที่เฉพาะเจาะจงชิปเซ็ตผ่าน CodecDbLite ซึ่งเปิดใช้โดยการเรียกใช้ setEnableCodecDbLite ใน DefaultEncoderFactory.Builder

การอัปเดตเพิ่มเติม ได้แก่ การรองรับการดาวน์โหลดบางส่วนใน Downloader ด้วย PreCacheHelper, การกำหนดเส้นทางเสียง XR อัตโนมัติใน ExoPlayer และการโต้ตอบ MediaCodec ที่มีประสิทธิภาพมากขึ้น ตอนนี้โมดูล MediaSession จะแสดงการแจ้งเตือนนานขึ้นโดยค่าเริ่มต้น และแอปเดโมเซสชันสื่อจะแสดงฟังก์ชันการทำงานของการเล่นต่อ แอปเดโม Composition ใหม่ที่สร้างด้วย Kotlin และ Compose แสดงให้เห็นการตัดต่อวิดีโอแบบหลายชิ้นงานขั้นสูง

บทความ 📚

#WeArePlay: พบกับผู้ที่เขียนโค้ดเพื่อโลกที่ยั่งยืนยิ่งขึ้น

weareplay.webp

โครงการริเริ่ม #WeArePlay จะไฮไลต์แอปและเกม Android ที่แก้ปัญหาด้านสิ่งแวดล้อม เกม BoRa — Iguaçu National Park ซึ่งพัฒนาโดย Mayla, Flávia, Andréia และ Ariane มอบประสบการณ์แบบอินเทอร์แอกทีฟที่เข้าถึงได้ง่ายและมีการเล่นเกมเพื่อการศึกษาธรรมชาติระหว่างการเยี่ยมชมอุทยาน แอป CyberTracker ของ Louis และ Justin ช่วยให้ผู้ติดตามพื้นเมืองที่ไม่รู้หนังสือสามารถบันทึกข้อมูลความหลากหลายทางชีวภาพผ่านอินเทอร์เฟซที่ใช้ไอคอน ซึ่งช่วยสนับสนุนความพยายามในการอนุรักษ์ สุดท้าย Earth5R ซึ่ง Bharati และ Saurabh ร่วมกันก่อตั้งขึ้น ให้การศึกษาด้านสิ่งแวดล้อมและเชื่อมโยงผู้ใช้กับการฝึกงานและโปรเจ็กต์ต่างๆ เพื่อพัฒนาทักษะสำหรับเศรษฐกิจสีเขียว

HDR คืออะไร 🌟

hdr.webp

High Dynamic Range (HDR) ช่วยให้นักพัฒนาแอป Android เพิ่มความสว่างสูงสุดได้มากกว่า Standard Dynamic Range (SDR) เพื่อให้ได้ภาพที่สมจริงยิ่งขึ้น Android รองรับ HDR สำหรับวิดีโอและรูปภาพ รวมถึงเทคโนโลยีต่างๆ เช่น UltraHDR เพื่อความเข้ากันได้แบบย้อนหลัง

การทำความเข้าใจสีประกอบด้วยองค์ประกอบ 3 อย่าง ได้แก่

  • ความลึกของบิต: กำหนดความแม่นยำของการแสดงสี โดยความลึกที่สูงขึ้นจะทำให้การเปลี่ยนสีเป็นไปอย่างราบรื่นยิ่งขึ้น
  • ฟังก์ชันการโอน: แมปค่าพิกเซลที่เป็นตัวเลขกับความสว่างหรือสีที่แสดง โดยปรับให้สอดคล้องกับการตอบสนองทางสายตาของมนุษย์ที่ไม่ใช่เชิงเส้น เช่น sRGB, HLG และ PQ
  • ขอบเขตสี: แสดงช่วงสีที่อุปกรณ์สามารถสร้างใหม่ได้

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับ HDR

  • สีสันสดใส: ขอบเขตสีที่กว้างขึ้น เช่น Display P3 และ Adobe RGB มีให้บริการก่อน HDR และจอแสดงผลส่วนใหญ่ยังคงตัดไปที่ P3 แม้จะมีเนื้อหา BT.2020
  • คอนทราสต์มากขึ้น/รายละเอียดสีดำดีขึ้น: HDR ไม่ได้ให้สีดำที่เข้มกว่า SDR บนจอแสดงผลเดียวกันโดยธรรมชาติ จอแสดงผล OLED ให้คอนทราสต์ที่ไม่มีที่สิ้นสุดสำหรับทั้ง 2 อย่าง แม้ว่า PQ จะจัดสรรบิตให้กับพื้นที่มืดมากขึ้น แต่ก็ไม่ใช่ฟีเจอร์ HDR ที่ใช้ได้กับทุกที่
  • ความลึกของบิตที่สูงขึ้น: แม้ว่าโปรไฟล์วิดีโอ HDR บางโปรไฟล์ (เช่น HDR10) จะใช้สตรีม 10 บิตหรือ 12 บิต แต่โปรไฟล์ดังกล่าวจะเฉพาะเจาะจงสำหรับโปรไฟล์เหล่านั้นและไม่ได้มีอยู่ใน HDR เอง นอกจากนี้ ความลึกของบิตที่สูงขึ้นยังพบได้ทั่วไปในรูปแบบการถ่ายภาพอื่นๆ ด้วย

HDR หมายถึง ความสว่างสูงสุดที่สูงขึ้นเป็นหลัก "ส่วนหัว HDR" นี้กำหนดเป็นภูมิภาคแบบลอยตัวที่สัมพันธ์กับ SDR แม้ว่าวิดีโอ HDR แบบดั้งเดิมมักจะเข้ารหัสส่วนหัวแบบคงที่ แต่จอแสดงผลสมัยใหม่ใช้ส่วนหัวแบบไดนามิก ซึ่งอาจทำให้คุณภาพแตกต่างกัน เทคโนโลยีอย่าง Ultra HDR และ Gainmap เป็นทางเลือกที่ใช้บิตได้อย่างมีประสิทธิภาพ ชุดเครื่องมือ UI ของ Android ใช้ API extendedRangeBrightness เพื่อมอบประสบการณ์ HDR แม้จะมี RGBA_8888 ก็ตาม

วิดีโอ 📹

องค์ประกอบที่ใช้ร่วมกันขั้นสูงที่มีการเปลี่ยนรูปร่าง | เคล็ดลับ Jetpack Compose

ตอนนี้ Jetpack Compose ช่วยให้คุณใช้การเปลี่ยนองค์ประกอบที่ใช้ร่วมกันขั้นสูง การเปลี่ยนรูปร่างที่ซับซ้อน และภาพเคลื่อนไหวแบบเปิดเผยได้แล้ว นักพัฒนาแอปสามารถกำหนดค่า SharedTransitionLayout ที่ระดับบนสุดของแอป และใช้ Modifier.sharedBounds เพื่อลิงก์องค์ประกอบ

การเปลี่ยนรูปร่างเป็นฟีเจอร์ใหม่ที่สำคัญ ซึ่งทำได้โดยใช้ประโยชน์จากไลบรารีรูปร่างกราฟิก AndroidX ของ Material 3 ซึ่งเกี่ยวข้องกับการสร้างออบเจ็กต์ Morph ที่มีรูปร่างเริ่มต้น/สิ้นสุดที่กำหนดไว้ ขับเคลื่อนความคืบหน้าด้วย animateFloat (จาก AnimatedVisibilityScope) และใช้เป็นคลิปผ่าน OverlayClip ที่กำหนดเอง เอฟเฟกต์การเปิดเผยใช้ skipToLookaheadSize และ skipToLookaheadPosition ภาพเคลื่อนไหวขั้นสูงทั้งหมดนี้ยังใช้ได้กับท่าทางสัมผัสย้อนกลับแบบคาดการณ์ได้ด้วย

Gemini แบบมัลติโมดัลใน Android Studio: การพัฒนา UI ที่ทำงานด้วยระบบ AI

AI ของ Gemini ใน Android Studio ช่วยในการพัฒนา UI โดยการสร้างโค้ดจากดีไซน์ (รวมถึงรูปภาพเป็นโค้ด) การสร้างตัวอย่าง Compose ด้วยข้อมูลสังเคราะห์ และการปรับแต่ง UI ที่มีอยู่ผ่านคำสั่งโดยตรง

ใช้ SDK ที่เปิดใช้รันไทม์

Android 14 เปิดตัวรันไทม์ของ SDK ซึ่งเป็นเทคโนโลยีใหม่ที่แยก SDK ของบุคคลที่สามในแซนด์บ็อกซ์กระบวนการที่แยกต่างหากและปลอดภัยเพื่อเพิ่มความเป็นส่วนตัวและความปลอดภัย

สำหรับนักพัฒนาแอป

  • SDK ที่เปิดใช้รันไทม์ (RE) จะทำงานในกระบวนการแยกต่างหากนี้
  • SDK ที่รับรู้รันไทม์ (RA) ทำหน้าที่เป็นตัวกลางภายในแอป
  • โหลด SDK ของ RE โดยใช้ SdkSandboxManagerCompat โดยปฏิบัติตามข้อจำกัด (เช่น เบื้องหน้า โหลดครั้งเดียว)
  • เครื่องมือ Shim ช่วยลดความซับซ้อนของการสื่อสารระหว่างกระบวนการระดับต่ำ
  • แสดงผล UI จาก SDK ของ RE โดยใช้ SandboxedSdkView และ SandboxedUiAdapter
  • เปิดกิจกรรมจากรันไทม์ของ SDK โดยใช้ SdkActivityLauncher

การเปลี่ยนรูปร่าง Material 3 ของ WearOS | เคล็ดลับ Jetpack Compose

ตอนนี้ Wear OS Material 3 สำหรับ Compose ทำให้การเปลี่ยนรูปร่างง่ายขึ้นแล้ว นักพัฒนาแอปสามารถเพิ่มการเปลี่ยนแปลงรูปร่างแบบเคลื่อนไหวลงในปุ่มกลมได้อย่างง่ายดายด้วย IconButtonDefaults.animatedShapes สร้างกลุ่มปุ่มที่เคลื่อนไหวการเปลี่ยนแปลงความกว้างโดยใช้คอมโพเนนต์ ButtonGroup และ Modifier.animateWidth() และสร้างรายการที่เลื่อนในแนวตั้ง (TransformingLazyColumn) ซึ่งรายการจะปรับขนาดและเปลี่ยนรูปร่างโดยใช้ TransformationSpec เมื่อเข้าใกล้ขอบหน้าจอ

การเปิดตัว AndroidX 🚀

สรุปการเปลี่ยนแปลงใน AndroidX โดยเรียงตามลำดับความสำคัญของนักพัฒนาแอป Android ดังนี้

การเปลี่ยนแปลงที่ส่งผลต่อไลบรารี Compose โดยรวม

  • ค่าเริ่มต้นminSdk อัปเกรดเป็น API 23: สำหรับ androidx.compose animation, foundation, material, runtime และ ui เราได้ย้ายเวอร์ชัน SDK ขั้นต่ำเริ่มต้นจาก API 21 เป็น API 23 ซึ่งหมายความว่าหากคุณใช้ไลบรารี Compose เวอร์ชันอัลฟ่าล่าสุด แอปของคุณจะต้องใช้ Android 6.0 (Marshmallow) ขึ้นไปโดยปริยาย

การเปลี่ยนแปลงที่สำคัญสำหรับนักพัฒนา Compose

  • API ใหม่สำหรับคงค่า (Compose Runtime): เปิดตัว API สำหรับคงค่าที่คล้ายกับ rememberSaveable แต่สำหรับค่าที่ออกจากลำดับชั้นการจัดองค์ประกอบโดยไม่ต้องมีการซีเรียลไลซ์ มีอายุการใช้งานสั้นกว่าค่าที่บันทึกไว้และทำงานคล้ายกับ ViewModel ซึ่งเป็นวิธีใหม่ในการจัดการสถานะสำหรับ Composable ที่อาจเข้าและออกจาก Composition
  • การเปลี่ยนองค์ประกอบที่ใช้ร่วมกันที่ดียิ่งขึ้น (ภาพเคลื่อนไหวและ UI ของ Compose): API ใหม่เพื่อเปิด/ปิดใช้องค์ประกอบที่ใช้ร่วมกันแบบไดนามิก พิจารณาการเปลี่ยนที่กำลังดำเนินการ และตั้งค่าขอบเขตเป้าหมายสำรองเมื่อมีการทิ้งองค์ประกอบที่ใช้ร่วมกัน นอกจากนี้ยังมี Modifier.skipToLookaheadPosition ใหม่สำหรับการยึดเลย์เอาต์ด้วย
  • การดึงข้อมูลล่วงหน้าของ Pager ที่ได้รับการปรับปรุง (Compose Foundation): ตอนนี้กลยุทธ์การดึงข้อมูลล่วงหน้าของ Pager ใช้ "หน้าต่างแคช" (ขนาด 1 วิวพอร์ต) แทนรายการเดียว และเปิดใช้การดึงข้อมูลล่วงหน้าเริ่มต้นโดยค่าเริ่มต้น นอกจากนี้ ระบบยังเก็บรายการไว้ให้นานขึ้นเพื่อให้เลื่อนได้ราบรื่นยิ่งขึ้น
  • การจัดการโฟกัสที่ปรับปรุงแล้วสำหรับเมาส์/ทัชแพด (Compose Foundation & UI): ComposeViews ตอนนี้จะล้างโฟกัสโดยอัตโนมัติเมื่อเกิดเหตุการณ์ตัวชี้ลง (จากเมาส์หรือทัชแพด) นอกโหนดที่โฟกัส คุณเลือกไม่ใช้ได้
  • สี่เหลี่ยมผืนผ้าโฟกัสที่ปรับแต่งได้ (Compose Foundation): FocusProperties ช่วยให้คุณกำหนดพื้นที่โฟกัสที่กำหนดเองแทนที่จะใช้กรอบล้อมรอบเป็นค่าเริ่มต้น ซึ่งจะช่วยปรับปรุงการไปยังส่วนต่างๆ ของโฟกัสและตรรกะ "แสดงไว้" ในคอนเทนเนอร์ที่เลื่อนได้
  • Composable ของ LifecycleOwner (Lifecycle): Composable ใหม่ช่วยให้สร้างอินสแตนซ์ LifecycleOwner ที่กำหนดขอบเขตได้โดยตรงภายในโครงสร้าง UI ซึ่งมีประโยชน์อย่างยิ่งในการจัดการวงจรของคอมโพเนนต์แยกกัน และสำหรับไลบรารี เช่น Navigation
  • การรองรับประเภทที่อนุญาตให้เป็นค่าว่างใน SavedStateHandle (Lifecycle และ SavedState): การบันทึกและกู้คืนพร็อพเพอร์ตี้ที่อนุญาตให้เป็นค่าว่างได้ง่ายขึ้นด้วยการรองรับแบบเนทีฟใน SavedStateHandle และ SavedStateRegistryOwner
  • ใหม่ LineHeightStyle.Mode.Tight (Compose Foundation & UI): โหมด "กระชับ" ใหม่ช่วยบังคับใช้ความสูงของบรรทัดให้เล็กลง แม้ว่าอาจหมายถึงการตัดรูปอักขระที่สูงกว่าออกไป แต่ก็ช่วยให้ควบคุมเลย์เอาต์ข้อความได้อย่างแม่นยำยิ่งขึ้น
  • แตะสองครั้งเพื่อเลือกคำ (Compose Foundation): เพิ่มการรองรับการแตะสองครั้งเพื่อเลือกคำใน SelectionContainer และ BasicTextField
  • การเปลี่ยนแปลงลักษณะการทำงานของ WindowInsets (Compose UI และ Foundation):
    WindowInsets.cutoutPath API ใหม่เพื่อรับเส้นทางสำหรับหน้าจอรอยบาก
    ◦ ระบบได้นำisWindowInsetsDefaultPassThroughEnabled Flag ออกแล้ว โดยค่าเริ่มต้น WindowInsets จะไม่ใช้โดยค่าเริ่มต้น เพื่อให้ View ระดับล่างรับได้
  • AndroidView requestRectangleOnScreen แก้ไข (Compose Foundation): คำขอที่ AndroidViews สร้างขึ้น (เช่น EditText พยายามคงอยู่บนหน้าจอ) จะส่งต่อไปยัง Compose อย่างถูกต้องแล้ว
  • การเลื่อนด้วยล้อเมาส์ 2 มิติที่ได้รับการปรับปรุง (Compose Foundation & UI): รองรับเหตุการณ์การเลื่อนด้วยล้อเมาส์ 2 มิติได้ดียิ่งขึ้นด้วย API การทดสอบใหม่และ Flag เพื่อควบคุมลักษณะการทำงาน

ห้องสมุดและสาธารณูปโภคใหม่:

  • androidx.core:core-backported-fixes (ไลบรารีใหม่): ไลบรารีใหม่นี้ช่วยให้นักพัฒนาแอปตรวจสอบได้ว่ามีการใช้การแก้ไขข้อบกพร่องที่สำคัญ (เช่น ปัญหาในระดับแพลตฟอร์ม เช่น ข้อบกพร่องของกล้องที่เฉพาะเจาะจง) กับอุปกรณ์หรือไม่ ซึ่งจะช่วยให้สามารถมอบประสบการณ์การใช้งานที่แตกต่างกันได้ ทั้งนี้ขึ้นอยู่กับว่าข้อบกพร่องที่ทราบได้รับการแก้ไขแล้วหรือไม่

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

  • กิจกรรมและการป้อนข้อมูลในเกม: เพิ่มการรองรับขนาดหน้าหน่วยความจำขนาด 16 KB และการรองรับเมาส์เริ่มต้นสำหรับ GameActivity
  • การวางตำแหน่งเคล็ดลับเครื่องมือ Material3: มีผู้ให้บริการตำแหน่งเพิ่มเติมสำหรับเคล็ดลับเครื่องมือ ซึ่งช่วยให้วางตำแหน่งเหนือ ใต้ ซ้าย หรือขวาของ Anchor ได้
  • Material3 DatePicker การแก้ไข: ทำให้ DatePicker ใช้ภาษาของตัวเองในการจัดรูปแบบตัวเลขและแก้ไขปัญหาการแสดงผล RTL
  • การรองรับ display_override ของ TWA (เบราว์เซอร์): เพิ่มการรองรับพร็อพเพอร์ตี้ไฟล์ Manifest ของ TWA display_override เพื่อให้ควบคุมการแสดงผล TWA ได้มากขึ้น
  • เปิด URL เริ่มต้นในแอปภายนอก (เบราว์เซอร์): เพิ่ม Intent เพื่ออนุญาตให้เปิด URL เริ่มต้นของ TWA ในเบราว์เซอร์ภายนอก

Android Developers Backstage

Android Developers Backstage กลับมาพร้อมอีกหนึ่งตอน

ป้อนข้อความอัตโนมัติใน Compose

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

 

เอาล่ะ 👋

ฉบับนี้มีเนื้อหาเกี่ยวกับ การครอบคลุมAndroid 16 QPR2 เบต้า 1, การเปิดตัวฟีเจอร์ Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing และการป้อนข้อความอัตโนมัติใน Compose และอื่นๆ อีกมากมาย

โปรดกลับมาดูข้อมูลอัปเดตครั้งถัดไปจากจักรวาลนักพัฒนาแอป Android ในเร็วๆ นี้

เขียนโดย

อ่านต่อ