Uygulamanız her boyuttaki Wear OS cihazda iyi çalışmalı, varsa ek alandan yararlanmalı ve küçük ekranlarda da harika görünmelidir. Bu kılavuzda, bu kullanıcı deneyimini elde etmeye yönelik öneriler sunulmaktadır.
Uyarlanabilir düzenlerin tasarım ilkeleri hakkında daha fazla bilgi edinmek için tasarım kılavuzunu okuyun.
Material 3 ile duyarlı düzenler oluşturma
Düzenlerde yüzdeye dayalı kenar boşlukları kullanılmalıdır. Wear Compose Material 3'te,ScreenScaffold, yüzdeye dayalı dolguyu otomatik olarak hesaplar ve
contentPadding değerini içerik lambda'sına sağlar. Bu contentPadding parametresini
TransformingLazyColumn öğesine iletin.
Aşağıdaki kod snippet'i, çeşitli Wear OS ekran boyutlarında mükemmel görünen içerikler oluşturmak için TransformingLazyColumn bileşenini kullanır:
val columnState = rememberTransformingLazyColumnState() val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = columnState ) { contentPadding -> TransformingLazyColumn( state = columnState, contentPadding = contentPadding ) { item { ListHeader( modifier = Modifier .fillMaxWidth() .transformedHeight(this, transformationSpec) .minimumVerticalContentPadding(ListHeaderDefaults.minimumTopListContentPadding), transformation = SurfaceTransformation(transformationSpec) ) { Text(text = "Header") } } // ... other items item { Button( modifier = Modifier .fillMaxWidth() .transformedHeight(this, transformationSpec) .minimumVerticalContentPadding(ButtonDefaults.minimumVerticalListContentPadding), transformation = SurfaceTransformation(transformationSpec), onClick = { /* ... */ }, icon = { Icon( imageVector = Icons.Default.Build, contentDescription = "build", ) }, ) { Text( text = "Build", maxLines = 1, overflow = TextOverflow.Ellipsis, ) } } } }
Bu örnekte ScreenScaffold ve AppScaffold de gösterilmektedir.
Bunlar, doğru kaydırma davranışını ve TimeText konumlandırmayı sağlamak için uygulama ile ayrı ekranlar (gezinme rotaları) arasında koordinasyon sağlar.
Üst ve alt dolgu için aşağıdakileri de göz önünde bulundurun:
Modifier.minimumVerticalContentPadding(ör.ListHeaderDefaults.minimumTopListContentPaddingveButtonDefaults.minimumVerticalListContentPadding) kullanımı, bu öğeler listenin kenarında göründüğündeTransformingLazyColumnöğesinin en azından önerilen üst ve alt dolguyu kullanmasını sağlar.- Listedeki ilk öğe için düz bir
Textcomposable yerineListHeaderkullanılması.
Tüm spesifikasyonları Figma tasarım kitlerinde bulabilirsiniz. Daha fazla bilgi ve örnek için aşağıdaki makaleleri inceleyin:
- Horologist kitaplığı: Wear OS için optimize edilmiş ve farklılaştırılmış uygulamalar oluşturmaya yardımcı olan yardımcılar sağlar.
- ComposeStarter örneği: Bu kılavuzda açıklanan ilkeleri gösteren bir örnek.
- JetCaster örneği: Horologist kitaplığını kullanarak farklı ekran boyutlarında çalışacak bir uygulama oluşturmanın daha karmaşık bir örneğidir.
Uygulamanızda kaydırılabilir düzenler kullanma
Ekranlarınızı uygularken varsayılan seçenek olarak bu sayfanın önceki bölümlerinde gösterilen kaydırılabilir düzeni kullanın. Bu sayede kullanıcılar, ekran tercihlerinden veya Wear OS cihazın ekran boyutundan bağımsız olarak uygulamanızın bileşenlerine erişebilir.
Farklı cihaz boyutlarının ve yazı tipi ölçeklendirmenin etkisi.
İletişim kutuları
İletişim kutuları da kaydırılabilir olmalıdır.
AlertDialog bileşeni duyarlıdır ve içerik, görüntü alanı yüksekliğini aşarsa varsayılan olarak kaydırılabilir.
Özel ekranlar, kaydırılamayan düzenler gerektirebilir.
Bazı ekranlar, kaydırılmayan düzenler için daha uygun olabilir. Medya uygulamasındaki ana oynatıcı ekranı ve fitness uygulamasındaki antrenman ekranı buna örnek olarak verilebilir.
Bu gibi durumlarda, Figma tasarım kitlerinde sağlanan standart kılavuzlara bakın ve doğru kenar boşluklarını kullanarak ekran boyutuna duyarlı bir tasarım uygulayın.
Kesme noktaları aracılığıyla farklı deneyimler sunma
Daha büyük ekranlarda ek içerik ve özellikler sunabilirsiniz. Bu tür farklılaştırılmış bir deneyim uygulamak için ekran boyutu kesme noktalarını kullanın. Ekran boyutu 225 dp'yi aştığında farklı bir düzen gösterilir:
const val LARGE_DISPLAY_BREAKPOINT = 225 @Composable fun isLargeDisplay() = LocalConfiguration.current.screenWidthDp >= LARGE_DISPLAY_BREAKPOINT // ... // ... use in your Composables: if (isLargeDisplay()) { // Show additional content. } else { // Show content only for smaller displays. } // ...
Tasarım kılavuzu, bu fırsatların daha fazlasını gösterir.
Önizlemeleri kullanarak ekran ve yazı tipi boyutu kombinasyonlarını test etme
Compose önizlemeleri, çeşitli Wear OS ekran boyutları için geliştirme yapmanıza yardımcı olur. Aşağıdakileri görmek için hem cihazları hem de yazı tipi ölçeklendirme önizleme tanımlarını kullanın:
- Ekranlarınızın boyutlandırma sınırlarında (ör. en küçük ekranla eşleştirilmiş en büyük yazı tipi) nasıl göründüğü.
- Farklılaştırılmış deneyiminizin kesme noktalarında nasıl davrandığı.
Uygulamanızdaki tüm ekranlar için WearPreviewDevices ve WearPreviewFontScales kullanarak önizlemeleri uyguladığınızdan emin olun. Wear OS önizlemelerini, özel donanım özelliklerini ve kaydırılan listeleri önizlemeyi yapılandırma hakkında ayrıntılı bilgi için Wear OS için Compose'da kullanıcı arayüzünüzü önizleme başlıklı makaleyi inceleyin.
@WearPreviewDevices @WearPreviewFontScales @Composable fun ComposeListPreview() { ComposeList() }
Ekran görüntüsü testi
Ekran görüntüsü testi, önizleme testinin yanı sıra mevcut çeşitli donanım boyutlarında test yapmanıza olanak tanır. Bu, özellikle söz konusu cihazlara hemen erişemediğiniz ve sorun diğer ekran boyutlarında ortaya çıkmadığı durumlarda kullanışlıdır.
Ekran görüntüsü testi, kod tabanınızın belirli konumlarındaki gerilemeleri belirlemenize de yardımcı olur.
Örneklerimizde ekran görüntüsü testi için Roborazzi kullanılır:
- Roborazzi'yi kullanmak için projenizi ve uygulama
build.gradledosyalarınızı yapılandırın. - Uygulamanızdaki her ekran için bir ekran görüntüsü testi oluşturun. Örneğin, aşağıdaki kodda liste içeren bir ekran için ekran görüntüsü testi gösterilmektedir:
@RunWith(ParameterizedRobolectricTestRunner::class) class ComposeListScreenTest( override val device: WearDevice ) : WearScreenshotTest() { override val tolerance = 0.02f @Test fun myScreenTest() = runTest { AppScaffold { ComposeList() } } companion object { @JvmStatic @ParameterizedRobolectricTestRunner.Parameters fun devices() = WearDevice.entries } }
Dikkat edilmesi gereken bazı önemli noktalar:
WearDevice.entries, en popüler Wear OS cihazların tanımlarını içerir. Böylece testler, temsili bir ekran boyutu aralığında çalıştırılır.
Altın görüntüler oluşturma
Ekranlarınız için görüntü oluşturmak üzere terminalde aşağıdaki komutu çalıştırın:
./gradlew recordRoborazziDebug
Resimleri doğrulama
Mevcut görüntülerde yapılan değişiklikleri doğrulamak için terminalde aşağıdaki komutu çalıştırın:
./gradlew verifyRoborazziDebug
Ekran görüntüsü testinin tam bir örneği için ComposeStarter örneğine bakın.