/**
* 关于position:屏幕外右边的一屏的空间的中心点位置为1,所以屏内最边缘的item的position的绝对值一定是约等于0.5的
*/
public class MoonShapeTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
float absPosition = Math.abs(position);
float alpha = 1 - absPosition * 1.6f;
view.setAlpha(alpha);//加透明度
view.setScaleX(1 - absPosition * 1.6f);//理论上倍数不要大于2就能在屏边缘显示一个很小的
view.setScaleY(1 - absPosition * 1.6f);
float width = view.getWidth();
float height = view.getHeight();
Log.e("xxx", "width:" + view.getWidth() + "height" + view.getHeight());
//不加extraX和extraY时是线性的是个三角形。加了看来起来是弧形
float extraX = 0f;
float extraY = 0f;
if (absPosition > 0.0 && absPosition <= 0.5) {
extraX = width * absPosition * (absPosition - 0.5f) * 1.5f;
extraY = height * (position < 0 ? 1 : -1) * absPosition * (absPosition - 0.5f) * 1.5f;
}
view.setTranslationY(height * position + extraY);
view.setTranslationX(width * -position + width * absPosition + extraX - width / 5.5f);
}
}
月亮形PageTransformer,重点是了解position含义以及调整显示的方法
最新推荐文章于 2024-04-19 09:33:11 发布