Jetpack Compose, dijital arayüzler oluşturmak için kapsamlı bir tasarım sistemi olan Materyal Tasarım'ın bir uygulamasını sunar. Materyal Tasarım bileşenleri (düğmeler, kartlar, anahtarlar vb.) Materyal Tema temelinde geliştirilmiştir. Bu, projenizle ilgili Materyal Tasarım'ı ürününüzün markasını daha iyi yansıtacak şekilde özelleştirebilirsiniz. Malzeme Temada color [renk], tipografi ve şekil özellikleri bulunur. Bu özellikleri özelleştirdiğinizde, değişiklikleriniz uygulamanızı oluşturmak için kullandığınız bileşenlere otomatik olarak yansıtılır.
Jetpack Compose bu kavramları MaterialTheme
bileşeniyle uygular:
MaterialTheme( colors = // ... typography = // ... shapes = // ... ) { // app content }
Uygulamanızı temalandırmak için MaterialTheme
parametresine ilettiğiniz parametreleri yapılandırın.
Şekil 1. İlk ekran görüntüsünde, yapılandırılmayan bir uygulama gösteriliyor
MaterialTheme
ve bu nedenle varsayılan stilleri kullanır. İkinci ekran görüntüsünde, stili özelleştirmek için MaterialTheme
parametrelerini ileten bir uygulama gösterilmektedir.
Renk
Renkler, basit bir veri tutma sınıfı olan Color
sınıfıyla Oluştur'da modellenir.
val Red = Color(0xffff0000) val Blue = Color(red = 0f, green = 0f, blue = 1f)
Bunları istediğiniz gibi düzenleyebilirsiniz (üst düzey sabitler, tekil içinde veya satır içi olarak). Ancak renkleri temanızda belirtmenizi ve oradan almanızı önemle tavsiye ederiz. Bu yaklaşım, koyu temayı ve iç içe yerleştirilmiş temaları kolayca desteklemelerini sağlayabilirsiniz.
Şekil 2. Material renk sistemi.
Compose, malzeme rengi sistemini modellemek için Colors
sınıfını sağlar. Colors
, açık veya koyu renk grupları oluşturmak için oluşturucu işlevleri sağlar:
private val Yellow200 = Color(0xffffeb46) private val Blue200 = Color(0xff91a4fc) // ... private val DarkColors = darkColors( primary = Yellow200, secondary = Blue200, // ... ) private val LightColors = lightColors( primary = Yellow500, primaryVariant = Yellow400, secondary = Blue700, // ... )
Colors
öğelerinizi tanımladıktan sonra bunları bir MaterialTheme
öğesine iletebilirsiniz:
MaterialTheme( colors = if (darkTheme) DarkColors else LightColors ) { // app content }
Tema renklerini kullanma
MaterialTheme
composable'a sağlanan Colors
öğesini şu şekilde alabilirsiniz:
MaterialTheme.colors
kullanılıyor.
Text( text = "Hello theming", color = MaterialTheme.colors.primary )
Yüzey ve içerik rengi
Birçok bileşen bir çift renk ve içerik rengini kabul eder:
Surface( color = MaterialTheme.colors.surface, contentColor = contentColorFor(color), // ... ) { /* ... */ } TopAppBar( backgroundColor = MaterialTheme.colors.primarySurface, contentColor = contentColorFor(backgroundColor), // ... ) { /* ... */ }
Bu, bir composable'ın rengini belirlemenizin yanı sıra,
içerik,yani içindeki composable'lar için bir varsayılan renk. Birçok bileşen varsayılan olarak bu içerik rengini kullanır. Örneğin, Text
renk, Icon
, kendi arka plan rengini ayarlamak için de bu rengi kullanır
renk tonu.
Şekil 3. Farklı arka plan renkleri ayarlandığında farklı metin ve simge renkleri elde edilir.
contentColorFor()
yöntemi, tüm tema renkleri için uygun "açık" rengi alır. Örneğin, Surface
'ta primary
arka plan rengi ayarlarsanız bu işlev, onPrimary
'i içerik rengi olarak ayarlamak için kullanılır. Temadan farklı bir arka plan rengi ayarlarsanız ayrıca
uygun içerik rengine sahip olursunuz. Hiyerarşide belirli bir konumdaki mevcut arka plan için tercih edilen içerik rengini almak üzere LocalContentColor
öğesini kullanın.
İçerik alfa
Önem derecesini iletmek için içeriği ne kadar vurguladığınızı genellikle değiştirmek istersiniz ve görsel bir hiyerarşi sağlamanızı sağlar.