پشتیبانی از چندپنجره‌ای

در Android نسخه ۷.۰ و بالاتر، دستگاه‌ها می‌توانند بااستفاده از چندپنجره‌ای، چندین برنامه را به‌طور هم‌زمان نمایش دهند. ‫Android از سه پیکربندی چندپنجره‌ای پشتیبانی می‌کند:

  • آزاد: به کاربران امکان می‌دهد اندازه پین‌های فعالیت را به‌صورت پویا تغییر دهند و بیش‌از دو برنامه در صفحه‌نمایششان قابل‌مشاهده باشد. در پنجره‌بندی رایانه‌ای، کاربران می‌توانند پنجره‌های با شکل آزاد در رایانه‌ای ایجاد کنند که تعامل‌های سبک رایانه ارائه می‌دهد.
  • صفحهٔ دونیمه: پیاده‌سازی پیش‌فرض چندپنجره‌ای که دو قاب فعالیت ارائه می‌دهد که کاربران می‌توانند برنامه‌ها را در آن‌ها قرار دهند.
  • تصویردرتصویر (PiP): به دستگاه‌های دارای Android اجازه می‌دهد محتوای ویدیویی را در پنجره‌ای کوچک پخش کنند درحالی‌که کاربر با برنامه‌های دیگر تعامل دارد.

پیش‌نیازهای دستگاه چندپنجره‌ای

پشتیبانی از چندپنجره‌ای به‌طور پیش‌فرض در Android 7.0 و بالاتر فعال است. برای غیرفعال کردن آن، پرچم config_supportsMultiWindow را در فایل config.xml دستگاهتان روی false تنظیم کنید.

حالت چندپنجره‌ای به‌طور پیش‌فرض در همه دستگاه‌های دارای حافظه دسترسی تصادفی پایین (دستگاه‌هایی که ActivityManager.isLowRam را اعلام می‌کنند) غیرفعال است. دستگاه‌های دارای حافظه دسترسی تصادفی پایین مقدار پرچم config_supportsMultiWindow را نادیده می‌گیرند.

قالب آزاد

پنجره قالب آزاد به کاربر امکان می‌دهد پنجره‌هایی ایجاد کند که آزادانه تغییر اندازه دهند. پنجره‌بندی قالب آزاد پیش‌نیاز پنجره‌بندی رایانه‌ای است. شرایط لازم دستگاه برای فعال کردن پنجره قالب آزاد به شرح زیر است:

  • پرچم config_supportsMultiWindow را فعال کنید.
  • مدیریت پنجره قالب آزاد را به یکی از روش‌های زیر فعال کنید:
    • پرچم config_freeformWindowManagement را در config.xml فعال کنید:
      <feature name="android.software.freeform_window_management" />
    • موارد زیر را در فایل ساخت دستگاه اضافه کنید:
      PRODUCT_COPY_FILES += \
      frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml

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

پنجره‌بندی رایانه‌ای

«پنجره‌بندی رایانه‌ای» فضای کاری برای چندوظیفگی در صفحه‌نمایش‌های بزرگ فراهم می‌کند که برپایه پنجره‌های قالب آزاد ساخته شده است. فضای کاری در کنار تمام‌صفحه وجود دارد و رفتارها و امکانات اضافی میانای کاربری دارد که به کاربر تجربه چندوظیفگی انعطاف‌پذیرتری می‌دهد:

  • تعامل با صفحه‌کلید یا موشواره: از تعامل‌های لمسی و تعامل‌های با صفحه‌کلید یا موشواره پشتیبانی می‌کند.
  • پنجره‌های قالب آزاد: برنامه‌ها را در پنجره‌های قابل‌تغییر اندازه و جابه‌جایی با نوار عنوان و کنترل‌های پنجره اجرا می‌کند.
  • نوار وظیفه بهبودیافته: دسترسی آسان به برنامه‌های درحال اجرا و سنجاق‌شده را فراهم می‌کند.
  • بهینه‌سازی نمایشگرهای خارجی: نمایشگرهای متصل را به محیط‌های میز کار برای دستگاه‌های پشتیبانی‌شده تبدیل می‌کند.
  • میزکارهای مجازی: به کاربران امکان می‌دهد برنامه‌ها را در چندین فضای کاری سازمان‌دهی کنند.

برای پیکربندی دستگاه برای پنجره‌بندی میزکار، پیش‌نیازهای زیر را برآورده کنید:

  • پرچم‌های زیر را فعال کنید:
    • همه پیش‌نیازهای پنجره قالب آزاد
    • پرچم جهانی پنجره‌بندی رایانه‌ای config_isDesktopModeSupported
  • «واسط کاربر سیستم» به نمایشگری با حداقل ۶۰۰ dp عرض نیاز دارد. پنجره‌بندی رایانه ممکن است در صفحه‌نمایش‌های کوچک‌تر آن‌طور که انتظار می‌رود کار نکند.
  • دستگاه نباید حافظه دسترسی تصادفی (RAM) کمی داشته باشد. ActivityManager.isLowRam باید false را برگرداند، زیرا دستگاه‌های دارای حافظه دسترسی تصادفی پایین برای هیچ‌یک از ویژگی‌های چند پنجره‌ای واجدشرایط نیستند.

جدول زیر پیکربندی‌هایی را فهرست می‌کند که در آن‌ها می‌توان دستگاه را برای پنجره‌بندی رایانه‌ای پیکربندی کرد، بسته به اندازه صفحه‌نمایش و نحوه استفاده موردنظر از دستگاه:

حالت دستگاه دستی فقط تمام‌صفحه دستگاه دستی تمام‌صفحه اول که روی نمایشگر متصل پخش می‌شود صفحه بزرگ تمام‌صفحه-اول که به نمایشگر متصل‌شده گسترش می‌یابد صفحه‌نمایش بزرگ با اولویت پنجره‌بندی رایانه‌ای
ضریب شکل نمونه تلفن دستی تلفن دستی که از HDMI به نمایشگر خارجی پشتیبانی می‌کند رایانه لوحی که از HDMI به نمایشگر خارجی پشتیبانی می‌کند رایانه لوحی با صفحه‌کلید که از HDMI برای نمایشگر خارجی پشتیبانی می‌کند
تجربه نمایشگر داخلی تمام‌صفحه، صفحهٔ دونیمه، تصویردرتصویر، و قالب آزاد غیررومیزی پشتیبانی می‌شود تمام‌صفحه، صفحهٔ دونیمه، PiP پشتیبانی می‌شود پنجره‌بندی رایانه‌ای با پشتیبانی از تمام‌صفحه، صفحهٔ دونیمه، و PiP ازطریق میزکارهای جداگانه «پنجره‌بندی رایانه‌ای» حالت پنجره‌بندی پیش‌فرض است (از میز کار جداگانه پشتیبانی می‌شود)؛ کاربران می‌توانند ازطریق میز کار جداگانه وارد حالت تمام‌صفحه یا حالت لمسی پنجره‌بندی رایانه‌ای شوند
تجربه نمایشگر متصل فقط آینه‌سازی نمایشگر داخلی پردازش پنجره‌ای رایانه فقط در نمایشگرهای متصل‌شده پردازش پنجره‌ای رایانه میزکارها را گسترش می‌دهد؛ در نمایشگرهای داخلی دردسترس است پردازش پنجره‌ای رایانه میزکارها را گسترش می‌دهد؛ در نمایشگرهای داخلی دردسترس است
تنظیمات پیکربندی
config_supportsMultiWindow true true true true
config_freeformWindowManagement true true true true
config_isDesktopModeSupported false true true true
config_canInternalDisplayHostDesktops نادیده‌گرفته‌شده false true true
config_enterDesktopByDefaultOnFreeformDisplay نادیده‌گرفته‌شده false false true

config_isDesktopModeSupported

پرچم رونهاد پیکربندی config_isDesktopModeSupported پرچم سطح بالا برای فعال کردن پنجره‌بندی رایانه‌ای است. اگر فعال نباشد، همه تنظیمات پیکربندی دیگر نادیده گرفته می‌شوند. آن را روی true در config.xml تنظیم کنید:

<!-- Globally enable Desktop windowing logic -->
    <bool name="config_isDesktopModeSupported">true</bool>

وقتی config_isDesktopModeSupported روی true باشد، سیستم به‌طور خودکار نمایشگرهای خارجی واجدشرایط (مثل نمایشگرهای متصل‌شده ازطریق «درگاه نمایشگر» یا HDMI) را به‌عنوان نامزدهای پنجره‌بندی رایانه‌ای درنظر می‌گیرد. «مدیر پنجره» باید نمایشگر را واجدشرایط بداند (حداقل عمومی و مطمئن، پنجره‌بندی رایانه‌ای را ببینید). سیستم به‌طور پیش‌فرض تلاش می‌کند تا تکالیف را در حالت قالب آزاد در این نمایشگرها راه‌اندازی کند.

config_canInternalDisplayHostDesktops

پرچم رونهاد پیکربندی config_canInternalDisplayHostDesktops پردازش پنجره‌ای رایانه را در نمایشگر داخلی دستگاه فعال می‌کند. آن را روی true در config.xml تنظیم کنید:

<!-- Allow the primary internal display to host desktop sessions -->
    <bool name="config_canInternalDisplayHostDesktops">true</bool>

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

config_enterDesktopByDefaultOnFreeformDisplay

پرچم رونهاد پیکربندی config_enterDesktopByDefaultOnFreeformDisplay پردازش پنجره‌ای میز کار را به‌عنوان حالت پردازش پنجره‌ای پیش‌فرض در نمایشگر داخلی دستگاه تنظیم می‌کند. اگر فعال نباشد، تمام‌صفحه حالت پیش‌فرض پنجره‌بندی است و میزکارها با هم وجود دارند. آن را روی true در config.xml تنظیم کنید:

<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
    <bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>

فعال کردن محدودیت‌های تکلیف

برای پیکربندی حداکثر تعداد وظایف پشتیبانی‌شده در پنجره‌بندی رایانه، پرچم رونهاد پیکربندی config_maxDesktopWindowingActiveTasks را در config.xml روی حداکثر تعداد وظایف پشتیبانی‌شده تنظیم کنید. برای پشتیبانی از تعداد نامحدود تکلیف، مقدار پرچم را روی 0 تنظیم کنید:

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

فعال کردن محدودیت‌های میز کار

برای پیکربندی حداکثر تعداد میزکارهای مجازی پشتیبانی‌شده در پنجره‌بندی میز کار، پرچم رونهاد پیکربندی config_maxDesktopWindowingDesks را در config.xml روی حداکثر تعداد میزکارهای پشتیبانی‌شده تنظیم کنید. برای پشتیبانی از تعداد نامحدود میز کار، مقدار پرچم را روی 0 تنظیم کنید:

<!-- Maximum number of virtual desks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingDesks">4</integer>

صفحهٔ دونیمه

تجربه پیش‌فرض چندپنجره‌ای حالت دونیمه کردن صفحه است که در آن واسط کاربر «سیستم» در وسط دستگاه در حالت عمودی یا افقی تقسیم می‌شود. کاربران می‌توانند با کشیدن خط تقسیم از پهلو به پهلو یا از بالا به پایین، بسته به جهت دستگاه، اندازه پنجره را تغییر دهند.

پس‌از فعال کردن صفحه دونیمه، سازندگان دستگاه می‌توانند انتخاب کنند که حالت آزاد یا PiP را فعال کنند.

‫Android نسخه ۸.۰ و بالاتر با فشرده کردن راه‌انداز هنگام تک‌ضرب زدن کاربر روی صفحه اصلی، صفحه دونیمه را بهبود می‌بخشد. برای جزئیات پیاده‌سازی، تعاملات صفحهٔ دونیمه را ببینید.

تصویر در تصویر

پس‌از فعال کردن حالت چندپنجره‌ای با پرچم config_supportsMultiWindow، سازندگان دستگاه می‌توانند از تصویردرتصویر پشتیبانی کنند، که به کاربران امکان می‌دهد حین مرور فعالیت‌های دیگر ویدیو تماشا کنند. اگرچه این ویژگی برای دستگاه‌های Android TV درنظر گرفته شده است، انواع دیگر دستگاه‌ها نیز ممکن است از این ویژگی پشتیبانی کنند.

برای پشتیبانی از PiP، ویژگی سیستم PackageManager#FEATURE_PICTURE_IN_PICTURE را در /android/frameworks/base/core/java/android/content/pm/PackageManager.java فعال کنید.

برای جزئیات بیشتر درباره پیاده‌سازی PiP برای دستگاه‌های دارای Android نسخه ۸.۰ و بالاتر، تصویردرتصویر را ببینید.

واسط کاربری سیستم

از همه میاناهای کاربر سامانه استاندارد مطابق با درستی‌سنجی حالت چندپنجره‌ای پشتیبانی کند.

برنامه‌ها

برای پشتیبانی از حالت چندپنجره‌ای برای برنامه‌های ازپیش‌بارگیری‌شده، پشتیبانی از حالت چندپنجره‌ای را ببینید.

اعتبارسنجی

برای اعتبارسنجی پیاده‌سازی چندپنجره‌ای، آزمایش‌های CTS مربوطه را اجرا کنید و درستی‌سنجی حالت چندپنجره‌ای را دنبال کنید.

نسخه Android آزمایش CTS
۷.۰ /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
۸.۰ /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
۹٫۰ /platform/cts/tests/framework/base/activitymanager/src/android/server/am
‫Android 10 و بالاتر /platform/cts/tests/framework/base/windowmanager/src/android/server/wm