Viewpager最后到最前循环滑动
2015-12-01 09:31
465 查看
选取自己项目里面的五张图片,然后无缝隙循环显示(提供思路和主要代码):
动态图片不知道如何传,随便上个静态图片:
xml:
定义当前页为300(这样最前最后滚动才可以):
将各自的imageView放在对应的容器里面:
设置当前页,并设置adapter:
adapter(其中getCount要设置为Integer.MAX_VALUE):
设置循环:
private Handler handler=new Handler();
private Runnable run=new Runnable(){
@Override
public void run() {
//主线程
if(System.currentTimeMillis()-lastTime>3000){
currentIndex++;
viewpager.setCurrentItem(currentIndex);
lastTime=System.currentTimeMillis();
}
handler.postDelayed(run, 3000);
}
};
其中int index=position%views.size() ,用图片来说明:
本地获取图片和服务器上获取图片显示,广告无缝轮状有些不同:
初始定义的: viewpager.setCurrentItem(currentIndex); 和currentIndex 需对应
还有adapter里面的instantiateItem:
//添加
@Override
public Object instantiateItem(View container, int position) {
ImageView iv;
try {
xxxpostingPost=top.get(position%top.size());
iv = new ImageView(getBaseContext());
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setTag(postingPost.getxxx_reply_id());
iv.setOnClickListener(new AadvertisementClick());
String img=HttpUtil.xxxx+(String) new JSONArray(xxxx.getxxx_img()).get(0);
imageLoader.displayImage(img, iv, options);
((ViewPager) container).addView(iv);
return iv;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
动态图片不知道如何传,随便上个静态图片:
xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" /> <LinearLayout android:id="@+id/linearlayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:orientation="horizontal" > </LinearLayout> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:text="@string/hello_world" /> </LinearLayout>
定义当前页为300(这样最前最后滚动才可以):
private int currentIndex=300;//当前页面的下标
将各自的imageView放在对应的容器里面:
for (int i = 0; i < imagePath.length; i++) { //广告图片 ImageView img=new ImageView(this); img.setImageResource(imagePath[i]); views.add(img); //圈的图片 ImageView img_circle=new ImageView(this); img_circle.setImageResource(R.drawable.v_no);//默认没有选中 img_circle.setPadding(10, 5, 10, 5); linearlayout.addView(img_circle); }
设置当前页,并设置adapter:
//适配器 adapter=new MyAdapter(); viewpager.setAdapter(adapter); viewpager.setCurrentItem(300);//不可以为0,否则不能无缝轮转 viewpager.setOnPageChangeListener(this); handler.postDelayed(run, 3000);
adapter(其中getCount要设置为Integer.MAX_VALUE):
private class MyAdapter extends PagerAdapter{ @Override public int getCount() { //有多少页 return Integer.MAX_VALUE;//2的31次方-1 } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public Object instantiateItem(View container, int position) { //添加图片 int index=position%views.size(); ((ViewPager)container).addView(views.get(index)); return views.get(index); } @Override public void destroyItem(View container, int position, Object object) {//销毁图片 ((ViewPager)container).removeView(views.get(position%views.size())); } }
设置循环:
private Handler handler=new Handler();
private Runnable run=new Runnable(){
@Override
public void run() {
//主线程
if(System.currentTimeMillis()-lastTime>3000){
currentIndex++;
viewpager.setCurrentItem(currentIndex);
lastTime=System.currentTimeMillis();
}
handler.postDelayed(run, 3000);
}
};
其中int index=position%views.size() ,用图片来说明:
本地获取图片和服务器上获取图片显示,广告无缝轮状有些不同:
初始定义的: viewpager.setCurrentItem(currentIndex); 和currentIndex 需对应
还有adapter里面的instantiateItem:
//添加
@Override
public Object instantiateItem(View container, int position) {
ImageView iv;
try {
xxxpostingPost=top.get(position%top.size());
iv = new ImageView(getBaseContext());
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setTag(postingPost.getxxx_reply_id());
iv.setOnClickListener(new AadvertisementClick());
String img=HttpUtil.xxxx+(String) new JSONArray(xxxx.getxxx_img()).get(0);
imageLoader.displayImage(img, iv, options);
((ViewPager) container).addView(iv);
return iv;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
相关文章推荐
- Libnfc
- 解决Swing控件setEnabled(false)时的字体颜色
- ibatis 开发手册
- iOS中设置tableview的选中时的文字颜色
- JSON使用(4)
- java程序错误类型及异常处理
- 深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
- [LeetCode]Longest Increasing Subsequence
- 详细解析Java中抽象类和接口的区别
- java的抽象类
- Hudson:一款持续构建工具
- jvm参数调优,及参数配置
- win7+vs2010的程序移植到win8+vs2013
- day6 python学习随笔。
- [APUE]再读之文件和目录
- Hbase 知识点记录总结(1)
- JSON语法(3)
- Java的接口及实例
- c++删除文件
- Java 的 MD5 加密——Java自带的 MD5 加密