Elevation Material Design की एक मूलभूत अवधारणा है जो z-अक्ष (स्क्रीन के लंबवत) के साथ तत्व की ऊँचाई निर्धारित करती है। Elevation को dp में मापा जाता है और यह सीधे तत्व द्वारा डाली गई छाया के आकार और धुंधलापन को प्रभावित करता है। Elevation जितना अधिक होगा, तत्व उतना ही उपयोगकर्ता के करीब होगा और उसका दृश्य भार उतना ही अधिक ध्यान देने योग्य होगा। Material Design 3 (Google, 2026) के अनुसार, कार्ड के लिए मानक elevation 1 dp, FloatingActionButton के लिए — 6 dp, डायलॉग के लिए — 24 dp है। छाया कार्यान्वयन के बारे में अधिक जानकारी के लिए UI में छायाओं पर लेख देखें।
मुख्य बिंदु
Elevation एक मीट्रिक है जिसे Material Design (Google I/O 2014) में पेश किया गया था और यह z-अक्ष के साथ तत्व की स्थिति का वर्णन करता है। x और y (स्क्रीन का द्वि-आयामी तल) के विपरीत, z तल के ऊपर की ऊँचाई है। Elevation को dp (डेंसिटी-इंडिपेंडेंट पिक्सेल) में व्यक्त किया जाता है और यह दो दृश्य प्रभाव निर्धारित करता है: छाया, जो elevation बढ़ने पर बड़ी और अधिक धुंधली हो जाती है, और ड्राइंग क्रम (अधिक elevation वाले तत्व कम elevation वाले तत्वों के ऊपर खींचे जाते हैं)।
भौतिक रूपक: एक मेज पर कागज की शीट की कल्पना करें। स्टैक जितना ऊँचा होगा, ऊपरी शीट की छाया उतनी ही लंबी होगी। Elevation Material Design में बिल्कुल उसी तरह काम करता है — प्रत्येक तत्व एक निश्चित ऊँचाई पर एक “डिजिटल शीट” है। जब उपयोगकर्ता किसी तत्व के साथ इंटरैक्ट करता है (बटन दबाता है, कार्ड उठाता है), तो elevation अस्थायी रूप से बढ़ जाता है — इसे “इंटरैक्शन elevation” कहा जाता है।
Material Design Guidelines (Google, 2026) के अनुसार, elevation का सही उपयोग इंटरफ़ेस की स्कैनेबिलिटी में 35% सुधार करता है: उपयोगकर्ता इंटरैक्टिव तत्वों को तेज़ी से ढूँढ़ते हैं क्योंकि वे फ्लैट सामग्री के ऊपर “उभरते” हैं। हालाँकि, elevation स्तरों की अत्यधिक संख्या (4 से अधिक) इस प्रभाव को कम कर देती है — यदि सब कुछ तैर रहा है, तो कुछ भी महत्वपूर्ण नहीं लगता।
Android में, elevation को API 21 (Android 5.0 Lollipop) से View की अंतर्निहित प्रॉपर्टी के रूप में लागू किया गया है। View.elevation पिक्सेल (px) में आधार ऊँचाई निर्धारित करता है, और View.translationZ एनिमेशन के लिए अतिरिक्त ऑफ़सेट प्रदान करता है (उदाहरण के लिए, दबाने पर)। कुल दृश्य ऊँचाई = elevation + translationZ। दोनों प्रॉपर्टी ViewPropertyAnimator या ObjectAnimator के माध्यम से एनिमेशन का समर्थन करती हैं।
<!-- XML: elevation और translationZ -->
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="4dp"
android:translationZ="2dp"
android:stateListAnimator="@anim/button_elevation"
android:text="Elevation वाला बटन" />
StateListAnimator — View की स्थिति (दबाया गया, फ़ोकस किया गया, सक्षम) के आधार पर elevation और translationZ को एनिमेट करने के लिए एक XML संसाधन। उदाहरण के लिए, बटन दबाने पर, elevation 2 dp से 8 dp तक बढ़ सकता है, जिससे उठाने का प्रभाव पैदा होता है। StateListAnimator किसी भी View प्रॉपर्टी के लिए ObjectAnimator के माध्यम से एनिमेशन का समर्थन करता है।
// Kotlin: प्रोग्रामेटिक elevation सेटअप
import android.animation.ObjectAnimator
import android.view.View
val myButton: View = findViewById(R.id.myButton)
myButton.elevation = 4f // px में आधार ऊँचाई
// दबाने पर elevation एनिमेशन
val animator = ObjectAnimator.ofFloat(
myButton,
"translationZ",
0f,
8f
).apply {
duration = 150
repeatMode = ValueAnimator.REVERSE
repeatCount = 1
}
OutlineProvider — elevation छाया के सही प्रस्तुतीकरण के लिए एक महत्वपूर्ण घटक। डिफ़ॉल्ट रूप से, Android ViewOutlineProvider.BACKGROUND का उपयोग करता है, जो पृष्ठभूमि drawable के आधार पर एक रूपरेखा बनाता है। गोल कोनों वाले Views (shape drawable के माध्यम से) के लिए, एक कस्टम OutlineProvider सेट किया जाना चाहिए, अन्यथा छाया आयताकार होगी। Material घटक (CardView, MaterialButton) OutlineProvider को स्वचालित रूप से प्रबंधित करते हैं।
Material Design 3 (Material You) ने Material Design 2 की तुलना में elevation सिस्टम में संशोधन किया। 12 निश्चित स्तरों (Material 2) के बजाय, M3 5 बुनियादी टोन प्रदान करता है, जिनमें से प्रत्येक एक विशिष्ट elevation स्तर से मेल खाता है। इसके अतिरिक्त, M3 Android 12+ पर “रंगीन छाया” की अवधारणा पेश करता है: छाया को काले-ग्रे होने के बजाय थीम के एक्सेंट रंग से रंगा जा सकता है।
| स्तर | Elevation | उपयोग | छाया (हल्की थीम) |
|---|---|---|---|
| स्तर 0 | 0 dp | पृष्ठभूमि, Surface कंटेनर | कोई छाया नहीं |
| स्तर 1 | 1 dp | कार्ड, ListItem, मेनू | 0.05 अपारदर्शिता, 2px धुंधलापन |
| स्तर 2 | 3 dp | खोज बार, निचला नेविगेशन | 0.08 अपारदर्शिता, 4px धुंधलापन |
| स्तर 3 | 6 dp | FAB, FloatingActionButton | 0.11 अपारदर्शिता, 8px धुंधलापन |
| स्तर 4 | 8 dp | Snackbar, बॉटम शीट | 0.12 अपारदर्शिता, 12px धुंधलापन |
| स्तर 5 | 12 dp | नेविगेशन ड्रॉअर, डायलॉग | 0.14 अपारदर्शिता, 16px धुंधलापन |
| स्तर 6 | 24 dp | मॉडल डायलॉग, पॉपअप मेनू | 0.15 अपारदर्शिता, 24px धुंधलापन |
इंटरैक्शन elevation — किसी तत्व के साथ उपयोगकर्ता इंटरैक्शन के दौरान elevation में अस्थायी वृद्धि। Material Design 3 में, इंटरैक्टिव तत्व (बटन, कार्ड) दबाने (pressed state) या फ़ोकस (focused state) करने पर अपने आधार elevation में +1–2 dp प्राप्त करते हैं। FloatingActionButton के लिए, इंटरैक्शन elevation +6 dp है। प्राकृतिक स्पर्श प्रतिक्रिया के लिए राज्यों के बीच संक्रमण एनिमेशन 150–200 ms तक चलना चाहिए।
Jetpack Compose Card और Surface घटकों के माध्यम से elevation का समर्थन करता है, जिनमें एक अंतर्निहित elevation पैरामीटर होता है। View सिस्टम के विपरीत, Compose अपने स्वयं के रेंडर इंजन के माध्यम से छाया प्रस्तुत करता है, जो Android के सभी संस्करणों (API 21+) में सुसंगत व्यवहार सुनिश्चित करता है। Modifier.shadow() किसी भी composable में छाया जोड़ने के लिए एक निम्न-स्तरीय मॉडिफ़ायर है।
// Jetpack Compose: Surface और Card के माध्यम से elevation
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Surface
Card(
elevation = CardDefaults.cardElevation(
defaultElevation = 4.dp,
pressedElevation = 8.dp,
focusedElevation = 6.dp
),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surface
)
) {
Text("Elevation-नियंत्रित कार्ड")
}
// कस्टम आकृतियों के लिए Modifier.shadow
Surface(
modifier = Modifier
.shadow(elevation = 6.dp, shape = RoundedCornerShape(16.dp))
.clickable { /* क्रिया */ },
shape = RoundedCornerShape(16.dp),
color = MaterialTheme.colorScheme.surface
) { Text("छाया वाली सतह") }
Elevation एनिमेशन Compose में animateFloatAsState या Animatable के माध्यम से कार्यान्वित किया जाता है। जब elevation बदलता है, Compose स्वचालित रूप से छाया को एनिमेट करता है। इंटरैक्टिव तत्वों के लिए, M3 InteractionSource का उपयोग animateElevation के साथ करें ताकि elevation दबाव, फ़ोकस और ड्रैग पर प्रतिक्रिया करे। Compose 1.2+ में Material 3 रंगीन छाया का समर्थन करता है — थीम के primary Container रंग से रंगी हुई छाया।
iOS में, Material Design से elevation का कोई अंतर्निहित एनालॉग नहीं है। Apple के Human Interface Guidelines छाया प्रबंधन के लिए z-निर्देशांक का उपयोग नहीं करते हैं — इसके बजाय, डेवलपर CALayer.shadow* के माध्यम से मैन्युअल रूप से छाया कॉन्फ़िगर करते हैं। हालाँकि, छाया और गहराई के माध्यम से दृश्य पदानुक्रम की अवधारणा iOS में भी मौजूद है: मॉडल प्रेजेंटेशन, UIAlertController, UIPopoverPresentationController — सभी पृष्ठभूमि से अलग दिखने के लिए छाया का उपयोग करते हैं।
iOS पर elevation अनुकरण करने के लिए, डेवलपर shadowOpacity + shadowRadius + shadowOffset के संयोजन का उपयोग करते हैं। आवश्यक “ऊँचाई” जितनी अधिक होगी, धुंधलापन त्रिज्या और छाया ऑफ़सेट उतना ही बड़ा होगा। SwiftUI में, छाया पैरामीटर के साथ .shadow() मॉडिफ़ायर के माध्यम से सेट की जाती है। iOS पर Material-जैसे व्यवहार के लिए, Google द्वारा Material Components for iOS (MDC) जैसी लाइब्रेरी मौजूद हैं।
// iOS: CALayer के माध्यम से elevation अनुकरण
import UIKit
extension UIView {
func applyElevation(level: Int) {
let elevationMap: [Int: (CGFloat, CGFloat, CGFloat)] = [
1: (0.05, 1, 2),
2: (0.08, 2, 4),
3: (0.11, 4, 8),
4: (0.12, 6, 12),
5: (0.14, 8, 16),
6: (0.15, 12, 24)
]
let (opacity, offset, radius) = elevationMap[level] ?? (0.08, 2, 4)
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = Float(opacity)
layer.shadowOffset = CGSize(width: 0, height: offset)
layer.shadowRadius = radius
layer.shouldRasterize = true
layer.rasterizationScale = UIScreen.main.scale
}
}
// उपयोग
cardView.applyElevation(level: 3) // 6 dp के समतुल्य
Material Components for iOS (MDC-iOS) — Google की एक लाइब्रेरी जो Material Design elevation को iOS पर पोर्ट करती है। MDC-iOS पूर्वनिर्धारित मानों के साथ MDCShadowElevation क्लास, छाया प्रस्तुतीकरण के लिए MDCShadowLayer और उचित elevation के साथ Material कार्ड के लिए MDCCard प्रदान करता है। MDC-iOS स्टेटफुल छाया गुणों के माध्यम से दबाने पर elevation एनिमेशन का समर्थन करता है।
अक्सर पूछे जाने वाले प्रश्न
Elevation — z-तल में तत्व की आधार ऊँचाई (XML या कोड में सेट की जाती है)। translationZ — एनिमेशन के लिए एक गतिशील ऑफ़सेट (उदाहरण के लिए, दबाने पर)। दृश्य ऊँचाई = elevation + translationZ। elevation को ViewPropertyAnimator के माध्यम से, translationZ को ObjectAnimator के माध्यम से एनिमेट किया जाता है। ऊँचाई में अस्थायी परिवर्तनों के लिए translationZ का उपयोग करें, स्थायी परिवर्तनों के लिए elevation का।
Material Design 3 ने डिज़ाइनरों और डेवलपरों पर संज्ञानात्मक भार को कम करने के लिए elevation सिस्टम को 12 से 7 स्तरों तक सरल बनाया। सटीक मानों (2 dp, 4 dp, 8 dp) के बजाय, M3 पूर्वनिर्धारित छाया पैरामीटर के साथ टोन (स्तर 0–6) का उपयोग करता है। Android 12+ पर, रंगीन छाया के लिए समर्थन जोड़ा गया जो ऐप की थीम के अनुकूल होती हैं।
Elevation स्वयं प्रदर्शन को प्रभावित नहीं करता क्योंकि छायाएँ हार्डवेयर (GPU) द्वारा प्रस्तुत की जाती हैं। हालाँकि, elevation में बार-बार परिवर्तन (एनिमेशन के दौरान हर फ्रेम) View और आसन्न क्षेत्रों के पुनर्चित्रण का कारण बन सकते हैं। एनिमेशन के लिए, elevation बदलने के बजाय translationZ का उपयोग करें, क्योंकि translationZ बार-बार परिवर्तनों के लिए अनुकूलित है। 20+ elevation तत्वों वाली जटिल स्क्रीन के लिए, view.setLayerType(View.LAYER_TYPE_HARDWARE, null) सक्षम करें।
Android में, elevation हमेशा तत्व को पृष्ठभूमि से ऊपर उठाता है और ड्राइंग क्रम (z-order) बदलता है। यदि आपको z-order बदले बिना केवल छाया चाहिए, तो CardView में cardUseCompatPadding का उपयोग करें या onDraw() में Paint.setShadowLayer() के माध्यम से कस्टम छाया प्रस्तुतीकरण करें। Jetpack Compose में, Modifier.graphicsLayer { shadowElevation = 4f } का उपयोग करें।
Material Design घटकों के निश्चित elevation मान हैं: FloatingActionButton — 6 dp (दबाने पर 12 dp), CardView — 1–8 dp (कॉन्फ़िगरेबल), BottomNavigationView — 8 dp, Toolbar — 4 dp, Snackbar — 6 dp, Dialog — 24 dp। Material Components Library का MaterialButton का elevation 2 dp है, जो दबाने पर 8 dp तक बढ़ जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें