कंपोज़ेबल प्रीव्यू की मदद से, अपने यूज़र इंटरफ़ेस (यूआई) की झलक देखें

कंपोज़ेबल को किसी फ़ंक्शन से तय किया जाता है और @Composable के साथ एनोटेट किया जाता है:

@Composable
fun SimpleComposable() {
    Text("Hello World")
}

एक सामान्य टेक्स्ट एलिमेंट, जिसमें "नमस्ते" शब्द शामिल हैं

इस कंपोज़ेबल की झलक देखने के लिए, एक और कंपोज़ेबल बनाएं. साथ ही, उसे @Composable और @Preview के साथ एनोटेट करें. एनोटेट किए गए इस नए कंपोज़ेबल में अब वह कंपोज़ेबल शामिल है जिसे आपने शुरुआत में बनाया था, SimpleComposable:

@Preview
@Composable
fun SimpleComposablePreview() {
    SimpleComposable()
}

@Preview एनोटेशन, Android Studio को बताता है कि इस कंपोज़ेबल को इस फ़ाइल के डिज़ाइन व्यू में दिखाया जाना चाहिए. बदलाव करते समय, आपको कंपोज़ेबल की झलक में लाइव अपडेट दिखेंगे.

एक GIF, जिसमें Compose की झलक का इस्तेमाल करके रीयल टाइम अपडेट दिखाए जा रहे हैं

Android Studio में @Preview को रेंडर करने के तरीके को पसंद के मुताबिक बनाने के लिए, अपने कोड में मैन्युअल तरीके से पैरामीटर जोड़े जा सकते हैं. एक ही फ़ंक्शन में कई बार @Preview एनोटेशन जोड़ा जा सकता है, ताकि अलग-अलग प्रॉपर्टी वाले कंपोज़ेबल की झलक देखी जा सके.

@Preview कंपोज़ेबल का इस्तेमाल करने का एक मुख्य फ़ायदा यह है कि आपको Android Studio में एम्युलेटर पर निर्भर नहीं रहना पड़ता. एम्युलेटर को शुरू करने में ज़्यादा मेमोरी खर्च होती है. इसलिए, इसे सेव करके रखा जा सकता है. इससे, आपको ऐप्लिकेशन के लुक और स्टाइल में ज़्यादा बदलाव करने में मदद मिलेगी. साथ ही, @Preview की मदद से, कोड में छोटे-मोटे बदलाव आसानी से किए जा सकते हैं और उनकी जांच की जा सकती है.

@Preview एनोटेशन का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, अपनी स्क्रीन को इनपुट के तौर पर मिलने वाली स्थिति और आउटपुट के तौर पर मिलने वाले इवेंट के हिसाब से तय करें.

@Preview के बारे में बताएं

Android Studio में कुछ ऐसी सुविधाएं मिलती हैं जिनसे कंपोज़ेबल की झलक को बेहतर बनाया जा सकता है. आपके पास उनके कंटेनर डिज़ाइन को बदलने, उनसे इंटरैक्ट करने या उन्हें सीधे किसी एम्युलेटर या डिवाइस पर डिप्लॉय करने का विकल्प होता है.

डाइमेंशन

डिफ़ॉल्ट रूप से, @Preview डाइमेंशन अपने-आप चुने जाते हैं, ताकि कॉन्टेंट को रैप किया जा सके. डाइमेंशन को मैन्युअल तरीके से सेट करने के लिए, heightDp और widthDp पैरामीटर जोड़ें. इन वैल्यू को पहले से ही dp के तौर पर समझा जाता है. इसलिए, आपको इनमें .dp जोड़ने की ज़रूरत नहीं है:

@Preview(widthDp = 50, heightDp = 50)
@Composable
fun SquareComposablePreview() {
    Box(Modifier.background(Color.Yellow)) {
        Text("Hello World")
    }
}

पीले रंग का स्क्वेयर, जिस पर "Hello World" लिखा है

डाइनैमिक कलर की झलक

अगर आपने अपने ऐप्लिकेशन में डाइनैमिक कलर की सुविधा चालू की है, तो वॉलपेपर स्विच करने के लिए wallpaper एट्रिब्यूट का इस्तेमाल करें. इससे आपको यह देखने में मदद मिलेगी कि अलग-अलग उपयोगकर्ताओं के चुने गए वॉलपेपर पर, आपका यूज़र इंटरफ़ेस (यूआई) किस तरह से काम करता है. Wallpaper क्लास से उपलब्ध अलग-अलग वॉलपेपर थीम में से कोई एक चुनें. इस सुविधा के लिए, Compose 1.4.0 या इसके बाद का वर्शन होना ज़रूरी है.

अलग-अलग डिवाइसों के साथ इस्तेमाल करना

Android Studio Flamingo में, झलक एनोटेशन के device पैरामीटर में बदलाव किया जा सकता है. इससे, अलग-अलग डिवाइसों पर कंपोज़ेबल के लिए कॉन्फ़िगरेशन तय किए जा सकते हैं.

ऐप्लिकेशन बनाने की सुविधा का सैंपल

जब डिवाइस पैरामीटर में कोई खाली स्ट्रिंग (@Preview(device = "")) हो, तो Ctrl + Space दबाकर, ऑटोकंप्लीट की सुविधा को चालू किया जा सकता है. इसके बाद, हर पैरामीटर की वैल्यू सेट की जा सकती हैं.

सैंपल फ़ंक्शन में बदलाव करना

अपने-आप पूरा होने की सुविधा की मदद से, सूची में से किसी भी डिवाइस का विकल्प चुना जा सकता है. उदाहरण के लिए, @Preview(device = "id:pixel_4"). इसके अलावा, हर पैरामीटर की अलग-अलग वैल्यू सेट करने के लिए, spec:width=px,height=px,dpi=int… को चुनकर, पसंद के मुताबिक डिवाइस की जानकारी डाली जा सकती है.

खास जानकारी
की सूची

लागू करने के लिए, Enter दबाएं या रद्द करने के लिए, Esc दबाएं.

अगर आपने कोई अमान्य वैल्यू सेट की है, तो एलान को लाल रंग से अंडरलाइन किया जाता है. साथ ही, उसे ठीक करने का विकल्प भी उपलब्ध हो सकता है (Alt + Enter (macOS के लिए ⌥ + ⏎) > … से बदलें. जांच करने पर, आपके इनपुट से सबसे ज़्यादा मिलता-जुलता समाधान देने की कोशिश की जाती है.

अमान्य वैल्यू का उदाहरण

स्थान-भाषा

अलग-अलग उपयोगकर्ता लोकेल की जांच करने के लिए, locale पैरामीटर जोड़ें:

@Preview(locale = "fr-rFR")
@Composable
fun DifferentLocaleComposablePreview() {
    Text(text = stringResource(R.string.greeting))
}

एक सामान्य टेक्स्ट एलिमेंट, जिसमें "Bonjour" शब्द के साथ फ़्रांस का झंडा है

बैकग्राउंड का रंग सेट करें

डिफ़ॉल्ट रूप से, आपका कंपोज़ेबल पारदर्शी बैकग्राउंड के साथ दिखता है. बैकग्राउंड जोड़ने के लिए, showBackground और backgroundColor पैरामीटर जोड़ें. ध्यान रखें कि backgroundColor एक ARGB Long है, न कि Color वैल्यू:

@Preview(showBackground = true, backgroundColor = 0xFF00FF00)
@Composable
fun WithGreenBackground() {
    Text("Hello World")
}

हरे रंग का एक रेक्टैंगल, जिस पर "Hello World" लिखा है

सिस्टम यूज़र इंटरफ़ेस (यूआई)

अगर आपको झलक में स्टेटस और कार्रवाई बार दिखाने हैं, तो showSystemUi पैरामीटर जोड़ें:

@Preview(showSystemUi = true)
@Composable
fun DecoratedComposablePreview() {
    Text("Hello World")
}

झलक दिखाने वाली विंडो में, स्टेटस और कार्रवाई बार के साथ एक गतिविधि दिख रही है.

यूज़र इंटरफ़ेस (यूआई) मोड

uiMode पैरामीटर, Configuration.UI_* कॉन्स्टेंट में से कोई भी वैल्यू ले सकता है. इससे आपको झलक के व्यवहार में बदलाव करने की सुविधा मिलती है. उदाहरण के लिए, झलक को नाइट मोड पर सेट करके देखा जा सकता है कि थीम कैसी दिखती है.

झलक वाला यूज़र इंटरफ़ेस (यूआई) कंपोज़ करें

LocalInspectionMode

LocalInspectionMode CompositionLocal से पढ़ा जा सकता है कि कंपोज़ेबल को झलक में रेंडर किया गया है या नहीं. यह झलक, जांच किए जा सकने वाले कॉम्पोनेंट में मौजूद होती है. अगर कंपोज़िशन को झलक में रेंडर किया जाता है, तो LocalInspectionMode.current की वैल्यू true होती है. इस जानकारी की मदद से, झलक को पसंद के मुताबिक बनाया जा सकता है. उदाहरण के लिए, झलक वाली विंडो में असल डेटा दिखाने के बजाय, प्लेसहोल्डर की इमेज दिखाई जा सकती है.

इस तरह, सीमाओं को भी हल किया जा सकता है. उदाहरण के लिए, नेटवर्क अनुरोध को कॉल करने के बजाय सैंपल डेटा दिखाना.

@Composable
fun GreetingScreen(name: String) {
    if (LocalInspectionMode.current) {
        // Show this text in a preview window:
        Text("Hello preview user!")
    } else {
        // Show this text in the app:
        Text("Hello $name!")
    }
}

@Preview के साथ इंटरैक्ट करना

Android Studio में ऐसी सुविधाएं मिलती हैं जिनकी मदद से, तय की गई झलक के साथ इंटरैक्ट किया जा सकता है. इस इंटरैक्शन से, आपको झलक के रनटाइम के व्यवहार को समझने में मदद मिलती है. साथ ही, झलक की मदद से यूज़र इंटरफ़ेस (यूआई) को बेहतर तरीके से नेविगेट किया जा सकता है.

इंटरैक्टिव मोड

इंटरैक्टिव मोड की मदद से, झलक के साथ उसी तरह इंटरैक्ट किया जा सकता है जिस तरह फ़ोन या टैबलेट जैसे किसी डिवाइस पर प्रोग्राम को चलाया जाता है. इंटरैक्टिव मोड को सैंडबॉक्स एनवायरमेंट में अलग रखा जाता है. इसका मतलब है कि इसे अन्य झलक से अलग रखा जाता है. इसमें, झलक में मौजूद एलिमेंट पर क्लिक किया जा सकता है और उपयोगकर्ता का इनपुट डाला जा सकता है. यह कंपोज़ेबल के अलग-अलग स्टेटस, जेस्चर, और ऐनिमेशन को टेस्ट करने का एक तेज़ तरीका है.

उपयोगकर्ता, झलक में मौजूद "इंटरैक्टिव" बटन पर क्लिक करता है

एक वीडियो, जिसमें उपयोगकर्ता किसी झलक के साथ इंटरैक्ट कर रहा है

कोड नेविगेशन और कंपोज़ेबल आउटलाइन

किसी झलक पर कर्सर घुमाकर, उसमें मौजूद कंपोज़ेबल की आउटलाइन देखी जा सकती हैं. किसी कंपोज़ेबल आउटलाइन पर क्लिक करने से, एडिटर व्यू ट्रिगर होता है. इससे, उसकी परिभाषा पर नेविगेट किया जा सकता है.

उपयोगकर्ता, झलक पर कर्सर घुमा रहा है. इससे Studio, कंपोज़ेबल की आउटलाइन दिखा रहा है

झलक देखें

किसी खास @Preview को एम्युलेटर या फ़िज़िकल डिवाइस पर चलाया जा सकता है. झलक को उसी प्रोजेक्ट ऐप्लिकेशन में नए Activity के तौर पर डिप्लॉय किया जाता है. इसलिए, यह उसी कॉन्टेक्स्ट और अनुमतियों को शेयर करता है. अगर अनुमति पहले ही दी जा चुकी है, तो आपको अनुमति मांगने के लिए छोटे-मोटे बदलाव वाले कोड लिखने की ज़रूरत नहीं है.

@Preview एनोटेशन के बगल में या झलक के सबसे ऊपर मौजूद, झलक देखें आइकॉन झलक देखें
icon पर क्लिक करें. इसके बाद, Android Studio उस @Preview को आपके कनेक्ट किए गए डिवाइस या एम्युलेटर पर डिप्लॉय कर देता है.

उपयोगकर्ता, झलक के

डिवाइस पर झलक डिप्लॉय करने वाले उपयोगकर्ता का वीडियो

@Preview रेंडर को कॉपी करें

रेंडर की गई हर झलक को इमेज के तौर पर कॉपी किया जा सकता है. इसके लिए, उस पर राइट क्लिक करें.

उपयोगकर्ता, झलक पर क्लिक करके उसे इमेज के तौर पर कॉपी कर रहा है.

एक ही @Preview एनोटेशन की कई झलक

एक ही @Preview कंपोज़ेबल के कई वर्शन दिखाए जा सकते हैं. इसके लिए, अलग-अलग स्पेसिफ़िकेशन या कंपोज़ेबल को पास किए गए अलग-अलग पैरामीटर का इस्तेमाल किया जा सकता है. इस तरह, छोटे-मोटे बदलाव वाले कोड को कम किया जा सकता है.

मल्टीप्रिव्यू टेंप्लेट

androidx.compose.ui:ui-tooling-preview 1.6.0-alpha01+ में, मल्टीप्रिव्यू एपीआई टेंप्लेट उपलब्ध कराए गए हैं: @PreviewScreenSizes, @PreviewFontScales, @PreviewLightDark, और @PreviewDynamicColors. इनकी मदद से, सिर्फ़ एक एनोटेशन का इस्तेमाल करके, सामान्य स्थितियों में Compose यूज़र इंटरफ़ेस (यूआई) की झलक देखी जा सकती है.

टेंप्लेट का इस्तेमाल करके, अलग-अलग फ़ॉन्ट और स्क्रीन साइज़ की झलक देखना

कस्टम मल्टीप्रीव्यू एनोटेशन बनाना

मल्टीप्रिव्यू की मदद से, एक एनोटेशन क्लास तय की जा सकती है. इसमें अलग-अलग कॉन्फ़िगरेशन वाले कई @Preview एनोटेशन होते हैं. किसी कंपोज़ेबल फ़ंक्शन में इस एनोटेशन को जोड़ने पर, सभी अलग-अलग झलकें एक साथ अपने-आप रेंडर हो जाती हैं. उदाहरण के लिए, इस एनोटेशन का इस्तेमाल करके, एक ही समय पर कई डिवाइसों, फ़ॉन्ट के साइज़ या थीम की झलक देखी जा सकती है. इसके लिए, हर कंपोज़ेबल के लिए उन परिभाषाओं को दोहराने की ज़रूरत नहीं होती.

सबसे पहले, अपनी पसंद के मुताबिक एनोटेशन क्लास बनाएं:

@Preview(
    name = "small font",
    group = "font scales",
    fontScale = 0.5f
)
@Preview(
    name = "large font",
    group = "font scales",
    fontScale = 1.5f
)
annotation class FontScalePreviews

अपने झलक वाले कंपोज़ेबल के लिए, इस कस्टम एनोटेशन का इस्तेमाल किया जा सकता है:

@FontScalePreviews
@Composable
fun HelloWorldPreview() {
    Text("Hello World")
}

Android Studio के डिज़ाइन टैब में, छोटे और बड़े फ़ॉन्ट के साथ कंपोज़ेबल दिखाया गया है

झलक दिखाने वाले एनोटेशन के ज़्यादा बेहतर सेट बनाने के लिए, एक से ज़्यादा मल्टीप्रिव्यू एनोटेशन और सामान्य झलक दिखाने वाले एनोटेशन को जोड़ा जा सकता है. मल्टीप्रिव्यू एनोटेशन को जोड़ने का मतलब यह नहीं है कि सभी अलग-अलग कॉम्बिनेशन दिखाए जाएं. इसके बजाय, हर मल्टीप्रिव्यू एनोटेशन अलग से काम करता है और सिर्फ़ अपने वैरिएंट रेंडर करता है.

@Preview(
    name = "Spanish",
    group = "locale",
    locale = "es"
)
@FontScalePreviews
annotation class CombinedPreviews

@CombinedPreviews
@Composable
fun HelloWorldPreview2() {
    MaterialTheme { Surface { Text(stringResource(R.string.hello_world)) } }
}

Android Studio के डिज़ाइन टैब में, सभी कॉन्फ़िगरेशन में कंपोज़ेबल दिखाया जा रहा है

मल्टीप्रिव्यू और सामान्य प्रिव्यू की मिक्स-ऐंड-मैच सुविधा की मदद से, बड़े पैमाने के प्रोजेक्ट की कई प्रॉपर्टी को ज़्यादा बेहतर तरीके से टेस्ट किया जा सकता है.

@Preview और बड़े डेटा सेट

अक्सर, आपको अपने कंपोज़ेबल की झलक में एक बड़ा डेटासेट पास करना पड़ता है. ऐसा करने के लिए, @PreviewParameter एनोटेशन के साथ पैरामीटर जोड़कर, कंपोज़ेबल झलक वाले फ़ंक्शन में सैंपल डेटा पास करें.

@Preview
@Composable
fun UserProfilePreview(
    @PreviewParameter(UserPreviewParameterProvider::class) user: User
) {
    UserProfile(user)
}

सैंपल डेटा उपलब्ध कराने के लिए, एक ऐसी क्लास बनाएं जो PreviewParameterProvider को लागू करती हो और सैंपल डेटा को क्रम से दिखाती हो.

class UserPreviewParameterProvider : PreviewParameterProvider<User> {
    override val values = sequenceOf(
        User("Elise"),
        User("Frank"),
        User("Julia")
    )
}

यह क्रम में मौजूद हर डेटा एलिमेंट के लिए एक झलक रेंडर करता है:

एलीज़, फ़्रैंक, और जूलिया कंपोज़ेबल की झलक

एक से ज़्यादा झलक के लिए, एक ही प्रोवाइडर क्लास का इस्तेमाल किया जा सकता है. ज़रूरी होने पर, लिमिट पैरामीटर सेट करके झलक की संख्या को सीमित करें.

@Preview
@Composable
fun UserProfilePreview2(
    @PreviewParameter(UserPreviewParameterProvider::class, limit = 2) user: User
) {
    UserProfile(user)
}

@PreviewParameter का इस्तेमाल करने वाली झलक को डिफ़ॉल्ट रूप से, पैरामीटर इंडेक्स और प्रॉपर्टी के नाम (उपयोगकर्ता 0, उपयोगकर्ता 1, उपयोगकर्ता 2 वगैरह) का इस्तेमाल करके नाम दिया जाता है. इससे उन्हें अलग-अलग पहचानना मुश्किल हो सकता है. झलक को ज़्यादा साफ़ तौर पर दिखाने के लिए, हर झलक के लिए पसंद के मुताबिक डिसप्ले नेम दिए जा सकते हैं. इसके लिए, आपको PreviewParameterProvider में getDisplayName() को बदलना होगा. इससे, डेटा के अलग-अलग वैरिएंट या यूज़र इंटरफ़ेस (यूआई) की स्थितियों के बीच अंतर करने में मदद मिलती है. उदाहरण के लिए, इनपुट डेटा के आधार पर झलक को लेबल किया जा सकता है:

class UserAgePreviewParameterProvider : PreviewParameterProvider<User> {
    // Using a List internally for efficient index-based access
    private val userList = listOf(
        User(name = "Elise", age = 30),
        User(name = "Frank", age = 31),
        User(name = "Julia", age = 40)
    )

    override val values = userList.asSequence()

    override fun getDisplayName(index: Int): String? {
        // Return null or an empty string to use the default index-based name
        val user = userList.getOrNull(index) ?: return null
        return "${user.name} - ${user.age}"
    }
}

पसंद के मुताबिक डिसप्ले नेम वाली झलकें, जिनमें एलिस - 30, फ़्रैंक - 31, और जूलिया - 40 कंपोज़ेबल दिख रहे हैं

एआई की मदद से झलक जनरेट करना

Android Studio में मौजूद एआई एजेंट, आपके कंपोज़ेबल के लिए Compose की झलक अपने-आप जनरेट कर सकता है. किसी कंपोज़ेबल फ़ंक्शन पर राइट क्लिक करें और एआई > [कंपोज़ेबल का नाम]के लिए झलक जनरेट करें को चुनें. एजेंट आपके कंपोज़ेबल का विश्लेषण करता है, ताकि सही पैरामीटर के साथ ज़रूरी @Preview बॉयलरप्लेट जनरेट किया जा सके. इससे आपको तुरंत यह पुष्टि करने में मदद मिलती है कि आपका यूज़र इंटरफ़ेस (यूआई) उम्मीद के मुताबिक रेंडर हो रहा है या नहीं.

एआई का इस्तेमाल करके, कंपोज़ की झलक जनरेट करें.

एनोटेशन क्लास @Preview

Android Studio में @Preview एनोटेशन पर 'Ctrl या ⌘ + क्लिक' करके, उन सभी पैरामीटर की सूची देखी जा सकती है जिनमें बदलाव करके, झलक को पसंद के मुताबिक बनाया जा सकता है.

annotation class Preview(
    val name: String = "",
    val group: String = "",
    @IntRange(from = 1) val apiLevel: Int = -1,
    val widthDp: Int = -1,
    val heightDp: Int = -1,
    val locale: String = "",
    @FloatRange(from = 0.01) val fontScale: Float = 1f,
    val showSystemUi: Boolean = false,
    val showBackground: Boolean = false,
    val backgroundColor: Long = 0,
    @UiMode val uiMode: Int = 0,
    @Device val device: String = Devices.DEFAULT,
    @Wallpaper val wallpaper: Int = Wallpapers.NONE,
)

सीमाएं और सबसे सही तरीके

Android Studio, झलक वाले सेक्शन में सीधे तौर पर झलक वाले कोड को लागू करता है. इसके लिए, किसी एम्युलेटर या फ़िज़िकल डिवाइस को चलाने की ज़रूरत नहीं होती. इसकी वजह यह है कि यह Android फ़्रेमवर्क के पोर्ट किए गए हिस्से का इस्तेमाल करता है. इसे Layoutlib कहा जाता है. Layoutlib, Android फ़्रेमवर्क का एक कस्टम वर्शन है. इसे Android डिवाइसों के अलावा, अन्य डिवाइसों पर चलाने के लिए डिज़ाइन किया गया है. इस लाइब्रेरी का मकसद, Android Studio में लेआउट की झलक दिखाना है. यह झलक, डिवाइसों पर रेंडर होने वाले लेआउट से काफ़ी मिलती-जुलती होती है.

झलक देखने की सीमाएं

Android Studio में झलक रेंडर करने के तरीके की वजह से, ये झलकें हल्की होती हैं. साथ ही, इन्हें रेंडर करने के लिए पूरे Android फ़्रेमवर्क की ज़रूरत नहीं होती. हालांकि, इसमें ये सीमाएं हैं:

  • नेटवर्क ऐक्सेस नहीं है
  • फ़ाइल का ऐक्सेस नहीं है
  • ऐसा हो सकता है कि कुछ Context एपीआई पूरी तरह से उपलब्ध न हों

झलक और ViewModels

किसी कंपोज़ेबल में ViewModel का इस्तेमाल करने पर, झलकें सीमित होती हैं. झलक दिखाने वाला सिस्टम, ViewModel को पास किए गए सभी पैरामीटर नहीं बना सकता. जैसे, रिपॉज़िटरी, इस्तेमाल के उदाहरण, मैनेजर वगैरह. इसके अलावा, अगर आपका ViewModel डिपेंडेंसी इंजेक्शन में हिस्सा लेता है (जैसे कि Hilt के साथ), तो झलक दिखाने वाला सिस्टम, ViewModel को बनाने के लिए पूरा डिपेंडेंसी ग्राफ़ नहीं बना सकता.

ViewModel का इस्तेमाल करके, किसी कंपोज़ेबल की झलक देखने की कोशिश करने पर, Android Studio उस कंपोज़ेबल को रेंडर करते समय गड़बड़ी दिखाता है:

Android Studio के समस्या वाले पैनल में, `ViewModel` को इंस्टैंशिएट नहीं किया जा सका मैसेज दिख रहा है

अगर आपको ViewModel का इस्तेमाल करने वाले किसी कंपोज़ेबल की झलक देखनी है, तो आपको एक और कंपोज़ेबल बनाना होगा. इसमें, ViewModel के पैरामीटर को कंपोज़ेबल के आर्ग्युमेंट के तौर पर पास करना होगा. इस तरह, आपको ViewModel का इस्तेमाल करने वाले कंपोज़ेबल की झलक देखने की ज़रूरत नहीं पड़ती.

@Composable
fun AuthorScreen(viewModel: AuthorViewModel = viewModel()) {
  AuthorScreen(
    name = viewModel.authorName,
    // ViewModel sends the network requests and makes posts available as a state
    posts = viewModel.posts
  )
}

@Composable
fun AuthorScreen(
  name: NameLabel,
  posts: PostsList
) {
  // ...
}

@Preview
@Composable
fun AuthorScreenPreview(
  // You can use some sample data to preview your composable without the need to construct the ViewModel
  name: String = sampleAuthor.name,
  posts: List<Post> = samplePosts[sampleAuthor]
) {
  AuthorScreen(
      name = NameLabel(name),
      posts = PostsList(posts)
  )
}

अन्य संसाधन

  • Android Studio, @Preview को इस्तेमाल करने में आसान बनाने के लिए क्या करता है, इस बारे में ज़्यादा जानने के लिए, Compose टूल ब्लॉग पढ़ें. इसमें आपको टूल इस्तेमाल करने के बारे में ज़्यादा सलाह भी मिलेंगी.
  • लेगसी व्यू के बारे में जानने के लिए, व्यू की मदद से लेआउट बनाना लेख पढ़ें.