सूचियों की मदद से, उपयोगकर्ता Wear OS डिवाइसों पर, विकल्पों के सेट में से कोई आइटम चुन सकते हैं.
Wear OS वाले कई डिवाइसों में गोल स्क्रीन का इस्तेमाल किया जाता है. इस वजह से, स्क्रीन के सबसे ऊपर और सबसे नीचे दिखने वाले आइटम को देखना मुश्किल हो जाता है. इस वजह से,
Compose for Wear OS में LazyColumn
क्लास का एक वर्शन शामिल है, जिसे
TransformingLazyColumn
कहा जाता है. यह ऐनिमेशन को स्केल करने और मॉर्फ़ करने की सुविधा देता है.
जब आइटम किनारों पर जाते हैं, तो वे छोटे हो जाते हैं और धीरे-धीरे गायब हो जाते हैं.
आइटम को स्केल करने और स्क्रीन पर स्क्रोल करने का इफ़ेक्ट जोड़ने के लिए, Modifier.transformedHeight
का इस्तेमाल करें. इससे Compose, आइटम के स्क्रीन पर स्क्रोल करने पर उसकी ऊंचाई में हुए बदलाव का हिसाब लगा पाएगा. साथ ही, transformation = SurfaceTransformation(transformationSpec)
का इस्तेमाल करके विज़ुअल इफ़ेक्ट लागू किए जा सकते हैं. इनमें, आइटम को पिछले आइटम से मैच करने के लिए, उसे विज़ुअल तौर पर छोटा करना भी शामिल है.
इस ऐनिमेशन में दिखाया गया है कि स्क्रीन पर किसी एलिमेंट के आगे-पीछे जाने पर, उसका साइज़ और पारदर्शिता कैसे बदलती है:
यहां दिए गए कोड स्निपेट में,TransformingLazyColumn
लेआउट का इस्तेमाल करके सूची बनाने का तरीका बताया गया है. इससे ऐसा कॉन्टेंट बनाया जा सकता है जो Wear OS की अलग-अलग स्क्रीन साइज़ पर शानदार दिखे. उदाहरण के लिए, यहां दिए गए सैंपल कोड में, सूची के पहले और आखिरी एलिमेंट में ज़रूरी पैडिंग जोड़ी जाएगी. ये एलिमेंट, TransformingLazyColumn
के contentPadding
में सेट किए जाते हैं. स्क्रोल इंडिकेटर दिखाने के लिए, columnState
को ScreenScaffold
और TransformingLazyColumn
के बीच शेयर करें:
val columnState = rememberTransformingLazyColumnState() val contentPadding = rememberResponsiveColumnPadding( first = ColumnItemType.ListHeader, last = ColumnItemType.Button, ) val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = columnState, contentPadding = contentPadding ) { contentPadding -> TransformingLazyColumn( state = columnState, contentPadding = contentPadding ) { item { ListHeader( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec) ) { Text(text = "Header") } } // ... other items item { Button( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec), onClick = { /* ... */ }, icon = { Icon( imageVector = Icons.Default.Build, contentDescription = "build", ) }, ) { Text( text = "Build", maxLines = 1, overflow = TextOverflow.Ellipsis, ) } } } }
स्नैप-ऐंड-फ़्लिंग इफ़ेक्ट जोड़ना
अगर आपको स्नैप-ऐंड-फ़्लिंग व्यवहार जोड़ना है, तो हमारा सुझाव है कि आपScalingLazyColumn
का इस्तेमाल करें. इस इफ़ेक्ट की मदद से, उपयोगकर्ता किसी सूची में मौजूद आइटम को ज़्यादा सटीक तरीके से नेविगेट कर सकते हैं. साथ ही, लंबी सूची में तेज़ी से नेविगेट करने में भी उनकी मदद मिलती है.
ScalingLazyColumn
के Horologist वर्शन में यह इफ़ेक्ट जोड़ने के लिए, columnState
के rotaryMode
पैरामीटर को RotaryWithSnap
पर सेट करें, जैसा कि नीचे दिए गए कोड स्निपेट में दिखाया गया है:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- Compose for Wear OS कोडलैब
- सूची और ग्रिड
- 'लिखें' टैब में व्यू का इस्तेमाल करना