- 浏览: 209628 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
kingboup:
看了运行效果,不错,给力,谢谢
《安卓考试》Eclipse项目源码 -
在下个路口:
做android的,手机没root很奇怪吗?
【Android】使用Wifi连接ADB调试App -
guanting207:
图片显示限制了大小,为了正常显示,我加了scaletype=c ...
【Android】图片切角,切指定的边。 -
qinzuobin:
Version: 1.0.7(107)Android: 4.2 ...
《安卓考试》通用版ver-2,截图和源码 -
zxlxgd:
其实稍微改下下载方法就可以使用了:/** * 解析下载列表 ...
《安卓考试》Eclipse项目源码
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 原创文章,转载请声明作者。
评论
11 楼
Drakedog
2012-06-29
实现自动滚动容易啊,最偷懒的办法,起一个线程,每隔一段时间,gallery.setselection(int position)不就行了,哈哈,不过这个是向右无限循环,那向左呢,如果我在第一张,我往左翻,要求显示第四张,怎么办,求教
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。
我实现了~ 看我的博客,用模拟事件可以实现
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。
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的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
这个我没有实现。兄弟你实现了的话,希望告诉我一下,我也需要呢。
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的时候先%你的图片数
}
办法是不错,但是只实现了无限循环,没有实现自动滚动。
6 楼
119568242
2012-01-14
pop1030123 写道
不错,但是怎么让他自动无限循环滚动呢??
public int getCount() {
return max; //这里返回Integer.max;
}
然后
public View getView(int position, View convertView, ViewGroup parent){
//只修改它的position,其实交给父级处理。
使用到position的时候先%你的图片数
}
5 楼
pop1030123
2012-01-14
不错,但是怎么让他自动无限循环滚动呢??
4 楼
貌似掉线
2011-10-26
这个不错。
3 楼
xiaozhi6156
2011-10-25
图挂了~O。O
2 楼
桥下一粒砂
2011-10-10
119568242 写道
图挂了图挂了图挂了图挂了
没有挂啊?好好的。
1 楼
119568242
2011-10-03
图挂了图挂了图挂了图挂了
发表评论
-
类似HTML map标签功能的Android组件
2013-05-21 15:56 2293Android Image Map 一个类似HTML ma ... -
【开源框架】一个基于回调机制的多线程异步Http连接框架
2013-04-26 09:59 2931Async Http Connection 源码地址: h ... -
【Android】图片切角,切指定的边。
2012-11-08 19:14 4822公司的项目,UI和应用都是我自己做的。前几天设计了一个UI,出 ... -
【Android + Java】简便的异步Http连接框架
2012-11-06 11:05 5000【Android + Java】简便的异步Http连接框架 ... -
【Android】使用Wifi连接ADB调试App
2012-11-05 09:39 27608为什么用Wifi连接ADB不用数据线?因为我的数据线不见了。 ... -
MacOSX创建Android调试环境
2012-11-02 23:25 2639本文写的是Mac OS X Lion 10.8中搭建Andro ... -
《安卓考试》通用版ver-2,截图和源码
2012-05-26 22:26 3471首先放出源码:https://github.com/cheny ... -
将Cocos2d-x项目移植到Android过程分析
2012-04-25 15:59 0网上有一系列教程,还有各种原理分析。需要学习对Android ... -
个人项目整理——UI设计(Android)
2012-04-04 18:30 1620快毕业了,整理一下大学这四年来做过的东西。今天一位伟大的老板问 ... -
父View的TouchEvent自执行后再分配/派发的处理
2012-02-04 17:49 1213这两天写了一个自定义滑动翻页,类似主页切换效果的组件。 动态 ... -
Scala写的Android应用安装时报INSTALL_PARSE_FAILED_NO_CERTIFICATES
2011-12-19 20:55 1670原来环境: -JDK 7 -Scala 2.9final 用 ... -
图解,Eclipse+ADT+ScalaIDE用Scala写Android程序
2011-12-15 19:47 5704网上有很多用Scala写Android程序的文章,但大都是转自 ... -
[译]用Scala为Android写应用程序
2011-12-12 09:31 0本人英文水平麻麻地,四级待考。如有错误,请指正。 本文献给所 ... -
Android外置存储器(SD卡)工具类
2011-12-08 10:45 3371纯属代码分享:Android外置存储器(SD卡)工具类 ... -
外置存储器(SD卡)工具类
2011-12-08 10:40 1纯属代码分享 /** * */ packag ... -
启动界面淡入动画显示类
2011-12-07 20:08 1783啥都不要说了,看代码: /** * */ p ... -
Android联系人数据表结构
2011-11-17 20:28 3764数据库位置在: /data/data/com.android ... -
打包下载Android源码
2011-11-16 12:00 3056在Windows环境下,在Android官网下载源码是一件很麻 ... -
(图文详解)在Eclipse中给Android项目自定义ANT配置
2011-11-15 18:33 0参考博文:http://googlers.iteye.com/ ... -
《安卓考试》Eclipse项目源码
2011-10-24 11:11 13562最新的代码都在这里 已经有了新版本!全部源码由GitHub ...
相关推荐
为实现无限循环,我们需要在数据源的末尾添加当前数据的副本,并在用户滑动到边缘时重新定位选中项,使其看起来像一直在循环。 2. **自动跳转**:自动跳转功能可以在设定的时间间隔后自动切换到下一个图片。这可以...
为了实现无限循环,当用户滚动到列表末尾时,`Adapter`需要智能地将列表的最后一个元素与第一个元素连接起来,反之亦然。这通常通过在`onScroll()`方法中检测滚动状态并调整`Adapter`的数据源来实现。 在3D效果方面...
综上所述,"Gallery无限循环.zip"可能是一个涉及Android应用开发、图片浏览功能实现的项目,使用了旧版的Android组件和构建配置,同时包含了代码混淆的设置。开发者需要对Android SDK、Activity生命周期、布局设计...
在本教程中,我们将深入探讨如何利用ViewPager实现一个类似画廊(Gallery)的效果,并且让其能够无限循环滚动。 首先,我们要了解ViewPager的基本用法。ViewPager是Android Support Library的一部分,它允许用户在...
在Android开发中,"无限循环...通过研究和理解这些代码,开发者可以学习如何在自己的项目中实现无限循环滑动的gallery效果。这种自定义组件的实现不仅能够提升应用的用户体验,也是对Android开发技能的深入理解和应用。
因此,我们需要对其进行定制,以实现无限循环的效果。 在`Gallery`的无限循环实现中,主要有两种方式: 1. **手动无限循环**: 当用户滑动到`Gallery`的最后一项时,我们需要手动将焦点移动到第一项;同样,当...
1. **无限循环**:原生的`Gallery`组件并不支持无限循环,但通过开发者们的智慧,可以通过巧妙地重置数据源和设置适配器来实现这一功能。当用户在最后一张图片向左滑动时,会显示第一张图片;反之,从第一张图片向右...
针对这一需求,开发者通常需要自定义`Adapter`来实现无限循环的效果。 `Gallery`组件基于`AbsListView`,所以它的行为和`ListView`、`GridView`相似,可以通过`Adapter`来填充数据,并且支持触摸滑动操作。在`...
要实现"Gallery实现广告循环",我们首先需要在布局文件中添加`Gallery`控件。在XML布局文件中,可以这样定义: ```xml <Gallery android:id="@+id/gallery_ad" android:layout_width="match_parent" android:...
综上所述,结合自定义适配器、监听器以及适当的滚动处理,我们可以实现`Gallery`组件的选中高亮和无限循环滚动效果。不过,需要注意的是,`Gallery`组件在Android API 16之后已被弃用,建议使用`RecyclerView`配合`...
为了实现无限循环的效果,我们需要在`OnItemSelectedListener`中处理边界条件。当用户滑动到最后一张图片时,让`Gallery`显示第一张图片;反之,当用户滑动到第一张图片时,显示最后一张图片。可以这样实现: ```...
重写getCount方法,返回一个较大的值,使得资源可以无限循环 @Override public int getCount() { return Integer.MAX_VALUE; } // 2. 重写getItem方法,通常用来获取对应位置的数据,但在这里我们并不需要 @...
为了实现无限循环,我们需要在`BaseAdapter`中调整`getCount`方法,使其返回一个足够大的值,例如`Integer.MAX_VALUE`。这表示`Gallery`将有无数个可滚动的项目,从而在视觉上实现无限循环: ```java @Override ...
首先,要实现无限循环的效果,开发者需要在Gallery的两端添加额外的广告条目,当用户滑动到首尾时,无缝切换到另一端,使用户感觉广告条一直在循环播放。这通常需要重写Gallery的滚动逻辑,处理边界条件,并确保滚动...
在图片轮播设计中,"左右循环"意味着当用户在最后一张图片时点击右箭头,或在第一张图片时点击左箭头,图片轮播会无缝地返回到另一端,创造出一种无限循环的效果。这种设计通常通过数组索引的处理和条件判断来实现,...
`Gallery`还有一个独特的功能是它可以实现无限循环滚动。通过适当地调整`Adapter`的数据结构和逻辑,可以在用户滚动到列表的首尾时无缝切换回另一端,提供无边界浏览体验。 然而,`Gallery`存在一些局限性,例如不...
本篇文章将深入探讨如何实现`ViewPager`和`Gallery`的循环滚动功能,这对于创建无限轮播广告、图片浏览等应用场景至关重要。 首先,我们来看`ViewPager`。`ViewPager`是Android Support Library中的一个组件,主要...
这个改进版的控件可能是在此基础上进行了优化,解决了原始实现中可能存在的性能问题,并实现了无限循环,提高了用户交互性。 无限循环的关键在于处理边界条件。当用户滚动到最后一个元素时,控件需要能够无缝地跳回...
默认情况下,`Gallery`不支持无限循环滑动。但你可以通过监听`OnItemSelectedListener`并在达到边界时手动改变选中的位置,实现循环效果。 ```java gallery.setOnItemSelectedListener(new OnItemSelectedListener...