نشرها فرانشيسكو رومانو، كبير مهندسي علاقات المطورين في نظام Android
يسعدنا أن نعلن عن إنجاز كبير في التقريب بين الحوسبة المحمولة وسطح المكتب على نظام Android: لقد وصل دعم العرض المتصل إلى التوفر العام مع أندرويد 16 كيو بي آر 3 يطلق!
كما هو مبين في جوجل آي/أو 2025، تتيح الشاشات المتصلة للمستخدمين توصيل أجهزتهم التي تعمل بنظام Android بشاشة خارجية والوصول على الفور إلى بيئة نوافذ سطح المكتب. يمكن استخدام التطبيقات في شكل حر أو نوافذ مكبرة ويمكن للمستخدمين القيام بمهام متعددة تمامًا كما يفعلون على نظام تشغيل سطح المكتب.
تعاونت Google وSamsung لتقديم تجربة نوافذ سطح مكتب سلسة وقوية للأجهزة عبر نظام Android البيئي الذي يعمل بنظام Android 16 أثناء الاتصال بشاشة خارجية.
ويتوفر هذا الآن بشكل عام على الأجهزة المدعومة* للمستخدمين الذين يمكنهم توصيل هواتف Pixel وSamsung المدعومة بشاشات خارجية، مما يتيح فرصًا جديدة لبناء تجارب تطبيقات أكثر جاذبية وإنتاجية تتكيف مع عوامل الشكل.
كيف يعمل؟
عند توصيل هاتف Android أو هاتف قابل للطي مدعوم بشاشة خارجية، تبدأ جلسة سطح مكتب جديدة على الشاشة المتصلة.
تشبه التجربة على الشاشة المتصلة التجربة على سطح المكتب، بما في ذلك شريط المهام الذي يعرض التطبيقات النشطة ويتيح للمستخدمين تثبيت التطبيقات للوصول السريع. يستطيع المستخدمون تشغيل تطبيقات متعددة جنبًا إلى جنب في وقت واحد في نوافذ يمكن تغيير حجمها بحرية على الشاشة المتصلة.
الهاتف متصل بشاشة خارجية مع جلسة سطح المكتب على الشاشة بينما يحتفظ الهاتف بحالته الخاصة.
عندما يكون الجهاز الذي يدعم نافذة سطح المكتب (مثل جهاز لوحي مثل Samsung Galaxy Tab S11) متصلاً بشاشة خارجية، يتم تمديد جلسة سطح المكتب عبر كلا الشاشتين، مما يفتح مساحة عمل أكثر اتساعًا. تعمل الشاشتان بعد ذلك كنظام واحد مستمر، مما يسمح لنوافذ التطبيقات والمحتوى والمؤشر بالتحرك بحرية بين الشاشات.
جهاز لوحي متصل بشاشة خارجية، مما يؤدي إلى تمديد جلسة سطح المكتب عبر كلتا الشاشتين.
في إصدار Android 16 QPR3، انتهينا من سلوكيات النوافذ وتفاعلات شريط المهام و توافق المدخلات (الماوس ولوحة المفاتيح) التي تحدد تجربة العرض المتصلة. نحن أيضا شملت علاجات التوافق لتغيير حجم النوافذ وتجنب إعادة تشغيل التطبيق عند تبديل شاشات العرض.
إذا تم إنشاء تطبيقك باستخدام مبادئ التصميم التكيفي، سيكون له شكل سطح المكتب ومظهره تلقائيًا، وسيشعر المستخدمون وكأنهم في المنزل تمامًا. إذا كان التطبيق مقفلاً على الوضع الرأسي أو يفترض واجهة تعمل باللمس فقط، فهذا هو الوقت المناسب للتحديث.
على وجه الخصوص، انتبه إلى أفضل الممارسات الأساسية التالية للحصول على تجارب التطبيقات المثالية على شاشات العرض المتصلة:
أكبر تحديث في Jetpack WindowManager 1.5.0 هو إضافة فئتين جديدتين لحجم نافذة العرض: كبير وكبير جدًا.
فئات حجم النافذة هي مجموعتنا الرسمية والمحددة من نقاط العرض الفاصلة التي تساعدك على تصميم تخطيطات قابلة للتكيف وتطويرها. مع الإصدار 1.5.0، نقوم بتوسيع هذه الإرشادات للشاشات التي يتجاوز حجمها الأجهزة اللوحية النموذجية.
فيما يلي نقاط توقف العرض الجديدة:
- كبير: للعروض التي تتراوح بين 1200dp و1600dp
- كبير جدًا: للعروض ≥1600dp

فئات حجم النافذة المختلفة بناءً على عرض العرض.
على الأسطح الكبيرة جدًا، ما عليك سوى توسيع نطاق الكمبيوتر اللوحي موسعة التخطيط ليس دائمًا أفضل تجربة للمستخدم. على سبيل المثال، قد يعرض عميل البريد الإلكتروني بشكل مريح جزأين (صندوق بريد ورسالة) في فئة حجم النافذة الموسعة. ولكن على كبيرة جدًا شاشة سطح المكتب، يمكن لعميل البريد الإلكتروني أن يعرض بشكل أنيق ثلاثة أو حتى أربعة أجزاء، ربما صندوق بريد، وقائمة رسائل، ومحتوى الرسالة بالكامل، ولوحة التقويم/المهام، كلها مرة واحدة.
لتضمين فئات حجم النافذة الجديدة في مشروعك، ما عليك سوى استدعاء الوظيفة من ملف WindowSizeClass.BREAKPOINTS_V2 تعيين بدلا من WindowSizeClass.BREAKPOINTS_V1:
val currentWindowMetrics = WindowMetricsCalculator.getOrCreate() .computeCurrentWindowMetrics(LocalContext.current) val sizeClass = WindowSizeClass.BREAKPOINTS_V2 .computeWindowSizeClass(currentWindowMetrics)
ثم قم بتطبيق التخطيط الصحيح عندما تكون متأكدًا من أن تطبيقك يحتوي على هذه المساحة على الأقل:
if(sizeClass.isWidthAtLeastBreakpoint( WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){ ... // Window is at least 1200 dp wide. }
أنشئ تخطيطات قابلة للتكيف باستخدام Jetpack Navigation 3
يعد Navigation 3 أحدث إضافة إلى مجموعة Jetpack. إن Navigation 3، الذي وصل للتو إلى أول إصدار مستقر له، عبارة عن مكتبة تنقل قوية مصممة للعمل مع Compose.
يعد التنقل 3 أيضًا أداة رائعة لإنشاء تخطيطات قابلة للتكيف من خلال السماح بعرض وجهات متعددة في نفس الوقت والسماح بالتبديل السلس بين تلك التخطيطات.
يعتمد هذا النظام لإدارة تدفق واجهة المستخدم لتطبيقك على المشاهد. المشهد هو تخطيط يعرض وجهة واحدة أو أكثر في نفس الوقت. تحدد استراتيجية SceneStrategy ما إذا كان يمكنها إنشاء مشهد. يتيح لك تسلسل مثيلات SceneStrategy معًا إنشاء وعرض مشاهد مختلفة لأحجام الشاشات المختلفة وتكوينات الأجهزة.
بالنسبة للتخطيطات الأساسية الجاهزة، مثل تفاصيل القائمة وجزء الدعم، يمكنك استخدام Scenes من مكتبة Compose Material 3 Adaptive (المتوفرة في الإصدار 1.3 وما فوق).
من السهل أيضًا إنشاء مشاهد مخصصة خاصة بك عن طريق تعديل وصفات المشهد أو البدء من الصفر. على سبيل المثال، لنفكر في مشهد يعرض ثلاثة أجزاء جنبًا إلى جنب:
class ThreePaneScene<T : Any>( override val key: Any, override val previousEntries: List<NavEntry<T>>, val firstEntry: NavEntry<T>, val secondEntry: NavEntry<T>, val thirdEntry: NavEntry<T> ) : Scene<T> { override val entries: List<NavEntry<T>> = listOf(firstEntry, secondEntry, thirdEntry) override val content: @Composable (() -> Unit) = { Row(modifier = Modifier.fillMaxSize()) { Column(modifier = Modifier.weight(1f)) { firstEntry.Content() } Column(modifier = Modifier.weight(1f)) { secondEntry.Content() } Column(modifier = Modifier.weight(1f)) { thirdEntry.Content() } } }
في هذا السيناريو، يمكنك تحديد استراتيجية المشهد لإظهار ثلاثة أجزاء إذا كان عرض النافذة عريضًا بدرجة كافية وكانت الإدخالات من مجموعتك الخلفية قد أعلنت أنها تدعم العرض في مشهد ثلاثي الأجزاء.
class ThreePaneSceneStrategy<T : Any>(val windowSizeClass: WindowSizeClass) : SceneStrategy<T> { override fun SceneStrategyScope<T>.calculateScene(entries: List<NavEntry<T>>): Scene<T>? { if (windowSizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_LARGE_LOWER_BOUND)) { val lastThree = entries.takeLast(3) if (lastThree.size == 3 && lastThree.all { it.metadata.containsKey(MULTI_PANE_KEY) }) { val firstEntry = lastThree[0] val secondEntry = lastThree[1] val thirdEntry = lastThree[2] return ThreePaneScene( key = Triple(firstEntry.contentKey, secondEntry.contentKey, thirdEntry.contentKey), previousEntries = entries.dropLast(3), firstEntry = firstEntry, secondEntry = secondEntry, thirdEntry = thirdEntry ) } } return null } }
يمكنك استخدام استراتيجية ThreePaneSceneStrategy الخاصة بك مع استراتيجيات أخرى عند إنشاء ملفك نافديسبلاي. على سبيل المثال، يمكننا أيضًا إضافة TwoPaneStrategy لعرض جزأين جنبًا إلى جنب عندما لا تكون هناك مساحة كافية لعرض ثلاثة أجزاء.
val strategy = ThreePaneSceneStrategy() then TwoPaneSceneStrategy() NavDisplay(..., sceneStrategy = strategy, entryProvider = entryProvider { entry<MyScreen>(metadata = mapOf(MULTI_PANE_KEY to true))) { ... } ... other entries... } )
إذا لم تكن هناك مساحة كافية لعرض ثلاثة أو جزأين، فسيتم إرجاع كل من إستراتيجيات المشهد المخصص لدينا باطل. في هذه الحالة، نافديسبلاي يعود إلى عرض الإدخال الأخير في المكدس الخلفي في جزء واحد باستخدام SinglePaneScene.
باستخدام المشاهد والاستراتيجيات، يمكنك إضافة تخطيطات جزء واحد أو اثنين أو ثلاثة أجزاء إلى تطبيقك!
قم بمراجعة الوثائق لمعرفة المزيد عنها كيفية إنشاء تخطيطات مخصصة باستخدام Scenes في التنقل 3.
تخطيطات التكيف المستقلة
إذا كنت بحاجة إلى تخطيط مستقل، فإن إنشاء مكتبة المواد 3 التكيفية يساعدك على إنشاء واجهات مستخدم قابلة للتكيف مثل تفاصيل القائمة وتخطيطات الأجزاء الداعمة التي تتكيف مع تكوينات النافذة تلقائيًا بناءً على فئات حجم النافذة أو أوضاع الجهاز.
والخبر السار هو أن المكتبة محدثة بالفعل بنقاط التوقف الجديدة! ابتداء من الإصدار 1.2، تدعم وظائف توجيه سقالة الجزء الافتراضي فئات حجم النافذة ذات العرض الكبير والكبير جدًا.
ما عليك سوى الاشتراك من خلال الإعلان في ملف بناء Gradle الخاص بك عن رغبتك في استخدام نقاط التوقف الجديدة:
currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)
ابدء
استكشف ميزة العرض المتصل في أحدث إصدار من Android. يحصل أندرويد 16 كيو بي آر 3 على جهاز مدعوم، ثم قم بتوصيله بشاشة خارجية لبدء اختبار تطبيقك اليوم!
الغوص في الوثائق المحدثة على دعم العرض المتعدد و إدارة النوافذ لمعرفة المزيد حول تنفيذ أفضل الممارسات هذه.
تعليق
تُعد تعليقاتك أمرًا بالغ الأهمية بينما نواصل تحسين تجربة عرض سطح المكتب المتصل. شارك بأفكارك وأبلغ عن أي مشكلات من خلال موقعنا قنوات التغذية الراجعة الرسمية.
نحن ملتزمون بجعل Android نظامًا أساسيًا متعدد الاستخدامات يتكيف مع الطرق العديدة التي يرغب المستخدمون في التفاعل بها مع تطبيقاتهم وأجهزتهم. تعد التحسينات التي تم إدخالها على دعم شاشات العرض المتصلة خطوة أخرى في هذا الاتجاه، ونعتقد أن المستخدمين لديك سيحبون تجارب سطح المكتب التي ستبنيها!
*ملحوظة: في وقت كتابة المقالة، تكون الشاشات المتصلة مدعومة على سلسلة Pixel 8 و9 و10 وعلى مجموعة واسعة من أجهزة Samsung، بما في ذلك S26 وFold7 وFlip7 وTab S11.

