Responsive Design — মৌলিক ধারণা, স্ক্রিনের জন্য ইন্টারফেস অ্যাডাপ্টেশন

লেখক: IT Sectr প্রকাশিত: 2026-02-25 পড়ার সময়: 9 মিনিট

Responsive Design হল ইন্টারফেস তৈরির একটি পদ্ধতি যেখানে লেআউট স্বয়ংক্রিয়ভাবে ডিভাইসের আকার, অরিয়েন্টেশন ও ধরনের সাথে খাপ খায়। মোবাইল ডিভেলপমেন্টে, responsive design iOS এ size classes এবং Android এ configuration qualifiers এর মাধ্যমে বাস্তবায়ন করা হয়। এই নিবন্ধটি অ্যাডাপ্টিভ লেআউটের নীতি, উভয় প্লেটফর্মের টুল এবং কোড উদাহরণ অন্তর্ভুক্ত করে।

মূখ্য বিষয়সমূহ

  • Responsive Design — বিভিন্ন স্ক্রিন মাপ, অরিয়েন্টেশন ও ডিভাইস ধরনের জন্য ইন্টারফেস অ্যাডাপ্টেশন
  • Size Classes — আনুভূমিক ও উল্লম্ব ভাবে কম্প্যাক্ট বা রেগুলার আকার নির্ধারণের জন্য iOS প্রক্রিয়া
  • Configuration Qualifiers — বিভিন্ন স্ক্রিন কনফিগরেশনের জন্য Android সংবল (layout-w600dp, values-sw600dp)
  • অ্যাডাপ্টিভ গ্রিড — স্ক্রিনের প্রস্থ পরিবর্তনে উপাদানের পুনর্বিন্যাস, শুধু প্রসারণ নয়
  • Breakpoints — লেআউট অবস্থার মধ্যে সংক্রমণ বিন্দু (উদাহরণ: iPhone এর জন্য 375 pt, iPad এর জন্য 768 pt)

Responsive Design কি।

Responsive Design হল ইন্টারফেস তৈরির একটি পদ্ধতি যেখানে লেআউট স্ক্রিনের আকার, অরিয়েন্টেশন ও উপলব্ধ স্থানের প্রতি সাড়া দেয়, কার্যকারিতা না হারিয়ে উপাদান পুনর্বিন্যস্ত করে। শব্দটি Ethan Marcotte 2010 সালে ওয়েব ডিজাইনের জন্য প্রচলন করেন, কিন্তু নীতিগুলো নেটিভ মোবাইল অ্যাপ্লিকেশনে সম্পূর্ণ প্রযোজ্য।

মোবাইল ডিভেলপমেন্টে, responsive design মানে একই অ্যাপ্লিকেশন সকল ডিভাইসে সঠিকভাবে দেখায়: iPhone SE (375 pt) থেকে iPad Pro (1024 pt পোর্ট্রেটে) এবং Android স্মার্টফোন (360 dp) থেকে ট্যাবলেট (800 dp) পর্যন্ত। মূখ্য উপাদান হল নমনীয় গ্রিড, অ্যাডাপ্টিভ ছবি এবং ফ্রেমওয়ার্ক স্তরে মিডিয়া ক্যোয়ারি (size classes, qualifiers)।

Apple Developer ডকুমেন্টেশন অনুযায়ী, একটি অ্যাপ্লিকেশন সার্বভৌমিক (universal) হওয়া উচিত — আলাদা iPad বিল্ড ছাড়া সকল ডিভাইসে কাজ করা। Google Play Jetpack WindowManager এবং canonical layouts এর মাধ্যমে অ্যাডাপ্টিভ লেআউট ব্যবহারের পরামর্শ দেয়। ট্যাবলেট অ্যাডাপ্টেশনের অভাব নেগেটিভ রিভিউয়ের একটি সাধারণ কারণ।

Responsive vs Adaptive Design

শব্দ responsive এবং adaptive প্রায়ই দিন প্রতারিত হয়, যদিও এরা বিভিন্ন পদ্ধতি বর্ণনা করে। Responsive design একটি নমনীয় গ্রিড ব্যবহার করে যা ক্রমাগত স্ক্রিনের প্রস্থের সাথে সামঞ্জস্য করে। Adaptive design পূর্বনির্ধারিত breakpoints এর জন্য নির্দিষ্ট লেআউট ব্যবহার করে — অ্যাপ্লিকেশন দুটির মধ্যে দর্দি স্যোইচ করে।

বৈশিষ্ট্যResponsive DesignAdaptive Design
পদ্ধতিমাঞ্জুল প্রবাহপৃথক্ স্যোইচিং
গ্রিডশতাংশ আধারিক, নমনীয়প্রতি breakpoint এ নির্দিষ্ট
বাস্তবায়নAuto Layout, Flexbox, ConstraintLayoutSize Classes, layout-w600dp, পৃথক্ storyboards
ডিজাইন লেআউটের সংখ্যাএক, কিন্তু নমনীয়একাধিক (ফোন পোর্ট্রেট, ফোন ল্যাংডস্কেপ, ট্যাবলেট)

ব্যবহারে, মোবাইল অ্যাপ্লিকেশন উভয় পদ্ধতির সমন্বয় ব্যবহার করে। বেস গ্রিডটি responsive হিসাবে তৈরি করা হয় (constraint নির্ভরতা সহ Auto Layout), এবং যখন একটি breakpoint এ পৌঁছায় (উদাহরণ: প্রস্থ > 600 pt), লেআউট উপাদানের অন্য বিন্যাস সহ একটি অ্যাডাপ্টিভ সংস্করণে স্যোইচ করে। iOS Auto Layout (responsive) কে Size Classes (adaptive) এর সাথে সমন্বিত করে। Android ConstraintLayout (responsive) কে qualifier সংবল (adaptive) এর সাথে সমন্বিত করে।

iOS Size Classes: Compact ও Regular

Size Classes হল iOS প্রক্রিয়া যা উপলব্ধ স্ক্রিন স্থানকে দুটি অক্ষে শ্রেণীবদ্ধ করে: আনুভূমিক ও উল্লম্ব। প্রত্যেক অক্ষ Compact (C) বা Regular (R) হতে পারে। সমম্বয় চারটি অ্যাডাপ্টেশন বিকল্প দেয়: CR (সাধারণ iPhone পোর্ট্রেট), RR (iPad পোর্ট্রেট/ল্যাংডস্কেপ), RC (Plus/Pro Max এ iPhone ল্যাংডস্কেপ), CC (iPad Split View)।

swift
// Swift এ Size Classes সংজ্ঞায়িত করা
import UIKit

class AdaptiveViewController: UIViewController {

    override func traitCollectionDidChange(
        _ previousTraitCollection: UITraitCollection?
    ) {
        super.traitCollectionDidChange(previousTraitCollection)
        adjustLayout(for: traitCollection)
    }

    private func adjustLayout(for traits: UITraitCollection) {
        switch (traits.horizontalSizeClass, traits.verticalSizeClass) {
        case (.regular, .regular):
            showSplitView() // iPad — master-detail দেখানো
        case (.compact, .regular):
            showStackedView() // iPhone পোর্ট্রেট — স্ট্যাক লেআউট
        case (.compact, .compact):
            showCompactView() // iPhone SE ল্যাংডস্কেপ — সর্বনিম্নীকৃত
        default:
            showDefaultView()
        }
    }

    private func showSplitView() {
        // UISplitViewController বা HStack ব্যবহার
    }

    private func showStackedView() {
        // iPhone এর জন্য উল্লম্ব স্ট্যাক
    }

    private func showCompactView() {
        // গৌণ উপাদান লুকিয়ে মূল উপাদান দেখানো
    }
}

Interface Builder এ, Size Classes “wAny hAny” প্যানেলের মাধ্যমে কনফিগার করা হয় — ডিভেলপর একটি নির্দিষ্ট সমম্বয় (wRegular hRegular, wCompact hRegular) নির্বাচন করে এবং constraint ভ্যারিয়েশন যোগ করে। SwiftUI প্রতিক্রিয়ামূলক অ্যাডাপ্টেশনের জন্য @Environment(\.horizontalSizeClass) এবং @Environment(\.verticalSizeClass) ব্যবহার করে — যখন অরিয়েন্টেশন বা উইন্ডো আকার পরিবর্তিত হয়, SwiftUI স্বচালিতভাবে ভিউ পুনরায় আঁকে।

swift
// SwiftUI এ Size Classes
import SwiftUI

struct ResponsiveView: View {
    @Environment(\.horizontalSizeClass) private var hSizeClass

    var body: some View {
        if hSizeClass == .regular {
            // iPad — সাইডবার সহ আনুভূমিক লেআউট
            HStack {
                SidebarView()
                    .frame(width: 300)
                ContentView()
            }
        } else {
            // iPhone — পুরো স্ক্রিন উল্লম্ব স্ট্যাক
            VStack {
                ContentView()
            }
        }
    }
}

Android Configuration Qualifiers

Configuration Qualifiers হল Android প্রক্রিয়া যা ডিভাইস বৈশিষ্ট্যের উপর ভিত্তি করে বিভিন্ন সংবল (layout, values, drawables) লোড করে। Qualifiers এর মধ্যে রয়েছে স্ক্রিন আকার (small, normal, large, xlarge), অরিয়েন্টেশন (port, land), সর্বনিম্ন প্রস্থ (swdp), উপলব্ধ প্রস্থ (wdp) এবং উচ্চতা (hdp)।

kotlin
// Kotlin এ ডিভাইস কনফিগরেশন নির্ধারণ
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val config = resources.configuration
        val screenWidthDp = config.screenWidthDp
        val screenHeightDp = config.screenHeightDp
        val orientation = config.orientation

        when {
            screenWidthDp >= 900 -> setContentView(R.layout.activity_main_tablet)
            screenWidthDp >= 600 -> setContentView(R.layout.activity_main_sw600)
            else -> setContentView(R.layout.activity_main_phone)
        }
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            supportFragmentManager.beginTransaction()
                .replace(R.id.container, LandscapeFragment())
                .commit()
        }
    }
}

বিভিন্ন স্ক্রিনের জন্য সংবল গঠন: res/layout/activity_main.xml (ফোন), res/layout-sw600dp/activity_main.xml (7” ট্যাবলেট), res/layout-sw720dp/activity_main.xml (10” ট্যাবলেট)। Android স্বচালিতভাবে smallestWidth এর উপর ভিত্তি করে সঠিক লেআউট নির্বাচন করে — অরিয়েন্টেশন নির্বিশেষে dp এ সর্বনিম্ন স্ক্রিন প্রস্থ। swdp qualifier হল সবচেয়ে স্থির অ্যাডাপ্টেশন পদ্ধতি।

kotlin
// Jetpack Compose — অ্যাডাপ্টেশনের জন্য WindowSizeClass
@Composable
fun ResponsiveScreen() {
    val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass

    when {
        windowSizeClass.windowSizeClass == WindowWidthSizeClass.EXPANDED -> {
            TabletLayout() // >= 840 dp
        }
        windowSizeClass.windowSizeClass == WindowWidthSizeClass.MEDIUM -> {
            MediumLayout() // 600–840 dp
        }
        else -> {
            CompactLayout() // < 600 dp
        }
    }
}

Jetpack WindowManager (androidx.window লাইব্রেরী) তিনটি প্রস্থ বিভাগ সহ WindowSizeClass প্রদান করে: COMPACT (0–600 dp), MEDIUM (600–840 dp), EXPANDED (>840 dp)। এটি পুরানো qualifier ফোল্ডারের একটি আধুনিক বিকল্প। ফোল্ডেবল ডিভাইস এবং ট্যাবলেটের জন্য অ্যাডাপ্টেশনের জন্য Google এটি সুপারিশ করে।

অ্যাডাপ্টিভ গ্রিড ও breakpoints

অ্যাডাপ্টিভ গ্রিড হল responsive design এর ভিত্তি। নির্দিষ্ট আকারের পরিবর্তে, উপাদানগুলো শতাংশ অনুপাত, নমনীয় constraints এবং আন্তরিক বস্তু আকার ব্যবহার করে। Breakpoints হল স্ক্রিন প্রস্থ বিন্দু যেখানে লেআউট অবস্থার মধ্যে স্যোইচ করে।

BreakpointiOS Size ClassAndroid Qualifierডিভাইস ধরন
0–374 pt / dpCompact widthiPhone SE, পুরানো Android
375–599 pt / dpCompact widthsw320dpiPhone 14, Galaxy S24
600–839 pt / dpRegular widthsw600dpiPad mini, 7” ট্যাবলেট
840+ pt / dpRegular widthsw720dpiPad Pro, 10” ট্যাবলেট

Google Material Design এবং Apple HIG এর সুপারিশ করা breakpoints: 0–599 dp (ফোন, এক কলাম), 600–839 dp (ট্যাবলেট, দুই কলাম, navigation rail), 840+ dp (ট্যাবলেট, তিন কলাম, navigation drawer)। breakpoints এর সংখ্যা 4 এর বেশি হওয়া উচিত নয় — অতিরিক্ত সংক্রমণ বিন্দু রক্ষণাবেক্ষণ ও পরীক্ষণ জটিল করে তোলে।

অ্যাডাপ্টিভ ডিজাইনের শেরা অভ্যাস

সফল responsive design এর জন্য নিয়মের একটি সেট অনুসরণ করা প্রয়োজন যা গত দশকে iOS এবং Android ডিভেলপর সম্প্রদায় দ্বারা বিকাশিত হয়েছে। নীচে Apple HIG, Google Material Design এবং প্রোডাক্শন প্রজেক্ট অভিজ্ঞতার উপর ভিত্তি করে মূখ্য সুপারিশগুলো দেওয়া হল।

  • সর্বনিম্ন স্ক্রিন দিয়ে শুরু করুন — iPhone SE (375 pt) বা Android compact (360 dp) এর জন্য লেআউট ডিজাইন করুন, তারপর বড় স্ক্রিনের জন্য এক্সটেনশন যোগ করুন। এটি নিশ্চিত করে যে গুরুত্বপূর্ণ বস্তু সবজায়ায় ফিট হয়
  • আন্তরিক বস্তু আকার ব্যবহার করুন — UILabel, UIButton, ImageView এর প্রাকৃতিক আকার রয়েছে। Auto Layout এবং ConstraintLayout অতিরিক্ত constraints ছাড়া স্বচালিত পঞ্জিকরণের জন্য এটি ব্যবহার করে
  • ছোট স্ক্রিনে বস্তু লুকাবেন না — লুকানোর পরিবর্তে, বস্তু পুনর্বিন্যস্ত করুন (reflow)। ব্যবহারকারীর একই কার্যকারিতায় প্রবেশ থাকা উচিত, শুধু অন্য ক্রমে
  • সকল size classes এ পরীক্ষা করুন — iOS সিমুলেটর পুনরারম্ভ ছাড়া Size Classes পরিবর্তনের অনুমতি দেয়। Android Emulator বিভিন্ন ডিভাইস প্রোফাইল প্রদান করে। ট্যাবলেট এবং ফোল্ডেবল ডিভাইসে পরীক্ষা করতে ভুলবেন না
  • Material 3 Adaptive Layout — Google তালিকা/বিস্তারিত, টুল প্যানেল এবং নেভিগেশনের জন্য প্রস্তুত canonical layouts প্রদান করে। নিজস্ব প্যাটার্ন আবিষ্কার করার পরিবর্তে এগুলো ব্যবহার করুন

অ্যাডাপ্টিভ ডিজাইনের মূল নীতি: বস্তু লেআউট নির্ধারণ করে, উল্টো নয়। যদি iPad iPhone এর একই কার্ড স্ট্যাক শুধু প্রশস্ত করে দেখায় — এটি responsive design নয়। Responsive design গঠন পুনর্বিবেচনা করে: iPhone এ — উল্লম্ব স্ক্রোল, iPad এ — সাইডবার সহ master-detail।

সামান্য জিজ্ঞাসা

Responsive Design কিভাবে Adaptive Layout এর ব্যতিক্রমিকারিটিভাবে আলাদা।

Responsive Design একটি নমনীয় গ্রিড ব্যবহার করে যা স্ক্রিনের প্রস্থের সাথে সহজে সামঞ্জস্য করে। Adaptive Layout breakpoints এ নির্দিষ্ট লেআউটের মধ্যে স্যোইচ করে। ব্যবহারে, উভয় পদ্ধতি সমন্বিত করা হয়: responsive বেস গ্রিড + মৌলিক পরিবর্তনের জন্য অ্যাডাপ্টিভ স্যোইচ (ফোন vs ট্যাবলেট)।

iOS এ কি কি Size Classes আছে।

iOS দুটি অক্ষ ব্যবহার করে: আনুভূমিক (Compact/Regular) ও উল্লম্ব (Compact/Regular)। iPhone পোর্ট্রেটে — Compact width, Regular height (CR)। iPad — Regular width, Regular height (RR)। iPhone Plus/Pro Max ল্যাংডস্কেপে — Regular width, Compact height (RC)। ডিভেলপর প্রতিটি সমম্বয়ের জন্য constraint ভ্যারিয়েশন সংজ্ঞায়িত করে।

Android এ sw600dp কি।

sw600dp (smallestWidth 600 dp) হল একটি Android সংবল qualifier যার অর্থ ডিভাইসের সর্বনিম্ন স্ক্রিন প্রস্থ কম পক্ষে 600 dp। এটি ট্যাবলেট (7” এবং বড়) এর জন্য বিকল্প লেআউট লোড করতে ব্যবহৃত হয়। অরিয়েন্টেশন গুরুত্বপূর্ণ নয় — sw স্ক্রিনের ক্ষুদ্রতম দিকটি বিবেচনা করে।

অ্যাপ্লিকেশনের অ্যাডাপ্টিভনেস কিভাবে পরীক্ষা করবেন।

iOS এ, বিভিন্ন Size Classes সহ সিমুলেটর এবং বিভিন্ন আকারের ডিভাইস সহ SwiftUI Preview ব্যবহার করুন। Android এ, এমুলেটরে ডিভাইস প্রোফাইল (Pixel 5, Pixel C, Galaxy Tab) এবং Android Studio এ Layout Validation ব্যবহার করুন। উভয় প্লেটফর্মে, ভৌতিক iPad/Android ট্যাবলেট এবং ফোল্ডেবল ডিভাইসে পরীক্ষা করতে ভুলবেন না।

Material Design এ canonical layouts কি।

Canonical layouts হল Google Material Design 3 এর প্রস্তুত অ্যাডাপ্টিভ গঠন প্যাটার্ন: list-detail (তালিকা + বিস্তারিত), feed (কার্ড ফীড), supporting pane (মূল বস্তু + কর্ম প্যানেল)। প্রতিটি প্যাটার্নের তিনটি ভ্যারিয়েন্ট (compact/medium/expanded) রয়েছে এবং WindowSizeClass এর সাথে স্বচালিতভাবে খাপ খায়।

সারাংশ

  • Responsive Design — নমনীয় গ্রিড ও breakpoints এর মাধ্যমে স্ক্রিন আকার ও অরিয়েন্টেশনের সাথে লেআউট অ্যাডাপ্টেশন
  • Size Classes iOS এ (Compact/Regular) iPhone, iPad ও Split View এর জন্য লেআউট সংজ্ঞায়িত করে
  • Configuration Qualifiers Android এ (swdp, wdp, layout-land) ডিভাইস অনুযায়ী সংবল লোড করে
  • Jetpack WindowManager তিনটি বিভাগ সহ WindowSizeClass প্রদান করে: COMPACT, MEDIUM, EXPANDED
  • Breakpoints: 0–599 dp (ফোন), 600–839 dp (ট্যাবলেট), 840+ dp (প্রশস্ত ট্যাবলেট)
  • Responsive ≠ শুধু প্রসারণ — উপাদানের পুনর্বিন্যাস (reflow) প্রয়োজন, বস্তু লুকানো নয়
  • পরীক্ষা সকল ধরনের ডিভাইসে, যদি মধ্যে ট্যাবলেট ও ফোল্ডেবল অন্তর্ভুক্ত, একটি বাধ্যবাধক বিকাশ পর্যায়

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

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

আরও পড়ুন