ViewPager2
| नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 14 मई, 2024 | 1.1.0 | - | - | - |
AndroidX की डिपेंडेंसी
ViewPager2 का इस्तेमाल करने के लिए, अपने प्रोजेक्ट की build.gradle फ़ाइल में यह AndroidX डिपेंडेंसी जोड़ें:
ग्रूवी
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 1.1.0
वर्शन 1.1.0
14 मई, 2024
androidx.viewpager2:viewpager2:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बातें शामिल हैं.
1.0.0 के बाद किए गए अहम बदलाव
- RecyclerView
1.3.1-rc01या उसके बाद के वर्शन के साथ इस्तेमाल करने पर होने वाले क्रैश की समस्या हल की गई है. ViewPager2अबCollectionInfoऔरCollectionItemInfoको सही तरीके से पॉप्युलेट करता है, जो RecyclerView1.2.0-alpha02को और उसके बाद वाले हिस्से को अब डिफ़ॉल्ट रूप से पॉप्युलेट नहीं करते.FragmentStateAdapterमें होने वाले फ़्रैगमेंट लाइफ़साइकल के बदलावों को सुनने के लिए,FragmentTransactionCallbackइंटरफ़ेस जोड़ा गया.FragmentManagerमें फ़्रैगमेंट जोड़ते समय, शुरुआती फ़्रैगमेंट मेन्यू दिखने से जुड़ीFragmentStateAdapterसमस्या को ठीक किया गया.- विंडो इनसेट के डिस्पैच को ठीक किया गया: अब सभी पेजों पर एक जैसे इनसेट मिलते हैं. पुराने API वर्शन (< API 30) पर
WindowInsetsको डिस्पैच करने के तरीके की वजह से, इनसेट, सिबलिंग व्यू के लिए उपलब्ध नहीं हो सकते. अगर आपको < API 30 वाले डिवाइसों पर इनसेट लागू करने हैं, तो आपकोWindowInsetsApplier.install(viewPager2)के ज़रिए इस समस्या को ठीक करने की सुविधा के लिए ऑप्ट-इन करना होगा.
वर्शन 1.1.0-rc01
1 मई, 2024
androidx.viewpager2:viewpager2:1.1.0-rc01 को 1.1.0-beta02 के बाद से रिलीज़ किया गया है. इसमें कोई खास बदलाव नहीं हुआ है. वर्शन 1.1.0-rc01 में ये कमिट शामिल हैं.
वर्शन 1.1.0-beta02
24 मई, 2023
androidx.viewpager2:viewpager2:1.1.0-beta02 रिलीज़ हो गया है. 1.1.0-beta02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
FragmentTransactionCallbackमें फ़्रैगमेंट की स्थिति सेव करने वाले कॉलबैक जोड़े गए. (I45b90)ViewPager2अब एपीआई के पुराने वर्शन (< 30) केWindowInsetsडिस्पैच की गड़बड़ी को ठीक नहीं करता, क्योंकि यह ठीक करने की प्रोसेसViewPager2के सिबलिंग के लिए नुकसानदेह हो सकती है. यह समस्या ठीक करने का तरीका अब भी उपलब्ध है. हालांकि, अब इसे ऑप्ट-इन करना ज़रूरी है, ताकि डेवलपर हर मामले के हिसाब से फ़ैसला ले सकें.WindowInsetsApplier.install(viewPager2))को कॉल करके, समस्या को ठीक करने की सुविधा चालू करें. (Ic9a85)
गड़बड़ियां ठीक की गईं
RecyclerViewके नए वर्शन के साथ काम करने से जुड़ी समस्याएं ठीक करें.ViewPager2के इस वर्शन का इस्तेमाल करने वाले लोगों को कम से कमRecyclerView1.3.1-rc01 पर अपडेट करना चाहिए.
वर्शन 1.1.0-beta01
4 अगस्त, 2021
androidx.viewpager2:viewpager2:1.1.0-beta01 रिलीज़ हो गया है. 1.1.0-beta01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करना (Id6471, b/165307851, b/165300826)
सभी androidx लाइब्रेरी के लिए, Java 8 को टारगेट करने की सुविधा जोड़ी गई है (2923f39)
गड़बड़ियां ठीक की गईं
- विंडो इनसेट का तय किया गया डिस्पैच, अब सभी पेजों को एक जैसे इनसेट मिलते हैं. (I47fef)
वर्शन 1.1.0-alpha01
1 अप्रैल, 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01 रिलीज़ हो गया है. 1.1.0-alpha01 वर्शन में ये कमिट शामिल हैं.
इस रिलीज़ में, RecyclerView 1.2.0-alpha02 में बदलाव किया गया है. इसमें CollectionInfo और CollectionItemInfo को पॉप्युलेट किया गया है, जो RecyclerView अब डिफ़ॉल्ट रूप से उपलब्ध नहीं कराता. RecyclerView 1.2.0-alpha02 पर अपडेट करते समय, ViewPager2 को भी अपडेट करें, ताकि सुलभता से जुड़ी समस्याएं न आएं.
नई सुविधाएं
FragmentStateAdapterमें होने वाले फ़्रैगमेंट लाइफ़साइकल में होने वाले बदलावों को सुनने के लिए,FragmentTransactionCallbackइंटरफ़ेस जोड़ा गया. (Ibda77)
गड़बड़ियां ठीक की गईं
FragmentManagerमें फ़्रैगमेंट जोड़ते समय, शुरुआती फ़्रैगमेंट मेन्यू दिखने से जुड़ीFragmentStateAdapterसमस्या को ठीक किया गया. (I9d2ff, b/144442240)
वर्शन 1.0.0
वर्शन 1.0.0
20 नवंबर, 2019
androidx.viewpager2:viewpager2:1.0.0 को 1.0.0-rc01 में किसी बदलाव के बिना रिलीज़ किया गया है. 1.0.0 वर्शन में ये बदलाव शामिल हैं.
1.0.0 के मुख्य फ़ीचर
- पिछले ViewPager को लागू करने के तरीके में किए गए सुधार:
- आरटीएल (दाईं से बाईं ओर) लेआउट के साथ काम करना
- वर्टिकल ओरिएंटेशन के लिए सहायता
- भरोसेमंद
Fragmentसहायता (इसमें,Fragmentकलेक्शन में किए गए बदलावों को मैनेज करना भी शामिल है) - डेटासेट में बदलाव करने के लिए ऐनिमेशन (इसमें
DiffUtilसहायता भी शामिल है)
ViewPagerके पिछले वर्शन से आसानी से माइग्रेट किया जा सकता है. जहां भी हो सके, एपीआई की सुविधाएं एक जैसी होनी चाहिए. डेटा को दूसरी जगह भेजने से जुड़ी गाइड और सैंपल ऐप्लिकेशन देखें.
फ़्रैगमेंट के बीच स्वाइप करने के लिए, ViewPager2 का इस्तेमाल करने से जुड़ी गाइड देखें.
वर्शन 1.0.0-rc01
23 अक्टूबर, 2019
androidx.viewpager2:viewpager2:1.0.0-rc01 रिलीज़ हुई है. इसमें 1.0.0-beta05 से कोई बदलाव नहीं किया गया है. 1.0.0-rc01 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.0.0-beta05
9 अक्टूबर, 2019
androidx.viewpager2:viewpager2:1.0.0-beta05 रिलीज़ हो गया है. 1.0.0-beta05 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऑफ़-स्क्रीन पेज पर मौजूद
requestFocusकी वजह से पेज बदलने की समस्या को ठीक किया गया. अब यह व्यवहार, ओरिजनल ViewPager जैसा ही है. (b/140656866) - पेज बदलने के बाद, ऑफ़-स्क्रीन पेज पर बचे हुए
focusके लिए ठीक किया गया. पेज बदलने पर, फ़ोकस हट जाता है. (b/140656866) - पेज बदलने पर,
Fragmentलेन-देन रोकने / फिर से शुरू करने के क्रम को ठीक किया गया. अब हम नए प्रॉडक्ट को फिर से शुरू करने से पहले, पुराने प्राइमरी प्रॉडक्ट को हमेशा रोक देते हैं. (b/139489059) canScrollHorizontally(int)औरcanScrollVertically(int)के लिए सुधार - अब ये बताते हैं कि ViewPager2, दी गई दिशा में स्क्रोल कर सकता है या नहीं. (b/141848404)- ViewPager2 के साथ बेहतर तरीके से काम करने के लिए, SwipeRefreshLayout में मौजूद एक समस्या को ठीक किया गया.
वर्शन 1.0.0-beta04
5 सितंबर, 2019
androidx.viewpager2:viewpager2:1.0.0-beta04 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
Fragmentबैक स्टैक से जुड़ीFragmentStateAdapterएज-केस समस्या को ठीक किया गया. (b/139095195)EditTextएट्रिब्यूट के कुछ कॉन्फ़िगरेशन की वजह से, टाइप करने/फ़ोकस करने पर स्क्रोल/पेज जंप होने की समस्या को ठीक किया गया. (b/138044582, b/139432498)ItemDecorationइंस्टेंस से जुड़ी समस्या को ठीक किया गया. साथ ही, ओवरस्क्रोल इंडिकेटर की पोज़िशनिंग से जुड़ी समस्या को हल करने का तरीका भी बताया गया है. (b/139012032)ViewPager2के साथ बेहतर तरीके से काम करने के लिए, अन्य कॉम्पोनेंट में कई समस्याएं ठीक की गई हैं: RecyclerView, NestedScrollView, और Navigation.
वर्शन 1.0.0-beta03
7 अगस्त, 2019
androidx.viewpager2:viewpager2:1.0.0-beta03 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
- कुछ समय के लिए
Fragmentकी स्थिति में होने वालीFragmentStateAdapterकी समस्या को ठीक किया गया है. b/134246546 - स्मूद-स्क्रोल के दौरान, डेटा-सेट में बदलाव होने पर,
currentItemऔरscrollStateकी समस्याओं को ठीक किया गया है (एज केस बताए गए हैं). b/137642608 - डेटा सेट में बदलाव करने पर होने वाले ऐनिमेशन के साथ
PageTransformer(इसमेंMarginPageTransformerभी शामिल है) ऐनिमेशन के काम न करने की समस्या को ठीक किया गया. b/134658996 - बड़े डेटासेट में स्मूद-स्क्रोल ऐनिमेशन की समस्या को ठीक किया गया (
floatइंटिजर वैल्यू की सीमा). b/134858960
वर्शन 1.0.0-beta02
19 जुलाई, 2019
androidx.viewpager2:viewpager2:1.0.0-beta02 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
1.0.0-beta01में अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटा दिया गया है. (b/137782951)
वर्शन 1.0.0-beta01
17 जुलाई, 2019
androidx.viewpager2:viewpager2:1.0.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- डेटा-सेट को स्क्रोल और अपडेट करते समय
ViewPager2.updateCurrentItemके क्रैश की समस्या ठीक की गई ViewPager2.isLayoutRtlसे जुड़ेNullPointerExceptionक्रैश की समस्या को ठीक करनाTOUCH_SLOP_PAGINGअब डिफ़ॉल्ट टच स्लोप है- खाली अडैप्टर के लिए
OnPageChangeCallbackइवेंट ठीक किए गए (ViewPager1के साथ समानता के लिए,-1के बजाय पेज0)
आम समस्याएं
- हम अब भी बाकी समस्याओं को ठीक करने की कोशिश कर रहे हैं. इसके बाद ही, हम स्टेबल वर्शन पर अपग्रेड करेंगे
वर्शन 1.0.0-alpha06
2 जुलाई, 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई को फ़्रीज़ करने और बीटा वर्शन पर जाने से पहले, यह हमारा आखिरी अल्फा वर्शन है - कृपया हमें एपीआई के बारे में सुझाव/राय दें या शिकायत करें.
नई सुविधाएं
- बेहतर सुलभता के लिए बुनियादी बातें:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNवगैरह.
एपीआई में किए गए बदलाव
FragmentStateAdapter: नॉन-प्राइमरी आइटमFragmentकी संख्याSTARTEDतक सीमित है और उनकीmenuVisibilityवैल्यू को 'गलत' पर सेट किया गया है.PageTransformer,MarginPageTransformer,CompositePageTransformer:positionfixed के लिए दस्तावेज़.
गड़बड़ियां ठीक की गईं
currentItemडेटा-सेट में बदलाव करने / अडैप्टर में बदलाव करने के बाद.MarginPageTransformerमेंoffscreenPageLimitसे जुड़ी समस्या ठीक की गई.FakeDragमोड में, सुलभता से जुड़ी कार्रवाइयों के व्यवहार को ठीक किया गया.
वर्शन 1.0.0-alpha05
5 जून, 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
ItemDecoratorकोRecyclerViewके हिसाब से व्यवहार के साथ पेश किया गया.MarginPageTransformerको पेजों के बीच (पेज इनसेट के बाहर) स्पेस बनाने की सुविधा देने के लिए लॉन्च किया गया था.CompositePageTransformerको कईPageTransformerको जोड़ने की सुविधा देने के लिए लॉन्च किया गया था.
एपीआई में किए गए बदलाव
FragmentStateAdapter#getItemतरीके का नाम बदलकरFragmentStateAdapter#createFragmentकर दिया गया है - पहले के तरीके का नाम, गड़बड़ियों का सोर्स साबित हुआ है.OFFSCREEN_PAGE_LIMIT_DEFAULTकी वैल्यू को0से बदलकर-1कर दिया गया. अगरOFFSCREEN_PAGE_LIMIT_DEFAULTकंटेंट का इस्तेमाल किया गया है, तो क्लाइंट कोड में बदलाव करने की ज़रूरत नहीं है.
गड़बड़ियां ठीक की गईं
getCurrentItem()के व्यवहार को ठीक किया गया है, ताकिSCROLL_STATE_SETTLINGके विपरीत दिशा में खींचने पर, उसमें रुकावट न आए.FragmentStateAdapterक्लास लोडर से जुड़ी समस्याएं, जिन्हें "गतिविधियों को सेव न रखें" कॉन्टेक्स्ट में हल किया गया है.setOffscreenPageLimitदस्तावेज़ को बेहतर बनाया गया है.
वर्शन 1.0.0-alpha04
7 मई, 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
offscreenPageLimit: इससे व्यू की हैरारकी में रखे गए पेजView/Fragmentकी संख्या को बेहतर तरीके से कंट्रोल किया जा सकता है
एपीआई में हुए बदलाव
orientationऔरisUserScrollableएट्रिब्यूट अबSavedStateका हिस्सा नहीं हैंsaveStateऔरrestoreStateके तरीकेFragmentStateAdapterमें फ़ाइनल किए गएViewPager2.OrientationऔरViewPager2.ScrollStateएनोटेशन को गैर-सार्वजनिक किया गया
गड़बड़ियां ठीक की गईं
SavedState:Activityके खत्म होने / फिर से बनाए जाने पर, डेटा वापस लाने से जुड़ी समस्या ठीक की गईSavedState: अडैप्टर सेट होने तक वापस लाने में देरी होगीOnPageChangeCallback: कुछ खास मामलों में होने वाली गड़बड़ियां ठीक की गईं
वर्शन 1.0.0-alpha03
3 अप्रैल, 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- प्रोग्राम के हिसाब से ViewPager2 को स्क्रोल करने की सुविधा:
fakeDragBy(offsetPx).
एपीआई में हुए बदलाव
FragmentStateAdapterको अबLifecycleऑब्जेक्ट की ज़रूरत है. इसे होस्टFragmentActivityया होस्टFragmentसे पाने के लिए दो यूटिलिटी कंस्ट्रक्टर जोड़े गए हैं.
गड़बड़ियां ठीक की गईं
Fragmentसे जुड़ी कई समस्याएं ठीक की गईं:- डेटासेट को छोटा करते समय या स्क्रीन घुमाने के दौरान, डेटासेट के अपडेट मैनेज करना;
- रोटेशन के बाद काम के नहीं होने वाले फ़्रैगमेंट हटाना;
- हटाए गए आइटम की सेव की गई स्थिति को हटा सकता है.
PageChangeCallback: मार्जिन वाले पेजों के लिए, पेज ऑफ़सेट का हिसाब लगाने की प्रोसेस को ठीक किया गया.
वर्शन 1.0.0-alpha02
13 मार्च, 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए सभी कमिट की पूरी सूची यहां देखी जा सकती है.
नई सुविधाएं
- उपयोगकर्ता का इनपुट बंद करने की सुविधा (
setUserInputEnabled,isUserInputEnabled)
एपीआई में हुए बदलाव
- ViewPager2 क्लास का फ़ाइनल
गड़बड़ियां ठीक की गईं
FragmentStateAdapterस्थिरता से जुड़ी समस्याएं ठीक करना
वर्शन 1.0.0-alpha01
7 फ़रवरी, 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01 रिलीज़ हो गया है. यह ViewPager2 की पहली रिलीज़ है.
नई सुविधाएं
- इसके पिछले वर्शन
android.support.v4.view.ViewPager(VP1) की तुलना में:- दाएं से बाएं (आरटीएल) लेआउट के साथ काम करना
- वर्टिकल ओरिएंटेशन के लिए सहायता
notifyDataSetChangedपूरी तरह से काम कर रहा है (VP1 गड़बड़ी का समाधान किया गया)
एपीआई में किए गए बदलाव
FragmentStateAdapter,FragmentStatePagerAdapterकी जगह लेता हैRecyclerView.Adapter,PagerAdapterकी जगह लेता हैregisterOnPageChangeCallback,addPageChangeListenerकी जगह लेता है
आम तौर पर होने वाली समस्याएं
- क्लिपटॉपैडिंग
- no fakeDrag
- जावाडॉक
- स्क्रीन की दिशा के साथ-साथ नेस्ट की हुई स्क्रोलिंग
- ऑफ़स्क्रीन विज्ञापनों की सीमा कंट्रोल करने की सुविधा नहीं है
- TabLayout के साथ बेहतर तरीके से इंटिग्रेट करने की ज़रूरत है
- कोई पेजविड्थ सेटर नहीं (100%/100% बलपूर्वक)
- पेज ट्रांसफ़ॉर्मर: हार्डवेयर/सॉफ़्टवेयर लेयर का विकल्प नहीं; ड्रॉइंग का क्रम उलटा नहीं किया जा सकता
- मौजूदा पेज से पहले कोई पेज डालते समय, मौजूदा आइटम को दिखते रखना
- कीबोर्ड नेविगेशन को बेहतर बनाने की ज़रूरत है
FragmentStateAdapterऐप्लिकेशन को क्रैश या फ़्रीज़ होने से बचाने और परफ़ॉर्मेंस को बेहतर बनाने के लिए, जल्द ही सुधार किए जाएंगे