पहली बार इस्तेमाल करने वाले लोगों को अपने ऐप्लिकेशन का परिचय दें

Compose की सुविधा की मदद से बेहतर बनाएं
Android TV OS के लिए Jetpack Compose का इस्तेमाल करके कम से कम कोड के साथ खूबसूरत यूज़र इंटरफ़ेस (यूआई) बनाएं.

पहली बार इस्तेमाल करने वाले व्यक्ति को यह दिखाने के लिए कि आपके ऐप्लिकेशन का ज़्यादा से ज़्यादा फ़ायदा कैसे लिया जाए, स्क्रीन शेयर करें ऐप्लिकेशन के शुरू होने के बारे में जानकारी. इस्तेमाल शुरू करने के कुछ उदाहरण यहां दिए गए हैं जानकारी:

  • इस बारे में पूरी जानकारी देते हैं कि जब कोई उपयोगकर्ता ऐसा करता है, तब कौनसे चैनल उपलब्ध होते हैं पहले किसी चैनल ऐप्लिकेशन को ऐक्सेस करता है.
  • अपने ऐप्लिकेशन की अहम सुविधाओं पर लोगों का ध्यान खींचें.
  • लोगों को किसी ज़रूरी या सुझाए गए तरीके के बारे में बताने के लिए, पहली बार इस्तेमाल कर रहे हैं.

androidx.leanback लाइब्रेरी इसके लिए OnboardingSupportFragment क्लास पहली बार इस्तेमाल करने वाले लोगों की जानकारी शेयर की जाएगी. इस गाइड में बताया गया है कि OnboardingSupportFragment क्लास प्रज़ेंट करनी है वह शुरुआती जानकारी जो ऐप्लिकेशन के पहली बार लॉन्च होने पर दिखाई जाती है समय.

OnboardingSupportFragment, टीवी यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करता है टीवी के यूज़र इंटरफ़ेस (यूआई) स्टाइल से मेल खाने वाले तरीके से जानकारी दिखाने के सबसे सही तरीके साथ ही, इसे टीवी डिवाइसों पर आसानी से नेविगेट किया जा सकता है.

पहला डायग्राम. एक उदाहरण OnboardingSupportFragment.

OnboardingSupportFragment, इस्तेमाल के हर उदाहरण के लिए सही नहीं है. अगर आपको इसे शामिल करना हो, तो OnboardingSupportFragment का इस्तेमाल न करें ऐसे यूज़र इंटरफ़ेस (यूआई) एलिमेंट जिनमें उपयोगकर्ता का इनपुट ज़रूरी है, जैसे कि बटन और फ़ील्ड. साथ ही, उन टास्क के लिए OnboardingSupportFragment का इस्तेमाल न करें जिन्हें उपयोगकर्ता करेगा नियमित रूप से. आखिर में, अगर आपको एक से ज़्यादा पेज वाला ऐसा यूज़र इंटरफ़ेस (यूआई) दिखाना है जिसके लिए तो हमारा सुझाव है कि आप GuidedStepSupportFragment.

कोई ऑनबोर्डिंगSupportफ़्रैगमेंट जोड़ें

OnboardingSupportFragment जोड़ने के लिए अपने ऐप्लिकेशन में, ऐसी क्लास लागू करें जो OnboardingSupportFragment क्लास. जोड़ें इस फ़्रैगमेंट को किसी गतिविधि में जोड़ा जाएगा. इसके लिए, गतिविधि के लेआउट एक्सएमएल का इस्तेमाल किया जाएगा या प्रोग्रामेटिक रूप से. पक्का करें कि गतिविधि या फ़्रैगमेंट इनसे ली गई थीम का इस्तेमाल करता है Theme_Leanback_Onboarding, जैसा कि थीम को पसंद के मुताबिक बनाएं सेक्शन में बताया गया है.

onCreate() तरीके में ऐप की मुख्य गतिविधि, कॉल startActivity() एक Intent के साथ जो इस पर ले जाता है आपके OnboardingSupportFragment की माता-पिता की गतिविधि. इससे यह पक्का करने में मदद मिलती है कि OnboardingSupportFragment इस तरह दिखता है चालू कर सकते हैं.

यह पक्का करने में मदद करने के लिए कि OnboardingSupportFragment केवल जब उपयोगकर्ता आपका ऐप्लिकेशन पहली बार शुरू करता है, तो SharedPreferences ऑब्जेक्ट ताकि यह ट्रैक किया जा सके कि उपयोगकर्ता ने पहले OnboardingSupportFragment. बूलियन तय करना वह वैल्यू जो उपयोगकर्ता के पूरा देख लेने पर सही में बदल जाती है OnboardingSupportFragment. इस्तेमाल की जानकारी आपकी गतिविधि के डेटा में onCreate() तरीका इस्तेमाल करके, सिर्फ़ इसकी शुरुआत की जा सकती है OnboardingSupportFragment पैरंट गतिविधि, अगर मान असत्य है.

नीचे दिए गए उदाहरण में, onCreate() का वह ओवरराइड दिखाया गया है जो SharedPreferences मान और अगर इसे 'सही है' पर सेट नहीं किया गया है, तो OnboardingSupportFragment दिखाने के लिए startActivity():

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    PreferenceManager.getDefaultSharedPreferences(this).apply {
        // Check if we need to display our OnboardingSupportFragment
        if (!getBoolean(MyOnboardingSupportFragment.COMPLETED_ONBOARDING_PREF_NAME, false)) {
            // The user hasn't seen the OnboardingSupportFragment yet, so show it
            startActivity(Intent(this@OnboardingActivity, OnboardingActivity::class.java))
        }
    }
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences sharedPreferences =
            PreferenceManager.getDefaultSharedPreferences(this);
    // Check if we need to display our OnboardingSupportFragment
    if (!sharedPreferences.getBoolean(
            MyOnboardingSupportFragment.COMPLETED_ONBOARDING_PREF_NAME, false)) {
        // The user hasn't seen the OnboardingSupportFragment yet, so show it
        startActivity(new Intent(this, OnboardingActivity.class));
    }
}

उपयोगकर्ता के OnboardingSupportFragment, इसे 'देखा गया' के तौर पर मार्क करें SharedPreferences ऑब्जेक्ट का इस्तेमाल करके. ऐसा करने के लिए, ओवरराइड करें onFinishFragment() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अपने OnboardingSupportFragment में और SharedPreferences सेट करें सही पर सेट करें, जैसा कि इस उदाहरण में दिखाया गया है:

Kotlin

override fun onFinishFragment() {
    super.onFinishFragment()
    // User has seen OnboardingSupportFragment, so mark our SharedPreferences
    // flag as completed so that we don't show our OnboardingSupportFragment
    // the next time the user launches the app
    PreferenceManager.getDefaultSharedPreferences(context).edit().apply {
        putBoolean(COMPLETED_ONBOARDING_PREF_NAME, true)
        apply()
    }
}

Java

@Override
protected void onFinishFragment() {
    super.onFinishFragment();
    // User has seen OnboardingSupportFragment, so mark our SharedPreferences
    // flag as completed so that we don't show our OnboardingSupportFragment
    // the next time the user launches the app
    SharedPreferences.Editor sharedPreferencesEditor =
            PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
    sharedPreferencesEditor.putBoolean(
            COMPLETED_ONBOARDING_PREF_NAME, true);
    sharedPreferencesEditor.apply();
}

ऑनबोर्डिंगSupportफ़्रैगमेंट पेज जोड़ें

OnboardingSupportFragment क्रम वाले पेजों की सीरीज़ में कॉन्टेंट दिखाता है. जोड़ने के बाद OnboardingSupportFragment, आपको को लोड करना. हर पेज का एक शीर्षक, ब्यौरा, और कई सबव्यू जिनमें इमेज या ऐनिमेशन शामिल हो सकते हैं.

दूसरा डायग्राम. OnboardingSupportFragment अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पेज एलिमेंट.

इमेज 2 में उदाहरण के तौर पर एक पेज दिखाया गया है, जिसमें कॉलआउट वाले पेज को पसंद के मुताबिक बनाया जा सकता है आपके OnboardingSupportFragment में शामिल एलिमेंट उपलब्ध करा सकता है. पेज के एलिमेंट इस तरह हैं:

  1. पेज का टाइटल.
  2. पेज की जानकारी.
  3. पेज कॉन्टेंट व्यू, इस मामले में स्लेटी रंग के बॉक्स में हरे रंग का सही का निशान लगा है. यह व्यू ज़रूरी नहीं है. पेज की जानकारी देने के लिए, इस व्यू का इस्तेमाल करें. उदाहरण के लिए, आपके पास ऐसा स्क्रीनशॉट शामिल करें जो ऐप्लिकेशन की उस सुविधा को हाइलाइट करे जिसके बारे में पेज पर बताया गया है.
  4. पेज का बैकग्राउंड व्यू. इस मामले में, एक सामान्य नीला ग्रेडिएंट है. यह व्यू पेज पर हमेशा अन्य व्यू के पीछे रेंडर होता है. यह व्यू ज़रूरी नहीं है.
  5. पेज का फ़ोरग्राउंड व्यू, इस मामले में एक लोगो है. यह व्यू हमेशा रेंडर करता है पेज पर दूसरे सभी व्यू से पहले दिखते हैं. यह व्यू ज़रूरी नहीं है.

पेज की जानकारी को तब शुरू करें, जब OnboardingSupportFragment को पहली बार बनाया गया या पैरंट गतिविधि से अटैच किया गया हो, जैसा कि सिस्टम के अनुरोध वाले पेज पर होता है जानकारी देता है, जब यह फ़्रैगमेंट का व्यू बनाता है. पेज शुरू करने के लिए, या इसके किसी ओवरराइड में जानकारी onAttach().

इनमें से हर एक तरीके को बदलें, जो पेज की जानकारी देते हैं सिस्टम को:

  • getPageCount() आपकी साइट के पेजों की संख्या दिखाता है OnboardingSupportFragment.
  • getPageTitle(), अनुरोध किए गए पेज नंबर का टाइटल दिखाता है.
  • getPageDescription(), अनुरोध किए गए पेज की जानकारी देता है जोड़ें.

वैकल्पिक सबव्यू देने के लिए, इनमें से हर तरीके को बदलें इमेज या ऐनिमेशन दिखाने के लिए:

  • onCreateBackgroundView() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस बारे में एक View दिखाता है कि को बैकग्राउंड व्यू के तौर पर इस्तेमाल करने के लिए बनाएं. अगर किसी बैकग्राउंड व्यू की ज़रूरत नहीं है, तो इसे खाली कर दें.
  • onCreateContentView() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस बारे में एक View दिखाता है कि अगर किसी कॉन्टेंट व्यू की ज़रूरत नहीं है, तो 'कॉन्टेंट व्यू' या 'शून्य' के तौर पर काम करें.
  • onCreateForegroundView() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस बारे में एक View दिखाता है कि अगर फ़ोरग्राउंड व्यू की ज़रूरत न हो, तो फ़ोरग्राउंड व्यू के तौर पर काम करने के लिए बनाएं.

सिस्टम, आपके बनाए गए View को पेज में जोड़ता है लेआउट. बदलाव का यह उदाहरण onCreateContentView() और यह ImageView:

Kotlin

private lateinit var contentView: ImageView
...
override fun onCreateContentView(inflater: LayoutInflater?, container: ViewGroup?): View? {
    return ImageView(context).apply {
        scaleType = ImageView.ScaleType.CENTER_INSIDE
        setImageResource(R.drawable.onboarding_content_view)
        setPadding(0, 32, 0, 32)
        contentView = this
    }
}

Java

private ImageView contentView;
...
@Override
protected View onCreateContentView(LayoutInflater inflater, ViewGroup container) {
    contentView = new ImageView(getContext());
    contentView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    contentView.setImageResource(R.drawable.onboarding_content_view);
    contentView.setPadding(0, 32, 0, 32);
    return contentView;
}

शुरुआती लोगो जोड़ने वाली स्क्रीन

OnboardingSupportFragment का मैंडेट चालू हो सकता है इसमें आपके ऐप्लिकेशन के बारे में जानकारी देने वाली एक वैकल्पिक लोगो स्क्रीन भी होगी. अगर आपको अपनी वेबसाइट पर Drawable अपने लोगो की स्क्रीन पर, setLogoResourceId() अपने Drawable के आईडी से onCreate() में आपके OnboardingSupportFragment के तरीके का इस्तेमाल करके बनाया गया है. सिस्टम फ़ेड इन हो जाता है और Drawable, और फिर Drawable को फ़ेड करता है अपने OnboardingSupportFragment का पहला पेज दिखाने से पहले.

यदि आप अपने लोगो स्क्रीन के लिए कस्टम ऐनिमेशन उपलब्ध कराना चाहते हैं, तो setLogoResourceId() को कॉल करें, बदलें onCreateLogoAnimation() और Animator वापस करें ऑब्जेक्ट जो आपके कस्टम ऐनिमेशन को रेंडर करता है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

Kotlin

public override fun onCreateLogoAnimation(): Animator =
        AnimatorInflater.loadAnimator(context, R.animator.onboarding_logo_screen_animation)

Java

@Override
public Animator onCreateLogoAnimation() {
    return AnimatorInflater.loadAnimator(getContext(),
            R.animator.onboarding_logo_screen_animation);
}

पेज के ऐनिमेशन को पसंद के मुताबिक बनाएं

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

अपने पहले पेज पर दिखाई देने वाले ऐनिमेशन को पसंद के मुताबिक बनाने के लिए, बदलें onCreateEnterAnimation() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और Animator दिखाता है. इस उदाहरण में, एक ऐसा Animator बनाया गया है जो कॉन्टेंट व्यू को स्केल करता है क्षैतिज रूप से:

Kotlin

override fun onCreateEnterAnimation(): Animator =
    ObjectAnimator.ofFloat(contentView, View.SCALE_X, 0.2f, 1.0f)
            .setDuration(ANIMATION_DURATION)

Java

@Override
protected Animator onCreateEnterAnimation() {
    Animator startAnimator = ObjectAnimator.ofFloat(contentView,
            View.SCALE_X, 0.2f, 1.0f).setDuration(ANIMATION_DURATION);
    return startAnimator;
}

जब उपयोगकर्ता किसी दूसरे पेज पर जाता है, तो जिस ऐनिमेशन का इस्तेमाल किया जाता है उसे पसंद के मुताबिक बनाने के लिए, बदलें onPageChanged(). अपने onPageChanged() तरीके में, Animator ऑब्जेक्ट बनाएं जो पिछले पेज को हटा देते हैं और अगला पेज दिखाते हैं, तो इन्हें AnimatorSet, और सेट चलाओ. नीचे दिए गए उदाहरण में पिछले पेज को हटाने के लिए फ़ेड-आउट ऐनिमेशन का इस्तेमाल किया जाता है, और फिर की इमेज जोड़ी जाती है और अगला पेज दिखाने के लिए फ़ेड-इन ऐनिमेशन का इस्तेमाल किया जाता है:

Kotlin

override fun onPageChanged(newPage: Int, previousPage: Int) {
    // Create a fade-out animation for previousPage and, once
    // done, swap the contentView image with the next page's image
    val fadeOut = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 1.0f, 0.0f)
            .setDuration(ANIMATION_DURATION)
            .apply {
                addListener(object : AnimatorListenerAdapter() {

                    override fun onAnimationEnd(animation: Animator) {
                        mContentView.setImageResource(pageImages[newPage])
                    }
                })
            }
    // Create a fade-in animation for nextPage
    val fadeIn = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 0.0f, 1.0f)
            .setDuration(ANIMATION_DURATION)
    // Create AnimatorSet with fade-out and fade-in animators and start it
    AnimatorSet().apply {
        playSequentially(fadeOut, fadeIn)
        start()
    }
}

Java

@Override
protected void onPageChanged(final int newPage, int previousPage) {
    // Create a fade-out animation for previousPage and, once
    // done, swap the contentView image with the next page's image
    Animator fadeOut = ObjectAnimator.ofFloat(mContentView,
            View.ALPHA, 1.0f, 0.0f).setDuration(ANIMATION_DURATION);
    fadeOut.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            mContentView.setImageResource(pageImages[newPage]);
        }
    });
    // Create a fade-in animation for nextPage
    Animator fadeIn = ObjectAnimator.ofFloat(mContentView,
            View.ALPHA, 0.0f, 1.0f).setDuration(ANIMATION_DURATION);
    // Create AnimatorSet with fade-out and fade-in animators and start it
    AnimatorSet set = new AnimatorSet();
    set.playSequentially(fadeOut, fadeIn);
    set.start();
}

इमेज बनाने के बारे में ज़्यादा जानने के लिए Animator ऑब्जेक्ट और AnimatorSet ऑब्जेक्ट, देखें प्रॉपर्टी ऐनिमेशन की खास जानकारी.

थीम को पसंद के मुताबिक बनाएं

कोई भी OnboardingSupportFragment लागू करने के लिए Theme_Leanback_Onboarding थीम या कोई ऐसी थीम जो Theme_Leanback_Onboarding से मिलती-जुलती हो. सेट करें OnboardingSupportFragment की थीम करने के लिए, इनमें से कोई एक काम करें:

  • OnboardingSupportFragment की पैरंट गतिविधि को सेट करें, ताकि इसका इस्तेमाल किया जा सके पसंदीदा थीम. नीचे दिए गए उदाहरण में, इस्तेमाल के लिए किसी गतिविधि को सेट करने का तरीका बताया गया है ऐप्लिकेशन मेनिफ़ेस्ट में Theme_Leanback_Onboarding:
    <activity
       android:name=".OnboardingActivity"
       android:enabled="true"
       android:exported="true"
       android:theme="@style/Theme.Leanback.Onboarding">
    </activity>
    
  • माता-पिता की गतिविधि में थीम सेट करने के लिए, LeanbackOnboardingTheme_onboardingTheme अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है एट्रिब्यूट के लिए, पसंद के मुताबिक बनाई गई गतिविधि की थीम में बदलाव करें. इस एट्रिब्यूट की वैल्यू किसी और को दें ऐसी कस्टम थीम जो सिर्फ़ OnboardingSupportFragment आपकी गतिविधि में शामिल ऑब्जेक्ट. अगर आपकी गतिविधि पहले से ही इस्तेमाल की जा रही है, तो इस तरीके का इस्तेमाल करें पसंद के मुताबिक बनाई गई थीम और उस थीम को लागू न करें OnboardingSupportFragment स्टाइल से अन्य व्यू.
  • सेटिंग में एडमिन के किए गए बदलाव onProvideTheme() और अपनी पसंद की थीम दिखाएं. इस तरीके का इस्तेमाल तब करें, जब कई गतिविधियों के लिए, OnboardingSupportFragment अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है या माता-पिता की गतिविधि में मनमुताबिक थीम का इस्तेमाल नहीं हो सकता. नीचे दिया गया उदाहरण, onProvideTheme() को ओवरराइड करता है और रिटर्न करता है Theme_Leanback_Onboarding:

    Kotlin

    override fun onProvideTheme(): Int = R.style.Theme_Leanback_Onboarding
    

    Java

    @Override
    public int onProvideTheme() {
       return R.style.Theme_Leanback_Onboarding;
    }