版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014476720/article/details/82683763
效果图:
实现这个效果需要先处理布局文件
处理如下:
ViewPager控件的父布局需要设置 android:clipChildren="false"
这个属性的解释是Defines whether a child is limited to draw inside of its bounds or not , 其大概意思是定义的子类是否被限制在其范围内。
在父布局设置了属性之后,还要在ViewPager布局设置左右间隙 marginLeft/marginRight
以上就是布局设置了
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
下面设置代码
这个类是设置缩放大小的
/**
* 设置中间放大两边缩小
*/
public class ScalePageTransformer implements ViewPager.PageTransformer {
public static final float MAX_SCALE = 1.0f;
public static final float MIN_SCALE = 0.9f;
private boolean isFill;
public ScalePageTransformer(boolean isFill) {
this.isFill = isFill;
}
@Override
public void transformPage(View page, float position) {
if (position < -1) {
position = -1;
} else if (position > 1) {
position = 1;
}
float tempScale = position < 0 ? 1 + position : 1 - position;
float slope = (MAX_SCALE - MIN_SCALE) / 1;
float scaleValue = MIN_SCALE + tempScale * slope;
if (isFill) {
page.setScaleX(scaleValue);
}
page.setScaleY(scaleValue);
}
}
因为ViewPager自带了一个setPageTransformer用于设置切换动画,所以可以利用这个方法设置滑动时的缩放大小了
第一个参数的解释是:如果所提供的页面转换器需要从最后一个页面到第一个页面而不是第一个到最后一个页面视图,则为true。 我表示理解不了,无论true还是false好像都感觉不到什么变化
mViewPage.setPageTransformer(true, new ScalePageTransformer(true));