android viewpager 切换动画

来源:互联网 发布:员工数据保密协议 编辑:程序博客网 时间:2024/05/16 15:52

android viewpager 切换动画


1.默认效果

public class CubeTransformer implements PageTransformer {


private static float MIN_SCALE = 0.85f;
private static float MIN_ALPHA = 0.5f;



@SuppressLint("NewApi")
@Override
public void transformPage(View arg0, float arg1) {
int pageWidth=arg0.getWidth();
int pageHeight=arg0.getHeight();
if(arg1<-1){ 
arg0.setAlpha(0);
}else if(arg1<=1){ 
float scaleFactor=Math.max(MIN_SCALE,1-Math.abs(arg1));
float vertMargin=pageHeight*(1 - scaleFactor)/2;
float horzMargin=pageWidth*(1 - scaleFactor)/2;
if(arg1<0){
arg0.setTranslationX(horzMargin-vertMargin/2);
}else{
arg0.setTranslationX(-horzMargin + vertMargin/2);
}
arg0.setScaleX(scaleFactor);
arg0.setScaleY(scaleFactor);
arg0.setAlpha(MIN_ALPHA+(scaleFactor - MIN_SCALE)/(1 - MIN_SCALE)*(1 - MIN_ALPHA));
}else{ 
arg0.setAlpha(0);
}


}


}


2.代码中使用

viewpager.setPageTransformer(true, new CubeTransformer());


3.使用jar包 nineoldandroids-2.4.0.jar

public class RotateDownPageTransformer implements PageTransformer {


private static final float ROT_MAX = 20.0f;
private float mRot;


public void transformPage(View view, float position) {
if(position<-1){
ViewHelper.setRotation(view, 0);
}else if(position<=1){//a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0
if(position<0){
mRot=(ROT_MAX * position);
ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
ViewHelper.setPivotY(view, view.getMeasuredHeight());
ViewHelper.setRotation(view, mRot);
}else{
mRot=(ROT_MAX*position);
ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
ViewHelper.setPivotY(view, view.getMeasuredHeight());
ViewHelper.setRotation(view, mRot);
}
}else{
ViewHelper.setRotation(view, 0);
}
}
}


代码中使用

viewpager.setPageTransformer(true, new RotateDownPageTransformer());


jar包下载地址:http://download.csdn.net/detail/weixin_37730482/9842531

0 0