Window Size Class — یہ کیا ہے، سائز کی کلاسیں اور ترقی

مصنف: IT Sectr اشاعت: 2026-06-08 مطالعے کا وقت: 9 منٹ

Window Size Class Jetpack WindowManager کا ایک API ہے جو ایپلیکیشن ونڈو کو تین زمروں میں تقسیم کرتا ہے: Compact، Medium اور Expanded۔ فزیکل ریزولوشن یا پکسل کثافت چیک کرنے کے بجائے، کلاسیں dp میں دستیاب چوڑائی کا تجزیہ کرتی ہیں — یہ کسی بھی ڈیوائس پر پیش قیاسی نتیجہ دیتی ہیں۔ Android Developers Documentation (2025) کے مطابق، WindowManager کی بدولت Window Size Class Jetpack Compose اور View سسٹم میں انکولی انٹرفیس کے لیے معیار بن گیا ہے۔

اہم نکات

  • Window Size Class — ونڈو کی چوڑائی کو Compact، Medium اور Expanded میں درجہ بندی کرنے کا API۔
  • Compact — 600 dp تک تنگ ونڈوز کے لیے کلاس، پورٹریٹ موڈ میں فون کے لیے مخصوص۔
  • Medium — 600–840 dp ونڈوز کے لیے کلاس، پورٹریٹ میں ٹیبلیٹ اور لینڈ اسکیپ میں فون کی خصوصیت۔
  • Expanded — 840 dp سے چوڑی ونڈوز کے لیے کلاس، ٹیبلیٹ اور ڈیسک ٹاپ پر پائی جاتی ہے۔
  • Material Design 3 انکولی لے آؤٹ کی بنیاد کے طور پر Window Size Class استعمال کرتا ہے۔

Window Size Class کیا ہے؟

Window Size Class Android پلیٹ فارم کا ایک API ہے جو Jetpack WindowManager لائبریری میں شامل ہے اور ایپلیکیشن ونڈو کی دستیاب جگہ کو تین زمروں میں درجہ بندی کرتا ہے۔ وسائل کوالیفائر (small/large/xlarge) کے روایتی طریقہ کے برعکس، Window Size Class اقدار کا ایک علیحدہ سیٹ فراہم کرتا ہے جس پر ڈویلپر انٹرفیس ڈیزائن کرتے وقت بھروسہ کر سکتا ہے۔

API Android 7.0 Nougat میں ملٹی ونڈو موڈ سپورٹ کے حصے کے طور پر ظاہر ہوا، لیکن فعال اپنانے کا آغاز Jetpack WindowManager 1.1 (2022) سے ہوا۔ Google Display.getSize() کے ذریعے اسکرین کی چوڑائی چیک کرنے کے بجائے انکولی لے آؤٹ بنانے کے لیے Window Size Class کو بنیادی ٹول کے طور پر تجویز کرتا ہے۔

درجہ بندی dp میں ونڈو کی چوڑائی پر مبنی ہے، نہ کہ فزیکل سائز یا پکسل کثافت پر۔ اس کا مطلب ہے کہ مختلف ریزولوشنز لیکن dp میں ایک جیسی چوڑائی والے دو ڈیوائسز ایک ہی کلاس حاصل کریں گے — انٹرفیس پیش قیاسی طور پر ایک جیسا ہوگا۔

Android کے تین ونڈو سائز کلاسز

Compact — 600 dp تک چوڑی ونڈوز کے لیے کلاس۔ پورٹریٹ موڈ میں فون، بند حالت میں زیادہ تر فولڈایبل (Galaxy Z Flip)۔ انٹرفیس ایک کالم میں بنایا گیا ہے، Bottom Navigation کے ذریعے نیویگیشن۔

Medium — 600–840 dp چوڑی ونڈوز کے لیے کلاس۔ پورٹریٹ میں ٹیبلیٹ، لینڈ اسکیپ میں فون، آدھی کھلی حالت میں فولڈایبل ڈیوائس۔ انٹرفیس دو کالم استعمال کرتا ہے — مثال کے طور پر، بائیں طرف فہرست اور دائیں طرف تفصیلات۔ Navigation Rail Bottom Navigation کی جگہ لے لیتا ہے۔

Expanded — 840 dp سے چوڑی ونڈوز کے لیے کلاس۔ لینڈ اسکیپ میں ٹیبلیٹ، ڈیسک ٹاپ ونڈو، کھلی حالت میں فولڈایبل ڈیوائس۔ انٹرفیس تین یا زیادہ پینلز، Permanent Navigation Drawer، ٹول پینلز استعمال کر سکتا ہے۔

Material Design 3 میں ہر کلاس کے لیے انکولی اجزاء متعین ہیں: Medium کے لیے Navigation Rail، Expanded کے لیے Navigation Drawer، Compact کے لیے Bottom Navigation۔ ڈویلپر کو breakpoints منتخب کرنے کی ضرورت نہیں — وہ پہلے سے API کے ذریعے متعین ہیں۔

Window Size Class کیسے کام کرتا ہے

Window Size Class کا حساب ایپلیکیشن ونڈو کی موجودہ چوڑائی dp کی بنیاد پر لگایا جاتا ہے، جس میں سسٹم عناصر — اسٹیٹس بار، نیویگیشن بار، Split Screen میں اسکرین کی تقسیم — کو مدنظر رکھا جاتا ہے۔ API ونڈو کنفیگریشن تبدیل ہونے پر متحرک ہوتا ہے: ڈیوائس گھومنے، ملٹی ونڈو موڈ میں داخل ہونے، فولڈایبل ڈیوائس کھولنے پر۔

کلاس حاصل کرنے کے لیے androidx.window لائبریری سے WindowSizeClass کلاس استعمال کی جاتی ہے۔ ڈویلپر Flow (Kotlin) یا LiveData (Java) کو سبسکرائب کرتا ہے جو دستی onConfigurationChanged ہینڈلنگ کے بغیر ونڈو سائز کی ہر تبدیلی پر خود بخود کلاس اپ ڈیٹ کرتا ہے۔

درجہ بندی تین مراحل میں ہوتی ہے۔ پہلا — موجودہ ونڈو کی چوڑائی پکسلز میں ناپنا۔ دوسرا — DisplayMetrics.density کے ذریعے dp میں تبدیل کرنا۔ تیسرا — حاصل کردہ قدر کا موازنہ حدوں سے کرنا: 600 dp سے کم — Compact، 600–840 — Medium، 840 سے — Expanded۔

kotlin
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass()

when (windowSizeClass.windowWidthSizeClass) {
    WindowWidthSizeClass.COMPACT -> // compact width
    WindowWidthSizeClass.MEDIUM  -> // medium width
    WindowWidthSizeClass.EXPANDED -> // expanded width
}

چوڑائی (windowWidthSizeClass) کے علاوہ، API ونڈو کی اونچائی (windowHeightSizeClass) کے لیے ایک کلاس فراہم کرتا ہے — لینڈ اسکیپ اورینٹیشن اور ڈیسک ٹاپ ونڈوز کے لیے مفید۔

Jetpack Compose میں Window Size Class

Jetpack Compose میں، Window Size Class currentWindowAdaptiveInfo() فنکشن کے ذریعے استعمال ہوتا ہے، جو چوڑائی اور اونچائی کی کلاسز کے ساتھ WindowAdaptiveInfo لوٹاتا ہے۔ یہ فنکشن نہ صرف ونڈو سائز بلکہ ان پٹ کی قسم (کی بورڈ، ماؤس، ٹچ) — WindowPosture اور WindowLayoutInfo کے ذریعے — بھی مدنظر رکھتا ہے۔

ایک عام منظر نامہ کلاس کے مطابق لے آؤٹ کے درمیان سوئچ کرنا ہے۔ مثال کے طور پر، Compact پر انتخاب کے ساتھ BottomSheet دکھایا جاتا ہے، Medium پر — ایک سائڈ پینل، Expanded پر — ایک مستقل Navigation Drawer۔

kotlin
@Composable
fun AdaptiveNavigation(windowSizeClass: WindowWidthSizeClass) {
    when (windowSizeClass) {
        WindowWidthSizeClass.COMPACT -> BottomNavigation()
        WindowWidthSizeClass.MEDIUM  -> NavigationRail()
        WindowWidthSizeClass.EXPANDED -> NavigationDrawer()
    }
}

Material Design 3 میں، NavigationSuiteScaffold اجزاء خود بخود Window Size Class کے مطابق ڈھل جاتے ہیں — ڈویلپر کو مشروط منطق لکھنے کی ضرورت نہیں۔

Window Size Class اور Material Design 3

Material Design 3 (Material You) مکمل طور پر Window Size Class کے ساتھ مربوط ہے۔ Material 3 میں انکولی لے آؤٹ سسٹم تعین کرتا ہے کہ ہر کلاس کے لیے کون سا نیویگیشن جزو استعمال کرنا ہے: Compact کے لیے BottomNavigation، Medium کے لیے NavigationRail، Expanded کے لیے NavigationDrawer۔

یہ انضمام Adaptive API کی سطح پر کام کرتا ہے، جو Window Size Class کو دوسرے سگنلز — FoldState (فولڈایبل ڈیوائس) اور WindowPosture (اسکرین کی پوزیشن) — کے ساتھ جوڑتا ہے۔ Adaptive API material3-adaptive لائبریری کے ذریعے دستیاب ہے۔

Material 3 چار انکولی اعلیٰ سطحی اجزاء فراہم کرتا ہے: ListDetailPaneScaffold، SupportingPaneScaffold، NavigationSuiteScaffold اور AdaptiveSheet۔ ان میں سے ہر ایک اضافی ترتیب کے بغیر Window Size Class کے مطابق اپنا رویہ تبدیل کرتا ہے۔

کلاسنیویگیشن جزوPane Scaffold
CompactBottom Navigationپوشیدہ پینل
MediumNavigation Railسلائیڈنگ پینل
ExpandedNavigation Drawerمستقل پینل

انکولی لے آؤٹ کے فوائد

Window Size Class کا استعمال موبائل ڈویلپمنٹ میں تین اہم فوائد فراہم کرتا ہے۔ پہلا — پیش قیاسی: سینکڑوں اسکرین سائز کے امتزاج کے بجائے، ڈویلپر تین کلاسز کے ساتھ کام کرتا ہے۔ یہ جانچ کے منظرناموں کی تعداد اور لے آؤٹ سے متعلق بگز کو یکسر کم کرتا ہے۔

دوسرا — ملٹی ونڈو موڈ میں خودکار موافقت۔ جب صارف Split Screen میں داخل ہوتا ہے، ونڈو کی چوڑائی بدل جاتی ہے — Window Size Class فوری طور پر دوبارہ حساب کرتا ہے، اور انٹرفیس ڈھل جاتا ہے۔ اس API کے بغیر، تقسیم شدہ اسکرین میں ایپ فون انٹرفیس کا چھوٹا ورژن دکھاتی ہے۔

تیسرا — Material Design 3 کے ساتھ ہم آہنگی۔ Google نے Window Size Class کو انکولی اجزاء کے نظام میں شامل کیا ہے، لہذا Material 3 پر بنائے گئے انٹرفیس بغیر اضافی کام کے بڑی اسکرین ڈیزائن کے لیے Google کی سفارشات پر خود بخود عمل کرتے ہیں۔

اکثر پوچھے جانے والے سوالات

Window Size Class Screen Size Buckets سے کیسے مختلف ہے؟

Screen Size Buckets (small/large/xlarge) Android 1.6–6.0 کا ایک پرانا طریقہ ہے جو اسکرین کے فزیکل سائز پر مبنی ہے۔ Window Size Class dp میں دستیاب ونڈو کی چوڑائی پر توجہ مرکوز کرتا ہے اور ونڈو کے سائز تبدیل ہونے پر ریئل ٹائم میں کام کرتا ہے۔

کیا Android 6 اور اس سے نیچے Window Size Class کی حمایت ضروری ہے؟

Window Size Class Android 7.0+ پر بیک پورٹ لائبریری کے ساتھ Jetpack WindowManager کے ذریعے دستیاب ہے۔ Android 6 اور اس سے نیچے کے لیے — صرف Compact، کیونکہ ملٹی ونڈو موجود نہیں ہے۔ WindowMetrics کے ذریعے فال بیک استعمال کریں۔

فولڈایبل ڈیوائسز پر Window Size Class کیسے کام کرتا ہے؟

ڈیوائس کھولنے پر، ونڈو کی چوڑائی بدل جاتی ہے اور Window Size Class خود بخود دوبارہ حساب کرتا ہے۔ دستیاب جگہ بڑھنے کی وجہ سے کلاس Compact سے Expanded میں تبدیل ہو سکتی ہے۔

کیا XML لے آؤٹ (Views) میں Window Size Class استعمال کیا جا سکتا ہے؟

ہاں، Activity یا Fragment میں WindowManager کے ذریعے۔ WindowSizeClass حاصل کرنے کے بعد، XML لے آؤٹ کے درمیان سوئچ کرنے یا View کی نمائش تبدیل کرنے کے لیے مشروط منطق استعمال کریں۔

WindowHeightSizeClass کے لیے کون سی حدیں استعمال ہوتی ہیں؟

ونڈو کی اونچائی کے لیے حدیں مختلف ہیں: Compact — 480 dp تک، Medium — 480–900 dp، Expanded — 900 dp سے۔ WindowHeightSizeClass لینڈ اسکیپ اورینٹیشن اور ڈیسک ٹاپ پر مفید ہے۔

خلاصہ

  • Window Size Class — ونڈو کی چوڑائی کو Compact، Medium اور Expanded میں درجہ بندی کرنے کے لیے Jetpack WindowManager API۔
  • Compact — 600 dp تک، ایک کالم انٹرفیس، Bottom Navigation۔
  • Medium — 600–840 dp، دو کالم انٹرفیس، Navigation Rail۔
  • Expanded — 840 dp سے، کثیر پینل انٹرفیس، Navigation Drawer۔
  • Jetpack Compose — رن ٹائم پر کلاس حاصل کرنے کے لیے currentWindowAdaptiveInfo() فنکشن۔
  • Material Design 3 — انکولی اجزاء خود بخود Window Size Class پر ردعمل ظاہر کرتے ہیں۔
  • نتیجہ — Window Size Class روایتی breakpoints پر مبنی موافقت کی جگہ لے لیتا ہے اور تمام ڈیوائسز پر انٹرفیس کو پیش قیاسی بناتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں