带有一点缩放效果的viewpager轮播图

项目中UI给了这么一个效果,如下:

按说这种效果使用Gallery是很容易的,但是呢Gallery一下子可以滑动好远,操作效果不是我们要的,项目经理要的就是Viewpager的操作感觉,但又要上面的这种UI效果。网上没有找到现成的,于是自己做。关键代码如下:

//关键类

 

public class CardTransformer implements ViewPager.PageTransformer {
    final float SCALE_MAX = 0.95f;
    final float ALPHA_MAX = 0.7f;

    @Override
    public void transformPage(View page, float position) {
        float scale = (position < 0)
                ? ((1 - SCALE_MAX) * position + 1)
                : ((SCALE_MAX - 1) * position + 1);
        float alpha = (position < 0)
                ? ((1 - ALPHA_MAX) * position + 1)
                : ((ALPHA_MAX - 1) * position + 1);
        //为了滑动过程中,page间距不变,这里做了处理
        if (position < 0) {
            ViewCompat.setPivotX(page, page.getWidth());
            ViewCompat.setPivotY(page, page.getHeight() / 2);
        } else {
            ViewCompat.setPivotX(page, 0);
            ViewCompat.setPivotY(page, page.getHeight() / 2);
        }
        ViewCompat.setScaleX(page, scale);
        ViewCompat.setScaleY(page, scale);
        ViewCompat.setAlpha(page, Math.abs(alpha));
    }

}
引用方式:

adapter = new MyAdapter();
viewPager.setAdapter(adapter);

viewPager.setOffscreenPageLimit(2);//预加载2个
DisplayMetrics dm = getResources().getDisplayMetrics();
viewPager.setPageMargin((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, dm));
viewPager.setClipChildren(false);
viewPager.setPageTransformer(true, new CardTransformer());

viewPager.addOnPageChangeListener(this);

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值