اندروید 12 حالت و ویژگی های جدیدی را برای حالت تصویر در تصویر (PiP) بهبود داده و ارائه کرده است.
بهبود رفتار برای single- and double-tapping
آندروید 12 رفتار PiP را برای تک ضربه و دو ضربه زدن به شرح زیر بهبود داده است:
- با یک ضربه زدن روی پنجره PiP اکنون کنترل ها برای کاربر نمایش داده می شود. پیش از این ، یک ضربه پنجره PiP را گسترش داده و کنترل ها را نمایش می داد.
- با دو ضربه زدن روی پنجره PiP اکنون بین اندازه PiP فعلی و حداکثر اندازه PiP جابجا می شود. پیش از این، یک حالت PiP چپ به حالت تمام صفحه با دو بار ضربه زدن ممکن بود.
ویژگی های جدید
اندروید 12 ویژگی های جدید زیر را برای حالت PiP معرفی می کند:
- Flag API جدید برای انتقال نرم به حالت PiP در پیمایش اشاره
- Flag API جدید برای غیرفعال کردن تغییر اندازه یکپارچه برای محتوای غیر ویدیویی
- هنگام خارج شدن از حالت PiP ، انیمیشن های نرم و نرم تر
- پشتیبانی از حرکات جدید
New API flag for smoother transition to PiP mode in gesture navigation
Android 12 به شما امکان می دهد از پرچم setAutoEnterEnabled جدید برای ایجاد انتقال نرم تر به حالت PiP هنگام کشیدن به سمت خانه در حالت ناوبری استفاده کنید. پیش از این، اندروید قبل از محو شدن در پنجره PiP منتظر بود تا انیمیشن کشویی به داخل خانه به پایان برسد.
برای پیاده سازی این ویژگی:
- برای ساخت Builder از setAutoEnterEnabled استفاده کنید، به شرح زیر:
setPictureInPictureParams(new PictureInPictureParams.Builder() .setAspectRatio(aspectRatio) .setSourceRectHint(sourceRectHint) .setAutoEnterEnabled(true) .build());
توجه: وقتی setAutoEnterEnabled فعال است، نیازی نیست که صریحاً با enterPictureInPictureMode در onUserLeaveHint تماس بگیرید.
2. setPictureInPictureParams را فرا خوانی کنید تا به روزرسانی PictureInPictureParams به زودی انجام گیرد. برنامه نباید منتظر پاسخ onUserLeaveHint باشد (همانطور که در اندروید 11 انجام می شد).
به عنوان مثال ، اگر نسبت ابعاد تغییر کند، ممکن است برنامه ای در اولین پخش و هر بازپخش بعدی با setPictureInPictureParams تماس بگیرد.
3. در صورت لزوم دستور setAutoEnterEnabled(false) فراخوانی کنید. به عنوان مثال، اگر برنامه پخش ویدیوی در حالت مکث باشد، ورود به PiP احتمالاً مطلوب نیست.
API flag جدید برای غیرفعال کردن تغییر اندازه یکپارچه برای محتوای غیر ویدیویی
اندروید 12 flag SeamlessResizeEnabled را اضافه می کند، که هنگام تغییر اندازه محتوای غیر ویدئویی در پنجره PiP ، انیمیشن متقاطع ضعیف تری را ایجاد می کند. پیش از این، تغییر اندازه محتوای غیر ویدیویی در یک پنجره PiP می توانست مصنوعات بصری ناموزونی را ایجاد کند.
پرچم setSeamlessResizeEnabled به صورت پیش فرض برای backward-compatibilityبر روی true تنظیم شده است. این مجموعه را برای محتوای ویدیویی درست بگذارید و برای محتوای غیر ویدیویی آن را به غلط تغییر دهید.
برای غیرفعال کردن تغییر اندازه یکپارچه برای محتوای غیر ویدیویی:
setPictureInPictureParams(new PictureInPictureParams.Builder() .setSeamlessResizeEnabled(false) .build());
هنگام خروج از حالت PiP از انیمیشن های نرم و روان پشتیبانی کنید
در Android 12 ، پرچم SourceRectHint اکنون برای اجرای انیمیشن روان هنگام خروج از حالت PiP مجدداً استفاده می شود. هنگام خروج، سیستم انیمیشن را با استفاده از sourceRectHint ایجاد می کند، خواه این Rect اصلی باشد که برای ورود به PIP استفاده می شود یا Rect به روز شده ارائه شده توسط برنامه.
برای اجرای این ویژگی، برنامه خود را به صورت زیر به روز کنید:
- برای ساخت انیمیشن ورود روان، PictureInPictureParams با sourceRectHint و aspektRatio ادامه دهید.
- در صورت لزوم ، sourceRectHint را قبل از شروع انتقال سیستم به روز کنید. وقتی سیستم می خواهد از حالت PIP خارج شود، سلسله مراتب نمای فعالیت به پیکربندی مقصد (مثلاً تمام صفحه) ارائه می شود. این برنامه می تواند شنونده تغییر طرح را به نمای اصلی یا نمای هدف خود متصل کند (مانند نمای پخش کننده ویدیو) تا قبل از شروع انیمیشن، رویداد را شناسایی کرده و sourceRectHint را به روز کند.
// Listener is called immediately after the user exits PIP but before animating. playerView.addOnLayoutChangeListener { _, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) { // The playerView's bounds changed, update the source hint rect to // reflect its new bounds. val sourceRectHint = Rect() playerView.getGlobalVisibleRect(sourceRectHint) setPictureInPictureParams( PictureInPictureParams.Builder() .setSourceRectHint(sourceRectHint) .build() ) } }
پشتیبانی از حرکات جدید
Android 12 اکنون از حرکات ذخیره سازی و بزرگنمایی برای بزرگنمایی پنجره PiP پشتیبانی می کند:
- برای ذخیره کردن پنجره، کاربر می تواند پنجره را به لبه چپ یا راست بکشد. برای لغو کردن پنجره، کاربر می تواند روی قسمت قابل مشاهده پنجره مخفی ضربه زده یا آن را به بیرون بکشد.
کاربر اکنون می تواند با استفاده از بزرگنمایی pinch-to-zoom ، پنجره PiP را تغییر اندازه دهد.