package com.ouchadam.swipeableview;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
public class SwipeableView extends ViewPager {
private static final int VIEW_COUNT = 2;
private boolean canSwipe;
public SwipeableView(Context context) {
super(context);
init(LayoutInflater.from(context));
}
public SwipeableView(Context context, AttributeSet attrs) {
super(context, attrs);
init(LayoutInflater.from(context));
}
private void init(LayoutInflater layoutInflater) {
canSwipe = true;
setOnPageChangeListener(onPageChangeListener);
setAdapter(new ViewAdapter(layoutInflater));
}
private final OnPageChangeListener onPageChangeListener = new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == 1) {
canSwipe = false;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (canSwipe) {
return super.onInterceptTouchEvent(ev);
}
return false;
}
private static class ViewAdapter extends PagerAdapter {
private final LayoutInflater layoutInflater;
private ViewAdapter(LayoutInflater layoutInflater) {
this.layoutInflater = layoutInflater;
}
@Override
public int getCount() {
return VIEW_COUNT;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View inflate = getViewForPosition(container, position);
container.addView(inflate);
return inflate;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
private View getViewForPosition(ViewGroup container, int position) {
return layoutInflater.inflate(position == 0 ? R.layout.swipe_page : R.layout.content, container, false);
}
}
}