Materyal Tasarım 3

Jetpack Compose, Materyal Tasarım'ın yeni evrimi olan Materyal Tasarım 3'ün uygulanmasını sunar. Güncellenmiş tema, bileşen ve dinamik renk gibi Material You kişiselleştirme özellikleri içeren Material 3, Android 12 ve sonraki sürümlerin yeni görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlandı.

Aşağıda, örnek olarak Reply örnek uygulaması kullanılarak Materyal Tasarım 3 uygulaması gösterilmektedir. Yanıt örneği tamamen Materyal Tasarım 3'e dayanır.

Materyal Tasarım 3'ü kullanarak örnek uygulamayı yanıtlama
Şekil 1. Materyal Tasarım 3'ü kullanarak örnek uygulamayı yanıtlama

Bağımlılık

Compose uygulamanızda Materyal 3'ü kullanmaya başlamak için build.gradle dosyalarınıza Compose Material 3 bağımlılığını ekleyin:

implementation "androidx.compose.material3:material3:$material3_version"

Bağımlılık eklendikten sonra, uygulamalarınıza renk, tipografi ve şekil gibi Materyal Tasarım sistemleri eklemeye başlayabilirsiniz.

Deneysel API'ler

Bazı M3 API'leri deneysel olarak kabul edilir. Bu gibi durumlarda, ExperimentalMaterial3Api ek açıklamasını kullanarak işlev veya dosya düzeyinde etkinleştirmeniz gerekir:

// import androidx.compose.material3.ExperimentalMaterial3Api
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AppComposable() {
    // M3 composables
}

Materyal teması oluşturma

M3 temasında şu alt sistemler bulunur: renk şeması, tipografi ve şekiller. Bu değerleri özelleştirdiğinizde değişiklikleriniz, uygulamanızı oluşturmak için kullandığınız M3 bileşenlerine otomatik olarak yansıtılır.

Materyal tasarımın alt sistemleri: Renk, Tipografi ve Şekiller
Şekil 2. Materyal Tasarımın alt sistemleri: renk, tipografi ve şekiller

Jetpack Compose, şu kavramları M3 MaterialTheme composable ile uygular:

MaterialTheme(
    colorScheme = /* ...
    typography = /* ...
    shapes = /* ...
) {
    // M3 app content
}

Uygulama içeriğinizi temalandırmak için uygulamanıza özgü renk şemasını, yazı tipini ve şekillerini tanımlayın.

Renk şeması

Renk şemasının temeli, beş temel rengin oluşturduğu kümedir. Bu renklerin her biri, Malzeme 3 bileşenleri tarafından kullanılan 13 tonluk bir ton paletine aittir. Örneğin, Yanıtla için açık temanın renk şeması şudur:

Örnek uygulama ışık renk şemasını yanıtla
Şekil 3. Örnek uygulama ışık renk şemasını yanıtlama

Renk şeması ve renk rolleri hakkında daha fazla bilgi edinin.

Renk şemaları oluşturun

Manuel olarak özel bir ColorScheme oluşturabilirsiniz ancak markanızın kaynak renklerini kullanarak bir özel ColorScheme oluşturmak genellikle daha kolaydır. Materyal Tema Oluşturucu aracı, bunu yapmanızı ve isteğe bağlı olarak Oluşturma tema kodunu dışa aktarmanızı sağlar. Aşağıdaki dosyalar oluşturulur:

  • Color.kt, hem açık hem de koyu tema renkleri için tanımlanan tüm rollerle birlikte temanızın renklerini içerir.

val md_theme_light_primary = Color(0xFF476810)
val md_theme_light_onPrimary = Color(0xFFFFFFFF)
val md_theme_light_primaryContainer = Color(0xFFC7F089)
// ..
// ..

val md_theme_dark_primary = Color(0xFFACD370)
val md_theme_dark_onPrimary = Color(0xFF213600)
val md_theme_dark_primaryContainer = Color(0xFF324F00)
// ..
// ..

  • Theme.kt, açık ve koyu renk şemaları ile uygulama teması için bir kurulum içerir.

private val LightColorScheme = lightColorScheme(
    primary = md_theme_light_primary,
    onPrimary = md_theme_light_onPrimary,
    primaryContainer = md_theme_light_primaryContainer,
    // ..
)
private val DarkColorScheme = darkColorScheme(
    primary = md_theme_dark_primary,
    onPrimary = md_theme_dark_onPrimary,
    primaryContainer = md_theme_dark_primaryContainer,
    // ..
)

@Composable
fun ReplyTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colorScheme =
        if (!darkTheme) {
            LightColorScheme
        } else {
            DarkColorScheme
        }
    MaterialTheme(
        colorScheme = colorScheme,
        content = content
    )
}

Açık ve koyu temaları desteklemek için isSystemInDarkTheme() kullanın. Sistem ayarına bağlı olarak hangi renk şemasının kullanılacağını tanımlayın: açık veya koyu.

Dinamik renk şemaları

Dinamik renk, Material You'nun önemli bir parçasıdır. Bir algoritma, kullanıcının uygulamalarına ve sistem kullanıcı arayüzüne uygulanacak duvar kağıdından özel renkler elde eder. Bu renk paleti, açık ve koyu renk şemaları oluşturmak için başlangıç noktası olarak kullanılır.

Duvar kağıdından (solda) ve varsayılan uygulama temasından (sağ) örnek uygulama dinamik temasını yanıtla
Şekil 4. Duvar kağıdından (solda) ve varsayılan uygulama temasından (sağ) örnek uygulama dinamik temasını yanıtlama

Dinamik renk özelliği Android 12 ve sonraki sürümlerde kullanılabilir. Dinamik renk kullanılabiliyorsa dinamik bir ColorScheme ayarlayabilirsiniz. Değilse özel bir açık veya koyu ColorScheme kullanmanızı öneririz.

ColorScheme, dinamik bir açık veya koyu renk şeması oluşturmak için derleyici işlevleri sağlar:

// Dynamic color is available on Android 12+
val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val colors = when {
    dynamicColor && darkTheme -> dynamicDarkColorScheme(LocalContext.current)
    dynamicColor && !darkTheme -> dynamicLightColorScheme(LocalContext.current)
    darkTheme -> DarkColorScheme
    else -> LightColorScheme
}

Renk kullanımı

Uygulamanızda Materyal tema renklerine şu adresten erişebilirsiniz: MaterialTheme.colorScheme:

Text(
    text = "Hello theming",
    color = MaterialTheme.colorScheme.primary
)

Her bir renk rolü; bileşenin durumuna, belirginliğine ve vurgusuna bağlı olarak çeşitli yerlerde kullanılabilir.

  • Birincil renk; belirgin düğmeler, etkin durumlar ve yükseltilmiş yüzeylerin tonu gibi ana bileşenler için kullanılan temel renktir.
  • İkincil anahtar rengi, kullanıcı arayüzünde filtre çipleri gibi daha az belirgin bileşenler için kullanılır ve renk ifadesi için daha fazla fırsat sunar.
  • Üçüncül anahtar rengi, birincil ve ikincil renkleri dengelemek veya bir öğeye daha fazla dikkat çekmek için kullanılabilecek zıt vurgu rollerini elde etmek amacıyla kullanılır.

Reply (Yanıtla) örnek uygulama tasarımı, seçilen öğeyi vurgulamak için birincil kapsayıcının üst kısmında birincil kapsayıcı rengini kullanır.

Birincil kapsayıcı rengine sahip birincil kapsayıcı ve metin alanları.
Şekil 5. Birincil kapsayıcı rengine sahip birincil kapsayıcı ve metin alanları.

Card(
    colors = CardDefaults.cardColors(
        containerColor =
        if (isSelected) MaterialTheme.colorScheme.primaryContainer
        else
            MaterialTheme.colorScheme.surfaceVariant
    )
) {
    Text(
        text = "Dinner club",
        style = MaterialTheme.typography.bodyLarge,
        color =
        if (isSelected) MaterialTheme.colorScheme.onPrimaryContainer
        else MaterialTheme.colorScheme.onSurface,
    )
}

Burada, Yanıt Gezinme çekmecesinde vurgu ve vurgu oluşturmak için ikincil ve üçüncül kapsayıcı renklerinin aksine nasıl kullanıldığını görebilirsiniz.

Kayan İşlem düğmesi için üçüncül kapsayıcı ve üçüncül kapsayıcı kombinasyonu.
Şekil 6. Kayan İşlem düğmesi için üçüncül kapsayıcı ve üçüncül kapsayıcı kombinasyonu.

Yazı biçimi

Materyal Tasarım 3, Malzeme Tasarım 2'den uyarlanan metin stillerini içeren bir tür ölçeğini tanımlar. Adlandırma ve gruplandırma; görüntülü reklam, başlık, başlık, gövde ve etiket olmak üzere (her biri büyük, orta ve küçük boyutlarda olacak şekilde) basitleştirildi.

Materyal tasarım 3 için varsayılan tipografi ölçeği
Şekil 7. Materyal Tasarım 3 için varsayılan tipografi ölçeği
Y3 Varsayılan Yazı Tipi Boyutu/Satır Yüksekliği
displayLarge Roboto 57/64
displayMedium Roboto 45/52
displaySmall Roboto 36/44
headlineLarge Roboto 32/40
headlineMedium Roboto 28/36
headlineSmall Roboto 24/32
titleLarge New- Roboto Medium 22/28
titleMedium Roboto Medium 16/24
titleSmall Roboto Medium 14/20
bodyLarge Roboto 16/24
bodyMedium Roboto 14/20
bodySmall Roboto 12/16
labelLarge Roboto Medium 14/20
labelMedium Roboto Medium 12/16
labelSmall New Roboto Medium, 11/16

Tipografiyi tanımlama

Compose, Materyal 3 türü ölçeğini modellemek için mevcut TextStyle ve yazı tipiyle ilgili sınıflarla birlikte M3 Typography sınıfını sağlar. Typography oluşturucusu her stil için varsayılan ayarlar sunar. Böylece özelleştirmek istemediğiniz parametreleri atlayabilirsiniz:

val replyTypography = Typography(
    titleLarge = TextStyle(
        fontWeight = FontWeight.SemiBold,
        fontSize = 22.sp,
        lineHeight = 28.sp,
        letterSpacing = 0.sp
    ),
    titleMedium = TextStyle(
        fontWeight = FontWeight.SemiBold,
        fontSize = 16.sp,
        lineHeight = 24.sp,
        letterSpacing = 0.15.sp
    ),
    // ..
)
// ..

Farklı tipografi kullanımı için büyük, gövde rengi ve etiket aracısı.
Şekil 8. Farklı tipografi kullanımı için büyük, gövde rengi ve etiket aracısı.

Ürününüz için muhtemelen Materyal Tasarım türü ölçeğindeki 15 varsayılan stilin tamamına ihtiyaç duymayacaktır. Bu örnekte, azaltılmış bir grup için beş boyut seçilmiş, ancak geri kalanlar çıkarılmıştır.

TextStyle'ın varsayılan değerlerini ve fontFamily ile letterSpacing gibi yazı tipiyle ilgili özellikleri değiştirerek tipografinizi özelleştirebilirsiniz.

bodyLarge = TextStyle(
    fontWeight = FontWeight.Normal,
    fontFamily = FontFamily.SansSerif,
    fontStyle = FontStyle.Italic,
    fontSize = 16.sp,
    lineHeight = 24.sp,
    letterSpacing = 0.15.sp,
    baselineShift = BaselineShift.Subscript
),

Typography öğenizi tanımladıktan sonra M3 MaterialTheme'ye iletin:

MaterialTheme(
    typography = replyTypography,
) {
    // M3 app Content
}

Metin stillerini kullanma

M3 MaterialTheme composable'ına sağlanan tipografiyi MaterialTheme.typography kullanarak alabilirsiniz:

Text(
    text = "Hello M3 theming",
    style = MaterialTheme.typography.titleLarge
)
Text(
    text = "you are learning typography",
    style = MaterialTheme.typography.bodyMedium
)

Materyal yönergeleri hakkında daha fazla bilgi için yazı biçimi uygulama konusuna bakabilirsiniz.

Şekiller

Malzeme yüzeyleri farklı şekillerde gösterilebilir. Doğrudan dikkati şekillendirir, bileşenleri belirler, durum hakkında bilgi verir ve markayı ifade eder.

Şekil ölçeği, kapsayıcı köşelerinin stilini tanımlar ve kareden tamamen dairesele kadar çeşitli yuvarlaklık seçenekleri sunar.

Şekil tanımlama

Compose, M3 Shapes sınıfına yeni M3 şekillerini desteklemek için genişletilmiş parametreler sağlar. M3 şekil ölçeği, daha çok tür ölçeğine benzer ve kullanıcı arayüzünde etkileyici bir şekil yelpazesine olanak tanır.

Farklı şekil boyutları vardır:

  • Ekstra Küçük
  • Küçük
  • Ortam
  • Büyük
  • Ekstra Büyük

Varsayılan olarak her şeklin varsayılan bir değeri vardır, ancak bunları geçersiz kılabilirsiniz:

val replyShapes = Shapes(
    extraSmall = RoundedCornerShape(4.dp),
    small = RoundedCornerShape(8.dp),
    medium = RoundedCornerShape(12.dp),
    large = RoundedCornerShape(16.dp),
    extraLarge = RoundedCornerShape(24.dp)
)

Shapes tanımladıktan sonra M3'e MaterialTheme aktarabilirsiniz:

MaterialTheme(
    shapes = replyShapes,
) {
    // M3 app Content
}

Şekilleri kullanma

Şekil ölçeğini MaterialTheme içindeki tüm bileşenler için özelleştirebilir veya bunu bileşen bazında yapabilirsiniz.

Orta ve büyük şekli varsayılan değerlerle uygulayın:

Card(shape = MaterialTheme.shapes.medium) { /* card content */ }
FloatingActionButton(
    shape = MaterialTheme.shapes.large,
    onClick = {
    }
) {
    /* fab content */
}

Yanıtla örnek uygulamasındaki Kayan işlem düğmesi için büyük şekil, Kart için orta şekil.
Şekil 9. Yanıtla örnek uygulamasındaki Kayan işlem düğmesi için büyük şekil ve Kart için orta şekil

Compose'un parçası olan iki şekil daha (RectangleShape ve CircleShape) vardır. Dikdörtgen şeklin kenarlık yarıçapı yoktur ve daire şeklinde kenarlar tam daire içine alınmış olarak gösterilir:

Card(shape = RectangleShape) { /* card content */ }
Card(shape = CircleShape) { /* card content */ }

Aşağıdaki örneklerde, varsayılan şekil değerlerine sahip bazı bileşenler gösterilmektedir:

Tüm Materyal 3 bileşenleri için varsayılan şekil değerleri.
Şekil 10. Tüm Materyal 3 bileşenleri için varsayılan şekil değerleri.

Şekil uygulama hakkında Materyal yönergeleri hakkında daha fazla bilgi edinebilirsiniz.

Vurgu

M3'te vurgu, renk çeşitleri ve renkle ilgili kombinasyonları kullanılarak sağlanır. M3'te, kullanıcı arayüzünüze vurgu eklemenin iki yolu vardır:

  • Genişletilmiş M3 renk sisteminden yüzey, yüzey üzerinde varyantlar ve yüzey üzerindeki varyant renklerle birlikte yüzey, yüzey varyantı ve arka plan kullanımı. Örneğin, yüzey üzerinde varyant, yüzey varyantı ise farklı vurgu seviyeleri sağlamak için yüzeyde kullanılabilir.
Vurgu için nötr renk kombinasyonları kullanmak.
Şekil 11. Vurgu için nötr renk kombinasyonları kullanın.
  • Metin için farklı yazı tipi ağırlıkları kullanma. Yukarıda, farklı vurgu sağlamak için tür ölçeğimize özel ağırlıklar sağlayabileceğinizi gördünüz.

bodyLarge = TextStyle(
    fontWeight = FontWeight.Bold
),
bodyMedium = TextStyle(
    fontWeight = FontWeight.Normal
)

Yükseklik

Malzeme 3, genel olarak tonal renk yer paylaşımları kullanılarak yüksekliği temsil eder. Bu, container'ları ve yüzeyleri birbirinden ayırt etmenin yeni bir yoludur. Ton yüksekliği artırıldığında gölgelere ek olarak daha belirgin bir ton kullanılır.

Gölge yüksekliğiyle birlikte ton rakımı
Şekil 12. Gölge yüksekliği ile ton yüksekliği

Koyu temalardaki yükseklik yer paylaşımları da Malzeme 3'te ton rengi yer paylaşımları olarak değiştirilmiştir. Yer paylaşımı rengi, birincil renk alanından gelir.

Materyal Tasarım 3'te gölge yüksekliği ve Ton rakımı
Şekil 13. Materyal Tasarım 3'te gölge yüksekliği ve Ton rakımı

Çoğu M3 bileşeninin arkasındaki composable olan M3 Yüzey, hem ton hem de gölge yükseltmesini destekler:

Surface(
    modifier = Modifier,
    tonalElevation = /*...
    shadowElevation = /*...
) {
    Column(content = content)
}

Malzeme bileşenleri

Materyal Tasarım, Materyal Tasarım'ı uygulayan ve göz alıcı Materyal Tasarım uygulamaları oluşturmanıza yardımcı olan zengin bir Materyal bileşen grubuyla (düğmeler, çipler, kartlar, gezinme çubuğu gibi) birlikte sunulur. Varsayılan özelliklere sahip bileşenleri kullanıma hazır şekilde kullanmaya başlayabilirsiniz.

Button(onClick = { /*..*/ }) {
    Text(text = "My Button")
}

M3, yapılan vurguya ve dikkate göre farklı rollerde kullanılmak üzere aynı bileşenlerin birçok versiyonunu sunar.

FAB'da düğme vurgulu, Birincil veya Metin düğmesine vurgu
Şekil 14. FAB'da düğme vurgulu, Birincil veya Metin düğmesine vurgu
  • En yüksek vurgu işlemi için genişletilmiş kayan işlem düğmesi:

ExtendedFloatingActionButton(
    onClick = { /*..*/ },
    modifier = Modifier
) {
    Icon(
        imageVector = Icons.Default.Edit,
        contentDescription = stringResource(id = R.string.edit),
    )
    Text(
        text = stringResource(id = R.string.add_entry),
    )
}

  • Yüksek vurgulu işlem için doldurulmuş bir düğme:

Button(onClick = { /*..*/ }) {
    Text(text = stringResource(id = R.string.view_entry))
}

  • Düşük vurgulu bir işlem için metin düğmesi:

TextButton(onClick = { /*..*/ }) {
    Text(text = stringResource(id = R.string.replated_articles))
}

Materyal düğmeleri ve diğer bileşenler hakkında daha fazla bilgi edinebilirsiniz. Material 3, farklı kullanım alanları ve ekran boyutları için özel olarak tasarlanmış Düğmeler, Uygulama çubukları ve Gezinme bileşenleri gibi çok çeşitli bileşen paketleri sağlar.

Material, farklı ekran boyutlarına ve durumlarına bağlı olarak gezinmeyi uygulamanıza yardımcı olan çeşitli gezinme bileşenleri de sağlar.

5 veya daha az hedefi hedeflemek istediğinizde NavigationBar, küçük cihazlar için kullanılır:

NavigationBar(modifier = Modifier.fillMaxWidth()) {
    Destinations.entries.forEach { replyDestination ->
        NavigationBarItem(
            selected = selectedDestination == replyDestination,
            onClick = { },
            icon = { }
        )
    }
}

NavigationRail, yatay moddaki küçük ila orta boyutlu tabletler veya telefonlar için kullanılır. Kullanıcılara ergonomik sağlar ve bu cihazlarda kullanıcı deneyimini iyileştirir.

NavigationRail(
    modifier = Modifier.fillMaxHeight(),
) {
    Destinations.entries.forEach { replyDestination ->
        NavigationRailItem(
            selected = selectedDestination == replyDestination,
            onClick = { },
            icon = { }
        )
    }
}

BottomGezinmeBar(Sol) ve NavigationRail(Sağ) iletilerine ilişkin Yanıt Vitrini
Şekil 15. BottomNavigationBar (Sol) ve NavigationRail (Sağ) Yanıt Öne Çıkan

Tüm cihaz boyutlarında kapsamlı bir kullanıcı deneyimi sunmak için varsayılan temada her ikisini de kullanarak yanıt verin.

NavigationDrawer, ayrıntıları göstermek için yeterli alana sahip olduğunuz orta ila büyük boyutlu tabletlerde kullanılır. NavigationRail ile birlikte PermanentNavigationDrawer veya ModalNavigationDrawer kullanabilirsiniz.

PermanentNavigationDrawer(modifier = Modifier.fillMaxHeight(), drawerContent = {
    Destinations.entries.forEach { replyDestination ->
        NavigationRailItem(
            selected = selectedDestination == replyDestination,
            onClick = { },
            icon = { },
            label = { }
        )
    }
}) {
}

Kalıcı gezinme çekmecesinde Yanıt Vitrini
Şekil 16. Kalıcı gezinme çekmecesinin yanıt vitrini

Gezinme seçenekleri kullanıcı deneyimini, ergonomiyi ve erişilebilirliği geliştirir. Uyarlanabilir codelab oluşturma'da Materyal gezinme bileşenleri hakkında daha fazla bilgi edinebilirsiniz.

Bileşenin temasını özelleştirme

M3, kişiselleştirmeyi ve esnekliği teşvik eder. Tüm bileşenlere varsayılan renkler uygulanır ancak gerektiğinde renklerini özelleştirmek için esnek API'ler kullanılır.

Kartlar ve düğmeler gibi çoğu bileşen, bileşeninizi özelleştirmek için değiştirilebilecek, renk ve yükseklik arayüzleri gösteren varsayılan bir nesne sağlar.

val customCardColors = CardDefaults.cardColors(
    contentColor = MaterialTheme.colorScheme.primary,
    containerColor = MaterialTheme.colorScheme.primaryContainer,
    disabledContentColor = MaterialTheme.colorScheme.surface,
    disabledContainerColor = MaterialTheme.colorScheme.onSurface,
)
val customCardElevation = CardDefaults.cardElevation(
    defaultElevation = 8.dp,
    pressedElevation = 2.dp,
    focusedElevation = 4.dp
)
Card(
    colors = customCardColors,
    elevation = customCardElevation
) {
    // m3 card content
}

Materyal 3'ü özelleştirme hakkında daha fazla bilgi edinebilirsiniz.

Sistem Arayüzü

Material You'nun bazı özellikleri, Android 12 ve sonraki sürümlerdeki yeni görsel stilden ve sistem kullanıcı arayüzünden gelir. Değişikliklerin yaşandığı iki temel alan, dalgalanma ve fazla kaydırmadır. Bu değişikliklerin uygulanması için ek işlem yapılması gerekmez.

Dalga

Ripple, basıldığında yüzeyleri aydınlatmak için artık hafif bir parıltı kullanıyor. Compose Material Ripple, Android'de arka planda bir RippleDrawable platformunu kullanır. Bu nedenle, ışıltı Ripple, tüm Material bileşenleri için Android 12 ve sonraki sürümlerde kullanılabilir.

M2 ve M3'te Dalgalanma
Şekil 17. M2 ve M3'te Dalgalanma

Fazla kaydırma

Fazla kaydırma artık, kaydırma kapsayıcılarının kenarında bir genişletme efekti kullanıyor. API düzeyinden bağımsız olarak Compose Foundation 1.1.0 ve sonraki sürümlerde kaydırma kapsayıcısı composable'ları (örneğin, LazyColumn, LazyRow ve LazyVerticalGrid) için uzatma fazla kaydırma özelliği varsayılan olarak etkindir.

Kapsayıcının kenarında uzatma efekti kullanarak kaydırma sonu efektini kullan
Şekil 18. Kapsayıcının kenarında uzatma efekti kullanarak kaydırma

Erişilebilirlik

Materyal bileşenlere entegre edilen erişilebilirlik standartları, kapsayıcı ürün tasarımı için bir temel sağlamak amacıyla tasarlanmıştır. Ürününüzün erişilebilirliğini anlamak; az gören, görme engelli, işitme engeli, zihinsel engeli, bedensel engeli veya durumsal engelli (kırık kol) dahil olmak üzere tüm kullanıcılar için kullanılabilirliği artırabilir.

Renk erişilebilirliği

Dinamik renk, renk kontrastı erişilebilirlik standartlarını karşılayacak şekilde tasarlanmıştır. Ton paletlerinden oluşan sistem, herhangi bir renk şemasını varsayılan olarak erişilebilir hale getirmede kritik öneme sahiptir.

Malzemenin renk sistemi, erişilebilir kontrast oranlarını karşılamak için kullanılabilecek standart ton değerleri ve ölçümler sağlar.

Örnek yanıtlama uygulaması: Birincil, ikincil ve üçüncül ton paletleri (yukarıdan aşağıya)
Şekil 19. Örnek yanıtlama uygulaması: Birincil, ikincil ve üçüncül ton paletleri (yukarıdan aşağıya)

Tüm Malzeme bileşenleri ve dinamik temalar, erişilebilirlik gereksinimlerini karşılamak için seçilmiş bir dizi ton paletinde yukarıdaki renk rollerini zaten kullanmaktadır. Ancak, bileşenleri özelleştiriyorsanız uygun renk rollerini kullandığınızdan emin olun ve uyuşmazlıktan kaçının.

Kullanıcıya erişilebilir kontrast sağlamak için birincil kapsayıcının üstünde birincil, birincil kapsayıcının üstünde ise birincil kapsayıcıyı, diğer vurgu ve nötr renkler için de aynısını kullanın.

Birincilin üstünde üçüncül bir kapsayıcının kullanılması, kullanıcıya zayıf bir kontrast düğmesi sunar:

// ✅ Button with sufficient contrast ratio
Button(
    onClick = { },
    colors = ButtonDefaults.buttonColors(
        containerColor = MaterialTheme.colorScheme.primary,
        contentColor = MaterialTheme.colorScheme.onPrimary
    )
) {
}

// ❌ Button with poor contrast ratio
Button(
    onClick = { },
    colors = ButtonDefaults.buttonColors(
        containerColor = MaterialTheme.colorScheme.tertiaryContainer,
        contentColor = MaterialTheme.colorScheme.primaryContainer
    )
) {
}

Yeterli kontrast (sol) ve Zayıf kontrast (sağ)
Şekil 20. Yeterli kontrast (sol) ve zayıf kontrast (sağ)

Yazı biçimi erişilebilirliği

M3 türü ölçek, statik tür rampasını ve değerleri güncelleyerek cihazlar arasında ölçeklendirilen boyut kategorilerinin basitleştirilmiş ancak dinamik bir çerçevesini sunar.

Örneğin, M3'te Display Small'a cihaz bağlamına göre telefon veya tablet gibi farklı değerler atanabilir.

Büyük ekranlar

Material, uygulamalarınızı erişilebilir hale getirmek ve büyük cihaz sahibi kullanıcıların ergonomisini iyileştirmek için uyarlanabilir düzenler ve katlanabilir cihazlar hakkında yol gösterici bilgiler sunar.

Material, büyük cihazlarda daha iyi kullanıcı deneyimi sağlamanıza yardımcı olmak için farklı gezinme türleri sağlar.

Android büyük ekran uygulaması kalite yönergeleri hakkında daha fazla bilgi edinebilir, uyarlanabilir ve erişilebilir tasarım için Yanıt örneğimize göz atabilirsiniz.

Daha fazla bilgi

Compose'da Materyal Tema oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara göz atın:

Örnek uygulamalar

Dokümanlar

API referansı ve kaynak kodu

Videolar