पहली बार इस्तेमाल करने वाले व्यक्ति को यह दिखाने के लिए कि आपके ऐप्लिकेशन का ज़्यादा से ज़्यादा फ़ायदा कैसे लिया जाए, स्क्रीन शेयर करें ऐप्लिकेशन के शुरू होने के बारे में जानकारी. इस्तेमाल शुरू करने के कुछ उदाहरण यहां दिए गए हैं जानकारी:
- इस बारे में पूरी जानकारी देते हैं कि जब कोई उपयोगकर्ता ऐसा करता है, तब कौनसे चैनल उपलब्ध होते हैं पहले किसी चैनल ऐप्लिकेशन को ऐक्सेस करता है.
- अपने ऐप्लिकेशन की अहम सुविधाओं पर लोगों का ध्यान खींचें.
- लोगों को किसी ज़रूरी या सुझाए गए तरीके के बारे में बताने के लिए, पहली बार इस्तेमाल कर रहे हैं.
androidx.leanback लाइब्रेरी
इसके लिए 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
, आपको
को लोड करना. हर पेज का एक शीर्षक, ब्यौरा, और
कई सबव्यू जिनमें इमेज या ऐनिमेशन शामिल हो सकते हैं.
इमेज 2 में उदाहरण के तौर पर एक पेज दिखाया गया है, जिसमें कॉलआउट वाले पेज को पसंद के मुताबिक बनाया जा सकता है
आपके OnboardingSupportFragment
में शामिल एलिमेंट
उपलब्ध करा सकता है. पेज के एलिमेंट इस तरह हैं:
- पेज का टाइटल.
- पेज की जानकारी.
- पेज कॉन्टेंट व्यू, इस मामले में स्लेटी रंग के बॉक्स में हरे रंग का सही का निशान लगा है. यह व्यू ज़रूरी नहीं है. पेज की जानकारी देने के लिए, इस व्यू का इस्तेमाल करें. उदाहरण के लिए, आपके पास ऐसा स्क्रीनशॉट शामिल करें जो ऐप्लिकेशन की उस सुविधा को हाइलाइट करे जिसके बारे में पेज पर बताया गया है.
- पेज का बैकग्राउंड व्यू. इस मामले में, एक सामान्य नीला ग्रेडिएंट है. यह व्यू पेज पर हमेशा अन्य व्यू के पीछे रेंडर होता है. यह व्यू ज़रूरी नहीं है.
- पेज का फ़ोरग्राउंड व्यू, इस मामले में एक लोगो है. यह व्यू हमेशा रेंडर करता है पेज पर दूसरे सभी व्यू से पहले दिखते हैं. यह व्यू ज़रूरी नहीं है.
पेज की जानकारी को तब शुरू करें, जब
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; }