国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android開(kāi)發(fā)使用Handler的PostDelayed方法實(shí)現(xiàn)圖片輪播功能

2019-10-22 18:20:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android開(kāi)發(fā)使用Handler的PostDelayed方法實(shí)現(xiàn)圖片輪播功能。分享給大家供大家參考,具體如下:

第一步:創(chuàng)建MainActivity類(lèi)

public class BaseActivity extends ActionBarActivity {    private List<String> 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());      // 設(shè)置滑動(dòng)的初始位置      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是就不能移動(dòng)    }}

第二步:創(chuàng)建無(wú)限循環(huán)的PagerAdaper

class HomePagerAdapter extends PagerAdapter {    // 使用此對(duì)imageView進(jìn)行復(fù)用    private LinkedList<ImageView> convertViews = new LinkedList<ImageView>();    @Override    public int getCount() {      // return mPicUrls.size();      return Integer.MAX_VALUE; // 可以無(wú)線(xiàn)滑動(dòng)    }    @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 因?yàn)闊o(wú)線(xiàn)大,所以      int index = position % mDatas.size();      ImageView imageView = null;      if (convertViews != null && convertViews.size() > 0) {        // 取出一個(gè)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創(chuàng)建輪播類(lèi)

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);    }  }}

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景泰县| 滦平县| 五台县| 高邑县| 阿巴嘎旗| 曲阜市| 长顺县| 邹平县| 无锡市| 普安县| 铁力市| 安远县| 工布江达县| 成都市| 桓仁| 白城市| 托克托县| 南昌市| 高邑县| 兴国县| 江门市| 南京市| 阿拉尔市| 无棣县| 景洪市| 左权县| 利川市| 靖边县| 西和县| 廊坊市| 龙井市| 镶黄旗| 库车县| 江达县| 扎囊县| 西丰县| 泸西县| 洱源县| 云浮市| 玛多县| 黔南|