改良的Android ViewPager小部件:InfiniteViewPager
InfiniteViewPager是一種改良的Android ViewPager小部件,允許無限的分頁和自動滾動。
功能
- 自動滑動到下一頁
- 平滑的滑到首頁以及到尾頁.
- View重用,不用擔心內存泄露
- 支持指示器(對ViewpagerIncicator做了一定修改)
- 調用ViewPager.setCurrentItem()不卡頓, 比常用的解決方案好 </ul>
演示
使用
幾乎跟viewpager一樣. 以下是步驟.
在xml布局中定義
<RelativeLayout android:layout_width="fill_parent" android:layout_height="200dp"> <com.zanlabs.widget.infiniteviewpager.InfiniteViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="fill_parent" android:visibility="visible" /> <com.zanlabs.widget.infiniteviewpager.indicator.LinePageIndicator android:id="@+id/indicator" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:fillColor="#e3ffc7" app:pageColor="#5fff65" /> </RelativeLayout>
繼承InfinitePagerAdapter
跟繼承BaseAdapter類似. 需要重寫getView以及getItemCount(不是getCount)方法
@Override public View getView(int position, View view, ViewGroup container) { ViewHolder holder; if (view != null) { holder = (ViewHolder) view.getTag(); } else { view = mInflater.inflate(R.layout.item_infinite_viewpager, container, false); holder = new ViewHolder(view); view.setTag(holder); } PagerItem item = mList.get(position); holder.position = position; holder.name.setText(item.getName()); holder.description.setText(item.getDesc()+"position:"+position); Picasso.with(mContext).load(item.getImageUrl()).placeholder(R.mipmap.bg_loding_horizontal).into(holder.image); return view; } @Override public int getItemCount() { return mList==null?0:mList.size(); }
設置activity或者fragment.
@Override protected void onCreate(Bundle savedInstanceState) { // MockPagerAdapter pagerAdapter = new MockPagerAdapter(this); pagerAdapter.setDataList(MockDataGenerator.getViewPagerData()); mViewPager.setAdapter(pagerAdapter); mViewPager.setAutoScrollTime(5000); mViewPager.startAutoScroll(); mLineIndicator.setViewPager(mViewPager); // } @Override public void onStart() { super.onStart(); if (mViewPager != null) mViewPager.startAutoScroll(); } @Override public void onStop() { if (mViewPager != null) mViewPager.stopAutoScroll(); super.onStop(); }
更多可以參考sample項目.
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!