首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

停止ViewPager滚动以查看最后一页

可以通过以下步骤实现:

  1. 首先,需要获取到ViewPager的实例对象。可以通过findViewById或者在布局文件中设置id来获取。
  2. 接下来,需要创建一个自定义的ViewPager.OnPageChangeListener监听器,用于监听ViewPager的滚动事件。
  3. 在监听器的onPageScrolled方法中,判断当前页面是否为最后一页。可以通过比较当前页面的索引值和ViewPager的适配器中页面的总数来判断。
  4. 如果当前页面是最后一页,调用ViewPager的setPagingEnabled方法,并传入参数false,以禁止ViewPager的滚动。
  5. 如果当前页面不是最后一页,调用ViewPager的setPagingEnabled方法,并传入参数true,以允许ViewPager的滚动。

以下是一个示例代码:

代码语言:txt
复制
ViewPager viewPager = findViewById(R.id.viewPager);

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // 判断当前页面是否为最后一页
        if (position == viewPager.getAdapter().getCount() - 1) {
            // 禁止ViewPager的滚动
            setPagingEnabled(viewPager, false);
        } else {
            // 允许ViewPager的滚动
            setPagingEnabled(viewPager, true);
        }
    }

    @Override
    public void onPageSelected(int position) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});

private void setPagingEnabled(ViewPager viewPager, boolean enabled) {
    // 通过反射设置ViewPager的mIsPagingEnabled字段
    try {
        Field field = ViewPager.class.getDeclaredField("mIsPagingEnabled");
        field.setAccessible(true);
        field.set(viewPager, enabled);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这样,当ViewPager滚动到最后一页时,就会停止滚动,以便查看最后一页的内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

仿抖音上下滑动分页视频

第二,连续三个item都是视频时,来回滑动的过程中发现会出现上个视频的最后一帧画面的bug。...2.一次滑动一页,建议采用ViewPager+FragmentStatePagerAdapter+Fragment方式来做,后面会详细说。...我们需要的就是RecyclerView停止时的状态,我们就可以拿到这个View的Position,注意这里还有一个问题,当你通过这个position去拿Item会报错,这里涉及到RecyclerView...当然,实际app中,视频播放页面,还有一些点赞,评论,分享,查看作者等等很多其他功能。那么这些都是要请求接口的,还有滑动分页的功能,当滑动到最后一页时候拉取下一个视频集合数据等业务逻辑。...视频滑动翻页的布局固定高度,避免重复计算高度RecyclerView.setHasFixedSize(true),3.关于分页拉取数据注意,建议一次拉下10条数据(这个也可以和服务端协定自定义数量),而不要滑动一页加载下一页的数据

5.5K20

ViewPager2:官方Viewpager升级版来临

简单解析 通过查看源码得知,ViewPager2是直接继承ViewGroup的,意味着和ViewPager不兼容,类注释上也写了它的作用是取代ViewPager,不过短时间内ViewPager应该还不会被废弃掉...继续查看源码,发现了两个比较重要的成员变量: private RecyclerView mRecyclerView; private LinearLayoutManager mLayoutManager...ViewPager2也能很容易地支持这两种滚动方向了,而几乎不需要添加任何多余的代码。...PagerSnapHelper的作用让滑动结束时使当前Item居中显示,并且 限制一次只能滑动一页,不能快速滑动,这样就和viewpager的交互很像了。...使用 通过android:orientation来指定滚动方向 <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager2

1.7K10

Android 无限轮播图,使用开源库SimpleCycleViewPager

间隔时间更换图片 一般来说,图片切换时需要有动画效果 需要支持手势,用户开源滑动图片并移动,拨动到感兴趣的图片并查看。...想无限的循环滑动,就需要: 1.需要 img1 还能向左滑动,那么img1 的所在页面的左侧(前面)也需要 多放置一个页面 2.需要 到达 img2 ,即到达最后一页时,还能向右滑动,那么,也需要再这个页面...同理,当滚动到第3页(最后一页)时,我们将第3页换成第1页,由于 第3页和第1页是一模一样的,所以 视觉上感觉不到变化。 由此无限循环达成,即 一旦移动到头部,就切换到 倒数第二个。...一旦到最后一个,就切换到第二个索引。...1.在onPageSelected时 判断当前索引,并计算出新的索引,如果是第0个,或者最后一个,就得到新的索引 2.在onPageScrollStateChanged,时,切换索引。

1.1K00

android使用ViewPager组件实现app引导查看页面

下面我们来实现这个功能.ViewPager这个组件与ListView和RecyclerView在使用上有很高的相似处,所以你如果学习过以上两种列表滚动控件,可以基于它们帮助你理解ViewPager的使用...2.活动类的xml包含一个ViewPager ,一个LinerLayout布局实现圆点,一个用于引导页面最后一页进入到app的button) 1.绘制圆点: 选中状态的圆点: <?...2.活动类的xml包含一个ViewPager ,一个LinerLayout布局实现圆点,一个用于引导页面最后一页进入到app的button 活动类的xml: <?...,如果滑动到了最后一页则显示马上体验button if (position == imageView.length -1){ guidePage_EnterButton.setVisibility(...最后将适配器设置匹配给ViewPager 查看布局控件中 */ public void addView(){ //实例化一个list集合 list = new ArrayList< (); /

86610

自定义无限循环ViewPager(二)――ViewPager滑动原理解析

滚动的距离 float oldScrollX = getScrollX(); //viewpager需要滚动的距离 float scrollX = oldScrollX...需要滚动的距离,其次得到边界条件leftBound和rightBound,根据边界条件的约束得到真正的滚动距离,最后调用scrollTo()方法滚动到最终的位置。...:表示左边的 View ,且可以看见 ( 0 , 1] :表示右边的VIew , 且可以看见了 ( 1 , -∞) : 表示右边的 View 且已经看不见了 举个栗子: 如果a 是第一页...MotionEventCompat.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { //如果按钮,立即停止滚动...最后 关于改造ViewPager变为无限循环的第二部分(ViewPager滑动原理解析)所有内容都已分析完毕了,只剩下最后一部分ViewPager方法的改造了,最后一篇文章也会尽快发布出来。

2.2K10

Android使用ViewPager实现滚动广告

在一些类似于淘宝的电商网站上经常能够看到一些滚动的广告条,许多软件在首页也有类似的广告条,如图: ?...,用来展示需要滚动播放的图片;下面是一个 线性布局,用来放最下面的几个小圆点,也可以在里面放一些TextView等,小圆点的 数量是根据图片数量动态添加的。...ImageView imageView; // 存放小圆点布局文件 private LinearLayout layoutPointGroup; // 线程开关,当activity销毁后,线程也应该停止运行...@Override public boolean isViewFromObject(View view, Object object) { return view == object; } // 当一页滑出去的时候将它销毁...position; } // 结束 @Override public void onPageScrollStateChanged(int state) { } } // 当activity销毁时,让线程停止

94710

android 自定义Viewpager实现无限循环

5000; // 默认轮播时间 private int currentPosition = 0; // 轮播当前位置 private boolean isScrolling = false; // 滚动框是否滚动着...(position, true);   if (position == max) { // 最后一页时回到第一页                             viewPager.setCurrentItem...在滚动             isScrolling = true;   return;           } else if (arg0 == 0) { // viewPager滚动结束...viewPager.setScrollable(enable);       }   /**      * 返回当前位置,循环时需要注意返回的position包含之前在views最前方与最后方加入的视图...中,为了在进行滚动时阻断父ViewPager滚动,可以 阻止父ViewPager滑动事件      * 父ViewPager需要实现ParentViewPager中的setScrollable方法

3.3K70

Android 自定义 ViewPager 打造千变万化的图片切换效果

ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做。...的方法~~ 没错就是这个方法:在页面滚动时调用~ 下面仔细研究下这几个参数: 直接说测试结果: 在非第一页最后一页时,滑动到下一页,position为当前页位置;滑动到上一页:position为当前页...[0,宽度)区间上变化;滑动到上一页:(宽度,0]区间上变化 第一页时:滑动到上一页position=0 ,其他基本为0 ;最后一页滑动到下一页 position为当前页位置,其他两个参数为0 豁然发现...会保存2个或3个View;那么我考虑,如果是第一页、或者最后一页那么我取getChildAt(0)和getChildAt(1),如果在其他页面则为getChildAt(0),getChildAt(2),...:Tablet 最后,喜欢借此博客抛砖引玉~~大家对感兴趣的github上的代码,可以进行分析与自己尝试去实现,有时候会发现不是很难~你也可以做到~!

43010

android画廊无限轮播,ViewPager无限循环实现画廊式banner

先看一下效果 两边显示上一个和下一个item部分布局,可以自动滚动 实现: 布局 主要属性:android:clipChildren=”false” //允许子布局超出父布局显示 xml代码: Adapter...(this)实现接口重写方法:实现滑动时候暂停自动滑动,停止的时候开启 重写方法代码: @Override public void onPageScrolled(int position, float...: handler.sendEmptyMessage(ImageHandler.MSG_KEEP_SILENT); break; //未滑动 case ViewPager.SCROLL_STATE_IDLE...* 例如当前如果在第一页,本来准备播放的是第二页,而这时候用户滑动到了末页, * 则应该播放的是第一页,如果继续按照原来的第二页播放,则逻辑上有问题。...currentItem = msg.arg1; break; default: break; } } } 如果是viewpager嵌套Fragment的界面中使用可以通过setUserVisibleHint

2.2K30

Android 打造一个丝滑的自动轮播控件

ViewPager 跟我们需要的自动轮播控件有多少差距呢,主要有两个: 不支持自动播放 无法从最后一张滑动到第一张 所以我们主要是针对这两部分进行相应的改造,从而实现我们自己的自动轮播控件。...,所以通过 Handler 用 sendMessage 的形式,进行事件的发送实现 ViewPager 的自动轮播,以及某些场景的停止是比较合理的。...1.2 让 ViewPager最后一张滑动到第一张 我们知道,ViewPager 是无法从最后一页滑动到第一页的,但我们可以换一个思路,如果我们在 ViewPager 的 Adapter 里面,通过...getCount() 方法将 ViewPager 的大小设置为无限大,然后通过取余的方式来保证滑动的页面一直对应数据源的那几个数据,这样便能让 ViewPager 实现从最后一张滑动到第一张的效果。...的自动轮播功能,但其实还有很多的细节需要我们进行优化,例如:我们是通过将 ViewPager 的大小设置为无限大的方式,来实现从最后一张滑动到第一张的,但这时候如果不进行缓存的话,我们在 Adapter

49420

ViewPager打造轮播图Banner引导页Guide

Github链接地址:https://github.com/Allure0/LMBanners 昨天,有使用此库的同学提出需求,想在引导页的时候用这个库并且最后一页有进入按钮如何实现,为满足他的需求,也方便更多开发者是快速实现...引导页的最后一页有按钮,Banners没有 引导页的底部原点距离较大,Banners可以几乎固定 Banner基础上扩展实现第一步:添加按钮 <?...android:textSize="12sp" / </RelativeLayout 相比于原来咱们新增了按钮,这时候咱们按照这个布局运行在每一个界面都包含了Button,而引导页模式只有在最后一页需要展示按钮...如果是Guide引导页模式,咱们针对倒数第二页与最后的控制的滑动距离来判断了按钮的显示。...onStartListener { void startOpen(); } Banner基础上扩展实现第四步:Guide模式使用方式 对比banner只需要增加以下代码,如果需要其他属性可以自己设置(如,不自动滚动

1.6K21

Android自定义引导玩转ViewPager的方法详解

ViewPager简介: ViewPager(android.support.v4.view.ViewPager)是android扩展包v4包中的类,这个类可以让用户左右切换当前的view,实现滑动切换的效果...public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //页面滚动时小白点移动的距离...具体逻辑就是在小黑点的点击事件中加入如下代码: mIn_vp.setCurrentItem(1); 在页面选择过程中,根据mDistance * position可以实时小红点的位置 4.跳转按钮的实现 具体逻辑:到引导页到达最后一页时...方法中加入如下代码: if(position==2){ mBtn_next.setVisibility(View.VISIBLE); } 当按照从第一页最后一页...但当用户浏览到最后一页后再回转到前面感兴趣的页面,则会出现按钮依旧出现的情况,不符合要求。因此要完善逻辑,加入新的判断,逻辑如下: if(position!

62010

Android笔记——ViewPager循环、自动滚动效果

ViewPager循环、自动滚动,这种效果很常见,一般app首页都会有焦点图、或者用户引导页面。第三方比较好用的我推荐阿里开源的UltraViewPager,毕竟大公司的,用着放心吧 ๑乛◡乛๑。...有2种方案实现循环滚动,一种是在PagerAdapter设置最大数量为int最大值,另一种就是本文实现的。前一种感觉有点奇怪,如果不带自动循环滚动的话还可以用,毕竟用户一般不会切换这么多次能看到头。...而对于循环滚动的话,需要本文的类似思路实现起来比较好一点吧,原理看上图即可。例子效果图在最后。...onPageScrollStateChanged状态改变的时候,即停止滑动的时候滑到指定位置,当手指拖动的时候需要停止自动播放; 小圆点指示器,是一个线性布局根据图片数量添加原点,原点背景为selector...; 在屏幕显示的时候设置自动播放,离开屏幕时候停止播放; 如果想显示3个page需要在viewpager父容器设置 android:clipChildren="false" android:layerType

2.1K20

React Native之ViewPagerAndroid 组件

概述 今天我们来讲解一下关于 ViewPager 的使用,它是一个允许子视图左右滚动翻页的容器。...我们知道在Android开发中系统有ViewPager这个组件,作用是实现滚动翻页的,在RN中也是有这么一个组件的(ViewPagerAndroid),每一个ViewPagerAndroid的子容器会被视作一个单独的页...我们来看一段官方给出的例子: render: function() { return ( <ViewPagerAndroid style={styles.viewPager}...值x表示现在”position”所表示的页有(1 - x)的部分可见,而下一页有x的部分可见。]...scrollEnabled bool 布尔值,true是默认是,可以滑动,false代表禁止滚动。 ViewPagerAndroid实例 为了更好的理解,我们自己实现一个实例,效果如下: ?

99180
领券