我想创建ViewPager,它在滑动时围绕其getWidth()和getHeight()轴旋转.我尝试过,但是所有这些转换只有在具有各种效果的垂直和水平情况下才可行.
有什么方法或提示可以开发这种ViewPager吗?
编辑-解释哪种旋转
轴-getWidth,getHeight应该是枢轴点,一旦我滑动它,它就会旋转,对于下一页,它应该从(0,getHeight)轴旋转.
为简化起见,请考虑以下简单情况-
>有一个有四个部分的圆
>当前仅显示1个部分,其余3个在屏幕外
>从右向左滑动后,ViewPager应该从第1页旋转到第2页.
>如果我从左向右滑动,ViewPager应该从第1页旋转到第4页.
>每次退出页面和进入页面都应从该圆圈的中心旋转.
>圆的中心位于第一页的getWidth,getHeight.因此,对于下一页,它将始终为0,getHeight作为轴;对于上一页,将始终为getWidth,对于轴始终为0.
解决方法:
更新
据我所读,您想要这样的过渡.实现了一个ViewPager.PageTransformer,如下所示.
这是ViewPager.PageTransformer类:
public class RotationCircleTransformer implements ViewPager.PageTransformer {
public RotationCircleTransformer() {
}
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
view.setPivotX((float) pageWidth);
view.setPivotY((float) pageHeight);
if (position < -1) { //[-infinity,1)
//off to the left by a lot
view.setRotation(0);
view.setAlpha(0);
} else if (position <= 1) { //[-1,1]
view.setTranslationX((-position) * pageWidth); //shift the view over
view.setRotation(position * (90)); //rotate it