Banner條輪播與手動切換、指示器

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章