การแสดงภาพซ้อนภาพ (PIP) คือโหมดหลายหน้าต่างประเภทพิเศษที่ใช้สำหรับการเล่นวิดีโอเป็นส่วนใหญ่ เนื่องจากช่วยให้ผู้ใช้ดูวิดีโอในหน้าต่างขนาดเล็กที่ปักหมุดไว้ที่มุมของหน้าจอในระหว่างที่ไปยังแอปต่างๆ หรือเลือกดูเนื้อหาบนหน้าจอหลัก
PIP ใช้ประโยชน์จาก API ของหลายหน้าต่างที่มีให้ใช้งานใน Android 7.0 เพื่อแสดงหน้าต่างวางซ้อนวิดีโอที่ปักหมุดไว้ หากต้องการเพิ่ม PIP ในแอป คุณต้องลงทะเบียนกิจกรรม เปลี่ยนกิจกรรมเป็นโหมด PIP ตามความจำเป็น และตรวจสอบว่าองค์ประกอบ UI นั้นซ่อนอยู่และการเล่นวิดีโอดำเนินต่อไปเมื่อกิจกรรมอยู่ในโหมด PIP
จัดการ UI ในโหมด PIP
เมื่อเข้าสู่โหมด PIP ทาง UI ทั้งหมดของแอปจะเข้าสู่หน้าต่าง PIP เว้นแต่คุณจะระบุลักษณะที่ UI ควรมีทั้งในและนอกโหมด PIP
ก่อนอื่น คุณต้องทราบว่าแอปอยู่ในโหมด PiP หรือไม่ คุณใช้ OnPictureInPictureModeChangedProvider
เพื่อดำเนินการนี้ได้
โค้ดด้านล่างจะบอกให้ทราบว่าแอปของคุณอยู่ในโหมด PiP หรือไม่
@Composable fun rememberIsInPipMode(): Boolean { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val activity = LocalContext.current.findActivity() var pipMode by remember { mutableStateOf(activity.isInPictureInPictureMode) } DisposableEffect(activity) { val observer = Consumer<PictureInPictureModeChangedInfo> { info -> pipMode = info.isInPictureInPictureMode } activity.addOnPictureInPictureModeChangedListener( observer ) onDispose { activity.removeOnPictureInPictureModeChangedListener(observer) } } return pipMode } else { return false } }
ตอนนี้คุณใช้ rememberIsInPipMode()
เพื่อสลับการแสดงองค์ประกอบ UI ต่อไปนี้ได้เมื่อแอปเข้าสู่โหมด PIP
val inPipMode = rememberIsInPipMode() Column(modifier = modifier) { // This text will only show up when the app is not in PiP mode if (!inPipMode) { Text( text = "Picture in Picture", ) } VideoPlayer() }