ViewPagerIndicator

ViewPagerIndicator

1. 支持自定义tab样式

2. 支持自定义滑动块样式和位置

3. 支持自定义切换tab的过渡效果

4. 支持子界面的预加载和界面缓存

5. 支持设置界面是否可滑动

6. android:minSdkVersion="8" android:targetSdkVersion="24"

7.导入方式

<1>gradle导入

compile 'com.shizhefei:ViewPagerIndicator:1.1.2'

由于用到了v4和recyclerview所以也要导入他们

compile 'com.android.support:support-v4:23.4.0'

compile 'com.android.support:recyclerview-v7:23.2.1'

<2>jar包方式导入

这次开发中使用到了滑动标题栏并且可切换标题切换底部的viewpager,如图所示:


这个可以解决轮播banner,引导页,4个界面的tab页面,可滑动tab界面等项目中常用的组件。

这个框架主要的类有:

1.ViewPager

2.Indicator

    顾名思义是指示器的意思。有点像水平方向的listview 可以自定义item。

   Indicator

      setCurrentItem(int item, boolean anim) 设置当前项

      setOnTransitionListener(OnTransitionListener onTransitionListener)设置tab过渡动画

      setOnItemSelectListener(OnItemSelectedListener onItemSelectedListener)设置tab切换监听

      setScrollBar(ScrollBar scrollBar)设置跟随tab滑动的滑动块

   1.FixedIndicatorView 主要用于固定大小来平均分配tab的情况。

       setSplitMethod(int splitMethod) 设置tab分割方式,平均分割,wrap分割,比重分割

      setCenterView(View centerView, ViewGroup.LayoutParams layoutParams)设置显示在tab中心的View,用于实现新浪微博底部+号

      getCenterView();

   2.ScrollIndicatorView 主要用于多个tab可以进行滑动。

       setSplitAuto(boolean splitAuto) 设置是否自动分割,当总tab宽度小于Indicator宽度就平均分割tab,或者比重分割。大于Indicator宽度就wrap分割

      setPinnedTabView(boolean isPinnedTabView) 设置是否固定第一个tab

       setPinnedShadow(Drawable shadowDrawable, int shadowWidth)设置固定tab的阴影

   3.RecyclerIndicatorView 主要用于无数个tab可以进行滑动。

     优点适用于tab很多的情况,缺点tab少的时候没有ScrollIndicatorVie的自动分割功能。

3.IndicatorViewPager

indicatorViewPager.setAdapter(IndicatorPagerAdapter adapter)

// 设置它可以自定义实现在滑动过程中,tab项的字体变化,颜色变化等等过渡效果

indicatorViewPager.setIndicatorOnTransitionListener(onTransitionListener);

// 设置它可以自定义滑动块的样式

indicatorViewPager.setIndicatorScrollBar(scrollBar);

// 设置page是否可滑动切换

indicatorViewPager.setPageCanScroll(false);

/*

* 设置缓存界面的个数,左右两边缓存界面的个数,不会被重新创建。 默认是1,表示左右两边

* 相连的1个界面和当前界面都会被缓存住,比如切换到左边的一个界面,那个界面是不会重新创建的。

*/

indicatorViewPager.setPageOffscreenLimit(1);

/*

* 设置预加载界面的个数。左右两边加载界面的个数 默认是1,表示左右两边 相连的1个界面会和当前界面同时加载

*/

indicatorViewPager.setPagePrepareNumber(1);

// 设置页面切换监听

indicatorViewPager.setOnIndicatorPageChangeListener(onIndicatorPageChangeListener);

// 设置page间的图片的宽度

indicatorViewPager.setPageMargin(1);

// 设置page间的图片

indicatorViewPager.setPageMarginDrawable(d);

4.BannerComponent(无限轮播banner)

setAutoPlayTime(long time) 设置自动播放的间隔时间

startAutoPlay(); 开始播放

stopAutoPlay(); 停止播放

5.IndicatorPagerAdapter,

    里面使用的是view,

6.ScrollBar

tab的滑动块通过indicatorViewPager.setIndicatorScrollBar(scrollBar);进行设置子类有

ColorBar 颜色的滑动块

DrawableBar 图片滑动块

LayoutBar 布局滑动块

TextWidthColorBar 大小同tab里的text一样宽的颜色的滑动块

SpringBar 实现拖拽效果的圆形滑动块  该类修改于https://github.com/chenupt/SpringIndicator

7.OnTransitionListener

子类有

OnTransitionTextListener tab的字体颜色变化,和字体大小变化效果

8.LazyFragment

1.实现原理:

一开始onCreateView的时候只是加载一个空的FrameLayout

当通过结合onCreateView和setUserVisibleHint两个方法进行判断是否需要加载真正的布局界面,需要的时候把真正的布局界面添加到之前的空的FrameLayout上面

2.回调方法:

onCreateViewLazy  对应 onCreateView

onDestroyViewLazy 对应 onDestroyView

onResumeLazy      对应 onResume

onPauseLazy      对应 onPause

onDestroy 和 onCreate 方法不变

另外添加了onFragmentStartLazy fragment显示的时候调用,在ViewPager界面切换的时候你就可以通过这个判断是否显示

onFragmentStopLazy fragment不显示的时候调用

上面所有有lazy结尾的方法都意味着 真正的布局正在显示

3.使用方法

放心在onCreateViewLazy 的时候创建布局,初始化数据。调用该方法的时候,界面已经要显示啦  在onDestroyViewLazy的方法里面做释放操作


我在本次开发中使用的是可滑动的tab页,首先在xml布局文件引用com.shizhefei.view.indicator.ScrollIndicatorView和ViewPager,然后在java代码中实例化组件,调用mScrollIndicatorView.setOnTransitionListener设置切换时标题的颜色,mScrollIndicatorView.setScrollBar设置滚动条,然后将mViewPager和mScrollIndicator传入获取IndicatorViewPager对象,因为我的需求是在viewpager加载fragment,所以我们得重写适配器,继承自IndicatorViewPager.IndicatorFragmentPagerAdapter,重写getCount(),getViewForTab,getFragmentForPage,最后setAdapter,大工告成。


如果说你的viewpager加载的是图片就继承IndicatorViewPager.IndicatorViewPagerAdapter,其他的步骤如上。

在此感谢github作者,来自https://github.com/LuckyJayce/ViewPagerIndicator#viewpagerindicator

你可能感兴趣的:(ViewPagerIndicator)