अगर आप Android ऐप डेवलपमेंट की दुनिया में कदम रखना चाहते हैं, तो अब भारी-भरकम XML लेआउट्स और जटिल व्यू-बाइंडिंग सीखने की जरूरत नहीं है। Google ने आधुनिक Android डेवलपमेंट को बेहद सरल और पावरफुल बनाने के लिए Jetpack Compose पेश किया है। यह एक डिक्लेरेटिव UI टूलकिट (Declarative UI Toolkit) है, जिसमें आप सिर्फ Kotlin कोड लिखकर खूबसूरत और फास्ट यूजर इंटरफेस बना सकते हैं।
इस ट्यूटोरियल में हम केवल थ्योरी की बात नहीं करेंगे, बल्कि Android Studio में स्क्रैच से एक इंटरैक्टिव 'Tap Counter & Tracker' ऐप बनाएंगे। इस रियल-वर्ल्ड उदाहरण से आप Composable फंक्शन्स, लेआउट डिजाइन और स्टेट मैनेजमेंट (State Management) के फंडामेंटल्स आसानी से समझ जाएंगे।
शुरुआत से पहले जरूरी टूल्स और सेटअप
इस ट्यूटोरियल को फॉलो करने के लिए आपके कंप्यूटर में निम्नलिखित टूल्स इंस्टॉल होने चाहिए:
- Android Studio (Iguana या नया वर्जन): Google की ऑफिशियल IDE डाउनलोड और इंस्टॉल करें।
- Kotlin Basics: वेरिएबल्स, फंक्शन्स और बेसिक सिंटैक्स की सामान्य समझ।
- Android Emulator या फिजिकल डिवाइस: ऐप को टेस्ट करने के लिए USB Debugging ऑन किया हुआ फोन।
Step 1: Android Studio में नया Compose प्रोजेक्ट बनाएं
सबसे पहले अपने सिस्टम में Android Studio ओपन करें और इन स्टेप्स को फॉलो करें:
- New Project पर क्लिक करें।
- टेंप्लेट स्क्रीन में Empty Activity चुनें (ध्यान दें कि इसके आइकन पर छोटा Compose लोगो बना होता है)। Next पर क्लिक करें।
- प्रोजेक्ट का नाम रखें:
MyCounterApp। - Package Name डिफॉल्ट रहने दें और Language में Kotlin चुनें।
- Minimum SDK में API 24 (Android 7.0) या उससे ऊपर सिलेक्ट करें ताकि अधिकांश डिवाइसेज सपोर्ट हो सकें।
- Finish पर क्लिक करें और Gradle सिंक पूरा होने का इंतजार करें।
Step 2: Composable फंक्शन और लेआउट का ढांचा समझें
प्रोजेक्ट लोड होने के बाद app > java > your.package.name > MainActivity.kt फाइल खोलें। पारंपरिक Android डेवलपमेंट में UI XML फाइल में बनती थी और लॉजिक Kotlin में लिखा जाता था। Compose में UI और लॉजिक दोनों Kotlin में ही लिखे जाते हैं।
कोई भी UI एलिमेंट बनाने के लिए हम फंक्शन के ऊपर @Composable एनोटेशन लगाते हैं। Compose में मुख्य रूप से तीन लेआउट स्ट्रक्चर इस्तेमाल होते हैं:
- Column: एलिमेंट्स को ऊपर से नीचे (Vertical) क्रम में जमाने के लिए।
- Row: एलिमेंट्स को बाएं से दाएं (Horizontal) क्रम में जमाने के लिए।
- Box: एलिमेंट्स को एक के ऊपर एक (Layered) स्टैक करने के लिए।
Step 3: ऐप का लॉजिक और कोड तैयार करें
हमारी ऐप में यूजर जितनी बार बटन दबाएगा, स्क्रीन पर काउंटर नंबर बढ़ेगा और साथ ही एक 'Reset' बटन भी होगा। इसके लिए हमें 'State' को संभालना होगा ताकि जब भी नंबर बदले, UI अपने आप अपडेट हो जाए।
MainActivity.kt में मौजूद डिफॉल्ट कोड को हटाकर नीचे दिया गया कोड लिखें:
package com.example.mycounterapp
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
CounterAppScreen()
}
}
}
}
@Composable
fun CounterAppScreen() {
// स्टेट वेरिएबल: यह वैल्यू को मेमोरी में याद रखता है
var count by remember { mutableStateOf(0) }
Column(
modifier = Modifier
.fillMaxSize()
.padding(24.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text = "दैनिक टैप काउंटर",
fontSize = 26.sp,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colorScheme.primary
)
Spacer(modifier = Modifier.height(30.dp))
Text(
text = "$count",
fontSize = 64.sp,
fontWeight = FontWeight.ExtraBold
)
Spacer(modifier = Modifier.height(30.dp))
Row(
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
Button(
onClick = { count++ },
colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primary)
) {
Text(text = "गिनती बढ़ाएं (+1)", fontSize = 16.sp)
}
OutlinedButton(
onClick = { count = 0 }
) {
Text(text = "रीसेट", fontSize = 16.sp)
}
}
}
}
Step 4: कोड के मुख्य हिस्सों को समझें
यह कोड कैसे काम कर रहा है, इसे तीन आसान बिंदुओं में समझें:
1. State (remember और mutableStateOf)
var count by remember { mutableStateOf(0) } कोड का सबसे महत्वपूर्ण हिस्सा है। पारंपरिक Android में आपको textView.setText() मैन्युअल रूप से कॉल करना पड़ता था। Compose में जब count की वैल्यू बदलती है, तो Compose स्क्रीन के केवल उस हिस्से को दोबारा ड्रा (Recompose) कर देता है जहां यह वैल्यू दिखाई जा रही है।
2. Modifiers
Modifier.fillMaxSize() और Modifier.padding(24.dp) UI कॉम्पोनेंट के आकार, पैडिंग और अलाइनमेंट को कंट्रोल करते हैं। Compose में स्टाइलिंग का लगभग 80% काम Modifiers द्वारा ही किया जाता है।
3. Spacer और लेआउट अरेंजमेंट
एलिमेंट्स के बीच स्पेस देने के लिए हमने Spacer का उपयोग किया है। Column के अंदर horizontalAlignment = Alignment.CenterHorizontally की मदद से सभी बटन्स और टेक्स्ट स्क्रीन के बीचों-बीच सेट हो जाते हैं।
Step 5: ऐप को रन और टेस्ट करें
कोड लिखने के बाद अपनी ऐप को टेस्ट करने के लिए इन आसान स्टेप्स का पालन करें:
- Android Studio के टॉप टूलबार में अपना Emulator या कनेक्टेड फोन सिलेक्ट करें।
- हरे रंग के Run ('Play' बटन) पर क्लिक करें।
- कुछ ही सेकंड्स में ऐप आपके डिवाइस में इंस्टॉल होकर खुल जाएगी।
- "गिनती बढ़ाएं" बटन पर टैप करके देखें कि नंबर तुरंत बढ़ रहा है या नहीं, और "रीसेट" दबाने पर संख्या वापस शून्य (0) हो रही है या नहीं।
शुरुआती डेवलपर्स द्वारा की जाने वाली 3 गलतियां
- बिना 'remember' के स्टेट बनाना: यदि आप सिर्फ
mutableStateOf(0)लिखेंगे, तो हर रीकंपोजिशन पर वैल्यू फिर से शून्य हो जाएगी। वैल्यू को बनाए रखने के लिएrememberलगाना अनिवार्य है। - हार्डकोडेड साइज का अत्यधिक इस्तेमाल: हर व्यू पर फिक्स चौड़ाई (Width) न दें। हमेशा
Modifier.weight()या फ्लेक्सिबल लेआउट्स का इस्तेमाल करें ताकि ऐप हर स्क्रीन साइज पर सही दिखे। - बिजनेस लॉजिक को UI में मिलाना: छोटे प्रोजेक्ट्स में स्टेट को Composable के अंदर रखना ठीक है, लेकिन बड़े प्रोजेक्ट्स में हमेशा ViewModel का उपयोग करें।
निष्कर्ष
आपने बिना किसी जटिल XML फाइल के सिर्फ कुछ लाइनों के Kotlin कोड में अपनी पहली इंटरैक्टिव Android ऐप सफलतापूर्वक तैयार कर ली है। Jetpack Compose का यह डिक्लेरेटिव तरीका ऐप डेवलपमेंट की स्पीड को दोगुना कर देता है और एरर्स की संभावना को काफी कम करता है। अब आप इसमें नए फीचर्स जोड़कर देख सकते हैं, जैसे कि 'माइनस 1 (-1)' का बटन जोड़ना या बैकग्राउंड कलर बदलना।
अक्सर पूछे जाने वाले सवाल (FAQs)
क्या नए डेवलपर्स को XML लेआउट्स छोड़ देने चाहिए?
नए प्रोजेक्ट्स के लिए Google अब Jetpack Compose को ही प्राइमरी टूल मानता है। हालांकि, कंपनियों के पुराने प्रोजेक्ट्स (Legacy Code) को मेंटेन करने के लिए XML की बेसिक समझ होना मददगार रहता है, लेकिन नया करियर शुरू करने के लिए Compose सीखना सबसे सही निर्णय है।
Compose ऐप चलाने के लिए कम से कम कौन सा Android वर्जन चाहिए?
Jetpack Compose Android 5.0 (API Level 21) और उससे ऊपर के सभी डिवाइसेज पर आसानी से काम करता है, जो आज के समय में एक्टिव सभी Android डिवाइसेज का 99% से अधिक हिस्सा है।
क्या Jetpack Compose में सीधे कोडिंग के दौरान UI प्रीव्यू देखा जा सकता है?
हाँ, आप अपने Composable फंक्शन के ऊपर @Preview एनोटेशन लगाकर बिना ऐप रन किए Android Studio के स्प्लिट व्यू में रियल-टाइम UI प्रीव्यू देख सकते हैं।

0 Comments
You Can Contact on WhatsApp - 9509503477