بهبودهای PiP یا تصویر در تصویر در اندروید 12

اندروید 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 منتظر بود تا انیمیشن کشویی به داخل خانه به پایان برسد.

برای پیاده سازی این ویژگی:

  1. برای ساخت 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 را تغییر اندازه دهد.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

golaleh hoseini
مدرس دوره

golaleh hoseini

مدرس دوره های سِون کلونر

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۱۲
۰
۱۲ آذر ۱۳۹۹

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.


۹۹۲
۰
۲۲ آذر ۱۳۹۹

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


۹۴۶
۰
۱۳ آذر ۱۳۹۹

جاوا اسکریپت

جاوا اسکریپت یک زبان پویا و محبوب مبتنی بر شیء, داینامیک و مفسری می باشد. این زبان برای برنامه نویسی سمت سرور و کلاینت استفاده میشود که ...


۸۶۸
۰
۱۳ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52