`
lyx2007825
  • 浏览: 2086 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Gallery无限定时循环拖动效果

阅读更多

业务需要,需要在Gallery中实现定时循环滚动效果,而网上的大部分资料都是循环跳动,没有像屏幕拖动那种效果,经过几天的研究和资料整合,找出了解决方法。

 

首先定时循环:

       ScheduledThreadPoolExecutor timer = (ScheduledThreadPoolExecutor) Executors

							.newScheduledThreadPool(1);
					ImageTask imageTask = new ImageTask();
					timer.scheduleAtFixedRate(imageTask, 0, 8, TimeUnit.SECONDS);
    private class ImageTask extends TimerTask {
        public void run() {
// getPos是我在imageAdapter中加入的方法,在ImageAdapter加一个成员变量position,然后在getView中将position
的值负值给成员变量,getPos()返回这个成员变量值
			int curPos = imageAdapter.getPos();
         Message message2 = new Message();
			Bundle data = new Bundle();
         data.putInt("pos", curPos);
         message2.what = 1;
			message2.setData(data);
			myHandler.sendMessage(message2);
    }
 

 

 

然后在Handler对象中处理:

 

      imageAdapter.setCount(focusList.size());

      focusGallery.setAdapter(imageAdapter);
 

      //注意,这两个事件是我模拟处理的,其中的数字是我用用手拖动然后用在实际Gallery的onFling事件Log打印出来的。

       想实现定时有一个假象的拖动动作,就模拟了这两个事件。

      MotionEvent e1 = MotionEvent.obtain(
							SystemClock.uptimeMillis(),
							SystemClock.uptimeMillis(),
							MotionEvent.ACTION_DOWN, 322.25406f, 108.34271f, 0);
					MotionEvent e2 = MotionEvent.obtain(
							SystemClock.uptimeMillis(),
							SystemClock.uptimeMillis(),
							MotionEvent.ACTION_MOVE, 146.52338f, 122.55939f, 0);
//这里一定要使用setSelection,否则每次都会从第一张图片滚动,也就是说只要速度正常,只出现第一张和第二张图片
选择当前图片,然后在当前位置下滚动。
					focusGallery.setSelection(msg.getData().getInt("pos"));
					if(firstLoad){
						firstLoad = false;
					}else{
//-945这个值可以自己测试做相应的调整,负值表示向右滑动
						focusGallery.onFling(e1, e2, -945, 0);
					}
					addHeaderPointImage(focusList.size());
}
 

然后在Gallery的Adapter中然getCount()返回Integer.MAX_VALUE;在getView中position参数进行如下处理

 

                                      int imageSize = focusList.size();

					position = position % imageSize;
 

然后就可以无限循环了。

最后处理一下那个圆点。

 

 

focusGallery.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> paramAdapterView,
					View paramView, int paramInt, long paramLong) {
				int curPos = imageAdapter.getPos();
				paramInt = curPos % focusList.size();
				Log.v("liuyx", curPos+"");
				for (int i = 0; i < pointImageList.size(); i++) {
					if (paramInt == i) {
						pointImageList.get(i).setImageResource(
								R.drawable.information_focus_cirlce_current);
					} else {
						pointImageList.get(i).setImageResource(
								R.drawable.information_focus_cirlce);
					}
				}
			}

			public void onNothingSelected(AdapterView<?> paramAdapterView) {
			}
		});
 

 

 

 

0
0
分享到:
评论
3 楼 sing_song 2012-11-14  
楼主:有一个更好的解决办法:
关键是用到了
gallery.onKeyDown(
       KeyEvent.KEYCODE_DPAD_RIGHT,
       null);
参考:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=201005
2 楼 lyx2007825 2012-05-17  
我是在原先公司的项目里改的,你可以用个Gallery试试
1 楼 xiaowangzaixian 2012-05-16  
有效果图吗,lz

相关推荐

    Gallery无限循环.zip

    "Gallery无限循环.zip"这个压缩包文件的名字暗示了它可能包含一个关于Android应用程序开发的项目,特别是与图像展示相关的部分,比如一个图片画廊应用。在这个应用中,"Gallery"通常指的是用户可以浏览并循环查看...

    无限自动循环的gallery 可以点击

    反之,从第一张图片向右滑动则显示最后一张,从而达到视觉上的无限循环效果。 2. **倒影效果**:倒影效果是通过在每个图片上添加一个镜像图像来实现的。这通常需要自定义`ImageView`或者使用第三方库,通过处理图片...

    Android3D画廊Gallery实现无限循环和自动跳转

    本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限循环、自动跳转以及倒影效果。 首先,我们需要理解`Gallery`组件。`Gallery`是Android提供的一个HorizontalScrollView的扩展,用于...

    gallery无限循环

    总的来说,实现`Gallery`无限循环的关键在于正确地处理边界情况,并结合动画效果,提供平滑的用户体验。无论是手动还是自动循环,都需要关注焦点的切换时机以及相应的事件处理。在实际项目中,还可以根据需求进一步...

    ViewPager 实现gallery效果+无限循环滚动

    在本教程中,我们将深入探讨如何利用ViewPager实现一个类似画廊(Gallery)的效果,并且让其能够无限循环滚动。 首先,我们要了解ViewPager的基本用法。ViewPager是Android Support Library的一部分,它允许用户在...

    无限循环滑动gallery

    在Android开发中,"无限循环...通过研究和理解这些代码,开发者可以学习如何在自己的项目中实现无限循环滑动的gallery效果。这种自定义组件的实现不仅能够提升应用的用户体验,也是对Android开发技能的深入理解和应用。

    Android学习记录使用Gallery实现炫丽的拖动效果

    在Android开发中,实现炫丽的拖动效果是提升用户体验的重要一环,特别是使用`Gallery`组件可以创建出类似轮播图或者选择器的效果。这篇博客"Android学习记录使用Gallery实现炫丽的拖动效果"深入探讨了如何利用`...

    3DGallery无限自动循环+倒影效果

    【3D Gallery无限自动循环+倒影效果】是一款专为Android平台设计的图像展示应用,它结合了3D视觉效果和动态循环播放功能,同时增加了图片的倒影特效,为用户带来独特的视觉体验。这款应用在Android开发领域具有较高...

    Gallery选中高亮和无限循环

    综上所述,结合自定义适配器、监听器以及适当的滚动处理,我们可以实现`Gallery`组件的选中高亮和无限循环滚动效果。不过,需要注意的是,`Gallery`组件在Android API 16之后已被弃用,建议使用`RecyclerView`配合`...

    Android Gallery 3张图无限循环 左右滑动都有效

    在这个场景中,提到的"Android Gallery 3张图无限循环 左右滑动都有效"是指一个特定的实现,即在`Gallery`中加载三张图片,并且当用户向左或向右滑动时,图片能够无缝地循环,形成一种无限滚动的效果。下面将详细...

    android Gallery 3d实现无限循环播放 用做广告板最后了

    总的来说,"android_FancyCoverFlow"项目展示了如何利用自定义控件和动画来创建一个功能丰富的3D广告板,其无限循环和倒影效果增强了用户的交互体验。对于想要在Android应用中实现类似功能的开发者,深入研究这个...

    仿安卓市场广告条(中心条目放大且无限循环的gallery)

    本项目标题提到的"仿安卓市场广告条(中心条目放大且无限循环的gallery)",是基于3D Gallery控件的一种改进和优化,旨在提供类似市场应用中的滑动广告展示效果,同时具备中心条目放大和无限循环的特性。 Gallery是...

    Gallery循环删除图片

    在实际开发中,可能会包含一个自定义的Gallery子类,增加了动态加载和删除图片的功能,或者是用来演示如何使用反射和循环效果的代码片段。 总结来说,"Gallery循环删除图片"涉及了Android UI组件的使用、数据适配、...

    Gallery实现无线循环代码

    然而,原生的`Gallery`组件并不支持无限循环的功能,也就是说,当用户在最后一项滑动时,无法无缝滚动回到第一项,同样在第一项滑动时也无法直接跳转到最后一项。针对这一需求,开发者通常需要自定义`Adapter`来实现...

    Gallery实现广告循环

    最后,如果你有一个名为“无限循环广告demo”的项目,那么它可能包含了完整的实现代码和资源文件,你可以参考该项目的代码来更好地理解`Gallery`广告循环的实现方式。 总的来说,通过使用Android的`Gallery`控件,...

    可左右循环滑动的gallery图片轮播demo

    在这个特定的案例中,"可左右循环滑动的gallery图片轮播demo"是一个实现这种功能的示例项目,允许用户向左或向右滑动来浏览图片,同时支持自动定时切换,为用户提供流畅的浏览体验。 首先,我们要理解“左右循环...

    android 图片拖动效果(Gallery)

    在Android开发中,实现图片拖动效果,如“Gallery”组件,是一种常见的需求,它可以为用户提供流畅的图片浏览体验。Gallery是Android SDK提供的一种水平滚动的视图组件,用户可以通过左右滑动来浏览图片,类似于iOS...

    Android改进版CoverFlow效果控件无限循环

    这个“Android改进版CoverFlow效果控件无限循环”是原生CoverFlow控件的一个增强版本,特别增加了无限循环的功能,使得用户在滚动到列表的首尾时可以无缝过渡,提供更流畅的用户体验。 CoverFlow控件的核心在于它的...

    Gallery和imageSwitcher循环显示切换图像组件

    对于`ImageSwitcher`,如果只有有限数量的图片,我们同样需要在切换到最后一张图片后再次显示第一张,反之亦然,以达到循环效果。 在项目`ch05_galleryimageswitcher`中,可能包含了以下内容: 1. `MainActivity....

Global site tag (gtag.js) - Google Analytics