您的位置:首页 > 其它

指令汇B新闻客户端开发(四) 自动轮播条

2015-11-29 23:00 375 查看
在这个新闻客户端,我们可以看到有一个轮播页面,在这个项目中,用Handler和一个定时器来做更容易一些,

我们定义一个Handler:

private Handler mHandler;



定时器的代码如下:

// 自动轮播条显示
if (mHandler == null) {
mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
int currentItem = mViewPager.getCurrentItem();

if (currentItem < mTopNewsList.size() - 1) {
currentItem++;
} else {
currentItem = 0;
}

mViewPager.setCurrentItem(currentItem);// 切换到下一个页面
mHandler.sendEmptyMessageDelayed(0, 3000);// 继续延时3秒发消息,
// 形成循环
};
};

mHandler.sendEmptyMessageDelayed(0, 3000);// 延时3秒后发消息
}


轮播条的触摸监听:

class TopNewsTouchListener implements OnTouchListener {

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//	System.out.println("按下");
mHandler.removeCallbacksAndMessages(null);// 删除Handler中的所有消息
// mHandler.postDelayed(new Runnable() {
//
// @Override
// public void run() {
//
// }
// }, 3000);
break;
case MotionEvent.ACTION_CANCEL:
System.out.println("事件取消");
mHandler.sendEmptyMessageDelayed(0, 3000);
break;
case MotionEvent.ACTION_UP:
System.out.println("抬起");
mHandler.sendEmptyMessageDelayed(0, 3000);
break;

default:
break;
}

return true;
}

}


// 表示事件是否拦截, 返回false表示不拦截, 可以让嵌套在内部的viewpager相应左右划的事件

@Override

public boolean onInterceptTouchEvent(MotionEvent arg0) {

return false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: