最近在研究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);
}
}
分享到:
相关推荐
可实现ViewPager向前或向后无限循环左右滑动翻页效果
ViewPager循环显示,外加一个删除当前页的功能
一个viewpager无限循环的demo,自己留着以后用
ViewPager循环滑动简单例子。可以左右循环滑动。
一个简单的,关于ViewPager的循环案例。大家不喜欢勿喷,我只是想帮助些需要帮助的人,顺便赚点小分。
咋一看是实现了ViewPager的循环滑动,其中还解决了一个小于等于三张时报错的一个bug
通过判断viewpager滑动事件,实现左右循环滑动,外加定时滑动
viewpager真正无限循环
实现viewpager的左右循环滑动功能及自动播放
demo采用viewpager实现了自动滑动,循环左右滑动的广告栏。
一个自定义控件,实现ViewPager中拖动功能,并自定义相关控制事件
非常不错的,无线循环的viewpager,作为引导页非常不错。
ViewPager的无限循环滑动,左右都可以,动态添加在第一次加入的这一轮滑动会导致页面排序的小小混乱(问题不大,可以自行解决)。
Viewpager左右循环滚动的一种实现仅供参考 推荐使用SDK版本在2.2以上 编码格式为UTF-8
类似用户引导页,可以滑动,左右滑动已经有大量实现,但循环滑动实现较少或者实现的效果不是很好。 效果不好主要体现在大概以下四个方面:图片少的时候会崩溃、单张图片的时候引导点存在、最后一张与第一张图片之间...
ViewPager实现了循环滚动的Fragment,当滑动到最后和第一页开始循环滚动的时候,没有动画效果。
ViewPager -- 在Android3.0引入 >为了让低版本使用这个组件, 需要Android-support-v4.jar 1. 解除依赖 android denpency(工程右键-属性--javabuildpath -library ...定时循环播放图片使用Timer和TimerTask实现
实现安卓上的viewpager循环滑动,即下即用
ViewPager控件的无限循环Demo,有详细注释,个人心得!
此Demo通过使用ViewPager控件实现图片无限循环展示