پشتیبانی از پنجره دسکتاپ

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

در شکل 1 می توانید سازماندهی صفحه را با فعال بودن پنجره دسکتاپ مشاهده کنید. موارد قابل توجه:

  • کاربران می توانند چندین برنامه را در کنار یکدیگر به طور همزمان اجرا کنند.
  • نوار وظیفه در یک موقعیت ثابت در پایین صفحه نمایش است که برنامه های در حال اجرا را نشان می دهد. کاربران می توانند برنامه ها را برای دسترسی سریع پین کنند.
  • نوار هدر قابل تنظیم جدید بالای هر پنجره را با کنترل هایی مانند کوچک کردن و حداکثر کردن تزئین می کند.
شکل 1. پنجره دسکتاپ روی تبلت.

به طور پیش فرض، برنامه ها در تبلت های اندرویدی تمام صفحه باز می شوند. برای راه‌اندازی یک برنامه در پنجره‌سازی دسک‌تاپ، دستگیره پنجره را در بالای صفحه فشار داده و نگه دارید و دستگیره را در UI بکشید، همانطور که در شکل 2 مشاهده می‌شود.

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

شکل 2. دستگیره پنجره برنامه را فشار دهید، نگه دارید و بکشید تا وارد پنجره دسکتاپ شوید.

کاربران همچنین می توانند پنجره دسکتاپ را از منویی که در زیر دسته پنجره نمایش داده می شود، هنگامی که روی دستگیره ضربه می زنید یا کلیک می کنید یا از کلید میانبر صفحه کلید متا (Windows، Command یا Search) + Ctrl + Down استفاده می کنید، فراخوانی کنند.

کاربران با بستن تمام پنجره های فعال یا با گرفتن دسته پنجره در بالای پنجره دسکتاپ و کشیدن برنامه به بالای صفحه از پنجره دسکتاپ خارج می شوند. میانبر صفحه کلید Meta + H نیز از پنجره دسکتاپ خارج می شود و برنامه ها را دوباره تمام صفحه اجرا می کند.

برای بازگشت به پنجره دسکتاپ، روی کاشی فضای دسکتاپ در صفحه Recents ضربه بزنید یا کلیک کنید.

قابلیت تغییر اندازه و حالت سازگاری

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

شکل 3. تغییر اندازه پنجره یک برنامه پرتره محدود به افقی.

برنامه‌هایی که به‌عنوان غیرقابل تغییر اندازه اعلام شده‌اند (یعنی resizeableActivity = false )، رابط کاربری آن‌ها با حفظ نسبت ابعاد یکسان، مقیاس‌بندی شده است.

شکل 4. رابط کاربری یک برنامه غیرقابل تغییر اندازه با تغییر اندازه پنجره مقیاس می شود.

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

تا زمانی که برنامه‌ها برای پیاده‌سازی منظره‌یاب‌های دوربین کاملاً پاسخ‌گو آماده نباشند، درمان ویژه تجربه کاربری اساسی‌تری را ارائه می‌کند که اثراتی را که فرضیات اشتباه ممکن است ایجاد کند، کاهش می‌دهد.

برای کسب اطلاعات بیشتر در مورد حالت سازگاری برای برنامه های دوربین، به حالت سازگاری دستگاه مراجعه کنید.

شکل 5. منظره یاب دوربین نسبت تصویر خود را با تغییر اندازه پنجره حفظ می کند.

هدرهای قابل تنظیم

همه برنامه‌هایی که در پنجره دسک‌تاپ اجرا می‌شوند، حتی در حالت همه‌جانبه ، نوار هدر دارند.
اطمینان حاصل کنید که محتوای برنامه شما توسط نوار هدر مخفی نشده است. نوار سرصفحه یک نوع درج نوار عنوان است: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar() ; در views، WindowInsets.Type.captionBar() که بخشی از نوارهای سیستم است.

می‌توانید در مورد مدیریت inset‌ها در نمایش محتوای لبه به لبه در برنامه‌تان و مدیریت ورودی‌های پنجره در Compose اطلاعات بیشتری کسب کنید.

نوار هدر نیز قابل تنظیم است. اندروید 15 نوع ظاهری APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND را معرفی کرد تا نوار سرصفحه شفاف شود تا برنامه‌ها بتوانند محتوای سفارشی را درون نوار هدر بکشند.

سپس برنامه‌ها مسئول استایل دادن به قسمت بالای محتوای خود می‌شوند تا مانند نوار شرح (پس‌زمینه، محتوای سفارشی و غیره) به استثنای عناصر زیرنویس سیستم (دکمه‌های بستن و حداکثر کردن)، که توسط سیستم ترسیم می‌شوند. نوار توضیح شفاف در بالای برنامه.

برنامه‌ها می‌توانند با استفاده از APPEARANCE_LIGHT_CAPTION_BARS ظاهر عناصر سیستم را در داخل عنوان برای تم‌های روشن و تاریک تغییر دهند، مشابه نحوه تغییر وضعیت نوار وضعیت و نوار ناوبری.

اندروید 15 همچنین متد WindowInsets#getBoundingRects() معرفی کرد که به برنامه‌ها امکان می‌دهد تا با جزئیات بیشتری درون نوار کپشن را بررسی کنند. برنامه ها می توانند بین مناطقی که سیستم عناصر سیستم را ترسیم می کند و مناطق استفاده نشده ای که برنامه ها می توانند محتوای سفارشی را بدون همپوشانی عناصر سیستم قرار دهند، تفاوت قائل شوند.

فهرست اشیاء Rect که توسط API برگردانده شده است، مناطق سیستم را نشان می دهد که باید از آنها اجتناب شود. هر فضای باقیمانده (محاسبه شده با کم کردن مستطیل ها از نوار عنوان Insets) جایی است که برنامه می تواند بدون همپوشانی عناصر سیستم و با قابلیت دریافت ورودی طراحی کند.

کروم قبل و بعد از اجرای هدرهای سفارشی.
شکل 6. کروم قبل و بعد از اجرای هدرهای سفارشی.

پشتیبانی از چند وظیفه و چند نمونه

چندوظیفه ای هسته اصلی پنجره دسکتاپ است و اجازه دادن به چندین نمونه از برنامه شما می تواند بهره وری کاربران را به شدت افزایش دهد.

Android 15 PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI را معرفی می‌کند، که برنامه‌ها می‌توانند آن را تنظیم کنند تا مشخص کنند که رابط کاربری سیستم باید برای برنامه نشان داده شود تا به آن اجازه راه‌اندازی به صورت چند نمونه را بدهد.

نمونه های برنامه را با کشیدن حرکات مدیریت کنید

در حالت چند پنجره ای، کاربران می توانند یک نمونه برنامه جدید را با کشیدن یک عنصر view از پنجره برنامه شروع کنند. کاربران همچنین می توانند عناصر را بین نمونه های یک برنامه جابجا کنند.

شکل 7. یک نمونه جدید از کروم را با کشیدن یک برگه به ​​خارج از پنجره دسکتاپ شروع کنید.

اندروید 15 دو پرچم را برای سفارشی کردن رفتار کشیدن و رها کردن معرفی می کند:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG : نشان می دهد که اگر هیچ پنجره قابل مشاهده ای افت را کنترل نمی کند، یک کشیدن کنترل نشده باید به سیستم واگذار شود تا شروع شود. هنگام استفاده از این پرچم، تماس گیرنده باید یک Item به ClipData ارائه دهد که حاوی یک IntentSender غیرقابل تغییر برای فعالیتی است که قرار است راه اندازی شود (به ClipData.Item.Builder#setIntentSender() ) مراجعه کنید. این سیستم می تواند بر اساس عواملی مانند اندازه فعلی صفحه نمایش یا حالت پنجره، قصد راه اندازی کند یا نه. اگر سیستم intent را راه‌اندازی نکند، با استفاده از جریان عادی کشیدن و رها کردن، هدف لغو می‌شود.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION : نشان می دهد که یک عملیات کشیدن می تواند از مرزهای پنجره عبور کند (برای چندین نمونه از یک برنامه).

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

شکل 8. یک برگه را بین دو نمونه از برنامه Chrome حرکت دهید.

بهینه سازی های اضافی

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

اندازه و موقعیت پیش فرض را مشخص کنید

همه برنامه ها، حتی اگر قابل تغییر اندازه باشند، به یک پنجره بزرگ برای ارائه ارزش کاربر نیاز ندارند. می‌توانید از متد ActivityOptions#setLaunchBounds() برای تعیین اندازه و موقعیت پیش‌فرض هنگام راه‌اندازی یک فعالیت استفاده کنید.

از فضای دسکتاپ وارد حالت تمام صفحه شوید

برنامه ها می توانند با فراخوانی Activity#requestFullScreenMode() وارد حالت تمام صفحه به صورت برنامه ریزی شده شوند. این روش برنامه را مستقیماً از پنجره دسکتاپ در حالت تمام صفحه قرار می دهد.