Responsive Design انٹرفیس بنانے کا ایک طریقہ ہے جس میں لے آؤٹ خود بخود ڈیوائس کے سائز، سمت اور قسم کے مطابق ڈھل جاتا ہے۔ موبائل ڈویلپمنٹ میں، responsive design iOS میں size classes اور Android میں configuration qualifiers کے ذریعے لاگو کیا جاتا ہے۔ مضمون انکولی لے آؤٹ کے اصولوں، دونوں پلیٹ فارمز کے ٹولز اور کوڈ کی مثالوں کا تجزیہ کرتا ہے۔
اہم نکات
Responsive Design انٹرفیس بنانے کا ایک طریقہ ہے جس میں لے آؤٹ اسکرین کے سائز، سمت اور دستیاب جگہ پر ردعمل ظاہر کرتا ہے، فعالیت کھوئے بغیر عناصر کو دوبارہ ترتیب دیتا ہے۔ یہ اصطلاح 2010 میں Ethan Marcotte نے ویب ڈیزائن کے لیے وضع کی تھی، لیکن اصول مکمل طور پر مقامی موبائل ایپلیکیشنز پر لاگو ہوتے ہیں۔
موبائل ڈویلپمنٹ میں، responsive design کا مطلب ہے کہ ایک ہی ایپلیکیشن تمام ڈیوائسز پر صحیح طریقے سے ظاہر ہوتی ہے: iPhone SE (375 pt) سے iPad Pro (عمودی میں 1024 pt) تک اور Android اسمارٹ فون (360 dp) سے ٹیبلٹ (800 dp) تک۔ کلیدی عناصر ہیں لچکدار گرڈ، انکولی تصاویر اور فریم ورک کی سطح پر میڈیا سوالات (size classes, qualifiers)۔
Apple Developer Documentation کے مطابق، ایپلیکیشن یونیورسل ہونی چاہیے — علیحدہ 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 طور پر بنایا جاتا ہے (Auto Layout constraint انحصار کے ساتھ)، اور 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) لوڈ کرتا ہے۔ کوالیفائرز میں اسکرین کا سائز (small, normal, large, xlarge)، سمت (port, land)، کم از کم چوڑائی (sw<N>dp)، دستیاب چوڑائی (w<N>dp) اور اونچائی (h<N>dp) شامل ہیں۔
// 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<N>dp موافقت کا سب سے مستحکم طریقہ ہے۔
// 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 breakpoint نکات پر مقررہ لے آؤٹ کے درمیان سوئچ کرتا ہے۔ عملی طور پر، دونوں طریقے یکجا کیے جاتے ہیں: responsive بنیادی گرڈ + بڑی تبدیلیوں (فون بمقابلہ ٹیبلٹ) کے لیے انکولی سوئچز۔
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 وسائل کوالیفائر ہے جس کا مطلب ہے کہ ڈیوائس کی کم از کم اسکرین چوڑائی کم از کم 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں