मोबाइल ऐप इंटरफ़ेस डेवलपमेंट UI घटकों और फ्रेमवर्क को समझने से शुरू होता है। यह लेख Material Design, Human Interface Guidelines, SwiftUI, Jetpack Compose, Flutter Widgets, मापन इकाइयों की प्रणाली (dp, sp, pt, px) और सभी प्रमुख UI तत्वों को कवर करता है — NavigationView और RecyclerView से लेकर Safe Area और Dark Mode तक। सामग्री शुरुआती लोगों के लिए है जो सिद्धांत से अपनी पहली परियोजनाओं की ओर बढ़ रहे हैं। अधिक जानकारी के लिए, आधिकारिक Material Design दस्तावेज़ देखें।
मुख्य बिंदु
प्रत्येक प्लेटफॉर्म नियमों और घटकों का अपना सेट प्रदान करता है। Android के लिए, यह Material Design है, जिसे Google ने 2014 में विकसित किया था। Material Design भौतिक सामग्री के रूपक का उपयोग करता है — परतें, छायाएँ (Elevation), एनिमेटेड ट्रांज़िशन और अनुकूली लेआउट। प्रमुख सिद्धांतों में उन्नयन के माध्यम से पदानुक्रम, सार्थक गति और विभिन्न फॉर्म फैक्टर में अनुकूलनशीलता शामिल है। हम Material Design 3 (Material You) — गतिशील थीम और वैयक्तिकृत रंगों वाला नवीनतम संस्करण — देखने की सलाह देते हैं।
Apple Human Interface Guidelines (HIG) प्रदान करता है — iOS, iPadOS, macOS, watchOS और tvOS के लिए नियमों का एक सेट। HIG स्पष्ट टाइपोग्राफी (San Francisco), Notch और Dynamic Island को ध्यान में रखने के लिए Safe Area, जेस्चर-आधारित नेविगेशन और स्थिरता पर जोर देता है। Material Design के विपरीत, HIG "परतों" और Elevation का उपयोग नहीं करता है — इसके बजाय, यह धुंधलापन (vibrancy), छायाएँ और सूक्ष्म विभाजकों का उपयोग करता है। पूर्ण HIG दस्तावेज़ नए iOS रिलीज़ के साथ नियमित रूप से अपडेट होता है।
IT Sectr में, हम ग्राहक के प्लेटफॉर्म के आधार पर दोनों डिज़ाइन सिस्टम का उपयोग करते हैं। क्रॉस-प्लेटफ़ॉर्म Flutter प्रोजेक्ट्स के लिए, हम एक एकीकृत डिज़ाइन सिस्टम विकसित करते हैं जो Material Design और HIG की सर्वोत्तम प्रथाओं को जोड़ता है। यह दृष्टिकोण कोड दोहराव के बिना प्रत्येक प्लेटफॉर्म पर मूल UX को संरक्षित करता है।
UI बनाने का पारंपरिक दृष्टिकोण XML (Android) या Interface Builder / कोड (iOS) के माध्यम से अनिवार्य लेआउट है। आधुनिक विकल्प घोषणात्मक फ्रेमवर्क है, जहाँ डेवलपर वर्णन करता है कि इंटरफ़ेस प्रत्येक स्थिति में कैसा दिखना चाहिए, और फ्रेमवर्क अपडेट को संभालता है।
Jetpack Compose Kotlin में मूल UI बनाने के लिए Google का आधुनिक टूलकिट है। XML लेआउट के बजाय, Kotlin कम्पोज़ेबल फ़ंक्शन (@Composable) का उपयोग किया जाता है। Compose पूरी तरह से घोषणात्मक है: जब डेटा बदलता है, तो स्क्रीन के केवल बदले हुए हिस्से फिर से खींचे जाते हैं। टेक्स्ट और बटन के साथ एक सरल स्क्रीन का उदाहरण:
@Composable
fun GreetingScreen() {
var count = remember { mutableStateOf(0) }
Column {
Text(text = "Нажато: $count")
Button(onClick = { count++ }) {
Text("Нажми меня")
}
}
}
SwiftUI Apple का घोषणात्मक फ्रेमवर्क है जिसे 2019 में पेश किया गया था। यह एकीकृत API के माध्यम से सभी Apple प्लेटफॉर्म (iOS, iPadOS, macOS, watchOS, tvOS) पर काम करता है। SwiftUI डेटा प्रबंधन के लिए View संरचनाओं, @State और @Binding गुणों और स्टाइलिंग के लिए मॉडिफ़ायर का उपयोग करता है। SwiftUI में उपरोक्त उदाहरण का समतुल्य:
struct GreetingView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Нажато: \(count)")
Button("Нажми меня") {
count += 1
}
}
}
}
Flutter Google से अपनी स्वयं की विजेट लाइब्रेरी का उपयोग करता है। Flutter में सब कुछ एक विजेट है — पैडिंग से लेकर पूरी स्क्रीन तक। विजेट को StatelessWidget (अपरिवर्तनीय) और StatefulWidget (स्थिति के साथ) में विभाजित किया गया है। बुनियादी कंटेनर Container, Row, Column, Stack हैं। Flutter मूल प्लेटफ़ॉर्म घटकों का उपयोग नहीं करता है — यह Skia Engine के माध्यम से सब कुछ खींचता है, जो Android और iOS दोनों पर एक समान रूप सुनिश्चित करता है।
class GreetingWidget extends StatefulWidget {
@override
State createState() => _GreetingWidgetState();
}
class _GreetingWidgetState extends State<GreetingWidget> {
int count = 0;
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Нажато: $count'),
ElevatedButton(
onPressed: () => setState(() => count++),
child: Text('Нажми меня'),
),
],
);
}
}
घोषणात्मक फ्रेमवर्क के प्रसार के बावजूद, विरासती परियोजनाओं और गहन अनुकूलन के समर्थन के लिए मूल घटकों को समझना महत्वपूर्ण बना हुआ है।
Android में नेविगेशन Activity (स्क्रीन गतिविधियाँ) और Fragment (एक Activity के भीतर खंड) पर बनाया गया है। Jetpack Navigation Component नेविगेशन ग्राफ़ के माध्यम से स्क्रीन के बीच संक्रमण को सरल बनाता है। iOS में, नेविगेशन NavigationController के माध्यम से कार्यान्वित किया जाता है — एनिमेटेड ट्रांज़िशन वाले कंट्रोलरों का एक स्टैक। Tab Bar और Bottom Navigation ऐप के मुख्य अनुभागों के बीच स्विच करने में सक्षम बनाते हैं। Drawer (साइड मेनू) और Toolbar/ActionBar अतिरिक्त क्रियाओं के लिए उपयोग किए जाते हैं। Android Navigation Component सभी नई परियोजनाओं के लिए अनुशंसित है।
बड़ी मात्रा में डेटा प्रदर्शित करने के लिए, Android RecyclerView का उपयोग करता है — ViewHolder पुन: उपयोग के साथ एक कुशल कंटेनर। iOS समकक्ष UITableView (लंबवत सूचियाँ) और UICollectionView (ग्रिड) हैं। Jetpack Compose LazyColumn और LazyVerticalGrid प्रदान करता है, जबकि SwiftUI List और LazyVStack/LazyHStack प्रदान करता है। Lazy घटकों का मुख्य लाभ केवल दृश्य तत्वों को रेंडर करना है।
| प्लेटफॉर्म | सूची घटक | ग्रिड घटक | आलसी लोडिंग |
|---|---|---|---|
| Android (View System) | RecyclerView + ListView | RecyclerView GridLayoutManager | हाँ |
| Android (Compose) | LazyColumn | LazyVerticalGrid | हाँ |
| iOS (UIKit) | UITableView | UICollectionView | हाँ |
| iOS (SwiftUI) | List / LazyVStack | LazyVGrid | हाँ |
| Flutter | ListView.builder | GridView.builder | हाँ |
Android View System कई लेआउट कंटेनर प्रदान करता है: ConstraintLayout (लचीली बाधा प्रणाली), LinearLayout (रैखिक व्यवस्था), RelativeLayout (सापेक्ष स्थिति निर्धारण), FrameLayout (परत स्टैकिंग)। iOS में, Core Auto Layout तत्वों की स्थिति का वर्णन करने के लिए बाधाओं (NSLayoutConstraint) की एक प्रणाली का उपयोग करता है। SwiftUI और Flutter क्रमशः VStack/HStack/ZStack और Row/Column/Stack का उपयोग करते हैं।
मोबाइल डिवाइस UI घटक विभिन्न पिक्सेल घनत्वों को ध्यान में रखते हुए प्रदर्शित होते हैं। इंटरफ़ेस को सभी स्क्रीन पर समान दिखाने के लिए, घनत्व-स्वतंत्र इकाइयों का उपयोग किया जाता है।
| इकाई | प्लेटफॉर्म | विवरण |
|---|---|---|
| dp | Android | घनत्व-स्वतंत्र पिक्सेल — mdpi स्क्रीन पर 1px के बराबर अमूर्त इकाई |
| sp | Android | स्केल-स्वतंत्र पिक्सेल — फ़ॉन्ट के लिए, उपयोगकर्ता के फ़ॉन्ट आकार सेटिंग्स का सम्मान करता है |
| pt | iOS | पॉइंट — टाइपोग्राफ़िक इकाई, 1pt = 1x (गैर-Retina) स्क्रीन पर 1px |
| px | सभी | भौतिक स्क्रीन पिक्सेल — अलग-अलग घनत्व के कारण लेआउट के लिए अनुशंसित नहीं |
स्क्रीन घनत्व को वर्गीकृत किया जाता है: mdpi (160 dpi, 1x), hdpi (240 dpi, 1.5x), xhdpi (320 dpi, 2x), xxhdpi (480 dpi, 3x), xxxhdpi (640 dpi, 4x)। छवियाँ तैयार करते समय, आपको सभी घनत्वों के लिए संसाधन बनाने होंगे: icon.png, icon_hdpi.png, icon_xhdpi.png, इत्यादि। वेक्टर प्रारूप (Android में VectorDrawable, iOS में SF Symbols) कई रास्टर संसाधनों की समस्या का समाधान करते हैं।
IT Sectr में, हम Figma से आइकन निर्यात करने के लिए स्केलिंग फैक्टर का उपयोग करते हैं: हम iOS के लिए 1x, 2x, 3x और Android के लिए mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi पर निर्यात करते हैं। यह टैबलेट और फोल्डेबल स्मार्टफोन सहित सभी उपकरणों पर तेज प्रदर्शन सुनिश्चित करता है।
आधुनिक मोबाइल ऐप UI घटकों को कई मानकों का समर्थन करना चाहिए, जिनके बिना उपयोगकर्ता अनुभव अधूरा होगा।
डार्क मोड आधुनिक अनुप्रयोगों में एक अनिवार्य विकल्प है। Material Design 3 और iOS 13+ अंतर्निहित डार्क थीम समर्थन प्रदान करते हैं। रंगों को उलटना नहीं, बल्कि अलग-अलग रंग पैलेट का उपयोग करना महत्वपूर्ण है: गहरा बैकग्राउंड, हल्का टेक्स्ट, द्वितीयक तत्वों के लिए कम कंट्रास्ट। स्वचालित स्विचिंग को डिवाइस की सिस्टम थीम से जोड़ा जा सकता है।
आधुनिक iPhones में Notch (फ्रंट कैमरे के लिए कटआउट) और Dynamic Island है। Android उपकरणों में भी कटआउट और गोल कोने (Corner Radius) होते हैं। सेफ एरिया स्क्रीन का वह क्षेत्र है जो सिस्टम तत्वों (स्टेटस बार, होम इंडिकेटर), नेविगेशन बार और कटआउट से मुक्त होने की गारंटी है। iOS स्वचालित रूप से Safe Area Insets लागू करता है; Android को WindowInsets या DisplayCutout के माध्यम से स्पष्ट जाँच की आवश्यकता होती है।
एक्सेसिबिलिटी विकलांग लोगों के लिए ऐप उपयोगिता सुनिश्चित करती है। मुख्य आवश्यकताएँ: TalkBack (Android) और VoiceOver (iOS) समर्थन, ImageView के लिए सही contentDescription, पर्याप्त रंग कंट्रास्ट (टेक्स्ट के लिए न्यूनतम 4.5:1), फ़ॉन्ट स्केलिंग के लिए Dynamic Type (iOS) समर्थन, बिना दृष्टि के नेविगेशन और जेस्चर विकल्प। WCAG 2.1 अंतर्राष्ट्रीय एक्सेसिबिलिटी मानक है।
अंतर्राष्ट्रीयकरण (i18n) कई भाषाओं और क्षेत्रीय प्रारूपों का समर्थन करने के लिए ऐप तैयार करना है। स्थानीयकरण (l10n) स्ट्रिंग्स, तिथियों, मुद्राओं और सांस्कृतिक विशिष्टताओं का अनुवाद करना है। Android संसाधन निर्देशिकाओं (values-ru, values-de) का उपयोग करता है, iOS Localizable.strings और XLIFF का उपयोग करता है। Flutter ARB अनुवाद फ़ाइलों के साथ flutter_localizations का समर्थन करता है।
स्पर्श इंटरैक्शन में कई जेस्चर शामिल हैं: टैप, लॉन्ग प्रेस, स्वाइप, पिंच-टू-ज़ूम, पुल-टू-रिफ्रेश, ड्रैग-एंड-ड्रॉप। Android GestureDetector का उपयोग करता है, iOS UIGestureRecognizer का उपयोग करता है। iOS Taptic Engine के माध्यम से हैप्टिक फीडबैक के साथ 3D Touch (Force Touch) और Haptic Touch का भी समर्थन करता है।
अक्सर पूछे जाने वाले प्रश्न
Material Design (Google) छाया, परतों और एनिमेटेड ट्रांज़िशन के साथ एक "भौतिक" रूपक का उपयोग करता है, जबकि HIG (Apple) स्पष्टता, Safe Area और Dynamic Type पर निर्भर करता है। Material Design Android के लिए अनुशंसित है, HIG iOS के लिए। डिज़ाइन सिस्टम का चुनाव नेविगेशन को भी प्रभावित करता है: Android बॉटम नेविगेशन और नेविगेशन ड्रॉअर का पक्ष लेता है, जबकि iOS Tab Bar और नेविगेशन कंट्रोलर का पक्ष लेता है।
Jetpack Compose Android के लिए एक घोषणात्मक फ्रेमवर्क है, SwiftUI iOS के लिए है। दोनों एक घोषणात्मक दृष्टिकोण का उपयोग करते हैं और UI विकास को सरल बनाते हैं। Compose Kotlin और Android Architecture Components के साथ अधिक निकटता से एकीकृत है, SwiftUI Combine और संपूर्ण Apple इकोसिस्टम के साथ।
रिस्पॉन्सिव डिज़ाइन एक दृष्टिकोण है जहाँ इंटरफ़ेस स्क्रीन आकार, ओरिएंटेशन और पिक्सेल घनत्व के अनुकूल होता है। सापेक्ष इकाइयों (dp, sp, pt), Auto Layout या ConstraintLayout का उपयोग किया जाता है। टैबलेट, फोल्डेबल डिवाइस और डेस्कटॉप विंडो (iPad Stage Manager) को अतिरिक्त अनुकूलन की आवश्यकता होती है: Split View, मास्टर-डिटेल लेआउट।
Android में dp (घनत्व-स्वतंत्र पिक्सेल) और sp (स्केल-स्वतंत्र पिक्सेल), iOS में pt (पॉइंट)। px हार्डवेयर पिक्सेल हैं। dp और pt विभिन्न स्क्रीन घनत्वों पर समान भौतिक आकार प्रदान करते हैं: mdpi (1x), hdpi (1.5x), xhdpi (2x), xxhdpi (3x), xxxhdpi (4x)।
एक्सेसिबिलिटी इंटरफ़ेस को विकलांग लोगों के लिए उपयोग योग्य बनाती है: स्क्रीन रीडर समर्थन, बड़ा टेक्स्ट, कंट्रास्ट। a11y के बिना, किसी ऐप को App Store या Google Play में प्रकाशन के लिए स्वीकार नहीं किया जाएगा। इसके अतिरिक्त, एक्सेसिबिलिटी सभी उपयोगकर्ताओं के लिए UX में सुधार करती है — उदाहरण के लिए, Dynamic Type समर्थन कम दृष्टि वाले लोगों की मदद करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।