Responsive Design एक ऑबतर इंटरफ़ेस बनाने का दृष्टिकोण है जिसमें लेआउट स्वचालित रूप से डिवाइस के आकार। ओरिएंटेशन और प्रकार के अनुकूल होता है। मोबाइल डिवेलपमेंट में، responsive design को iOS में size classes और Android में configuration qualifiers के माध्यम से लागू किया जाता है। यह लेख अनुकूलनशील लेआउट के सिद्धांतों। दोनों प्लेटफ़ॉर्म के उपकरणों और कोड उदाहरणों को शामिल करता है।
मुख्य बातें
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 और adaptive अक्सर भ्रमित करते हैं। हालांकि वे विभिन्न दृष्टिकोणों का वर्णन करते हैं। Responsive design एक लचीली ग्रिड का उपयोग करता है जो स्क्रीन की चौड़ाई के अनुसार लगातार समायोजित होती है। Adaptive design पूर्वनिर्धारित breakpoints के लिए निश्चित लेआउट का उपयोग करता है — एप्लिकेशन अचानक उनके बीच स्विच करता है।
| विशेषता | Responsive Design | Adaptive Design |
|---|---|---|
| दृष्टिकोण | सहज प्रवाह | पृथक् स्विचिंग |
| ग्रिड | प्रतिशत आधारित। तरल | प्रति breakpoint निश्चित |
| कार्यान्वयन | Auto Layout। Flexbox। ConstraintLayout | Size Classes। layout-w600dp। अलग storyboards |
| डिजाइन लेआउट की संख्या | एक। लेकिन लचीला | अनेक (फ़ोन पोर्ट्रेट। फ़ोन लैंडस्केप। टैबलेट) |
व्यवहार में। मोबाइल एप्लिकेशन दोनों दृष्टिकोणों के संयोजन का उपयोग करते हैं। आधार ग्रिड responsive बनायी जाती है (constraint निर्भरताओं के साथ Auto Layout)। और जब एक breakpoint पर पहुंच जाता है (उदाहरण: चौड़ाई > 600 pt)। लेआउट एक अनुकूलनशील संस्करण पर स्विच करता है जिसमें तत्वों की अलग व्यवस्था होती है। iOS Auto Layout (responsive) को Size Classes (adaptive) के साथ जोड़ता है। Android ConstraintLayout (responsive) को qualifier संसाधनों (adaptive) के साथ जोड़ता है।
Size Classes iOS तंत्र है जो उपलब्ध स्क्रीन स्थान को दो अक्षों पर वर्गीकृत करता है: क्षैतिज और ऊर्ध्वाधर। प्रत्येक अक्ष Compact (C) या Regular (R) हो सकता है। संयोजन चार अनुकूलन विकल्प देता है: CR (सामान््य iPhone पोर्ट्रेट)। RR (iPad पोर्ट्रेट/लैंडस्केप)। RC (Plus/Pro Max पर iPhone लैंडस्केप)। CC (iPad Split View)।
// 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 स्वचालित रूप से व्यू को पुनः खींचता है।
// 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()
}
}
}
}Configuration Qualifiers एक Android तंत्र है जो डिवाइस विशेषताओं के आधार पर विभिन्न संसाधनों (layout। values। drawables) को लोड करने के लिए है। Qualifiers में स्क्रीन आकार (small। normal। large। xlarge)। ओरिएंटेशन (port। land)। न्यूनतम चौड़ाई (sw
// 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 में न्यूनतम स्क्रीन चौड़ाई। sw
// 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 द्वारा अनुशंसा किया जाता है।
अनुकूलनशील ग्रिड responsive design की नींव है। निश्चित आकारों के बजाय। तत्व प्रतिशत अनुपातों। लचीले constraints और आंतरिक सामग्री आकार का उपयोग करते हैं। Breakpoints वे स्क्रीन चौड़ाई बिंदु हैं जहां लेआउट अवस्थाओं के बीच स्विच करता है।
| Breakpoint | iOS Size Class | Android Qualifier | डिवाइस प्रकार |
|---|---|---|---|
| 0–374 pt / dp | Compact width | — | iPhone SE। पुराने Android |
| 375–599 pt / dp | Compact width | sw320dp | iPhone 14। Galaxy S24 |
| 600–839 pt / dp | Regular width | sw600dp | iPad mini। 7” टैबलेट |
| 840+ pt / dp | Regular width | sw720dp | iPad 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 और उत्पादन परियोजना अनुभव पर आधारित मुख्य सिफारिशें हैं।
अनुकूलनशील डिजाइन का मुख्य सिद्धांत: सामग्री लेआउट निर्धारित करती है। उलटा नहीं। यदि iPad iPhone के समान कार्ड स्टैक को केवल चौड़ा खींचकर दिखाता है — तो वह responsive design नहीं है। Responsive design संरचना को पुनर्व्यावस्थित करता है: iPhone पर — ऊर्ध्वाधर स्क्रोल। iPad पर — साइडबार के साथ master-detail।
अक्सर पूछे जाने वाले प्रश्न
Responsive Design एक लचीली ग्रिड का उपयोग करता है जो स्क्रीन की चौड़ाई के अनुसार सहजता से समायोजित होती है। Adaptive Layout breakpoints पर निश्चित लेआउट के बीच स्विच करता है। व्यवहार में। दोनों दृष्टिकोणों को जोड़ा जाता है: responsive आधार ग्रिड + महत्वपूर्ण परिवर्तनों (फ़ोन vs टैबलेट) के लिए अनुकूलनशील स्विच।
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 वैरिएंशन परिभाषित करता है।
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 टैबलेट और फ़ोल्डेबल डिवाइस पर परीक्षण अवश्य करें।
Canonical layouts Google Material Design 3 से तैयार अनुकूलनशील संरचना पैटर्न हैं: list-detail (सूची + विवरण)। feed (कार्ड फ़ीड)। supporting pane (मुख्य सामग्री + क्रिया पैनल)। प्रत्येक पैटर्न में तीन वैरिएंट (compact/medium/expanded) हैं और वे WindowSizeClass के अनुसार स्वचालित रूप से अनुकूलित होते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें