这样当往左滑时显示的是e,此时设置viewpager.setCurrentItem(5),当右滑到e的时候在往右滑,此时设置viewpager.setCurrentItem(1),这样就实现了轮播效果。...;//设置轮播显示的底图 adapter=new ViewPaagerAdapter(this,viewlist); viewPager.setAdapter(adapter); viewPager.setCurrentItem...(1,false); }else if(viewPager.getCurrentItem()==0&& positionOffsetPixels==0) { viewPager.setCurrentItem...(1,false); }else if(viewPager.getCurrentItem()==0&& positionOffsetPixels==0) { viewPager.setCurrentItem...当直接设置setCurrentItem翻页时,如果是相邻的情况(比如现在是第二个页面,跳到第一或者第三个页面),如果页面向右翻动,大部分时间是和当前页面是一致的,只有最后才变成目标页面;如果向左翻动,position
=null){ loopDay.setCurrentItem(selectDay); }else{ loopDay.setCurrentItem(c.get(Calendar.DATE)); } //loopDay.setNotLoop...=null){ loopYear.setCurrentItem(selectYear-MIN_YEAR+1); }else{ loopYear.setCurrentItem(MAX_YEAR); } loopYear.setNotLoop...=null){ loopMonth.setCurrentItem(selectMonth); }else{ loopMonth.setCurrentItem(c.get(Calendar.MONTH))...- 1); } } }else if(Integer.parseInt(loopYear.getCurrentItemValue())<minYear){ loopYear.setCurrentItem...- 1); } } }else if(Integer.parseInt(loopYear.getCurrentItemValue()) maxYear){ loopYear.setCurrentItem
但是呢这种方法有两个弊端 理论上ViewPager还是会滑动到头的(虽然实际上一般并不会) 当PagerAdapter的getCount方法返回一个很大的值时候,会产生一个问题,调用setCurrentItem...当滑动到最右侧的A时候,调用setCurrentItem(position,false)移动到前面1位置的A;当滑动到最左侧的D页面时候,移动到getCount()-2处的D页面。...void setCurrentItem(int item, boolean smoothScroll) { BannerViewPager.super.setCurrentItem(mAdapter.toPosition...此时调用setCurrentItem(6,false),本来期望5,6,7三个页面回调的position值分别是-1,0,1,结果却是-5,,-5,-5。...上面Banner的实现又必须要用到setCurrentItem(item,false),因此我做了一个折中。
mAdapter.setBoundaryCaching(mBoundaryCaching); super.setAdapter(mAdapter); setCurrentItem...mAdapter.toRealPosition(super.getCurrentItem()) : 0; } public void setCurrentItem(int item,...boolean smoothScroll) { int realItem = mAdapter.toInnerPosition(item); super.setCurrentItem...(realItem, smoothScroll); } @Override public void setCurrentItem(int item) { if...= item) { setCurrentItem(item, true); } } @Override public void setOnPageChangeListener
ViewPager的局限性 1. setCurrentItem卡顿 当getCount返回的页数非常大的时候,比如10亿,调用setCurrentItem会引起ANR。...setCurrentItem引起的ANR和是否指定第二个参数smoothScroll没有关系。...解决方式是在ViewPager快要切换到边界时,使用setCurrentItem把它重置回中间位置。...如果考虑到用户体验,为了保证滑动过程中切换page不是非常生硬,可以先setCurrentItem到newPosition +/- 1位置,之后再setCurrentItem(newPosition,...上面就通过减少getCount的值,结合setCurrentItem完成了ViewPager的无限滑动。
绑定自定义的FragmentPagerAdapter pager.setOnPageChangeListener(new MyOnPageChangeListener());//监听事件 pager.setCurrentItem...onPageSelected(int arg0) { resetimage(); switch (arg0) { case 0: i1.setTextColor(Color.RED); pager.setCurrentItem...(0); break; case 1: i2.setTextColor(Color.RED); pager.setCurrentItem(1); break; case 2:...i3.setTextColor(Color.RED); pager.setCurrentItem(2); break; case 3: i4.setTextColor(Color.RED)...; pager.setCurrentItem(3); break; case 4: i5.setTextColor(Color.RED); pager.setCurrentItem(4);
newList.add(item) } newList.add(pic[0]) 当ViewPager2滑动到第0位和最后一位时的处理分别如下 位置 处理 currentPosition == 0 setCurrentItem...(adapter.itemCount - 2, false) currentPosition == adapter.itemCount - 1 setCurrentItem(1, false) ViewPager2...== ViewPager2.SCROLL_STATE_IDLE) { if (currentPosition == 0) { bannerVp.setCurrentItem...false) } else if (currentPosition == adapter.itemCount - 1) { bannerVp.setCurrentItem
newList.add(item) } newList.add(pic[0]) 最后一位添加第一张图 当ViewPager2滑动到第0位和最后一位时的处理分别如下 位置 处理 currentPosition == 0 setCurrentItem...(adapter.itemCount - 2, false) currentPosition == adapter.itemCount - 1 setCurrentItem(1, false) ViewPager2...== ViewPager2.SCROLL_STATE_IDLE) { if (currentPosition == 0) { bannerVp.setCurrentItem...false) } else if (currentPosition == adapter.itemCount - 1) { bannerVp.setCurrentItem
+ position); if (position == 0){ // 滑动到第一页的时候直接跳到倒数第二页,因为两页内容完全一致,跳的过程不会被人眼捕捉到 setCurrentItem...if (position == loopViewPagerAdapter.getCount() - 1){ // 同理滑动到倒数第一页的时候直接跳到第二页 setCurrentItem...} if (msg.what == HANDLE_LOOP_MSG) { int curItem = getCurrentItem() + 1; setCurrentItem...getContext(), imgIds); loopViewPagerAdapter.initItem(); setAdapter(loopViewPagerAdapter); setCurrentItem...} if (msg.what == HANDLE_LOOP_MSG) { int curItem = getCurrentItem() + 1; setCurrentItem
例: if(curPos == 0){ setCurrentItem(5, false) ;// false表示无动画 } ?.... •4.防止setCurrentItem时发生页面跳变,需要维护第一个页面和最后一个页面内容的缓存。...•初始化后执行mViewPager.setCurrentItem(data.size()*50); 例: @Override public int getCount() { return mDatas.size...final int size = mDatas.size(); return pagerPosition % size; } •性能上的考虑: 这种方法要求在第一次加载的时候执行setCurrentItem...setCurrentItem(101); 会走100+次instantiateItem(); ?
(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb_home: // mViewPager.setCurrentItem...(0);// 设置当前页面 mViewPager.setCurrentItem(0, false);// 去掉切换页面的动画 break; case R.id.rb_news:...mViewPager.setCurrentItem(1, false);// 设置当前页面 break; case R.id.rb_smart: mViewPager.setCurrentItem...(2, false);// 设置当前页面 break; case R.id.rb_gov: mViewPager.setCurrentItem(3, false);// 设置当前页面...break; case R.id.rb_setting: mViewPager.setCurrentItem(4, false);// 设置当前页面 break;
switch (item.getItemId()) { case R.id.navigation_home: mViewPager.setCurrentItem...return true; case R.id.navigation_category: mViewPager.setCurrentItem...return true; case R.id.navigation_cart: mViewPager.setCurrentItem...return true; case R.id.navigation_my: mViewPager.setCurrentItem
mViewPager.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager(), mFragmentList)); 3,设置启动时首页: mViewPager.setCurrentItem...} @Override public void onPageSelected(int position) { mViewPager.setCurrentItem...mViewPager.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager(), mFragmentList)); mViewPager.setCurrentItem
public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i) { case R.id.rbtn_home: viewPager.setCurrentItem...(HomeViewPagerIndex); break; case R.id.rbtn_vest: viewPager.setCurrentItem(InvsetViewPagerIndex); break...; case R.id.rbtn_photo: viewPager.setCurrentItem(CaptureViewPagerIndex); break; case R.id.rbtn_mine:...viewPager.setCurrentItem(MyViewPagerIndex); break; case R.id.rbtn_more: viewPager.setCurrentItem(MoreViewPagerIndex
checkedId) { switch (checkedId) { case R.id.rbHome: mViewPager.setCurrentItem...(0); break; case R.id.rbDiscovery: mViewPager.setCurrentItem...(1); break; case R.id.rbContacts: mViewPager.setCurrentItem...(2); break; case R.id.rbMe: mViewPager.setCurrentItem(3);...break; case R.id.rbMe: mViewPager.setCurrentItem
new MyFragmentPagerAdapter(getActivity().getSupportFragmentManager(), fragmentsList)); mPager.setCurrentItem...mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fragmentsList)); mPager.setCurrentItem
Log.e("onTabSelected", i + ""); tab.setIcon(licons_p[i]); mViewPager.setCurrentItem...mViewPager.setAdapter(mAdapter); mViewPager.setOffscreenPageLimit(3); mViewPager.setCurrentItem...Log.e("onTabSelected", i + ""); tab.setIcon(licons_p[i]); mViewPager.setCurrentItem
ArrayWheelAdapter<String ( MainActivity.this, areasMap.get("北京"))); // 默认显示第一项 provinceView.setCurrentItem...(0); // 默认显示第一项 cityView.setCurrentItem(0); // 默认显示第一项 areaView.setCurrentItem(0); //...areaView.setViewAdapter(new ArrayWheelAdapter<String ( MainActivity.this, areas)); // 默认显示第一项 areaView.setCurrentItem...(new ArrayWheelAdapter<String ( MainActivity.this, cities)); // 默认显示第一项 cityView.setCurrentItem
ThreeFragment()); thirdVp.setAdapter(new FragmentAdapter(getSupportFragmentManager(),fragmentlist)); thirdVp.setCurrentItem...) { } @Override public void onClick(View view) { switch (view.getId()) { case R.id.tab1_tv: thirdVp.setCurrentItem...(0); break; case R.id.tab2_tv: thirdVp.setCurrentItem(1); break; case R.id.tab3_tv: thirdVp.setCurrentItem
领取专属 10元无门槛券
手把手带您无忧上云