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 को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 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 और इसके बाद के वर्शन में, अब ये डिफ़ॉल्ट रूप से पॉप्युलेट नहीं होते हैं.
  • FragmentTransactionCallback में होने वाले फ़्रैगमेंट लाइफ़साइकल में बदलावों को सुनने के लिए, FragmentTransactionCallback इंटरफ़ेस जोड़ा गया.FragmentStateAdapter
  • FragmentStateAdapter में फ़्रैगमेंट जोड़ते समय, शुरुआती फ़्रैगमेंट मेन्यू के दिखने से जुड़ी FragmentStateAdapter समस्या ठीक कर दी गई है.FragmentManager
  • विंडो इंसर्ट के डिसपैच की समस्या ठीक की गई: अब सभी पेजों को एक जैसे इंसर्ट मिलते हैं. WindowInsets को एपीआई के पुराने वर्शन (< API 30) पर इस तरह से भेजा जाता है कि इनसेट, सिबलिंग व्यू के लिए उपलब्ध नहीं हो पाते. इसलिए, अगर आपको < 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 को भी अपडेट करें, ताकि ऐक्सेसिबिलिटी से जुड़ी समस्याएं न हों.

नई सुविधाएं

  • FragmentTransactionCallback में होने वाले फ़्रैगमेंट लाइफ़साइकल में बदलावों को सुनने के लिए, FragmentTransactionCallback इंटरफ़ेस जोड़ा गया.FragmentStateAdapter (Ibda77)

गड़बड़ियां ठीक की गईं

  • FragmentStateAdapter में फ़्रैगमेंट जोड़ते समय, शुरुआती फ़्रैगमेंट मेन्यू के दिखने से जुड़ी FragmentStateAdapter समस्या ठीक कर दी गई है.FragmentManager (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 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटा दिया गया है. यह डिपेंडेंसी 1.0.0-beta01 में जोड़ी गई थी. (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: नॉन-प्राइमरी-आइटम Fragments की संख्या STARTED पर सेट है. साथ ही, उनके menuVisibility को false पर सेट किया गया है.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: position तय किए गए दस्तावेज़.

गड़बड़ियां ठीक की गईं

  • 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 से बदल दिया गया

मौजूदा समस्याएं

  • clipToPadding
  • no fakeDrag
  • JavaDoc
  • ओरिएंटेशन के हिसाब से नेस्ट की गई पैरलल स्क्रोलिंग
  • स्क्रीन पर न दिखने वाले ऑब्जेक्ट के लिए, सीमा कंट्रोल करने की सुविधा नहीं है
  • को बेहतर TabLayout इंटिग्रेशन की ज़रूरत है
  • no pageWidth setter (forced 100%/100%)
  • पेज ट्रांसफ़ॉर्मर: हार्डवेयर/सॉफ़्टवेयर लेयर चुनने का विकल्प नहीं है; ड्राइंग के क्रम को उलटने का विकल्प नहीं है
  • मौजूदा पेज से पहले कोई पेज डालने पर, मौजूदा आइटम को दिखता रहे
  • कीबोर्ड नेविगेशन में सुधार की ज़रूरत है
  • FragmentStateAdapter स्थिरता / परफ़ॉर्मेंस में सुधार किए जा रहे हैं