首先甚带,本文主要就是在使用TabLayout與ViewPager完成Tab導(dǎo)航掂咒,進(jìn)一步學(xué)習(xí)下TabLayout挡毅。
一民珍、TabLayout的關(guān)鍵API
1.setupWithViewpager(ViewPager viewPager)
該方法完成了TabLayout與ViewPager的關(guān)聯(lián),該方法的源碼也是非常清晰易讀(如下)放航。
該方法主要做了幾件事:
(1)獲取ViewPager的adapter,該adapter可以設(shè)置與ViewPager同步的tab標(biāo)題烈拒。
(2)利用ViewPager的回調(diào)接口,采用的是TabLayoutOnPageChangeListener,處理當(dāng)viewpager滑動(dòng)改變時(shí)广鳍,TabLayout中的tab也與之同步改變荆几,
(3)TabLayout的回調(diào)接口,這個(gè)回調(diào)接口中一個(gè)重要的參數(shù)就是viewpager,這樣當(dāng)滑動(dòng)選擇或點(diǎn)擊選中tab時(shí)赊时,ViewPager也能同步對(duì)應(yīng)變化吨铸。
(4)根據(jù)當(dāng)前的viewpager選中項(xiàng),來(lái)設(shè)置TabLayout的當(dāng)前選中tab祖秒。
二焊傅、TabLayout的內(nèi)部類:Tab、TabView狈涮、SlidingTabStrip
1、Tab類是對(duì)Tab最基礎(chǔ)的抽象鸭栖,最基礎(chǔ)的當(dāng)然是設(shè)置Tab的標(biāo)題歌馍,也支持設(shè)置Tab的圖標(biāo)(setIcon方法)。
2晕鹊、TabView類是對(duì)Tab類進(jìn)行一個(gè)二次封裝松却。
3、SlidingTabStrip類主要處理指示線的溅话,即Tab的下劃線(隨著Tab的滑動(dòng)而滑動(dòng))晓锻。
三、TabLayout的Tab滾動(dòng)
1飞几、從源碼中看到主要就是在animateToTab(int newPosition)方法中完成的砚哆。
Tab的滾動(dòng)主要就是通過(guò)ValueAnimatorCompat(屬性動(dòng)畫,做了兼容處理)屑墨,通過(guò)屬性動(dòng)畫改變x軸的值躁锁,然后通過(guò)scrollTo方法實(shí)現(xiàn)滾動(dòng)(TabLayout繼承自HorizontalScrollView)。
最后卵史,文章寫得還是很簡(jiǎn)單战转,自己要堅(jiān)持寫,爭(zhēng)取寫得更好以躯。