Gallery兑现无限循环的方法
Gallery实现无限循环的方法

/**
没有挂啊?好好的。
这个不错。
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
我最后没用gallery,用了HorizontalScrollView,用scrollBy。
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
我最后没用gallery,用了HorizontalScrollView,用scrollBy。
我实现了~ 看我的博客,用模拟事件可以实现
Android的控件Gallery提供一个画廊效果,通过左右滑动,可以水平滚动浏览Gallery中的图片。网上的教程或者Gallery都介绍这个控件用来显示图片(Image),但其实,它可以显示任意的View,当然也包括Layout了。
Gallery只能从第一项开始,滚动浏览到最后一项。浏览最后一项后,就不能再滚动,只能回退浏览。但是,我们想达到这样的效果:
在Gallery中显示了4张图片,分别是“西施”、“杨贵妃”、“王昭君”、“貂蝉”。
浏览效果是,每屏只显示一个图片,向左滑动时显示前一个图片,向左滑动时显示后一个图片。当向右浏览到第4张图片“貂蝉”时,再向右滑动时,回到第一张图片,进行循环浏览。
在实现这样的效果,首先要对Gallery的Adapter进行修改。
无论你使用哪个Adapter,都需要修改两处的:
1、public int getCount() 方法要返回一个很大的数。它表示Adapter提供的数据在数量。比如上面四个图片,它返回的就是4。这个数字的意义就是:当你向右滑动四次之后,它就不再向右滑动了,哪怕你后面还有数据。要实现无限循环,必须把它修改成一个很大的值。什么值最大呢?Integer.MAX_VALUE 肯定够大,20亿啊。
2、public View getView(int position, View convertView, ViewGroup parent) 中的position值,是实现循环的关键。它表示当前要显示的哪一个VIEW。举例说,上面四张图,刚显示时,position = 0,当向右滑动,显示下一个图片是,position = 1。再向右滑动,显示第三张时,position = 2。如果向左滑动,回退浏览第二张图片时,position = 1。
如此,当我们浏览到第四张图片时,position = 3 ,按我们想实现的效果,再向左滑动时,要显示的图上应该是第一张,即 position = 0 才行。所以,关键是要实现 position 从 0 到 3 的循环。这个好办,通过取余就可以实现了。
我使用SimpleAdapter向Gallery提供数据,查看Android的SimpleAdapter源码:
* @see android.widget.Adapter#getCount() */ public int getCount() { return mData.size(); } /** * @see android.widget.Adapter#getView(int, View, ViewGroup) */ public View getView(int position, View convertView, ViewGroup parent) { return createViewFromResource(position, convertView, parent, mResource); }
要修改这两个方法,很简单,我们继承SimpleAdapter,然后Override这两个方法:
public class EndlessSimpleAdapter extends SimpleAdapter{
private int count ; @Override public int getCount(){ count = super.getCount(); //下面要计算。 return Integer.MAX_VALUE; } @Override public View getView(int position, View convertView, ViewGroup parent){ //只修改它的position,其实交给父级处理。 return per.getView(position % count,convertView,parent); } }
然后,使用EndlessSimpleAdapter向Gallery提供数据,就可以实现无限循环了。
桥下一粒砂 http://chenyoca.iteye.com 原创文章,转载请声明作者。
1 楼
119568242
2011-10-03
图挂了图挂了图挂了图挂了
2 楼
桥下一粒砂
2011-10-10
119568242 写道
图挂了图挂了图挂了图挂了
没有挂啊?好好的。
3 楼
xiaozhi6156
2011-10-25
图挂了~O。O
4 楼
貌似掉线
2011-10-26
5 楼
pop1030123
2012-01-14
不错,但是怎么让他自动无限循环滚动呢??
6 楼
119568242
2012-01-14
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
7 楼
pop1030123
2012-01-16
119568242 写道
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
8 楼
桥下一粒砂
2012-01-16
pop1030123 写道
119568242 写道
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
9 楼
pop1030123
2012-01-17
桥下一粒砂 写道
pop1030123 写道
119568242 写道
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
我最后没用gallery,用了HorizontalScrollView,用scrollBy。
10 楼
lyx2007825
2012-04-19
pop1030123 写道
桥下一粒砂 写道
pop1030123 写道
119568242 写道
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
我最后没用gallery,用了HorizontalScrollView,用scrollBy。
我实现了~ 看我的博客,用模拟事件可以实现
11 楼
Drakedog
2012-06-29
实现自动滚动容易啊,最偷懒的办法,起一个线程,每隔一段时间,gallery.setselection(int position)不就行了,哈哈,不过这个是向右无限循环,那向左呢,如果我在第一张,我往左翻,要求显示第四张,怎么办,求教