为了账号安全,请及时绑定邮箱和手机立即绑定

求解答鸿神的旋转中心是怎么定的

没看懂什么意思,为啥旋转中心在变化

正在回答

1 回答

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());
       
}

    }

}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解答鸿神的旋转中心是怎么定的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信