添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

public class RotateTransformer implements ViewPager.PageTransformer {
//最大旋转角度
public static final float MAX_ROTATE = 15;

//page:左右两个图片
//position<0时,page表示左页
//position>0时,page表示右页
//position:左右两页的滑动比例
//1)左页滑出,右页滑入:
//左页的position: ( 0 -> -1 )
//右页的position:( 1 -> 0 )
//2)右页滑出,左页滑入:
//左页的position: ( -1 -> 0 )
//右页的position:( 0 -> 1 )
@Override
public void transformPage(View page , float position) {

//旋转中心点:当前页面的左上角顶点
//旋转角度正值方向:顺时针
//左页移出屏幕时
if (position < - 1 ) { // [-Infinity,-1)
//左页逆时针旋转
//旋转中心:左页的右下角顶点
//旋转角度:逆时针旋转到最大值
page.setRotation(- MAX_ROTATE ) ;
page.setPivotX(page.getWidth()) ;
page.setPivotY(page.getHeight()) ;
}
//左右页面都在在屏幕内时
else if (position <= 1 ) { // [-1,1]
//左边页面逆时针旋转
//旋转中心点:底边中心点->右下角顶点
//旋转角度:逆时针旋转
if(position< 0 ){
//动态调整旋转中心点
float pivotX = 0.5f * page.getWidth() + 0.5f * page.getWidth() * Math. abs (position) ;
float pivotY = page.getHeight() ;
page.setPivotX(pivotX) ;
page.setPivotY(pivotY) ;
//动态调整旋转角度
float roateAngl = MAX_ROTATE * position ;
page.setRotation(roateAngl) ;
}
//左边页面逆时针旋转
//旋转中心点:底边中心点->左下角顶点
//旋转角度:顺时针旋转
else
{
//动态调整旋转中心点
float pivotX = 0.5f * page.getWidth() * ( 1 -Math. abs (position)) ;
float pivotY = page.getHeight() ;
page.setPivotX(pivotX) ;
page.setPivotY(pivotY) ;
//动态调整旋转角度
float roateAngl = MAX_ROTATE * position ;
page.setRotation(roateAngl) ;
}
}
//右页移出屏幕时
else { // (1,+Infinity]
//右页顺时针旋转
//旋转中心点:左下角顶点
//旋转角度:顺时针旋转到最大值
page.setRotation( MAX_ROTATE ) ;
page.setPivotX( 0 ) ;
page.setPivotY(page.getHeight()) ;
}

}

}