InfiniteCycleViewPager 项目里有一个
HorizontalInfiniteCycleViewPager类 继承的ViewPager 实现了自己的一个ViewPageable接口 , 主要是就拿到InfiniteCycleManager 内部层逻辑处理后传递的参数,我们来调用系统的viewPager的代码;
InfiniteCycleManager 控制写逻辑代码
InfiniteCyclePagerAdapter 是一个包装类,用户传递过来pagerAdapter 实现类
package com.gigamole.infinitecycleviewpager;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import static android.support.v4.view.ViewPager.OnPageChangeListener;
import static android.support.v4.view.ViewPager.PageTransformer;
/**
* Created by GIGAMOLE on 7/27/16.
*/
// Interface that duplicate methods of ViewPager for implements it in Horizontal and Vertical
// InfiniteCycleViewPager for casting them to ViewPageable in InfiniteCycleManager
interface ViewPageable {
boolean hasWindowFocus();
int getCurrentItem();
int getChildCount();
View getChildAt(final int index);
PagerAdapter getAdapter();
boolean post(final Runnable runnable);
void addOnPageChangeListener(final OnPageChangeListener onPageChangeListener);
void setClipChildren(final boolean clipChildren);
void setDrawingCacheEnabled(final boolean drawingCacheEnabled);
void setWillNotCacheDrawing(final boolean willNotCacheDrawing);
void setOverScrollMode(final int overScrollMode);
void setCurrentItem(final int item);
void setPageTransformer(final boolean reverseDrawingOrder, final PageTransformer transformer);
void setPageMargin(final int pageMargin);
void setOffscreenPageLimit(final int offscreenPageLimit);
boolean isFakeDragging();
boolean beginFakeDrag();
void fakeDragBy(final float dragBy);
void endFakeDrag();
}
其实 HorizontalInfiniteCycleViewPager 他就是自定义的�ViewPager
推荐 GitHub: https://github.com/Devlight/InfiniteCycleViewPager
网友评论