文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
36分钟前
0
0
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
56分钟前
0
0
c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
4
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部