千家信息网

Android开发中怎么实现图片轮播功能

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容主要讲解"Android开发中怎么实现图片轮播功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android开发中怎么实现图片轮播功能"吧!第一
千家信息网最后更新 2025年01月18日Android开发中怎么实现图片轮播功能

本篇内容主要讲解"Android开发中怎么实现图片轮播功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android开发中怎么实现图片轮播功能"吧!

第一步:创建MainActivity类

public class BaseActivity extends ActionBarActivity {    private List mDatas;    private ViewPager mViewPager;    private boolean isRun = false;    private AutoRunTask mTask;    @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      mViewPager = new ViewPager(this);      mViewPager.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, Util        .getDimen(R.dimen.home_pic_height)));      mViewPager.setAdapter(new HomePagerAdapter());      // 设置滑动的初始位置      mViewPager.setCurrentItem(1000 * mDatas.size());      mViewPager.setOnTouchListener(this);      mTask = new AutoRunTask();      mTask.start();    }    @Override    public boolean onTouch(View v, MotionEvent event) {      switch (event.getAction()) {      case MotionEvent.ACTION_DOWN:        mTask.stop();        break;      case MotionEvent.ACTION_UP:      case MotionEvent.ACTION_CANCEL:        mTask.start();        break;      default:        break;      }      return false; //viewpager必须是false,如果是true是就不能移动    }}

第二步:创建无限循环的PagerAdaper

class HomePagerAdapter extends PagerAdapter {    // 使用此对imageView进行复用    private LinkedList convertViews = new LinkedList();    @Override    public int getCount() {      // return mPicUrls.size();      return Integer.MAX_VALUE; // 可以无线滑动    }    @Override    public boolean isViewFromObject(View arg0, Object arg1) {      return arg0 == arg1;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {      if (object != null && object instanceof ImageView) {        ImageView imageView = (ImageView) object;        // 添加到集合里        convertViews.add(imageView);        container.removeView(imageView);      }      super.destroyItem(container, position, object);    }    @Override    public Object instantiateItem(ViewGroup container, int position) {      // position 因为无线大,所以      int index = position % mDatas.size();      ImageView imageView = null;      if (convertViews != null && convertViews.size() > 0) {        // 取出一个imageView        imageView = convertViews.remove(0);      } else {        imageView = new ImageView(Util.getContext());      }      String uri = HttpHelper.URL + "image?name=" + mDatas.get(index);      mBitmapUtils.display(imageView, uri);      container.addView(imageView);      return imageView;    }}

第三步:使用handler创建轮播类

public class AutoRunTask extends Handler implements Runnable {  @Override  public void run() {    while (isRun) {      removeCallbacks(this);      int currentItem = mViewPager.getCurrentItem();      currentItem++;      mViewPager.setCurrentItem(currentItem);      postDelayed(this, 2000);    }  }  public void start() {    if (!isRun) {      removeCallbacks(this);      isRun = true;      postDelayed(this, 2000);    }  }  public void stop() {    if (isRun) {      isRun = false;      removeCallbacks(this);    }  }}

到此,相信大家对"Android开发中怎么实现图片轮播功能"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0