文档章节

ViewPager+定时器+自动播放

荷西
 荷西
发布于 2015/02/13 16:59
字数 407
阅读 55
收藏 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
2018/08/08
0
0
借助Handler,实现ViewPager中页面的自动切换

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

风荷举
2013/11/22
0
0
请问这样的场景会消耗内存吗?

有2个activity分别是A和B 其中A中有个viewpager,通过定时器实现图片轮播,在A中跳到B中的话,也就是B把A完全覆盖住,这样的的场景,不知道其A中的viewpager会是如何工作的?既然A被完全覆盖...

天王盖地虎626
2015/10/31
86
0
viewpager+viewpager+scrollview+gridview

刚开始有一个父viewpager,后来在viewpager里面放了一个子viewpager还有一个gridview在同一个页面(子viewpager在上并且添加了点击事件,Gridview在下面),出现了滑动还有显示的问题,后来在...

KongSyp
2015/07/11
753
1
Android开源控件ViewPager Indicator的使用方法

Android Viewpager Indicator是Android开发中最常用的控件之一,几乎所有的新闻类APP中都有使用,下面介绍其基本使用方法。 1. ViewPager Indicator的Library 查看Viewpager Indicator的Lib...

linsea
2014/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国龙-扬科
19分钟前
0
0
使用apicloud开发移动端APP,IOS list页面滚动卡顿解决记录

给内容容器添加样式:-webkit-overflow-scrolling:touch; -webkit-overflow-scrolling:属性控制元素在移动设备上是否使用滚动回弹效果. auto:使用普通滚动, 当手指从触摸屏上移开,滚动会立即...

万建宁
21分钟前
0
0
Akka消息传送可靠性 23

原文:https://doc.akka.io/docs/akka/2.5/general/message-delivery-reliability.html Akka可帮助您构建可靠的应用程序,这些应用程序在一台计算机中使用多个处理器核心或分布在计算机网络中...

woshixin
43分钟前
2
0
composer安装

前言:随着开源的东西越来越多,一些好的代码我们是可以直接拿过来用的,github更是加快了这一节奏,在github上我们可以看到一些开源的项目、代码块、函数库、类结构等,我们可以直接Fork,然...

echojson
今天
4
0
mysql grant 用户权限总结

用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用...

Airship
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部