改良的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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
