阿里开源的多页面切换场景解决方案UltraViewPager

阿里开源的多页面切换场景解决方案UltraViewPager

  • 开源协议:MIT
  • 操作系统: Android
  • 开发语言:Java
  • 项目所有者:alibaba
  • 所属公司:阿里巴巴
  • 收录时间:2017-05-26
  • 分享:
编辑评级
3

项目详细介绍

UltraViewPager 是阿里巴巴开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。

 

Example0 Example1 Example0 Example1

主要功能

  • 支持横向滑动/纵向滑动
  • 支持一屏内显示多页
  • 支持循环滚动
  • 支持定时滚动,计时器使用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.4),最新的 aar 都会发布到 jcenter 和 MavenCentral 上,确保配置了这两个仓库源,然后引入aar依赖:

//gradle
compile ('com.alibaba.android:ultraviewpager:1.0.4@aar') {
	transitive = true
}

或者maven

//pom.xml in maven

  com.alibaba.android
  ultraviewpager
  1.0.4
  aar

在layout中使用UltraViewPager: activity_pager.xml

<com.tmall.ultraviewpager.UltraViewPager
    android:id="@+id/ultra_viewpager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:background="@android:color/darker_gray" />

可以参考以下步骤使用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接口详情请参考文档

DEMO

Demo工程

标签:阿里巴巴