简单的ViewPager 上节是讲了用一个viewPager 做一个简单的引导页,这节是通过 自定义ViewPager 实现可以监控ViewPager的状态,在项目中,可以通过自定义的ViewPager 来实现自定义的事件。
实现步骤:
一、通过继承ViewPager
二、然后在自定义的类中定义监听器接口与方法
三、在Activity中实现监听器
代码:
一、splash.xml:
<com.example.AndroidStuct.view.CustomViewPager
android:id="@+id/customViewPager"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/> 二、自定义ViewPager :CustomViewPager
public class CustomViewPager extends ViewPager {
private int count;
//坐标
private float mLastDownX,mLastDownY;
//是否结束
private boolean isFinish;
private int mLimitDis;
private OnFinishListener onFinishListener;
//默认构造
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.i("CustomViewPager", "getCurrentItem"+getCurrentItem());
if(getCurrentItem() == (count-1)){
int action = ev.getAction();
float x = ev.getX();
float y = ev.getY();
switch (action){
case MotionEvent.ACTION_DOWN:
mLastDownX = x;
mLastDownY = y;
break;
case MotionEvent.ACTION_MOVE:
float dis = mLastDownX - x;
if(dis - mLimitDis > 0 && !isFinish){
if(onFinishListener != null){
onFinishListener.onFinish();
}
isFinish = true;
return true;
}
}
}
return super.onTouchEvent(ev); //To change body of overridden methods use File | Settings | File Templates.
}
@Override
public void setAdapter(PagerAdapter adapter) {
super.setAdapter(adapter); //To change body of overridden methods use File | Settings | File Templates.
//得到适配器中,图片的数量
count = adapter.getCount();
mLimitDis = getWidth()/3;
}
//设置结束监听器接口
public interface OnFinishListener{
void onFinish();
}
//设置监听器
public void setOnFinishListener(OnFinishListener listener){
onFinishListener = listener;
}
} 三、实现监听器
public void initGuidPager(){
//获得自定义viewPager
customViewPager = (CustomViewPager)findViewById(R.id.customViewPager);
//获得assert中的图片文件
AssetManager assetManager = getResources().getAssets() ;
try {
//得到guide文件夹中的图片的文件名
guideImageUrl = assetManager.list("guide");
} catch (IOException exception){
exception.printStackTrace();
}
//设置adapter
customViewPager.setAdapter(new GuidePagerAdapter(getSupportFragmentManager()));
customViewPager.setOnFinishListener(new CustomViewPager.OnFinishListener() {
@Override
public void onFinish() {
//To change body of implemented methods use File | Settings | File Templates.
Toast.makeText(SplashActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
}
效果图:

![]()
|