viewpager实现自动滑动以及手势滑动功能

本文介绍了一种不依赖线程的ViewPager自动滑动实现方式,通过Handler和监听触摸事件完成。在手动滑动时,设置标志位并清空Handler消息,手指抬起时重新发送自动滑动消息,实现3秒间隔的自动切换。

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

今天在做项目的时候,有一个viewpgaer展示图片的页面,第一反应是去网上查找,后来看了好多文章,其实也就是那么两三篇文章,其他的都是转载来转载去的,主要就是运用线程来进行无限循环进行实现的操作,个人感觉并不需要运用到线程,尤其是你写了死循环后,线程的回收就是个问题,所以就寻思着自己实现功能好了。
先看效果图吧:
这里写图片描述
实现思路:
在项目里比较重要的两个东西,一个是handler的使用,一个是监听viewpager的触摸事件,具体的思路是设定一个bool值来监听是否触摸viewpager,我们都知道你如果手动滑动,肯定是要触摸的,我们在触摸的时候把isTouch设定为true,这时候我们手动的把handler里面的消息全部清除掉,当action_up的时候,我们在重新向handler里面发送信息,在handler中进行自动滑动的操作,自动滑动的时间间隔是3秒,最后代码如下:

hanlder类

handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                //自动循环
                if (!isTouch)
                {
                    int item=msg.what;
                    if (item==2)
                    {

                        viewPager.setCurrentItem(item);
                        item=0;
                        handler.sendEmptyMessageDelayed(item, 3000);
                    }else
                    {
                        viewPager.setCurrentItem(item);
                        item++;
                        handler.sendEmptyMessageDelayed(item, 3000);
                    }

                }
            }
        };
        //发送第一个自动更换的信息
        handler.sendEmptyMessageDelayed(1, 3000);

viewpager的触摸事件

 viewPager.setOnTouchListener(new View.OnTouchLis
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值