Giter Site home page Giter Site logo

loopviewpager's Introduction

LoopViewPager

无限循环的viewpager

真正的无限循环,使用简单

简单说下功能吧:无限轮播(就算一张图片也会轮播,不会报错)、手指滑动时暂停自动轮播、图片点击返回正确的position,切换流畅,效果好

使用方法:

compile 'com.clj.loopviewpager:loopviewpager:0.0.2'

1、xml

	<com.clj.loopviewpager.LoopViewPager
    android:id="@+id/loopviewpager"
    android:layout_width="match_parent"
    android:layout_height="100dp">
	</com.clj.loopviewpager.LoopViewPager>

2、activity

	只需要像viewpager一样设置adapter就行了
public class LoopViewPagerActivity extends AppCompatActivity {
    private LoopViewPager mLoopViewPager;
    private ArrayList<String> mUris;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loopviewpager);
        initData();
    }

    private void initData() {
        mUris = new ArrayList<>();
        mUris
                .add("http://img3.imgtn.bdimg.com/it/u=214865969,2582156998&fm=11&gp=0.jpg");
        mUris
                .add("http://wenwen.soso.com/p/20131209/20131209133813-334451836.jpg");
        mUris
                .add("http://picview01.baomihua.com/photos/20120626/m_14_634763259911718750_11073026.jpg");
        mUris
                .add("http://tupian.qqjay.com/u/2012/0202/7e1354c474562247f0bda889bc2af2b4.jpg");
        mLoopViewPager = (LoopViewPager) findViewById(R.id.loopviewpager);
        mLoopViewPager.setAdapter(new MyAdapter(this, mUris));
        //如果图片在最后一张跳转时有闪烁,可以设置为TURE
        mLoopViewPager.setBoundaryCaching(true);


        ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(
                this);
        config.threadPriority(Thread.MIN_PRIORITY + 2);
        config.denyCacheImageMultipleSizesInMemory();
        config.discCacheFileNameGenerator(new Md5FileNameGenerator());
        config.discCacheSize(50 * 1024 * 1024); // 50 MiB
        config.tasksProcessingOrder(QueueProcessingType.LIFO);
        config.threadPoolSize(3);
        config.writeDebugLogs();
        config.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024);
        // Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config.build());
    }


    private class MyAdapter extends PagerAdapter {

        /**
         * 图片资源列表
         */
        private ArrayList<String> mAdList = new ArrayList<String>();
        private ArrayList<View> mAdView = new ArrayList<View>();
        private Context mContext;
        private DisplayImageOptions mOptions;

        public MyAdapter(Context context, ArrayList<String> adList) {
            this.mContext = context;
            this.mAdList = adList;
            mOptions = new DisplayImageOptions.Builder()
                    .showImageOnFail(R.drawable.ic_launcher)
                    .imageScaleType(ImageScaleType.EXACTLY)
                    .resetViewBeforeLoading(true).cacheOnDisc(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .considerExifParams(true).build();
        }

        @Override
        public int getCount() {
            return mAdList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object obj) {
            return view == obj;
        }

        @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            final String imageUrl = mAdList.get(position);
            View view = LayoutInflater.from(mContext).inflate(
                    R.layout.header_viewpager, null);
            ImageView imageView = (ImageView) view
                    .findViewById(R.id.header_imageview);
            // 设置图片点击监听
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Uri uri = Uri.parse(imageUrl);
                    Intent it = new Intent(Intent.ACTION_VIEW, uri);
                    startActivity(it);
                }
            });
            ImageLoader.getInstance().displayImage(imageUrl, imageView,
                    mOptions);
            mAdView.add(view);
            container.addView(view);
            return view;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // 这里不需要做任何事情
        }

    }
}

loopviewpager's People

Contributors

clance avatar

Stargazers

 avatar  avatar Roy avatar  avatar  avatar  avatar

Watchers

James Cloos avatar  avatar

Forkers

lhwcoding

loopviewpager's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.