月亮形PageTransformer,重点是了解position含义以及调整显示的方法

/**
 * 关于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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值