`
android_mylove
  • 浏览: 399407 次
社区版块
存档分类
最新评论

Android 滑动效果入门篇(二)—— Gallery

 
阅读更多

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 滑动效果 Gallery"是Android SDK提供的一种特殊视图组件,它允许用户通过水平滑动来浏览一系列项目,如图片或者其它元素。在早期的Android版本中,Gallery类被广泛用于实现这种效果,但在Android 4.0 (API...

    Android 滑动效果 Gallery + GridView

    在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,为用户提供流畅的交互体验。本主题主要聚焦于两种常见...通过实践,你将能够熟练掌握Android Gallery和GridView的滑动效果,并能灵活运用到自己的项目中。

    安卓Android源码——Gallery2.rar

    《安卓Android源码——Gallery2解析》 在安卓开发领域,深入理解源码是提升技能的重要途径之一。这里我们关注的是“Gallery2”模块,它是Android系统中的一个图像浏览应用,主要用于展示和管理用户的照片。Gallery2...

    安卓Android源码——Gallery相册浏览.rar

    这个压缩包文件"安卓Android源码——Gallery相册浏览.rar"提供了使用`Gallery`实现相册浏览功能的示例代码,对于学习和理解Android图像浏览及`Gallery`控件的使用非常有帮助。 `Gallery`是Android早期版本中的一个...

    Android 滑动效果 倒影效果

    本篇文章将深入探讨如何在Android应用中实现这两种效果,特别是针对`Gallery`组件的使用。 首先,让我们来了解滑动效果。在Android中,滑动通常涉及到触摸屏事件的处理,比如`OnTouchListener`接口的实现。当用户在...

    安卓Android源码——Gallery相册浏览.zip

    安卓Android源码——Gallery相册浏览.zip

    安卓Android源码——gallery重叠特效源码+注释.rar

    在本压缩包"安卓Android源码——gallery重叠特效源码+注释.rar"中,包含了一个实现gallery重叠特效的源代码示例,这对于开发者来说是非常宝贵的资源,可以用来学习和理解如何在Android应用中创建独特的视觉效果。...

    安卓Android源码——Gallery1.rar

    这个"安卓Android源码——Gallery1.rar"压缩包很可能是包含了早期Android版本中Gallery应用的源代码,这对于开发者来说是宝贵的参考资料,可以帮助他们理解和学习如何在Android平台上构建图像浏览功能。 首先,...

    安卓Android源码——gallery重叠特效源码+注释.zip

    这个"安卓Android源码——gallery重叠特效源码+注释.zip"文件包含了实现Gallery重叠效果的源代码,并且附有注释,可以帮助开发者更好地理解和实现这一特效。重叠特效通常是指在用户滚动Gallery时,相邻的图片会部分...

    安卓Android源码——Gallery3D.zip

    `Scroller`类通过模拟物理滚动效果,使用户在滑动图片时感受到平滑自然的动画过渡。 此外,源码还包含了多线程和异步任务的使用,例如`LoaderTask`用于在后台线程加载图片,避免阻塞主线程,保证应用的响应性。`...

    在Eclipse中编译运行Android4.3应用源码——Gallery2

    详情请参阅 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295

    C# Android Gallery-Dome 图片滑动效果显示

    "C# Android Gallery-Dome 图片滑动效果显示"是一个项目,旨在利用C#语言为Android平台构建一个类似原生Gallery的图片浏览体验。这个项目可能包括了自定义视图、手势识别以及图片加载优化等技术。 1. **C#与Android...

    安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.zip

    本示例源码"安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果"就是这样一个功能的实现,主要涉及了三个关键组件:Gallery、ImageSwitcher和ViewFlipper。 1. **Gallery组件**:Gallery是...

    安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.rar

    这个压缩包"安卓Android源码——Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.rar"提供了一个实现这种功能的示例代码,主要涉及到`Gallery`、`ImageSwitcher`和`ViewFlipper`这三个组件的使用。...

    Gallery——Gallery

    《Gallery——Android15代码详解》 在Android操作系统中,`Gallery`组件是早期版本(如Android 15)中用于展示图片或视图的滚动控件,它允许用户通过水平滑动来浏览一系列的元素。`Gallery`控件的设计初衷是为了...

    安卓Android源码——Gallery从SD卡中获取图片,并显示.rar

    综上所述,实现“安卓Android源码——Gallery从SD卡中获取图片,并显示”需要涉及Android的文件系统访问、图片处理、自定义适配器、事件监听、性能优化等多个方面。通过学习这些知识点,开发者可以创建出一个功能...

    Gallery使用教程——尝试翻译一篇Android SDK Reference

    这篇博客“Gallery使用教程——尝试翻译一篇Android SDK Reference”可能详细解释了如何在应用中集成并使用这个组件。由于没有具体的博客内容,我将根据一般知识和Android SDK的相关信息,提供一个关于Gallery组件的...

    安卓Andriod源码——Gallery相册浏览.zip

    本教程将深入探讨`Android Andriod源码——Gallery相册浏览.zip`中的`GalleryDemo`项目,揭示其核心原理和实现方式。 首先,`Gallery`组件是Android SDK中提供的一种特殊的`AbsSpinner`子类,它允许用户通过水平...

Global site tag (gtag.js) - Google Analytics