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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容