درباره تصویر در تصویر (PiP)

تصویر در تصویر (PiP) نوع خاصی از حالت چند پنجره‌ای است که بیشتر برای پخش ویدیو استفاده می‌شود. این قابلیت به کاربر اجازه می‌دهد تا هنگام جابجایی بین برنامه‌ها یا مرور محتوا در صفحه اصلی، ویدیویی را در یک پنجره کوچک پین شده در گوشه صفحه تماشا کند.

PiP از APIهای چند پنجره‌ای موجود در اندروید ۷.۰ برای ارائه پنجره پین‌شده روی ویدیو استفاده می‌کند. برای افزودن PiP به برنامه خود، باید فعالیت خود را ثبت کنید، در صورت نیاز فعالیت خود را به حالت PiP تغییر دهید و مطمئن شوید که عناصر رابط کاربری پنهان هستند و پخش ویدیو در حالت PiP ادامه می‌یابد.

پیاده‌سازی PiP با Jetpack

از کتابخانه Jetpack Picture-in-Picture برای پیاده‌سازی تجربه تصویر در تصویر استفاده کنید، زیرا ادغام را ساده کرده و مشکلات رایج درون برنامه‌ای را کاهش می‌دهد. برای مشاهده نمونه‌ای از کاربرد آن، به برنامه نمونه پلتفرم ما مراجعه کنید. با این حال، اگر ترجیح می‌دهید PiP را با استفاده از APIهای پلتفرم پیاده‌سازی کنید، به مستندات زیر مراجعه کنید.

،

پیاده‌سازی PiP با Jetpack

از کتابخانه Jetpack Picture-in-Picture برای پیاده‌سازی تجربه تصویر در تصویر استفاده کنید، زیرا ادغام را ساده کرده و مشکلات رایج درون برنامه‌ای را کاهش می‌دهد. برای مشاهده نمونه‌ای از کاربرد آن، به برنامه نمونه پلتفرم ما مراجعه کنید. با این حال، اگر ترجیح می‌دهید PiP را با استفاده از APIهای پلتفرم پیاده‌سازی کنید، به مستندات زیر مراجعه کنید.

رابط کاربری خود را در حالت PiP مدیریت کنید

وقتی وارد حالت PiP می‌شوید، کل رابط کاربری برنامه شما وارد پنجره PiP می‌شود، مگر اینکه مشخص کنید رابط کاربری شما در حالت 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() برای تغییر عناصر رابط کاربری که هنگام ورود برنامه به حالت 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()
}

،

تصویر در تصویر (PiP) نوع خاصی از حالت چند پنجره‌ای است که بیشتر برای پخش ویدیو استفاده می‌شود. این قابلیت به کاربر اجازه می‌دهد تا هنگام جابجایی بین برنامه‌ها یا مرور محتوا در صفحه اصلی، ویدیویی را در یک پنجره کوچک پین شده در گوشه صفحه تماشا کند.

PiP از APIهای چند پنجره‌ای موجود در اندروید ۷.۰ برای ارائه پنجره پین‌شده روی ویدیو استفاده می‌کند. برای افزودن PiP به برنامه خود، باید فعالیت خود را ثبت کنید، در صورت نیاز فعالیت خود را به حالت PiP تغییر دهید و مطمئن شوید که عناصر رابط کاربری پنهان هستند و پخش ویدیو در حالت PiP ادامه می‌یابد.

پیاده‌سازی PiP با Jetpack

از کتابخانه Jetpack Picture-in-Picture برای پیاده‌سازی تجربه تصویر در تصویر استفاده کنید، زیرا ادغام را ساده کرده و مشکلات رایج درون برنامه‌ای را کاهش می‌دهد. برای مشاهده نمونه‌ای از کاربرد آن، به برنامه نمونه پلتفرم ما مراجعه کنید. با این حال، اگر ترجیح می‌دهید PiP را با استفاده از APIهای پلتفرم پیاده‌سازی کنید، به مستندات زیر مراجعه کنید.

،

پیاده‌سازی PiP با Jetpack

از کتابخانه Jetpack Picture-in-Picture برای پیاده‌سازی تجربه تصویر در تصویر استفاده کنید، زیرا ادغام را ساده کرده و مشکلات رایج درون برنامه‌ای را کاهش می‌دهد. برای مشاهده نمونه‌ای از کاربرد آن، به برنامه نمونه پلتفرم ما مراجعه کنید. با این حال، اگر ترجیح می‌دهید PiP را با استفاده از APIهای پلتفرم پیاده‌سازی کنید، به مستندات زیر مراجعه کنید.

رابط کاربری خود را در حالت PiP مدیریت کنید

وقتی وارد حالت PiP می‌شوید، کل رابط کاربری برنامه شما وارد پنجره PiP می‌شود، مگر اینکه مشخص کنید رابط کاربری شما در حالت 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() برای تغییر عناصر رابط کاربری که هنگام ورود برنامه به حالت 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()
}