Android图片无限轮播的实现代码

Android图片无限轮播的实现代码,第1张

概述本文实例为大家分享了AnAndroid图片无限轮播的具体代码,供大家参考,具体内容如下

本文实例为大家分享了AnAndroID图片无限轮播的具体代码,供大家参考,具体内容如下

public class MainActivity extends Activity {  private VIEwPager vIEwPager;  private linearLayout ll_dot;   private String[] imageUrls = new String[] {  "http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg","http://pic2.nipic.com/20090424/1468853_230119053_2.jpg","http://img3.3lian.com/2013/s1/20/d/57.jpg","http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg","http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg" };  //private String[] imageUrls = new String[] {      //"http://192.168.230.1:8080/ab.jpg",//"http://192.168.230.1:8080/ae.jpg",//"http://192.168.230.1:8080/af.jpg",//"http://192.168.230.1:8080/ah.jpg" };  private ArrayList<ImageVIEw> vIEwList;  private ArrayList<ImageVIEw> dotList;  Handler handler = new Handler() {    public voID handleMessage(androID.os.Message msg) {      // 先去获取到当前条目索引      int currentItem = vIEwPager.getCurrentItem();      // 条目索引+1      currentItem++;      // 重新设置给vIEwPager      vIEwPager.setCurrentItem(currentItem);      // 再调用发延时消息的方法      sendDelayMessage();    };  };  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    vIEwPager = (VIEwPager) findVIEwByID(R.ID.vIEwPager);    ll_dot = (linearLayout) findVIEwByID(R.ID.ll_dot);    // 初始化图片    initVIEwList();    // 初始化小圆点    initDots();    // 设置数据适配器    vIEwPager.setAdapter(new MyPagerAdapter(this,vIEwList,handler));    // 设置初始的展示条目    vIEwPager.setCurrentItem(vIEwList.size() * 100000);    // 设置延时切换    sendDelayMessage();    // 监听vIEwPager的一个滑动事件    vIEwPager.setonPagechangelistener(new OnPagechangelistener() {      @OverrIDe      public voID onPageSelected(int position) {        // 遍历小点的集合        for (int i = 0; i < dotList.size(); i++) {          // 如果当前的索引值和i相等          if (position % dotList.size() == i) {            // 设置小点为亮色            dotList.get(i).setimageResource(R.drawable.dot_focuse);          } else {            // 否则暗色            dotList.get(i).setimageResource(R.drawable.dot_normal);          }        }      }      @OverrIDe      public voID onPageScrolled(int arg0,float arg1,int arg2) {      }      @OverrIDe      public voID onPageScrollStateChanged(int arg0) {      }    });  }  /**   * 发送延时消息   */  private voID sendDelayMessage() {    handler.sendEmptyMessageDelayed(0,2000);  }  private voID initDots() {    // 创建一个装小点控件的集合    dotList = new ArrayList<ImageVIEw>();    dotList.clear();    for (int i = 0; i < imageUrls.length; i++) {      ImageVIEw imageVIEw = new ImageVIEw(this);      if (i == 0) {        // 如果是第一张,默认给一个亮的小点        imageVIEw.setimageResource(R.drawable.dot_focuse);      } else {        // 如果不是滴一个,默认给一个暗的小点        imageVIEw.setimageResource(R.drawable.dot_normal);      }      // 设置小点的默认宽高为20dp      LayoutParams params = new LayoutParams(20,20);      // 设置小点的间距      params.setmargins(5,5,0);      ll_dot.addVIEw(imageVIEw,params);      // 往小点集合中添加vIEw      dotList.add(imageVIEw);    }  }  private voID initVIEwList() {    // 先使用xutils的工具类    BitmapUtils bitmapUtils = new BitmapUtils(this);    vIEwList = new ArrayList<ImageVIEw>();    for (int i = 0; i < imageUrls.length; i++) {      // 创建imageVIEw 并通过工具类将图片设置到控件上      ImageVIEw imageVIEw = new ImageVIEw(this);      bitmapUtils.display(imageVIEw,imageUrls[i]);      vIEwList.add(imageVIEw);    }  }}

适配器

public class MyPagerAdapter extends PagerAdapter {  private List<ImageVIEw> vIEwList;  private Context context;  private Handler handler;  public MyPagerAdapter(Context context,List<ImageVIEw> vIEwList,Handler handler) {    this.context = context;    this.vIEwList = vIEwList;    this.handler = handler;  }  @OverrIDe  public int getCount() {    return Integer.MAX_VALUE;  }  @OverrIDe  public boolean isVIEwFromObject(VIEw arg0,Object arg1) {    return arg0 == arg1;  }  @OverrIDe  public Object instantiateItem(VIEwGroup container,int position) {    // 通过控件集合获取imageVIEw 添加到容器中,并作为key 返回    ImageVIEw imageVIEw = vIEwList.get(position % vIEwList.size());    imageVIEw.setontouchListener(new OntouchListener() {      @OverrIDe      public boolean ontouch(VIEw v,MotionEvent event) {        switch (event.getAction()) {        // 当按下的时候,停止轮播        case MotionEvent.ACTION_DOWN:          // 移除所有的回调和消息          handler.removeCallbacksAndMessages(null);          break;        // 抬起        case MotionEvent.ACTION_UP:          handler.sendEmptyMessageDelayed(0,2000);          break;        // 取消的时候,继续开始录播        case MotionEvent.ACTION_CANCEL:          handler.sendEmptyMessageDelayed(0,2000);          break;        default:          break;        }        //触摸事件不被消费,true 消费该触摸事件        return true;      }    });    container.addVIEw(imageVIEw);    return imageVIEw;  }  @OverrIDe  public voID destroyItem(VIEwGroup container,int position,Object object) {    // super.destroyItem(container,position,object);    container.removeVIEw((VIEw) object);  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android图片无限轮播的实现代码全部内容,希望文章能够帮你解决Android图片无限轮播的实现代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存