android 如何让gallery自动滚动?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 如何让gallery自动滚动?相关的知识,希望对你有一定的参考价值。

让gallery自动滚动可以通过以下两种方法实现:

一、使用Timer和TimerTask类来完成图片的自动定时滚动:

思路:循环调用Gallery类的onFling()方法。

代码:

<span style="white-space:pre"> </span>task = new TimerTask()

@Override
public void run()
/**
* 参数1和2:手指在gallery上的动作
* 参数3和4:x方向和y方向的滚动的速度,-数表示向左滚,+数表示向右
*/
gallery.onFling(null, null, -750, 0);

;
timer.schedule(task, 1000, 5000);
<span style="font-size:32px;"><strong>
</strong></span>
<span style="font-size:32px;"><strong>方式2:</strong></span>

二、使用Handler消息机制完成

思路:子线程内死循环使用handler每隔多长时间向主线程发送消息,通知gallery改变位置。

代码:

子线程部分:
<span style="white-space:pre"> new Thread(new Runnable()
<span style="white-space:pre"> </span>int flag = 1;
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void run()
<span style="white-space:pre"> </span>while (isalive)
<span style="white-space:pre"> </span>//images为装图片的集合
<span style="white-space:pre"> </span>if ((cur_index + 1) == images.size())
<span style="white-space:pre"> </span>flag = -1;
<span style="white-space:pre"> </span> else if (cur_index == 0)
<span style="white-space:pre"> </span>flag = 1;
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>Message msg = handler.obtainMessage(MSG_UPDATE, cur_index,
<span style="white-space:pre"> </span>0);
<span style="white-space:pre"> </span>handler.sendMessage(msg);
<span style="white-space:pre"> </span>try
<span style="white-space:pre"> </span>Thread.sleep(4000);
<span style="white-space:pre"> </span> catch (InterruptedException e)
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>switch (flag)
<span style="white-space:pre"> </span>case 1:
<span style="white-space:pre"> </span>cur_index++;
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>case -1:
<span style="white-space:pre"> </span>cur_index--;
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>).start();</span>
主线程部分:
private Handler handler = new Handler()
public void handleMessage(Message msg)
if (msg.what == MSG_UPDATE)
gallery.setSelection(msg.arg1);


;

两种方式的优缺点:

优点:

使用方式1来实现,效果和手指拖动的效果一样,滚动速度可以自己调。

使用方式2来实现,可以使用继承Gallery的子类,重写onFling方法,返回false来实现手指拖动时图片只滚动一张的效果。

缺点:

使用方式1来实现,当你用手指拖动,就会发现图片滚动的太快了,不是一张一张的滚动的,没法使用继承Gallery的子类,重写onFling方法,返回false来实现手

使用方式2来实现 ,效果没那么好看,图片说换就换了,没缓冲,滚动速度没法控制。
参考技术A 参考android系统源码的Gallery.java文件(http://www.oschina.net/code/explore/android-2.2-froyo/com/cooliris/media/Gallery.java)的实现。具体做法如下:
1. 创建一个继承自Gallery类的子类AutoScrollGallery。
2. 在AutoScrollGallery类中增加一个定时器的成员变量mTimer。
3. 在AutoScrollGallery的成员函数onCreate中初始化该定时器变量,并设置触发间隔。
4. 在定时触发响应函数中调用父类Gallery的成员函数进行滚动。
5. 在AutoScrollGallery的成员函数onDestroy中销毁mTimer。
6. 在你的应用程序中使用该继承类。本回答被提问者采纳

如何让bootstrap表格自动出现水平滚动条

参考技术A 将任何 .table 元素包裹在 .table-responsive 元素内,即可创建响应式表格,其会在小屏幕设备上(小于768px)水平滚动。当屏幕大于 768px 宽度时,水平滚动条消失。

以上是关于android 如何让gallery自动滚动?的主要内容,如果未能解决你的问题,请参考以下文章

Android中Gallery和ImageSwitcher同步自动(滚动)播放图片库

请问一下listview如何向gallery那样滚动

如何让coordinatorlayout自动往上滚动 android

JAVA Eclipse开发Android如何让超出界面的部分自动显示滚动条

如何让DataGridview控件自动滚动到指定的行或列

角度如何在悬停时使X平滑滚动(自动)