viewBanner = (ViewPager) view.findViewById(R.id.banner); viewBannerIndicator = (CircleIndicator) view.findViewById(R.id.banner_indicator);
bannerAdapter = new BannerAdapter(); viewBanner.setAdapter(bannerAdapter); viewBanner.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN:
//拖動時關閉自動滑動,防止計時器時間衝突 autoScrollBanner(false); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: autoScrollBanner(true); break; } return false; } }); viewBannerIndicator.setViewPager(viewBanner);
autoScrollBanner(true);
private static class Handler extends WeakReferenceHandler<VideoAdapter> { public Handler(VideoAdapter referent) { super(referent); } @Override public void handleMessage(Message msg, VideoAdapter adapter) { switch (msg.what) { case MSG_BANNER_NEXT: ViewPager viewBanner = adapter.viewBanner; if (viewBanner == null) return; int count = viewBanner.getAdapter().getCount(); if (count < 2) break; int next = viewBanner.getCurrentItem() + 1; next = next < count ? next : 0; viewBanner.setCurrentItem(next); if (adapter.enableAutoScrollBanner) sendEmptyMessageDelayed(MSG_BANNER_NEXT, 3000L); break; } } } private void autoScrollBanner(boolean autoScroll) { handler.removeMessages(MSG_BANNER_NEXT); this.enableAutoScrollBanner = autoScroll; if (enableAutoScrollBanner) { handler.sendEmptyMessageDelayed(MSG_BANNER_NEXT, 3000L); } } private class BannerAdapter extends PagerAdapter { @Override public int getCount() { return banners == null ? 0 : banners.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView imageView = new ImageView(mContext); Glide.with(mContext).load(banners.get(position).banner_url).fitCenter().into(imageView); //拉伸 imageView.setScaleType(ImageView.ScaleType.FIT_XY); //爲banner添加監聽 imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
} }); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }