Viewpager最后到最前循环滑动
来源:互联网 发布:白苹果怎么恢复数据 编辑:程序博客网 时间:2024/06/09 19:37
选取自己项目里面的五张图片,然后无缝隙循环显示(提供思路和主要代码):
动态图片不知道如何传,随便上个静态图片:
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{@Overridepublic int getCount() {//有多少页return Integer.MAX_VALUE;//2的31次方-1}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0==arg1;}@Overridepublic Object instantiateItem(View container, int position) {//添加图片int index=position%views.size();((ViewPager)container).addView(views.get(index));return views.get(index);}@Overridepublic 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(){@Overridepublic 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;
}
- Viewpager最后到最前循环滑动
- ViewPager左右循环滑动
- viewpager左右循环滑动
- ViewPager的循环滑动
- ViewPager的循环滑动
- Android 循环滑动viewpager
- Android-ViewPager循环滑动
- ViewPager循环滑动
- ViewPager实现循环滑动
- ViewPager循环滑动
- ViewPager实现循环滑动
- ViewPager的左右循环滑动
- ViewPager实现左右循环滑动
- 左右循环滑动的viewpager
- android viewpager左右循环滑动
- 笔记60--ViewPager循环滑动
- ViewPager实现真循环滑动
- 左右循环滑动的viewpager
- [APUE]再读之文件和目录
- Libnfc
- iOS中设置tableview的选中时的文字颜色
- ibatis 开发手册
- MyBatis源码浅析
- Viewpager最后到最前循环滑动
- Hadoop 学习知识点总结
- 解决Swing控件setEnabled(false)时的字体颜色
- SSRS No Delay for First Report of the Day
- ViewPager+FragmentPagerAdapter+RadioGroup实现顶部菜单栏
- java 中遇见的面试题。
- 计划借阅书目
- 七个你无法忽视的Git使用技巧
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题