我的github:https://github.com/fcott19/XformerRecyclerView
最近有个小伙伴需要用到类似与画栏的效果,像下面这样
于是突发奇想 ,写了这个XformerRecyclerView,可以根据自己的需求自定义任何形式的转场动画,比如这样
或这样
想要自定义这些动画很简单,只需要如下
recyclerView.setPageTransformer(new PageTransformer() {
@Override
public void transformPage(View childView, float intervalPercent, float percent) {
}
});
在transformPage方法中对childView做修改即可。
参数:
childView:recycleview中的item
percent:位置系数,当childView在屏幕正中时,percent为0。当childView的中心在屏幕左边界时,percent为-1。当childView的中心在屏幕右边界时,percent为1。
intervalPercent:相邻childView之间相差的percent
据此,我们看一下第一张图片中,PageTransformer的具体实现。
@Override
public void transformPage(View page,final float intervalPercent, float percent) {
float scaleFactor = (1 - scaleSize) * (1 - Math.abs(percent)) + scaleSize;
if (scaleFactor < scaleSize) {
scaleFactor = scaleSize;
}
page.setScaleX(scaleFactor);
page.setScaleY(scaleFactor);
page.setAlpha(minAlpha + (scaleFactor - scaleSize)
/ (1 - scaleSize) * (1 - minAlpha));
}
很简单,根据percent计算childview的缩放系数,和透明系数。然后设置进去就可以了