Android-ViewPager2

ViewPager2

簡(jiǎn)單說就是將RecycleView再封裝了一遍墅冷,然后協(xié)同F(xiàn)ragmentStateAdapter將RecycleView的每個(gè)Item與Fragment綁定终议。

特性

支持從左到右祷舀,或者從上到下布局

由于適配基于的是RecyclerView.Adapter帜慢,所以內(nèi)存優(yōu)化也直接采用RecyclerView.Adapter的內(nèi)存優(yōu)化機(jī)制吻谋,相對(duì)于viewpager晒衩,內(nèi)存優(yōu)化更高效合理,且notifyDataSetChanged也更高效了欧引。由于不用開發(fā)者自己實(shí)現(xiàn)內(nèi)存和notifyDataSetChanged,也更簡(jiǎn)便了恳谎。?

相比ViewPager芝此,ViewPager2修復(fù)了不能關(guān)閉預(yù)加載和更新Adapter不生效的痛點(diǎn)。

目前ViewPager2對(duì)Fragment支持只能用FragmentStateAdapter因痛,F(xiàn)ragmentStateAdapter在遇到預(yù)加載時(shí)婚苹,只會(huì)創(chuàng)建Fragment對(duì)象,不會(huì)把Fragment真正的加入到布局中鸵膏,所以自帶懶加載效果膊升。

FragmentStateAdapter不會(huì)一直保留Fragment實(shí)例,回收的ItemView也會(huì)移除Fragment谭企,所以得做好Fragment重建后恢復(fù)數(shù)據(jù)的準(zhǔn)備廓译。

FragmentStateAdapter在遇到offscreenPageLimit>0時(shí)评肆,處理離屏Fragment和可見Fragment沒有什么區(qū)別,所以無法通過setUserVisibleHint判斷顯示與否非区。


基本方法

部分核心方法使用參照RecycleView和ViewPager瓜挽,如設(shè)置分割線addItemDecoration(),設(shè)置當(dāng)前項(xiàng)setCurrentItem()等征绸。

setAdapter() 設(shè)置適配器

setOrientation() 設(shè)置布局方向

setCurrentItem() 設(shè)置當(dāng)前Item下標(biāo)

beginFakeDrag() 開始模擬拖拽

fakeDragBy() 模擬拖拽中

endFakeDrag() 模擬拖拽結(jié)束

setUserInputEnabled() 設(shè)置是否允許用戶輸入/觸摸

setOffscreenPageLimit()設(shè)置屏幕外加載頁面數(shù)量

registerOnPageChangeCallback() 注冊(cè)頁面改變回調(diào)

setPageTransformer()?設(shè)置頁面滑動(dòng)時(shí)的變換效果

久橙。。管怠。還有好多淆衷。使用的時(shí)候大家可以具體看一下。


offscreenPageLimit()

不設(shè)置它則不會(huì)預(yù)加載排惨,一旦設(shè)置了吭敢,由于limit必須>0,所以會(huì)進(jìn)行預(yù)加載limit個(gè)頁面

limit必須>0,否則拋出異常

viewpager2的預(yù)加載在加載時(shí)已經(jīng)準(zhǔn)備好了View布局暮芭,但是沒有加載到parent視圖上鹿驼,所以自帶懶加載效果。?而viewpager加載的時(shí)候View已經(jīng)添加到parent上辕宏。所以會(huì)走生命周期的方法畜晰。



初始化方法可以看出,viewpager2支持的一些特性以及為什么瑞筐。

有沒有很熟悉凄鼻,就是RecycleView? 重新封裝的使用


RecyclerViewImpl

基于RecyclerView的二次封裝,對(duì)觸摸事件聚假,初始化等進(jìn)行封裝块蚌。

LinearLayoutManagerImpl

使用LinearLayoutManager,所以擁有LinearLayoutManager的特性膘格,可以垂直或者水平峭范。也就引申出為什么后面可以設(shè)置水平或者垂直滑動(dòng)


PageTransformerAdapter

用于監(jiān)聽pager的改變。



基于RecyclerView.Adapter實(shí)現(xiàn)

類似recycleView的使用瘪贱。

基于FragmentStateAdapter實(shí)現(xiàn)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纱控,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子菜秦,更是在濱河造成了極大的恐慌甜害,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件球昨,死亡現(xiàn)場(chǎng)離奇詭異尔店,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門闹获,熙熙樓的掌柜王于貴愁眉苦臉地迎上來期犬,“玉大人,你說我怎么就攤上這事避诽」昊ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵沙庐,是天一觀的道長(zhǎng)鲤妥。 經(jīng)常有香客問我,道長(zhǎng)拱雏,這世上最難降的妖魔是什么棉安? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮铸抑,結(jié)果婚禮上贡耽,老公的妹妹穿的比我還像新娘。我一直安慰自己鹊汛,他們只是感情好蒲赂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刁憋,像睡著了一般滥嘴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上至耻,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天若皱,我揣著相機(jī)與錄音,去河邊找鬼尘颓。 笑死走触,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疤苹。 我是一名探鬼主播互广,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痰催!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迎瞧,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤夸溶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后凶硅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缝裁,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捷绑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韩脑。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粹污,靈堂內(nèi)的尸體忽然破棺而出段多,到底是詐尸還是另有隱情,我是刑警寧澤壮吩,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布进苍,位于F島的核電站,受9級(jí)特大地震影響鸭叙,放射性物質(zhì)發(fā)生泄漏觉啊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一沈贝、第九天 我趴在偏房一處隱蔽的房頂上張望杠人。 院中可真熱鬧,春花似錦宋下、人聲如沸嗡善。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滤奈。三九已至,卻和暖如春撩满,著一層夾襖步出監(jiān)牢的瞬間蜒程,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工伺帘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昭躺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓伪嫁,卻偏偏與公主長(zhǎng)得像领炫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子张咳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一帝洪、ViewPager2的變化 ViewPager2是用來替換ViewPager的,ViewPager2是fina...
    zzq_nene閱讀 7,837評(píng)論 2 3
  • 一脚猾、ViewPager2介紹 1 簡(jiǎn)介 谷歌為什么要出這個(gè)組件呢葱峡?官方是這么說的: 2 具體改動(dòng): New fea...
    XQSY閱讀 18,366評(píng)論 1 25
  • 前言 第一篇文章Fragment 與 FragmentPagerAdapter 我應(yīng)該算是詳細(xì)敘述了Fragmen...
    真心czx閱讀 30,447評(píng)論 6 24
  • 參考:http://www.reibang.com/p/e754cbd2d329 1.簡(jiǎn)介。 今天我們介紹一下豬...
    薛之濤閱讀 7,360評(píng)論 1 4
  • 一龙助、ViewPager2介紹 1 簡(jiǎn)介 谷歌為什么要出這個(gè)組件呢砰奕?官方是這么說的: 2 具體改動(dòng): New fea...
    XQSY閱讀 44,301評(píng)論 12 47