业务需要,需要在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) {
}
});
分享到:
相关推荐
"Gallery无限循环.zip"这个压缩包文件的名字暗示了它可能包含一个关于Android应用程序开发的项目,特别是与图像展示相关的部分,比如一个图片画廊应用。在这个应用中,"Gallery"通常指的是用户可以浏览并循环查看...
反之,从第一张图片向右滑动则显示最后一张,从而达到视觉上的无限循环效果。 2. **倒影效果**:倒影效果是通过在每个图片上添加一个镜像图像来实现的。这通常需要自定义`ImageView`或者使用第三方库,通过处理图片...
本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限循环、自动跳转以及倒影效果。 首先,我们需要理解`Gallery`组件。`Gallery`是Android提供的一个HorizontalScrollView的扩展,用于...
总的来说,实现`Gallery`无限循环的关键在于正确地处理边界情况,并结合动画效果,提供平滑的用户体验。无论是手动还是自动循环,都需要关注焦点的切换时机以及相应的事件处理。在实际项目中,还可以根据需求进一步...
在本教程中,我们将深入探讨如何利用ViewPager实现一个类似画廊(Gallery)的效果,并且让其能够无限循环滚动。 首先,我们要了解ViewPager的基本用法。ViewPager是Android Support Library的一部分,它允许用户在...
在Android开发中,"无限循环...通过研究和理解这些代码,开发者可以学习如何在自己的项目中实现无限循环滑动的gallery效果。这种自定义组件的实现不仅能够提升应用的用户体验,也是对Android开发技能的深入理解和应用。
在Android开发中,实现炫丽的拖动效果是提升用户体验的重要一环,特别是使用`Gallery`组件可以创建出类似轮播图或者选择器的效果。这篇博客"Android学习记录使用Gallery实现炫丽的拖动效果"深入探讨了如何利用`...
【3D Gallery无限自动循环+倒影效果】是一款专为Android平台设计的图像展示应用,它结合了3D视觉效果和动态循环播放功能,同时增加了图片的倒影特效,为用户带来独特的视觉体验。这款应用在Android开发领域具有较高...
综上所述,结合自定义适配器、监听器以及适当的滚动处理,我们可以实现`Gallery`组件的选中高亮和无限循环滚动效果。不过,需要注意的是,`Gallery`组件在Android API 16之后已被弃用,建议使用`RecyclerView`配合`...
在这个场景中,提到的"Android Gallery 3张图无限循环 左右滑动都有效"是指一个特定的实现,即在`Gallery`中加载三张图片,并且当用户向左或向右滑动时,图片能够无缝地循环,形成一种无限滚动的效果。下面将详细...
总的来说,"android_FancyCoverFlow"项目展示了如何利用自定义控件和动画来创建一个功能丰富的3D广告板,其无限循环和倒影效果增强了用户的交互体验。对于想要在Android应用中实现类似功能的开发者,深入研究这个...
本项目标题提到的"仿安卓市场广告条(中心条目放大且无限循环的gallery)",是基于3D Gallery控件的一种改进和优化,旨在提供类似市场应用中的滑动广告展示效果,同时具备中心条目放大和无限循环的特性。 Gallery是...
在实际开发中,可能会包含一个自定义的Gallery子类,增加了动态加载和删除图片的功能,或者是用来演示如何使用反射和循环效果的代码片段。 总结来说,"Gallery循环删除图片"涉及了Android UI组件的使用、数据适配、...
然而,原生的`Gallery`组件并不支持无限循环的功能,也就是说,当用户在最后一项滑动时,无法无缝滚动回到第一项,同样在第一项滑动时也无法直接跳转到最后一项。针对这一需求,开发者通常需要自定义`Adapter`来实现...
最后,如果你有一个名为“无限循环广告demo”的项目,那么它可能包含了完整的实现代码和资源文件,你可以参考该项目的代码来更好地理解`Gallery`广告循环的实现方式。 总的来说,通过使用Android的`Gallery`控件,...
在这个特定的案例中,"可左右循环滑动的gallery图片轮播demo"是一个实现这种功能的示例项目,允许用户向左或向右滑动来浏览图片,同时支持自动定时切换,为用户提供流畅的浏览体验。 首先,我们要理解“左右循环...
在Android开发中,实现图片拖动效果,如“Gallery”组件,是一种常见的需求,它可以为用户提供流畅的图片浏览体验。Gallery是Android SDK提供的一种水平滚动的视图组件,用户可以通过左右滑动来浏览图片,类似于iOS...
这个“Android改进版CoverFlow效果控件无限循环”是原生CoverFlow控件的一个增强版本,特别增加了无限循环的功能,使得用户在滚动到列表的首尾时可以无缝过渡,提供更流畅的用户体验。 CoverFlow控件的核心在于它的...
对于`ImageSwitcher`,如果只有有限数量的图片,我们同样需要在切换到最后一张图片后再次显示第一张,反之亦然,以达到循环效果。 在项目`ch05_galleryimageswitcher`中,可能包含了以下内容: 1. `MainActivity....