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