最近在研究viewpager,准备做循环拖动即A->B->C->A->B->C->A->...
找了一下相关资料,只有stactoverflow上有一条比较靠谱的资料,但是不全,自己琢磨了一下,实现了循环拖动。
这里只需要对pageadapter进行操作,源代码如下:
public class ViewPagerAdapter extends PagerAdapter{
private List<View> views;
Context context;
int mCount;
public ViewPagerAdapter(Context context,List<View> views){
this.views=views;
this.context=context;
mCount = views.size() +1;
}
@Override
public void destroyItem(View collection, int position, Object arg2) {
if (position >= views.size()-1) {
int newPosition = position%views.size();
position = newPosition;
((ViewPager) collection).removeView(views.get(position));
}
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public int getCount() {
return mCount;
}
@Override
public Object instantiateItem(View collection, int position) {
if (position >= views.size()-1) {
int newPosition = position%views.size();
position = newPosition;
mCount++;
}
try {
((ViewPager) collection).addView(views.get(position),0);
} catch (Exception e) {
}
return views.get(position);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==(object);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
}
再附上Activity的源码:
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
public class ViewPageDemoActivity extends Activity {
ViewPager pager;
LayoutInflater inflater;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pager=(ViewPager) this.findViewById(R.id.view_pager);
inflater=LayoutInflater.from(this);
List<View> views=new ArrayList<View>();
View view1=inflater.inflate(R.layout.layout1, null);
View view2=inflater.inflate(R.layout.layout2, null);
View view3=inflater.inflate(R.layout.layout3, null);
Views.add(view1);
Views.add(view2);
Views.add(view3);
ViewPagAdapter adapter=new ViewPagAdapter(this, views);
pager.setAdapter(adapter);
}
}
分享到:
相关推荐
5. **处理拖拽**:ViewPager默认支持手势拖拽,但为了处理边界情况,我们需要在`onPageScrolled()`回调中做额外的逻辑判断,确保在拖动到边界时能够正确处理页面的切换,保持无限循环的效果。 6. **引导图**:引导...
在本教程中,我们将深入探讨如何利用ViewPager实现一个类似画廊(Gallery)的效果,并且让其能够无限循环滚动。 首先,我们要了解ViewPager的基本用法。ViewPager是Android Support Library的一部分,它允许用户在...
本教程将深入探讨如何利用ViewPager来实现类似启动器的左右拖动效果,并提供源码参考。 首先,我们需要了解ViewPager的基本用法。ViewPager是Android Support Library中的一个控件,它允许用户通过手势或编程方式在...
- 可能会有一个内部布尔变量`isDragging`来跟踪用户是否在拖动`ViewPager`,当该变量为`true`时,表示用户正在交互,自动循环应暂停。 3. **非`Integer.MAX_VALUE`实现**: - 原生的`ViewPager`可以通过设置`...
可以循环拖动的ViewPager
在QML(Qt Quick)中,GridView是一种布局管理器,用于在二维网格中显示元素,通常用于创建诸如图片库、应用列表等用户界面。而在这个主题中,我们要讨论如何在GridView中添加滚动条和翻页功能,使得用户可以通过...
Android中的ViewPager”是为了在Swift环境下模仿Android中的ViewPager功能,创建一个无限循环的广告轮播组件。在Android开发中,ViewPager是一个常用的组件,它允许用户左右滑动查看多个页面,通常用于展示广告或一...
总之,“可以横向拖动的TabHost”是一种创新的用户界面设计,通过结合传统的TabHost和滑动视图组件(如ViewPager),实现了更加直观和用户友好的界面交互。在实际开发中,这种技术可以帮助提升应用的吸引力和易用性...
首先,关于"循环播放",这个特性意味着Banner控件会自动地从第一个广告滑动到最后一个,然后无缝返回到第一个,形成一个无限循环的效果。这通常通过在ViewPager的数据源中设置适当的逻辑来实现,可能涉及到适配器的...
本项目“ADBannerUI-master”显然是一个实现Android轮播图功能的开源库,它提供了联网获取图片并支持用户手动拖动和自动定时切换的能力,而且具备无限循环的特点,使得用户体验更加流畅。 首先,我们要理解轮播图的...
为了实现无限循环的滑动效果,你需要在适配器中进行特殊处理,确保无论用户向左滑还是向右滑,都能正确地跳转到正确的页面。 在自定义Launcher时,还需要考虑图标、快捷方式、文件夹等元素的显示和交互。这通常涉及...
在描述中提到的“结合Gridview的拖动”,指的是可能添加了自定义的触摸监听事件,使用户可以通过拖动来交互和操作GridView中的项。 2. **广告的滑动**: 在Android应用中,广告通常以轮播图的形式出现,这涉及到滑动...
首先,`ViewPager广告轮播+无限循环+定时播放.rar`,这是一个常见的广告轮播组件实现。ViewPager是Android中用于展示可滑动的页面集合的控件,它可以实现左右滑动切换页面的效果。在这个Demo中,通过适配器...
在实际项目中,我们可能会遇到自定义需求,如无限循环的轮播图、带有指示器的翻页等。这时,我们需要对原有的滑动框架进行扩展,增加相应的逻辑处理。例如,通过维护一个虚拟的页面列表,可以实现无边界滑动;为每个...
"高仿QQ未读消息badge拖拽水滴效果"是指在界面上模拟QQ应用中的未读消息提示,当用户触摸并拖动这个提示时,它会像水滴一样动态变形,增加了用户体验的趣味性和互动性。同时,"网易新闻viewPager特效集成"意味着该...
一个无限滚动的ViewPager 8 自定义ListView中实现多列和可变大小的元素 9 Cube-SDK 是一个开发框架。这个框架致力于快速实现需求,解放生产力。 10 很强大的滑动layout 11 上下左右都可以使用的可拖拽控件 12 这是...
3. **轮播图效果**:许多应用中都有轮播图组件,如ViewPager配合PagerAdapter可以实现图片或内容的自动滑动展示,还可以添加左右滑动指示器、过渡动画等。 4. **滑动菜单和抽屉布局**:侧滑菜单(Sliding Drawer)...
ImageView是Android系统提供的用于显示图片的基础控件,而GestureDetector可以帮助我们检测用户的触摸手势,如捏合、拖动等,从而实现图片的缩放和平移。这里可能需要用到ScaleGestureDetector来处理缩放操作,通过...
### Android入门知识点详解 #### 一、Android简介 ... - 支持循环显示、自动播放等功能。 以上内容概述了Android入门所需的基础知识,涵盖了从基本概念到常见控件的使用方法,对于初学者来说是非常宝贵的学习资料。