自定义垂直水平自动滚动Viewpager(折叠滚动广告特效)
转载请注明出处:http://www.cnblogs.com/bxfx111/articles/7992764.html
OrientedAutoViewPager
自定义水平、垂直自动滚动的自定义Viewpager
京东精选卡片翻转效果,淘宝广告卡片切换效果,自动翻转效果
效果图如下 : 
简单使用方式如下(详细使用请看代码):
布局如下
<oriauto.fyx.orientedautolib.OrientedAutoViewPager android:id="@+id/src_view_pager" android:layout_width="match_parent" android:layout_height="match_parent" />
第一步,叠图计算,获取循环数据
public List<Fragment> getLoopData(List<Fragment> cardFragments) { if (cardFragments != null) { //====================叠图计算方法============= fragmentList.clear(); //加上末位放在第一个位置,为了能左滑 fragmentList.add(CardFragment.newInstance(cardFragments.size() - 1)); //加上标准展示数据 for (int i = 0; i < cardFragments.size(); i++) { fragmentList.add(CardFragment.newInstance(i)); } //重复加一遍为了末位图后有叠图,否则后几位叠图不全 for (int i = 0; i < cardFragments.size(); i++) { fragmentList.add(CardFragment.newInstance(i)); } return fragmentList; //====================叠图计算方法============= } return fragmentList; }
第二步,如果循环设置为1,启动自动滚动播放,设置自动滚动播放间隔时间,默认两秒
viewPager.setCurrentItem(1);//如果循环设置为1 viewPager.setAutoLoop(true);//启动自动滚动播放 viewPager.setAutoScroDelayMillis(3000);//设置自动滚动播放间隔时间,默认两秒
第三步,配合叠图计算,跳转对应位置这句话要放在最上面,放在OnPageChangeListener里也行
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //配合叠图计算,跳转对应位置这句话要放在最上面,放在OnPageChangeListener里也行 viewPager.setPageScrolled(position, positionOffset, positionOffsetPixels); // TODO: 2017/12/4 下面做要做的工作 } });
或者
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //配合叠图计算,跳转对应位置这句话要放在最上面,放在放在SimpleOnPageChangeListener里也行 viewPager.setPageScrolled(position, positionOffset, positionOffsetPixels); // TODO: 2017/12/4 下面做要做的工作 } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } });
翻转特效
//垂直翻滚,还是水平翻滚,默认水平翻滚 // viewPager.setOrientation(OrientedAutoViewPager.Orientation.VERTICAL); // viewPager.setPageTransformer(true, new VerticalStackTransformer(this, cardFragments.size())); //水平翻滚 viewPager.setPageTransformer(true, new HorizontalStackTransformer(this, 10, cardFragments.size()));
Github下载地址如下:



浙公网安备 33010602011771号