指令汇B新闻客户端开发(四) 自动轮播条-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

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

简介:     在这个新闻客户端,我们可以看到有一个轮播页面,在这个项目中,用Handler和一个定时器来做更容易一些, 我们定义一个Handler: private Handler mHandler; 定时器的代码如下: // 自动轮播条显示 if (mHandler == null) { mHandler = new Handler() { pub

    在这个新闻客户端,我们可以看到有一个轮播页面,在这个项目中,用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;
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: