文档章节

ViewPager+定时器+自动播放

荷西
 荷西
发布于 2015/02/13 16:59
字数 407
阅读 47
收藏 0
定时器实现图片自动播放关键代码:
    private ScheduledThreadPoolExecutor exec;//定时器
    private VerticalViewPager verticalPager1;//垂直的ViewPager
    @Override
	protected void onStart() {
		// 用一个定时器 来完成图片切换
		// Timer 与 ScheduledExecutorService 实现定时器的效果

		// scheduledExecutorService = Executors.newScheduledThreadPool(3);
		exec = new ScheduledThreadPoolExecutor(1);
		// 通过定时器 来完成 每2秒钟切换一个图片
		// 经过指定的时间后,执行所指定的任务
		// scheduleAtFixedRate(command, initialDelay, period, unit)
		// command 所要执行的任务
		// initialDelay 第一次启动时 延迟启动时间
		// period 每间隔多次时间来重新启动任务
		// unit 时间单位
		// .scheduleAtFixedRate(command, initialDelay, period, unit)
		exec.scheduleAtFixedRate(new ViewPagerTask(), 5, 6, TimeUnit.SECONDS);
		super.onStart();

	}
	
	// 用来完成图片切换的任务
	private class ViewPagerTask implements Runnable {

		public void run() {
			// 实现我们的操作
			// 改变当前页面
			currentItem = (currentItem + 1) % pageViews.size();
			// Handler来实现图片切换
			handler.obtainMessage().sendToTarget();
		}
	}
	
	//handler
	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {

			verticalPager1.setCurrentItem(currentItem);
			
		}
	}
	
	//ViewPager页面监听器
	verticalPager1.setOnPageChangeListener(new OnPageChangeListener() {

		@Override
		public void onPageSelected(int position) {
			currentItem = position;
		}

		@Override
		public void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {
			Log.e("sc", "----position----" + position+ "----->positionOffset---" + positionOffset+ "---->positionOffsetPixels---"+ positionOffsetPixels);
			if (position == pageViews.size() - 1) {//当滑动到list中最后一张图片时,将该图片的position置为0,实现循环滑动
				verticalPager1.setCurrentItem(0, false);
			}

		}

		@Override
		public void onPageScrollStateChanged(int state) {
			if (state == 1 && exec != null) {
				if (!exec.isShutdown()) {
					Log.e("1", "-----shutdown----");
					exec.shutdown();
					exec = null;
				}
			} else if (state == 0) {
				Log.e("1", "----start----");
				synchronized (_lock) {
					if (exec == null) {
						exec = new ScheduledThreadPoolExecutor(1);
						exec.scheduleAtFixedRate(new ViewPagerTask(),5, 6, TimeUnit.SECONDS);
					}
				}

			}
		}
	});
			
	byte[] _lock = new byte[1];



© 著作权归作者所有

共有 人打赏支持
荷西
粉丝 0
博文 1
码字总数 407
作品 0
杭州
Android 打造一个丝滑的自动轮播控件

现在很多的 App 都有自动轮播的 banner 界面,用于展示广告图片或者显示当前比较热门的一些活动,除了具备比较酷炫的效果之外,通过轮播的方式来减少对界面的占用,也是很赞的一个设计点。本...

developerHaoz
08/08
0
0
借助Handler,实现ViewPager中页面的自动切换

在很多电商网页及app上都有自动切换的商品的推广快,感觉体验挺不错的,正好今天学习使用ViewPager,因此也实现了一个功能类似的demo。 下面是其中的两个截图: 实现一个自动播放功能的ViewP...

风荷举
2013/11/22
0
0
根据Fragment布局高度来自动适应的Viewpager

在最近的项目中,要用到ViewPager,但是viewpager是放在recycleview里面,高度是不确定的,只好重写measure方法来根据子布局的高度来动态生成viewpager的高度,但是有个缺点,就是不能根据子...

遇见sunshine
07/04
0
0
Android ViewPager和ScrollView嵌套滚动问题解决方案

问题描述: 我的嵌套是ViewPager-->ScrollView-->ViewPager. 首先最里面的ViewPager水平滚动时总是会触发最外层的ViewPager滚动,看了网上很多的解决办法基本上是一样的,需要自定义ViewPag...

冰珊孤雪
2015/04/22
0
2
ViewPager不能高度自适应?height=wrap_content 无效解决办法

/* http://my.oschina.net/lifj/blog/283346 */ ViewPager用的很多,主要用啦展示广告条。可是高度却不能自适应内容,总是会占满全屏,即使设置android:height="wrap_content"也是没有用的。...

拉风的道长
2014/06/24
0
9

没有更多内容

加载失败,请刷新页面

加载更多

Apache Bench学习笔记

使用apache bench测试并发请求 ab -H "X-IMATRIX-ACCESS-TOKEN:1234567" -c 1000 -n 1000 http://localhost:8080/portfolioes/1/performance...

OSC_fly
24分钟前
2
0
Oracle推出轻量级Java微服务框架Helidon

近日,Oracle 推出 了一个新的开源框架 Helidon ,该项目是一个用于创建基于微服务的应用程序的Java库集合。和 Payara Micro 、 Thorntail (之前的 WildFly Swarm )、 OpenLiberty 、TomEE...

小刀爱编程
26分钟前
5
0
mysql 按周统计

方法一 : 使用 DATE_FORMAT 格式化时间,格式化参数参考 -- 参考地址 SELECTDATE_FORMAT( create_time, '%Y%u' ) weeks,DATE_FORMAT( date_sub( create_time, INTERVAL WEEKDAY( cre...

小鸟00
29分钟前
3
0
深入理解JAVA锁的机制

1. synchronized实现原理 在java代码中使用synchronized可是使用在代码块和方法中,根据Synchronized用的位置可以有这些使用场景: 如图,synchronized可以用在方法上也可以使用在代码块中,...

laigous
31分钟前
2
0
Mysql几种索引类型的区别及适用情况

如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyISAM引擎支持。其可以...

ZhangLG
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部