大家好,记得上次我带着大家一起实现了一个类似与淘宝客户端中带有的图片滚动播放器的效果,但是在 做完了之后,发现忘了加入图片自动播放的功能(或许是我有意忘记加的.....),结果图片只能通过手指滑动 来播放。于是今天我将再次带领大家,添加上之前遗漏的功能,让我们的图片播放器更加完善。
这次 的程序开发将完全基于上一次的代码,如果有朋友还未看过上篇文章,请先阅读 Android实现图片滚动控件 ,含页签功能,让你的应用像淘宝一样炫起来 。
既然是要加入自动播放的功能,那么就有一个非常 重要的问题需要考虑。如果当前已经滚动到了最后一张图片,应该怎么办?由于我们目前的实现方案是,所 有的图片都按照布局文件里面定义的顺序横向排列,然后通过偏移第一个图片的leftMargin,来决定显示哪 一张图片。因此当图片滚动在最后一张时,我们可以让程序迅速地回滚到第一张图片,然后从头开始滚动。 这种效果和淘宝客户端是有一定差异的(淘宝并没有回滚机制,而是很自然地由最后一张图片滚动到第一张图 片),我也研究过淘宝图片滚动器的实现方法,并不难实现。但是由于我们是基于上次的代码进行开发的,方 案上无法实现和淘宝客户端一样的效果,因此这里也就不追求和它完全一致了,各有风格也挺好的。
好了,现在开始实现功能,首先是打开SlidingSwitcherView,在里面加入一个新的AsyncTask,专门用于回 滚到第一张图片:
class ScrollToFirstItemTask extends AsyncTask<Integer, Integer, Integer> { @Override protected Integer doInBackground(Integer... speed) { int leftMargin = firstItemParams.leftMargin; while (true) { leftMargin = leftMargin + speed[0]; // 当leftMargin大于0时,说明已经滚动到了第一个元素,跳出循环 if (leftMargin > 0) { leftMargin = 0; break; } publishProgress(leftMargin); sleep(20); } return leftMargin; } @Override protected void onProgressUpdate(Integer... leftMargin) { firstItemParams.leftMargin = leftMargin[0]; firstItem.setLayoutParams(firstItemParams); } @Override protected void onPostExecute(Integer leftMargin) { firstItemParams.leftMargin = leftMargin; firstItem.setLayoutParams(firstItemParams); } }
然后在SlidingSwitcherView里面加入一个新的方法:
/** * 滚动到第一个元素。 */ public void scrollToFirstItem() { new ScrollToFirstItemTask().execute(20 * itemsCount); }
这个方法非常简单,就是启动了我们新增的ScrollToFirstItemTask,滚动速度设定为20 * itemsCount,这样当我们需要滚动的图片数量越多,回滚速度就会越快。定义好这个方法后,只要在任意地 方调用scrollToFirstItem这个方法,就可以立刻从当前图片回滚到第一张图片了。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索淘宝
, 图片
, 方法
, doinbackground
, 滚动
, 功能
, 滚动图片
, 一个
, 图片滚动
, Android滚动文字
, 图片自动播放
, Android滚动选择器
, Android滚动选择
Android循环滚动
致兄弟的话霸气十足、口号大全霸气十足、班级口号大全霸气十足、艺名大全男生霸气十足、2字网名大全霸气十足,以便于您获取更多的相关知识。