新版知乎客戶端發(fā)現(xiàn)頁面上有一個淡入淡出的banner
最初的想法就是拿viewpager實(shí)現(xiàn),重寫protected void onPageScrolled(int position, float offset, int offsetPixels)方法,但是應(yīng)該我得拿到所有page,去改變兩個page的不同狀態(tài)。轉(zhuǎn)念一想,ViewPager有一個PageTransformer,不如拿這個去實(shí)現(xiàn)

QQ截圖20161128125301.png
position返回的是front-and-center,可以理解為0是中心01是右邊的page;-10是左邊的page
大概的代碼會是
左邊的page得疊加他的位置,讓他看起來會向左移動, 右邊的page應(yīng)該先移動到位,然后阻止他的移動,最后改變兩個page的透明度。
int pageWidth = view.getWidth();
if (position <= 1) {
if (position < 0) {
view.setTranslationX( - pageWidth * position);
} else {
view.setTranslationX(pageWidth);
view.setTranslationX( - pageWidth * position);
}
float alpha = Math.max(0, 1 - Math.abs(position));
view.setAlpha(alpha);
} else {
view.setAlpha(0f);
}
這就完成了viewpager的淡入淡出,感覺比重寫onPageScrolled方便