您的位置:首页 > 其它

(015)笑谈ViewPager

2016-11-19 12:17 106 查看
大家好!我是成名已久的ViewPager大侠 我可以让用户实现左右切换当前的View 也就是江湖人称瞬移的高端技术。

一、我的父亲是大名鼎鼎的ViewGouup 所以你称我为富二代也不过分 因为我父亲是个容器 所以你也可以在我的身上开辟空间存放View 毕竟宰相肚里能撑船吗?何况是一个小小的View、但是有一个问题是到我肚子里来可以 你得买票是吧 我的票是有的 就是 PageAdapter 购买这个票请登录www.zxh666.com 有我的仆人钛合金刚猿在门上分发 并且同时赠送一个血眼鬃毛狮 小名是Fragment 让你与PageAdapter一块使用 不过这个血眼鬃毛狮不善管理 所以会给你一个 FragmentPagerAdapter和FragmentStatePagerAdapter,来供viewPager管理Fragment

扯淡环节到此结束 进入正题》》》》》

二、、适配器 PagerAdapter..

BaseAdapter  基本的适配器抽象类  -- 可以存储比较复杂的数据结构

常用的子类:  ArrayAdapter  SimpleAdapter

需要重写方法:

getCount()  返回数据源的条目数量

getItem()   返回指定位置的数据

getItemId() 返回指定位置上视图的ID

getView()   返回每个Item的视图

CursorAdapter   父类: BaseAdapter  是连接ListView和Cursor数据之前的桥梁

常用的子类:  SimpleCursorAdapter

重写的方法:

newView()   返回每个Item对应的视图

bindView()  初始化视图中的控件, 并且赋值

PagerAdapter

是一个抽象的基类, 用于填充ViewPager布局的适配器

常用的子类:  FragmentPagerAdapter  FragmentStatePagerAdapter

重写的方法:

instantiateItem(ViewGroup, int)     根据指定的下标创建ViewPager中的页面

destroyItem(ViewGroup, int, Object) 根据指定的下标移除ViewPager中的页面

getCount()              返回数据源中的条目数量

isViewFromObject(View, Object)      判断当前ViewPager加载的页面和instantiateItem(ViewGroup, int)返回view,是否为同一个视图

步骤:

1, 在布局页面中创建<android.support.v4.view.ViewPager />标签

2, 在代码中得到数据源, 数据源中包括要增加显示的View

3, 在Activity中实例化PagerAdapter适配器, 并且设置适配器(PagerAdapter)


三, 监听器 setOnPageChangeListener

onPageSelected(int position)

当前页面被选中时调用, 参数为当前页面的位置

onPageScrolled(int position, float arg1, int arg2)

当页面滑动时调用

onPageScrollStateChanged(int position)

ViewPager页面滑动状态改变时调用


四, 常用方法

layout.getChildAt(int index)  得到Layout中的第几个视图

viewPager.setCurrentItem(int pisition)  跳转viewPager到指定页面


五, PagerTitleStrip 可以指示位置, 但是不能交互, 不能用通过点击title切换ViewPager

1, 在布局页面中, 把它作为子视图, 添加到viewPager的标签之内

2, 重写PagerAdapter的getPagerTitle(int ) 添加标题

android:layout_gravity="bottom"  设置标题显示的位置  顶部 / 底部


六, PagerTabStrip

PagerTitleStrip和PagerTabStrip的区别:

1, PagerTabStrip 页面的底部会有一条下划线, 当前指示的下划线是加粗的

2, PagerTabStrip 是可以点击的, 点击后可以跳入不同的页面, 而PagerTitleStrip是不可以点击的

setDrawFullUnderline(boolean drawFull)   设置是否取消下划线

setBackgroundColor(int color)        设置背景色

setTabIndicatorColor(int color)      设置下划线的颜色


七, ViewPager + Fragment + Layout

FragmentPagerAdapter  , FragmentStatePagerAdapter

1, 父类都是PagerAdapter

2, 都是针对Fragment来填充数据的, ViewPager中的每一页都是一个Fragment

3, FragmentStatePagerAdapter 只加载当前的页面,如果页面移动, 移除的页面就会被销毁,生成新的页面并显示

FragmentStatePagerAdapter好处: 内存中只保存当前的页面,即使页面中有很多数据, 也会担心内存溢出的问题

FragmentPagerAdapter   一般使用在静态的Fragment中, 会预先加载几页数据, 保存在内存中

FragmentPagerAdapter 好处: 加载速度快


小编总结:血眼鬃毛狮跑了一天也累了 回到家口渴的问我要水喝,我把杯子给他递过去 结果杯子里有一个毛发 他刚想把水倒掉。我告诉他:不要因为一点错误就把一生的事业扔掉 于是他端起水杯告诉我 :也不要因为一根毛发扔掉一杯水………………嗯,孺子可教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术