Elevation — Material Design-in əsas konsepsiyası olub, elementin Z oxu boyunca (ekrana perpendikulyar) hündürlüyünü müəyyən edir. Elevation dp ilə ölçülür və birbaşa elementin atdığı kölgənin ölçüsünə və bulanıqlığına təsir edir. Elevation nə qədər yüksəkdirsə, element istifadəçiyə bir o qədər yaxındır və onun vizual çəkisi bir o qədər nəzərə çarpır. Material Design 3-ə (Google, 2026) görə, kartlar üçün standart elevation 1 dp, FloatingActionButton üçün 6 dp, dialoqlar üçün 24 dp-dir. Kölgələrin tətbiqi haqqında daha ətraflı UI-də kölgələr haqqında məqalədə oxuyun.
Əsas məqamlar
Elevation — Material Design-a (Google I/O 2014) daxil edilmiş metrikadır, elementin Z oxu boyunca vəziyyətini təsvir edir. X və Y-dən (ekranın ikiölçülü müstəvisi) fərqli olaraq, Z müstəvi üzərindəki hündürlükdür. Elevation dp (density-independent pixels) ilə ifadə olunur və iki vizual effekti müəyyən edir: elevation artdıqca daha böyük və bulanıq olan kölgə (shadow) və çəkmə sırası (yüksək elevation-ı olan elementlər aşağı elevation-ı olanların üstündə çəkilir).
Fiziki metafora: stolun üzərindəki kağız vərəqlərini təsəvvür edin. Yığın nə qədər hündürdürsə, üst vərəqdən düşən kölgə də bir o qədər uzundur. Elevation Material Design-da eyni şəkildə işləyir: hər bir element müəyyən hündürlükdə olan „rəqəmsal vərəq"dir. İstifadəçi elementlə qarşılıqlı əlaqədə olduqda (düyməni basdıqda, kartı qaldırdıqda), elevation müvəqqəti olaraq artır — buna „qarşılıqlı əlaqə elevasiyası" (interaction elevation) deyilir.
Material Design Guidelines-ə (Google, 2026) görə, elevation-ın düzgün istifadəsi interfeysin skan edilməsini 35% yaxşılaşdırır: istifadəçilər interaktiv elementləri daha tez tapır, çünki onlar düz məzmundan „yuxarı qalxır". Lakin həddindən artıq çox elevation səviyyəsi (4-dən çox) bu effekti azaldır: əgər bütün elementlər uçursa, heç biri vacib görünmür.
Android-də elevation View API 21-dən (Android 5.0 Lollipop) daxili xassə kimi tətbiq olunub. View.elevation pikseldə (px) əsas hündürlüyü təyin edir, View.translationZ isə animasiyalar üçün əlavə yerdəyişmədir (məsələn, basdıqda). Ümumi vizual hündürlük = elevation + translationZ. Hər iki xassə ViewPropertyAnimator və ya ObjectAnimator vasitəsilə animasiyanı dəstəkləyir.
<!-- XML: elevation və 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="Elevasiyalı düymə" />
StateListAnimator — View-in vəziyyətindən (pressed, focused, enabled) asılı olaraq elevation və translationZ-nin animasiyası üçün XML resursudur. Məsələn, düymə basıldıqda elevation 2 dp-dən 8 dp-yə qədər arta bilər, qalxma effekti yaradır. StateListAnimator View-in istənilən xassələri üçün ObjectAnimator vasitəsilə animasiyanı dəstəkləyir.
// Kotlin: elevation-ın proqram tənzimlənməsi
import android.animation.ObjectAnimator
import android.view.View
val myButton: View = findViewById(R.id.myButton)
myButton.elevation = 4f // px-də əsas hündürlük
// Basıldıqda elevation animasiyası
val animator = ObjectAnimator.ofFloat(
myButton,
"translationZ",
0f,
8f
).apply {
duration = 150
repeatMode = ValueAnimator.REVERSE
repeatCount = 1
}
OutlineProvider — elevation-dan kölgənin düzgün çəkilməsi üçün əsas komponentdir. Android standart olaraq fon drawable əsasında kontur yaradan ViewOutlineProvider.BACKGROUND istifadə edir. Yumru küncləri olan View (shape drawable vasitəsilə) üçün fərdi OutlineProvider təyin edilməlidir, əks halda kölgə düzbucaqlı olacaq. Material komponentləri (CardView, MaterialButton) OutlineProvider-ı avtomatik idarə edir.
Material Design 3 (Material You) Material Design 2 ilə müqayisədə elevation sistemini yenidən nəzərdən keçirdi. 12 sabit səviyyə (Material 2) əvəzinə M3 hər biri müəyyən elevation səviyyəsinə uyğun gələn 5 əsas ton (tone) təklif edir. Bundan əlavə, M3 Android 12+-da „rəngli kölgə" (color shadow) konsepsiyasını təqdim edir: kölgə qara-boz olmaq əvəzinə temanın vurğu rənginə boyana bilər.
| Səviyyə | Elevation | Tətbiq | KÖLGƏ (açıq tema) |
|---|---|---|---|
| Level 0 | 0 dp | Fonlar, Surface konteynerləri | Kölgəsiz |
| Level 1 | 1 dp | Kartlar, ListItem, menyu | 0.05 opacity, 2px blur |
| Level 2 | 3 dp | Search bar, Bottom navigation | 0.08 opacity, 4px blur |
| Level 3 | 6 dp | FAB, FloatingActionButton | 0.11 opacity, 8px blur |
| Level 4 | 8 dp | Snackbar, Bottom sheet | 0.12 opacity, 12px blur |
| Level 5 | 12 dp | Navigation drawer, Dialog | 0.14 opacity, 16px blur |
| Level 6 | 24 dp | Modal dialog, Popup menu | 0.15 opacity, 24px blur |
Interaction elevation — istifadəçinin elementlə qarşılıqlı əlaqəsi zamanı elevation-ın müvəqqəti artırılması. Material Design 3-də interaktiv elementlər (düymələr, kartlar) basılma (pressed state) və ya fokus (focused state) zamanı əsas elevation-a +1–2 dp alır. FloatingActionButton üçün interaction elevation +6 dp təşkil edir. Vəziyyətlər arasında keçid animasiyası təbii toxunma hissi üçün 150–200 ms davam etməlidir.
Jetpack Compose daxili elevation parametri olan Card və Surface komponentləri vasitəsilə elevation-ı dəstəkləyir. View System-dən fərqli olaraq, Compose kölgələri öz render mühərriki vasitəsilə çəkir, bu da Android-in bütün versiyalarında (API 21+) eyni davranışı təmin edir. Modifier.shadow() — istənilən composable-ə kölgə əlavə etmək üçün aşağı səviyyəli modifikator.
// Jetpack Compose: Surface və Card vasitəsilə 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 ilə idarə olunan kart")
}
// Xüsusi formalar üçün Modifier.shadow
Surface(
modifier = Modifier
.shadow(elevation = 6.dp, shape = RoundedCornerShape(16.dp))
.clickable { /* hərəkət */ },
shape = RoundedCornerShape(16.dp),
color = MaterialTheme.colorScheme.surface
) { Text("Kölgəli səth") }
Elevation animasiyası Compose-da animateFloatAsState və ya Animatable vasitəsilə həyata keçirilir. Elevation dəyişdikdə Compose avtomatik olaraq kölgəni animasiya edir. İnteraktiv elementlər üçün elevation-ın basılma, fokus və sürüklənməyə reaksiya verməsi üçün M3 InteractionSource-dan animateElevation ilə birlikdə istifadə edin. Compose 1.2+-da Material 3 temanın primary Container rənginə boyanmış kölgə olan color shadow-u dəstəkləyir.
iOS-da Material Design-dan götürülmüş daxili elevation analoqu yoxdur. Apple-ın Human Interface Guidelines qaydaları kölgələri idarə etmək üçün Z koordinatından istifadə etmir — bunun əvəzinə tərtibatçılar kölgələri əl ilə CALayer.shadow* vasitəsilə konfiqurasiya edirlər. Bununla belə, kölgələr və dərinlik vasitəsilə vizual iyerarxiya konsepsiyası iOS-da da mövcuddur: modal təqdimatlar, UIAlertController, UIPopoverPresentationController — hamısı fona nisbətən ayrılmaq üçün kölgələrdən istifadə edir.
iOS-da elevation simulyasiyası üçün tərtibatçılar shadowOpacity + shadowRadius + shadowOffset kombinasiyasından istifadə edir. Tələb olunan „hündürlük" nə qədər çoxdursa, kölgənin bulanıqlıq radiusu və yerdəyişməsi bir o qədər böyük olur. SwiftUI-də kölgələr parametrlərlə .shadow() modifikatoru vasitəsilə təyin edilir. iOS-da Material-a bənzər davranış üçün Google-dan Material Components for iOS (MDC) kitabxanaları mövcuddur.
// iOS: CALayer vasitəsilə elevation simulyasiyası
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
}
}
// İstifadə
cardView.applyElevation(level: 3) // 6 dp ekvivalenti
Material Components for iOS (MDC-iOS) — Material Design elevation-u iOS-a port edən Google kitabxanasıdır. MDC-iOS əvvəlcədən təyin edilmiş dəyərlərlə MDCShadowElevation sinfini, kölgə çəkmək üçün MDCShadowLayer-i və düzgün elevation ilə Material kartları üçün MDCCard-ı təqdim edir. MDC-iOS stateful shadow properties vasitəsilə basılma zamanı elevation animasiyasını dəstəkləyir.
Tez-tez verilən suallar
Elevation — elementin Z müstəvisində əsas hündürlüyü (XML və ya kodda təyin edilir). translationZ — animasiya üçün dinamik yerdəyişmə (məsələn, basdıqda). Vizual hündürlük = elevation + translationZ. elevation ViewPropertyAnimator vasitəsilə, translationZ isə ObjectAnimator vasitəsilə animasiya olunur. translationZ-ni müvəqqəti hündürlük dəyişiklikləri üçün, elevation-u isə daimi dəyişikliklər üçün istifadə edin.
Material Design 3 dizaynerlər və tərtibatçılar üzərindəki idrak yükünü azaltmaq üçün elevation sistemini 12 səviyyədən 7 səviyyəyə endirdi. Dəqiq dəyərlər (2 dp, 4 dp, 8 dp) əvəzinə M3 əvvəlcədən təyin edilmiş kölgə parametrləri ilə tonlardan (Level 0–6) istifadə edir. Android 12+-da tətbiqin mövzusuna uyğunlaşan rəngli kölgələr (color shadow) üçün dəstək əlavə edildi.
Elevation özlüyündə performansa təsir etmir, çünki kölgə aparat vasitəsilə (GPU) çəkilir. Bununla belə, elevation-ın tez-tez dəyişməsi (animasiya zamanı hər kadr) View-in və ona bitişik sahələrin yenidən çəkilməsinə səbəb ola bilər. Animasiya üçün elevation-u dəyişmək əvəzinə translationZ istifadə edin, çünki translationZ tez-tez dəyişikliklər üçün optimallaşdırılıb. 20+ elementli elevation olan mürəkkəb ekranlar üçün view.setLayerType(View.LAYER_TYPE_HARDWARE, null) aktiv edin.
Android-də elevation həmişə elementi fon üzərində qaldırır və çəkmə sırasını (z-order) dəyişir. Yalnız kölgə lazımdırsa, z-order dəyişmədən, CardView-də cardUseCompatPadding və ya onDraw()-da Paint.setShadowLayer() vasitəsilə xüsusi kölgə çəkmədən istifadə edin. Jetpack Compose-da Modifier.graphicsLayer { shadowElevation = 4f } istifadə edin.
Material Design komponentlərinin sabit elevation-u var: FloatingActionButton — 6 dp (basıldıqda 12 dp), CardView — 1–8 dp (konfiqurasiya olunur), BottomNavigationView — 8 dp, Toolbar — 4 dp, Snackbar — 6 dp, Dialog — 24 dp. Material Components Library-dən MaterialButton 2 dp elevation-a malikdir və basıldıqda 8 dp-yə qalxır.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun