Elevation — بنیادی باتیں، سائے اور Android میں Z کوآرڈینیٹ

مصنف: IT Sectr اشاعت: 2026-02-28 مطالعے کا وقت: 9 منٹ

Elevation Material Design کا ایک بنیادی تصور ہے جو z-محور (اسکرین پر کھڑا) کے ساتھ عنصر کی اونچائی کی وضاحت کرتا ہے۔ Elevation کو dp میں ماپا جاتا ہے اور یہ براہ راست عنصر کے ڈالے گئے سائے کے سائز اور دھندلاپن کو متاثر کرتا ہے۔ Elevation جتنا زیادہ ہوگا، عنصر صارف کے اتنا ہی قریب ہوگا اور اس کا بصری وزن اتنا ہی زیادہ نمایاں ہوگا۔ Material Design 3 (Google، 2026) کے مطابق، کارڈز کے لیے معیاری elevation 1 dp، FloatingActionButton کے لیے — 6 dp، ڈائیلاگ کے لیے — 24 dp ہے۔ سائے کے نفاذ کے بارے میں مزید جاننے کے لیے UI میں سائے پر مضمون دیکھیں۔

اہم نکات

  • Elevation — اسکرین کی سطح کے نسبت عنصر کی اونچائی، dp (Android) میں ماپی جاتی ہے۔
  • Android میں، elevation کو اسی نام کی View پراپرٹی کے ذریعے یا اینیمیشن کے لیے translationZ کے ذریعے کنٹرول کیا جاتا ہے۔
  • OutlineProvider عنصر کی شکل کی وضاحت کرتا ہے جس کے ساتھ elevation کا سایہ رینڈر کیا جاتا ہے۔
  • Material Design 3 5 بنیادی elevation سطحوں کا استعمال کرتا ہے: 0، 1، 3، 6، 8، 12 اور 24 dp۔
  • iOS پر elevation کا کوئی براہ راست مشابہ نہیں ہے — اونچائی کو پیرامیٹرز کے ساتھ CALayer.shadow کے ذریعے نقل کیا جاتا ہے۔

Elevation کیا ہے؟

Elevation ایک میٹرک ہے جو Material Design (Google I/O 2014) میں متعارف کرایا گیا تھا اور z-محور کے ساتھ عنصر کی پوزیشن کو بیان کرتا ہے۔ x اور y (اسکرین کا دو جہتی طیارہ) کے برعکس، z طیارے کے اوپر کی اونچائی ہے۔ Elevation کو dp (کثافت سے آزاد پکسل) میں ظاہر کیا جاتا ہے اور یہ دو بصری اثرات کا تعین کرتا ہے: سایہ، جو elevation بڑھنے کے ساتھ بڑا اور دھندلا ہوتا جاتا ہے، اور ڈرائنگ کا ترتیب (زیادہ elevation والے عناصر کم elevation والے عناصر کے اوپر کھینچے جاتے ہیں)۔

طبیعی استعارہ: میز پر کاغذ کی چادروں کا تصور کریں۔ ڈھیر جتنا اونچا ہوگا، اوپر والی چادر کا سایہ اتنا ہی لمبا ہوگا۔ Material Design میں Elevation بالکل اسی طرح کام کرتا ہے — ہر عنصر ایک خاص اونچائی پر ایک “ڈیجیٹل شیٹ” ہے۔ جب صارف کسی عنصر کے ساتھ تعامل کرتا ہے (بٹن دباتا ہے، کارڈ اٹھاتا ہے)، elevation عارضی طور پر بڑھ جاتا ہے — اسے “تعامل elevation” کہا جاتا ہے۔

Material Design Guidelines (Google، 2026) کے مطابق، elevation کا صحیح استعمال انٹرفیس کی اسکین ایبلٹی کو 35% بہتر بناتا ہے: صارفین تعاملی عناصر کو تیزی سے ڈھونڈ لیتے ہیں کیونکہ وہ فلیٹ مواد کے اوپر “ابھرتے ہیں۔” تاہم، elevation کی ضرورت سے زیادہ سطحیں (4 سے زیادہ) اس اثر کو کم کر دیتی ہیں — اگر سب کچھ تیر رہا ہے تو، کچھ بھی اہم نہیں لگتا۔

Android میں Elevation: خصوصیات اور API

Android میں، elevation کو API 21 (Android 5.0 Lollipop) سے View کی بلٹ ان پراپرٹی کے طور پر لاگو کیا گیا ہے۔ View.elevation پکسلز (px) میں بنیادی اونچائی مقرر کرتی ہے، اور View.translationZ اینیمیشن کے لیے اضافی آفسیٹ فراہم کرتی ہے (مثال کے طور پر، دبانے پر)۔ کل بصری اونچائی = elevation + translationZ۔ دونوں خصوصیات ViewPropertyAnimator یا ObjectAnimator کے ذریعے اینیمیشن کو سپورٹ کرتی ہیں۔

xml
<!-- 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
// 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 میں Elevation کی سطحیں

Material Design 3 (Material You) نے Material Design 2 کے مقابلے میں elevation نظام پر نظر ثانی کی ہے۔ 12 مقررہ سطحوں (Material 2) کے بجائے، M3 5 بنیادی ٹونز پیش کرتا ہے، ہر ایک مخصوص elevation سطح سے مطابقت رکھتا ہے۔ مزید برآں، M3 Android 12+ پر “رنگین سایہ” کا تصور متعارف کراتا ہے: سایہ سیاہ بھوری رنگ کی بجائے تھیم کے ایکسنٹ رنگ سے رنگا جا سکتا ہے۔

سطحElevationاستعمالسایہ (ہلکا تھیم)
سطح 00 dpپس منظر، Surface کنٹینرکوئی سایہ نہیں
سطح 11 dpکارڈز، ListItem، مینیو0.05 دھندلاپن، 2px دھندلاہٹ
سطح 23 dpتلاش بار، نیچے کی نیویگیشن0.08 دھندلاپن، 4px دھندلاہٹ
سطح 36 dpFAB، FloatingActionButton0.11 دھندلاپن، 8px دھندلاہٹ
سطح 48 dpSnackbar، Bottom sheet0.12 دھندلاپن، 12px دھندلاہٹ
سطح 512 dpنیویگیشن ڈراور، ڈائیلاگ0.14 دھندلاپن، 16px دھندلاہٹ
سطح 624 dpموڈل ڈائیلاگ، پاپ اپ مینیو0.15 دھندلاپن، 24px دھندلاہٹ

تعامل elevation — صارف کے کسی عنصر کے ساتھ تعامل کے دوران elevation میں عارضی اضافہ۔ Material Design 3 میں، تعاملی عناصر (بٹن، کارڈز) دبانے (pressed حالت) یا فوکس کرنے (focused حالت) پر اپنی بنیادی elevation میں +1–2 dp حاصل کرتے ہیں۔ FloatingActionButton کے لیے، تعامل elevation +6 dp ہے۔ قدرتی سپرش ردعمل کے لیے حالتوں کے درمیان منتقلی اینیمیشن 150–200 ms تک رہنی چاہیے۔

Jetpack Compose میں Elevation

Jetpack Compose Card اور Surface اجزاء کے ذریعے elevation کو سپورٹ کرتا ہے، جن میں ایک بلٹ ان elevation پیرامیٹر ہے۔ View سسٹم کے برعکس، Compose اپنے رینڈر انجن کے ذریعے سائے رینڈر کرتا ہے، جو Android کے تمام ورژنز (API 21+) میں مستقل رویہ کو یقینی بناتا ہے۔ Modifier.shadow() کسی بھی composable میں سایہ شامل کرنے کے لیے ایک نچلی سطح کا موڈیفائر ہے۔

kotlin
// 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 پر Elevation: اونچائی کا نقلی

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) جیسی لائبریریاں موجود ہیں۔

swift
// 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 اینیمیشن کو سپورٹ کرتا ہے۔

اکثر پوچھے گئے سوالات

Android میں elevation اور translationZ میں کیا فرق ہے؟

Elevation — z-طیارے میں عنصر کی بنیادی اونچائی (XML یا کوڈ میں سیٹ کی جاتی ہے)۔ translationZ — اینیمیشن کے لیے ایک متحرک آفسیٹ (مثال کے طور پر، دبانے پر)۔ بصری اونچائی = elevation + translationZ۔ elevation کو ViewPropertyAnimator کے ذریعے، translationZ کو ObjectAnimator کے ذریعے اینیمیٹ کیا جاتا ہے۔ عارضی اونچائی کی تبدیلیوں کے لیے translationZ استعمال کریں، مستقل تبدیلیوں کے لیے elevation۔

Material Design 3 نے elevation نظام کیوں تبدیل کیا؟

Material Design 3 نے ڈیزائنرز اور ڈویلپرز پر علمی بوجھ کو کم کرنے کے لیے elevation نظام کو 12 سے 7 سطحوں تک آسان بنایا۔ عین اقدار (2 dp، 4 dp، 8 dp) کے بجائے، M3 پہلے سے طے شدہ سایہ پیرامیٹرز کے ساتھ ٹونز (سطح 0–6) استعمال کرتا ہے۔ Android 12+ پر، رنگین سائے کے لیے معاونت شامل کی گئی جو ایپ کے تھیم کے مطابق ڈھلتے ہیں۔

Elevation Android کی کارکردگی کو کیسے متاثر کرتا ہے؟

Elevation خود کارکردگی کو متاثر نہیں کرتا کیونکہ سائے ہارڈویئر (GPU) کے ذریعے رینڈر ہوتے ہیں۔ تاہم، elevation میں بار بار تبدیلیاں (اینیمیشن کے دوران ہر فریم) View اور ملحقہ علاقوں کی دوبارہ ڈرائنگ کا سبب بن سکتی ہیں۔ اینیمیشن کے لیے، elevation تبدیل کرنے کے بجائے translationZ استعمال کریں، کیونکہ translationZ بار بار تبدیلیوں کے لیے بہتر بنایا گیا ہے۔ 20+ elevation عناصر والی پیچیدہ اسکرینوں کے لیے، view.setLayerType(View.LAYER_TYPE_HARDWARE, null) فعال کریں۔

عنصر کو اٹھائے بغیر elevation کا سایہ کیسے بنایا جائے؟

Android میں، elevation ہمیشہ عنصر کو پس منظر سے اوپر اٹھاتا ہے اور ڈرائنگ کا ترتیب (z-order) تبدیل کرتا ہے۔ اگر آپ کو z-order تبدیل کیے بغیر صرف سائے کی ضرورت ہے تو، CardView میں cardUseCompatPadding استعمال کریں یا onDraw() میں Paint.setShadowLayer() کے ذریعے حسب ضرورت سایہ رینڈرنگ استعمال کریں۔ Jetpack Compose میں، Modifier.graphicsLayer { shadowElevation = 4f } استعمال کریں۔

معیاری Android اجزاء کا elevation کیا ہے؟

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 2 dp کا elevation رکھتا ہے، جو دبانے پر 8 dp تک بڑھ جاتا ہے۔

خلاصہ

  • Elevation — Material Design میں عنصر کی z-اونچائی، dp میں ماپی جاتی ہے، سایہ اور ڈرائنگ کا ترتیب متعین کرتی ہے۔
  • Android میں، elevation API 21 سے View پراپرٹی کے ذریعے سیٹ کی جاتی ہے، اور اینیمیشن کے لیے translationZ استعمال ہوتا ہے۔
  • OutlineProvider — گول کونوں والے عناصر پر درست سائے کے لیے ضروری ہے۔
  • Material Design 3, 7 elevation سطحیں استعمال کرتا ہے: سطح 0 (0 dp) — سطح 6 (24 dp)۔
  • Jetpack Compose CardDefaults.cardElevation() اور Modifier.shadow() کے ذریعے elevation کا انتظام کرتا ہے۔
  • iOS پر، elevation کو پہلے سے طے شدہ دھندلاپن/آفسیٹ/رداس پیرامیٹرز کے ساتھ CALayer.shadow کے ذریعے نقل کیا جاتا ہے۔
  • تعامل elevation (+1–6 dp) تعاملی عناصر کو دبانے پر سپرش کا ردعمل پیدا کرتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں