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
के इस वर्शन का इस्तेमाल करने वाले लोगों को कम से कमRecyclerView
1.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
:position
fixed के लिए दस्तावेज़.
गड़बड़ियां ठीक की गईं
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
ऐप्लिकेशन को क्रैश या फ़्रीज़ होने से बचाने और परफ़ॉर्मेंस को बेहतर बनाने के लिए, जल्द ही सुधार किए जाएंगे