zoukankan      html  css  js  c++  java
  • ViewPager循环滚动

    一.先写个适配器

     1 public class MyPagerAdapter extends PagerAdapter {
     2     /**
     3      * 上下文
     4      */
     5     private Context context;
     6     /**
     7      * 传入的数据
     8      */
     9     private String[] datas;
    10 
    11     public MyPagerAdapter(Context context, String[] datas) {
    12         this.context = context;
    13         this.datas = datas;
    14     }
    15 
    16     @Override
    17     public int getCount() {
    18         //此处返回最大数
    19         return Integer.MAX_VALUE;
    20     }
    21 
    22     @Override
    23     public boolean isViewFromObject(View view, Object object) {
    24         return view == object;
    25     }
    26 
    27     @Override
    28     public Object instantiateItem(ViewGroup container, int position) {
    29         //position会随着时间不断的增大 所以这里取position与上datas.length的模
    30         int i = position % datas.length;
    31         //SmartImageView是github上的一个开源图片加载框架
    32         SmartImageView smartImageView = new SmartImageView(context);
    33         smartImageView.setScaleType(ImageView.ScaleType.FIT_XY);
    34         smartImageView.setImageUrl(datas[i], null);
    35         container.addView(smartImageView);
    36 
    37         return smartImageView;
    38     }
    39 
    40     @Override
    41     public void destroyItem(ViewGroup container, int position, Object object) {
    42         container.removeView((View) object);
    43     }
    44 }

    依赖开源框架 

     compile 'com.github.snowdream.android:smartimageview:0.0.2'

    接下来是activity中的代码了

    1 private ViewPager viewPager;
    2 private MyPagerAdapter pagerAdapter;
    3 private Handler handler = new Handler();
     1 /**
     2      * view pager轮播任务类
     3      */
     4     class BannerTask implements Runnable {
     5         public void start() {
     6             //postDelayed方法的第一个参数就是实现一个Runnable
     7             //因为当前类已经实现了Runnable接口所以这里传入this,每隔5秒跟新一次
     8             handler.postDelayed(this, 5000);
     9         }
    10 
    11         @Override
    12         public void run() {
    13             //获取当前item
    14             int currentItem = viewPager.getCurrentItem();
    15             //当前item加一,展示下一个item
    16             currentItem++;
    17             viewPager.setCurrentItem(currentItem);
    18             handler.postDelayed(this, 5000);
    19         }
    20     }
    1 //设置适配器
    2 viewPager.setAdapter(pagerAdapter);
    3 //创建轮播任务对象
    4 BannerTask task = new BannerTask();
    5 //开始轮播
    6 task.start();

    不懂的地方请留言

  • 相关阅读:
    【SW4STM32生成 hex文件的设置方法】
    【004:结构体内存地址的连续问题】
    【003:使用SW4STM32不进入中断的原因】
    [转载来之雨松:NGUI研究院之为什么打开界面太慢(十三)]
    【错误总结1:unity StartCoroutine 报 NullReferenceException 错误】
    【场景切换的多种调用方式】
    【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】
    【KeyCode 键码】
    mysql
    numpy
  • 原文地址:https://www.cnblogs.com/hejiaoshou/p/7465085.html
Copyright © 2011-2022 走看看