Handler+viewPager实现图片轮播

实现图片轮播的主要方法是:

viewPager.setcunrrentItem();

viewPager.setCurrentItem((viewPager.getCurrentItem()+1)%viewPager.getAdapter().getCount());

通过求余的算法即可以完成 图片的轮播。

那么定时的通知图片切换播放就成了重点,我们这里采用:

通过查看源码,我们需要知道:handlercallback方式分发消息,本质上是如果没有runnable对象则用hanldermassege,如果有则用run方法处理

没有子线程的事。(都是运行在主线程的)runOnUiThread同样也是用handlercallback方式发消息的。

Handler.postDelayed的方式 开启轮播:

 handler=new Handler();
        //利用handler发送延时消息这个线程无关,完成的是runnbale接口中的run方法
         //延时后执行一次自己在方法中不断的执行自己
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //ListView获取调用四个方法的方式通过控件获取Adapter调用方法
                  viewPager.setCurrentItem((viewPager.getCurrentItem()+1)%viewPager.getAdapter().getCount());
                  handler.postDelayed(this,1000);
                //重新执行一遍自己。
            }
        }, 1000);

通过下面这个方法将消息和回调移除的方式停止轮播:

handler.removeCallbacksAndMessages(null);

最后还要为pageAdapter集合中的view设置点击和触摸事件在adapter的instantiateItem方法中设置即可,注意按下要停止轮播抬起要开启轮播!

viewPager强制刷新:

viewPager所在的Adapter下 重写这个方法,因为所在页面不变,导致的 此页面不更新,,更改这个方法的返回值,即可重绘

public int getItemPosition(Object object)   {

        Log.d("设置","position");
            return POSITION_NONE;

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值