使用handler使用图片轮播及触摸停止

// 当参数为null时,handler将移除所有的回调和消息,可用于轮播图
mHandler.removeCallbacksAndMessages(null);

以下是自动轮播图的部分核心代码:

1、利用handler消息实现自动轮播

// 使用handler处理广告条自动轮播
if (mHandler == null) {
    mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            // 得到当前页面位置
            int currentItem = mVpTabDetail.getCurrentItem();
            // 页面位置自增1
            currentItem++;

            // 到了最后一张图片
            if (currentItem == mTopnews.size()) {
                currentItem = 0;
            }

            mVpTabDetail.setCurrentItem(currentItem);

            // 3秒后发送一次信息
            mHandler.sendEmptyMessageDelayed(0, 3000);
        }
    };
}

//触发自动轮播
mHandler.sendEmptyMessageDelayed(0, 3000);

2、按下轮播图时停止轮播,松开时自动轮播

// 设置广告轮播图的触摸事件,当用户按下时停止轮播,抬起时继续轮播
mVpTabDetail.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:// 按下
            // 当参数为null时,handler将移除所有的回调和消息
            mHandler.removeCallbacksAndMessages(null);
            break;
        case MotionEvent.ACTION_CANCEL:// 事件取消
            // 给handler发一条消息即可让它自动继续轮播
            mHandler.sendEmptyMessageDelayed(0, 3000);
            break;
        case MotionEvent.ACTION_UP:// 抬起
            mHandler.sendEmptyMessageDelayed(0, 3000);
            break;

        default:
            break;
        }

        return false;
    }
});
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值