Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果。
从上面的继承关系可以看出,AbsSpinner类继承自AdapterView,因此我们可以自定义实现Adapter,来填充Gallery容器的数据。
本示例通过自己实现一个Adapter,来填充Gallery容器的图片数据,首先看效果:
Activity
ImageAdapter.java
main.xml
源码下载
示例分析:
1、ImageAdapter中,是继承BaseAdapter自定义实现的,重载了BaseAdapter的几个虚方法,其中重要的有两个
getCount() : 返回资源的大小(总长度)
getView(int position, View convertView, ViewGroup parent) : 返回当前显示的资源(获取焦点)
2、GalleryActivity中,通过gallery.setAdapter(imgAdapter);设置资源,然后设置gallery的点击监听事件。
3、main.xml中,是布局文件,显示一个TextView和Gallery,RelativeLayout是相对布局
总体来说,Gallery 上述的示例很简单,结构比较清晰,能够满足基本的应用。
Gallery 高级应用
上面的示例,仅仅是最简单的Gallery应用,如果我们想做的更酷、更炫的效果:
1、Gallery 图片显示能够循环播放,即向右滑到左侧第一张图片后,需要接着显示最后一张图片;向左滑到最后一张图片后,需要接着显示第一张图片,往复不间断显示的循环效果。
2、选中图片高亮,未选中图片阴影,更加突出当前获取焦点的选中图片
3、区分“点击”与“选中”图片事件的区别和适用场景
效果1 ——高亮显示
没有选中,在GalleryActivity中,设置gallery.setUnselectedAlpha(0.3f); 透明度为0.3
选中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,设置imageview.setBackgroundColor(Color.alpha(1)); 背景色为1
效果2 —— 循环播放
原理:Gallery循环播放的原理,跟循环链表的思想一样,首尾item连接都是通过“取余”实现
修改1、ImageAdapter中的getCount() 方法中,修改返回值为无穷大return Integer.MAX_VALUE;
修改2、ImageAdapter中的getView(int position, View convertView, ViewGroup parent)方法中,设置imageview.setImageResource(imgs[position % imgs.length]); 取余
修改3、GalleryActivity中,设置gallery.setSelection(imgAdapter.imgs.length * 100); 使gallery显示图片的位置从中间开始显示(即imgAdapter.imgs.length * 100)
修改解释:
修改1,主要是为了是循环接近无限往复循环,使position无限大,循环在实践应用上不容易结束(理论上会结束,即2^31-1约20亿次循环后)
修改2,通过取余,使图片能够重复利用并显示
修改3,由于起始位置如果是0,则向右滑动左侧将无法循环(此时左侧将为-1,超出了imgs[]数组的下边界),因此开始应设置起始位置为imgAdapter.imgs.length的整数倍
效果3 —— “点击”和“选中”事件
1、点击事件OnItemClickListener,是需要用手点击才触发,滑动时不触发
2、选中事件OnItemSelectedListener,是当图片滑到屏幕正中,则视为自动选中,在滑动的过程中会触发
适用场景:
1、点击事件OnItemClickListener,是在确定要选中该项时,才点击进行逻辑处理
2、选中事件OnItemSelectedListener,可以用来提醒用户,当前获取焦点的项,如果确认为该项则需要点击OnItemClickListener后,进行下一步的逻辑处理
高级应用完整代码:
Activity
ImageAdapter.java
源码下载
参考推荐:
Gallery
Gallery tutorial
分享到:
相关推荐
"Android 滑动效果 Gallery"是Android SDK提供的一种特殊视图组件,它允许用户通过水平滑动来浏览一系列项目,如图片或者其它元素。在早期的Android版本中,Gallery类被广泛用于实现这种效果,但在Android 4.0 (API...
在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,为用户提供流畅的交互体验。本主题主要聚焦于两种常见...通过实践,你将能够熟练掌握Android Gallery和GridView的滑动效果,并能灵活运用到自己的项目中。
《安卓Android源码——Gallery2解析》 在安卓开发领域,深入理解源码是提升技能的重要途径之一。这里我们关注的是“Gallery2”模块,它是Android系统中的一个图像浏览应用,主要用于展示和管理用户的照片。Gallery2...
这个压缩包文件"安卓Android源码——Gallery相册浏览.rar"提供了使用`Gallery`实现相册浏览功能的示例代码,对于学习和理解Android图像浏览及`Gallery`控件的使用非常有帮助。 `Gallery`是Android早期版本中的一个...
本篇文章将深入探讨如何在Android应用中实现这两种效果,特别是针对`Gallery`组件的使用。 首先,让我们来了解滑动效果。在Android中,滑动通常涉及到触摸屏事件的处理,比如`OnTouchListener`接口的实现。当用户在...
安卓Android源码——Gallery相册浏览.zip
在本压缩包"安卓Android源码——gallery重叠特效源码+注释.rar"中,包含了一个实现gallery重叠特效的源代码示例,这对于开发者来说是非常宝贵的资源,可以用来学习和理解如何在Android应用中创建独特的视觉效果。...
这个"安卓Android源码——Gallery1.rar"压缩包很可能是包含了早期Android版本中Gallery应用的源代码,这对于开发者来说是宝贵的参考资料,可以帮助他们理解和学习如何在Android平台上构建图像浏览功能。 首先,...
这个"安卓Android源码——gallery重叠特效源码+注释.zip"文件包含了实现Gallery重叠效果的源代码,并且附有注释,可以帮助开发者更好地理解和实现这一特效。重叠特效通常是指在用户滚动Gallery时,相邻的图片会部分...
`Scroller`类通过模拟物理滚动效果,使用户在滑动图片时感受到平滑自然的动画过渡。 此外,源码还包含了多线程和异步任务的使用,例如`LoaderTask`用于在后台线程加载图片,避免阻塞主线程,保证应用的响应性。`...
详情请参阅 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295
"C# Android Gallery-Dome 图片滑动效果显示"是一个项目,旨在利用C#语言为Android平台构建一个类似原生Gallery的图片浏览体验。这个项目可能包括了自定义视图、手势识别以及图片加载优化等技术。 1. **C#与Android...
本示例源码"安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果"就是这样一个功能的实现,主要涉及了三个关键组件:Gallery、ImageSwitcher和ViewFlipper。 1. **Gallery组件**:Gallery是...
这个压缩包"安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.rar"提供了一个实现这种功能的示例代码,主要涉及到`Gallery`、`ImageSwitcher`和`ViewFlipper`这三个组件的使用。...
《Gallery——Android15代码详解》 在Android操作系统中,`Gallery`组件是早期版本(如Android 15)中用于展示图片或视图的滚动控件,它允许用户通过水平滑动来浏览一系列的元素。`Gallery`控件的设计初衷是为了...
综上所述,实现“安卓Android源码——Gallery从SD卡中获取图片,并显示”需要涉及Android的文件系统访问、图片处理、自定义适配器、事件监听、性能优化等多个方面。通过学习这些知识点,开发者可以创建出一个功能...
这篇博客“Gallery使用教程——尝试翻译一篇Android SDK Reference”可能详细解释了如何在应用中集成并使用这个组件。由于没有具体的博客内容,我将根据一般知识和Android SDK的相关信息,提供一个关于Gallery组件的...
本教程将深入探讨`Android Andriod源码——Gallery相册浏览.zip`中的`GalleryDemo`项目,揭示其核心原理和实现方式。 首先,`Gallery`组件是Android SDK中提供的一种特殊的`AbsSpinner`子类,它允许用户通过水平...