viewpage设置引导页之最后一页左滑跳转

本文介绍了一种在移动端应用引导页实现自动跳转至主界面的方法,避免了传统按钮跳转方式的局限性。通过监听ViewPager的手势状态变化,实现了在用户尝试从最后一张页面向左滑动时自动跳转的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在的app习惯在第一次使用时会进入一个引导页,在引导页以图片的形式向新用户介绍App的使用和相关信息,往往这种引导页是由viewpager来实现,每一页里面是一个全屏的ImageView

这篇博客的受众为能实现引导页,正在寻求跳转解决方案的新手。

通常情况下,在最后一页会有一个点击进入的按钮来引导用户进入主程序,但是在某些需求之下没有那个按钮该怎么办?

方案一

想办法在用户切换到最后一页时同时启动一个延时执行的Handler,比如

new Handler().postDelayed(new Runnable() {
				public void run() {
					startActivity(LoginActivity.class);
					finish();
				}
			}, 2000);

通过这个我们就能在2s之后跳转到主要界面,但是问题是一旦到了最后一页,用户再想回前几页就不可能了,只能等待跳转,这个监听是在onPageSelected中实现,因为它返回了当前位置。

方案二

在最后一页时,用户再次左滑,进入主要界面,这个的实现可以给最后一页的ImageView设置手势监听,本文主要讲另一种简单科学的实现方法。

ViewPager中本来就有手势监听,不然我们怎么可能左滑右滑切换,所以可以直接利用就好了,在讲解方法之前,先了解一个ViewPager的三个状态。


int SCROLL_STATE_DRAGGINGIndicates that the pager is currently beingdragged by the user.(正在被拖动)

int SCROLL_STATE_IDLE:Indicates that the pager is in an idle,settled state.(空闲状态)

int SCROLL_STATE_SETTLINGIndicates that the pager is in the process ofsettling to a final position. (一个拖动过程完成)

总的来说就是拖动中,拖动完,空闲三种状态

再说说OnPageChangeListener(),它里面有个方法onPageScrollStateChanged(int state),这方法是监听状态改变,每次改变状态便会执行这个方法内的内容。

到此为止需要用到的元素都出来了

但是还缺关键的一点:

正常拖动过程中状态变化时 SCROLL_STATE_IDLE——》SCROLL_STATE_DRAGGING——》SCROLL_STATE_SETTLING——》SCROLL_STATE_IDLE


但是如果最后一页向左滑动和第一页向右滑动是不可能滑动成功的,于是状态改变就有些不同 SCROLL_STATE_IDLE ——》 SCROLL_STATE_DRAGGING ——》 SCROLL_STATE_IDLE

我们发现或一种状态里面缺少了一个拖动过程完成的状态,于是利用这种差别,我们就能很好的实现一开始的需求了。直接附上代码吧

<pre name="code" class="java">@Override
			public void onPageScrollStateChanged(int state) {
				// TODO Auto-generated method stub
				switch (state) {
				case ViewPager.SCROLL_STATE_DRAGGING:
					Log.i("zfc", "SCROLL_STATE_DRAGGING");
					misScrolled = false;
					break;
				case ViewPager.SCROLL_STATE_SETTLING:
					Log.i("zfc", "SCROLL_STATE_SETTLING");
					misScrolled = true;
					break;
				case ViewPager.SCROLL_STATE_IDLE:
					Log.i("zfc", "SCROLL_STATE_IDLE");
					if (vp.getCurrentItem() == vp.getAdapter().getCount() - 1 && !misScrolled) {
						startActivity(LoginActivity.class);
					}
					misScrolled = true;
					break;
				}

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值