package com.glasstunes.screenslide;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import com.glasstunes.R;
import com.viewpagerindicator.PageIndicator;
public abstract class ScreenSlideActivity extends FragmentActivity {
protected ViewPager mPager;
protected ScreenSlidePagerAdapter mPagerAdapter;
private PageIndicator mPageIndicator;
private int mInitialItem = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_screen_slide);
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
select();
}
});
mPagerAdapter = onCreatePagerAdapter();
mPager.setAdapter(mPagerAdapter);
mPageIndicator = (PageIndicator) findViewById(R.id.vpi);
if (mInitialItem > 0) {
mPageIndicator.setViewPager(mPager, mInitialItem);
} else {
mPageIndicator.setViewPager(mPager);
}
mGestureDetector = new GestureDetector(this,
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
mPager.performClick();
return true;
};
});
}
@Override
public boolean onGenericMotionEvent(MotionEvent event) {
event.setLocation(getResources().getDisplayMetrics().widthPixels
- event.getX(), event.getY());
return mGestureDetector.onTouchEvent(event)
|| mPager.onTouchEvent(event);
}
protected abstract ScreenSlidePagerAdapter onCreatePagerAdapter();
public void next() {
mPageIndicator.setCurrentItem(mPager.getCurrentItem() + 1);
}
public void prev() {
mPageIndicator.setCurrentItem(mPager.getCurrentItem() - 1);
}
public void select() {
mPagerAdapter.onSelect(mPager.getCurrentItem());
}
public void setCurrentItem(int position) {
if (mPageIndicator != null) {
mPageIndicator.setCurrentItem(position);
} else {
mInitialItem = position;
}
}
private GestureDetector mGestureDetector;
}