Android 特殊viewPager

point1

设置viewPager的clipChildPadding为false,并设置vp的padding;

1
2
3
4
5
6
<com.example.kb_jay.kjcusvp.KJCusVp
android:id="@+id/vp_test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="40dp"
android:clipToPadding="false" />

point2

自定义PageTransformer;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static class KJTransformer implements PageTransformer {

private static final float SCALE = 0.8f;//表示放缩的倍数
private static final int TRANS=50;//表示平移的px数

@Override
public void transformPage(@NonNull View view, float position) {
float temp=Math.abs(position);
float scale = (1-(1- SCALE)*temp);
view.setScaleX(scale);
view.setScaleY(scale);

view.setTranslationX(-TRANS*position);

}
}

其中

  • view表示itemView
  • position表示itemView的位置(-1,0,1)

point3

设置viewPager的切换动画

1
mVp.setPageTransformer(false,new KJCusVp.KJTransformer());

源码地址:https://github.com/kbjay/KJCustomVp