# 注意,该项目停止维护!!! ### UltraViewPager [English Document](README.md) #### 简介 UltraViewPager是一个封装多种特性的ViewPager,主要是为多页面切换场景提供统一解决方案。 ![Example0](pics/pics1.gif) ![Example1](pics/pics2.gif) ![Example0](pics/pics3.gif) ![Example1](pics/pics4.gif) #### 主要功能 * 支持横向滑动/纵向滑动 * 支持一屏内显示多页 * 支持循环滚动 * 支持定时滚动,计时器使用Handler实现 * 支持设置ViewPager的最大宽高 * setRatio按比例显示UltraviewPager * 内置indicator,只需简单设置几个属性就可以完成展示,支持圆点和Icon; * 内置两种页面切换动效 以上特性支持同时使用; #### 设计思路 UltraViewPager继承自RelativeLayout,将ViewPager和indicator置于其中,同时UltraViewPager提供了一些ViewPager常用方法的代理,这样在日常使用上保持和ViewPager无差异,如果需要调用ViewPager的所有方法,可通过getViewPager()方法拿到真正的ViewPager进行操作. 竖向滑动是通过在ViewPager的onInterceptTouchEvent和onTouchEvent中交换横竖向的event location,同时设置特殊PageTransformer实现,详见源码. #### 使用方法 版本请参考mvn repository上的最新版本(目前最新版本是1.0.7.7),最新的 aar 都会发布到 jcenter 和 MavenCentral 上,确保配置了这两个仓库源,然后引入aar依赖: ``` //gradle compile ('com.alibaba.android:ultraviewpager:1.0.7.7@aar') { transitive = true } ``` 或者maven ``` //pom.xml in maven com.alibaba.android ultraviewpager 1.0.7.7 aar ``` 在layout中使用UltraViewPager: activity_pager.xml ```xml ``` 可以参考以下步骤使用UltraViewPager: ``` UltraViewPager ultraViewPager = (UltraViewPager)findViewById(R.id.ultra_viewpager); ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL); //UltraPagerAdapter 绑定子view到UltraViewPager PagerAdapter adapter = new UltraPagerAdapter(false); ultraViewPager.setAdapter(adapter); //内置indicator初始化 ultraViewPager.initIndicator(); //设置indicator样式 ultraViewPager.getIndicator() .setOrientation(UltraViewPager.Orientation.HORIZONTAL) .setFocusColor(Color.GREEN) .setNormalColor(Color.WHITE) .setRadius((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics())); //设置indicator对齐方式 ultraViewPager.getIndicator().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); //构造indicator,绑定到UltraViewPager ultraViewPager.getIndicator().build(); //设定页面循环播放 ultraViewPager.setInfiniteLoop(true); //设定页面自动切换  间隔2秒 ultraViewPager.setAutoScroll(2000); ``` Api接口详情请参考[文档](ATTRIBUTES-ch.md) #### FAQ * 如何刷新数据? 可以使用一下三种方法的任意一种: * ultraViewPager.refresh(); * ultraViewPager.getWrapAdapter().notifyDataSetChanged(); * mViewPager.getViewPager().getAdapter().notifyDataSetChanged(); #### DEMO [Demo工程](https://github.com/alibaba/UltraViewPager/tree/master/sample) # 贡献代码 在提 Issue 或者 PR 之前,建议先阅读[Contributing Guide](CONTRIBUTING.md)。按照规范提建议。 #### 开源许可证 UltraViewPager遵循MIT开源许可证协议。