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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন