android 基础之viewpager全解
来源:互联网 发布:free pascal c语言 编辑:程序博客网 时间:2024/06/07 06:00
1、viewpager基本以及viewpager与pagerIndicator http://blog.csdn.net/xiaanming/article/details/10766053
2、viewpager切换动画
推荐jazzyviewpager这个开源框架,github上面可以去看看,另外这个链接上面也有,不过应该是从github上down下来的效果,可以参考下http://gqdy365.iteye.com/blog/2114968
3、viewpager联动(多个viewpager嵌套联动控制)
参考文章 http://blog.csdn.net/u010032372/article/details/48223521
关键点:一个viewpager滚动时控制另一个viewpager也实时滚动,需要在onPagerChangeListener方法里面来控制
内部viewpager滚动事件中@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {int width = viewpager1.getWidth();Log.e("viewpager2","onPageScrolled"+"..."+arg0+".."+arg1+"..."+arg2+",,,,"+width);//滑动外部Viewpagerviewpager1.scrollTo((int) (width * arg0 + width * arg1), 0);}在外部viewpager的滚动事件中
@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {//arg0当前滑动界面//arg1当页面前滑动百分比//arg2当前页面滑动像素//Log.v("onPageScrolled", "arg0"+arg0+"arg1"+arg1+"arg2-"+arg2);int width=viewpager2.getWidth();//滑动内部Viewpager viewpager2.scrollTo((int)(width*arg0+width*arg1), 0);}@Overridepublic void onPageSelected(int arg0) {index = arg0;}@Overridepublic void onPageScrollStateChanged(int arg0) {if (arg0 == 0) {viewpager1.setCurrentItem(index);}}
4、垂直viewpager
参考文章http://blog.csdn.net/t12x3456/article/details/9397389
主要用到开源框架 https://github.com/JakeWharton/Android-DirectionalViewPager 大家可以去github上面看看
参考文章有demo,大家可以下载下来看看,需要注意的问题是,向上拖动时,背景也是跟着向上移动小段距离的,
<span style="font-size:18px;"><a target=_blank href="http://blog.csdn.net/t12x3456/article/details/9397389">@Overridepublic void onPageScrollStateChanged(int state) {Log.i("way", "onPageScrollStateChanged... state = " + state+ ", mCurrentItem = " + mCurrentItem);if (state == ViewPager.SCROLL_STATE_IDLE) {mBg.setY(-mCurrentItem * mSize);}}/** * * @param position 第几页 * @param positionOffset 从第一页到第二页时,由0-1 * @param positionOffsetPixels */@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {Log.i("way", "onPageScrolled... position=" + position+ ", positionOffset=" + positionOffset+ ", positionOffsetPixels=" + positionOffsetPixels);if (positionOffset == 0.0f)return;mBg.setY(-((position + positionOffset) * mSize));}@Overridepublic void onPageSelected(int position) {Log.i("way", "onPageSelected.... position=" + position);mCurrentItem = position;}</a></span>
5、viewpager自动切换与无限循环
参考文章 http://blog.csdn.net/Just_Sanpark/article/details/17436037
实现起来都不难,本人更倾向于第二种,毕竟第二种更简单点
6、viewpager禁止滑动与viewpager懒加载
@Override public boolean onTouchEvent(MotionEvent ev) { return isScrollable && super.onTouchEvent(ev); }@Override public boolean onInterceptTouchEvent(MotionEvent ev) { return isScrollable && super.onInterceptTouchEvent(ev); }
7、viewpager适配器 FragmentPagerAdapter 和 FragmentStatePagerAdapter 和PagerAdapter区别
FragmentPagerAdapter适用于Fragment小于等于3个的情况,FragmentStatePagerAdapter适用于Fragment比较多 的情况
http://blog.csdn.net/crazymo_/article/details/51858313(讲的很清楚)
8、viewpager动态加载,动态增删item
关于使用中发现,在删除或者修改数据的时候,PagerAdapter无法像BaseAdapter那样仅通过notifyDataSetChanged方法通知刷新View。
通常情况下调用notifyDataSetChanged方法会让ViewPager通过Adapter的getItemPosition方法查询一遍所有child view,如果所有child view位置均为POSITION_NONE,表示所有的child view都不存在,ViewPager会调用destroyItem方法销毁,并且重新生成,从而加大系统开销,并在一些复杂情况下导致逻辑问题。特别是对于只是希望更新child view内容的时候,但造成了完全不必要的开销,
- 列表内容如果是针对于child view比较简单的情况(例如仅有TextView、ImageView等,没有ListView等展示数据的情况),可以重写PagerAdapter的方法getItemPosition
@Override public int getItemPosition(Object object) { return POSITION_NONE; }
- 但复杂的情况则需要根据自己的需求来实现notifyDataSetChanged的功能,比如,在仅需要对某个View内容进行更新时,在instantiateItem()时,用View.setTag方法加入标志,在需要更新信息时,通过findViewWithTag的方法找到对应的View进行局部更新。
- android 基础之viewpager全解
- Android基础应用之 ViewPager
- Android UI 基础之ViewPager的使用
- android基础学习之viewpager初探
- Android基础UI之ViewPager禁止滑动
- Android基础之Fragment Viewpager篇
- android 基础 ---> ViewPager
- Android基础学习之viewpager(左右滑页卡)
- Android开发之app基础框架ViewPager+Fragment
- android基础学习之fragment+viewpager+fragment事件听
- 【android基础】之Android返回键处理(事件全)
- android学习之-ViewPager
- Android开发之ViewPager
- Android UI之ViewPager
- Android 之 ViewPager
- android之ViewPager
- Android界面之ViewPager
- Android UI之ViewPager
- Android官方 Sample-Demo地址
- linux中断程序框架
- Spring AOP学习(二)--AspectJ
- 新建bochsrc-new.bxrc配置文件
- Calendar 日历类
- android 基础之viewpager全解
- x264重要结构体详细说明(5): x264_frame_t、x264_sync_frame_list_t
- c# function memo
- POJ 1251 Jungle Roads
- mysql 密码加密16位改为41位
- Oracle截取字符串和查找字符串
- 崩溃日志
- ImageView中android:scaleType属性失败
- PHP的$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案