package me.pjq.pushup.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import com.viewpagerindicator.PageIndicator;
import me.pjq.pushup.AppPreference;
import me.pjq.pushup.R;
import me.pjq.pushup.navigation.MainActivity;
import me.pjq.pushup.widget.CustomerViewPager;
public class UserGuideActivity extends Activity {
private static final String TAG = UserGuideActivity.class.getSimpleName();
private static final int MAX_PAGE = 5;
public static final String EXTRAS_START_FROM = "from";
public static final int START_FROM_SPLASH = 100;
public static final int START_FROM_SETTINGS = START_FROM_SPLASH + 1;
private int mStartFrom;
private CustomerViewPager mCustomerViewPager;
private MyPagerAdapter mMyPagerAdapter;
private boolean mIsFinished = false;
private PageIndicator indicator;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.page_user_guide);
mCustomerViewPager = (CustomerViewPager) findViewById(R.id.guide_view_pager);
mMyPagerAdapter = new MyPagerAdapter();
mCustomerViewPager.setAdapter(mMyPagerAdapter);
mStartFrom = getIntent().getIntExtra(EXTRAS_START_FROM, START_FROM_SPLASH);
indicator = (PageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(mCustomerViewPager);
indicator.setOnPageChangeListener(onPageChangeListener);
// Already show the user guide.
AppPreference.getInstance(getApplicationContext()).setShouldShowUserGuard(false);
}
private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// EFLogger.i(TAG, "onPageScrolled, arg0=" + arg0 + ", arg1=" + arg1 + ",arg2=" + arg2);
if (arg0 == (MAX_PAGE - 1)) {
if (mIsFinished == false && arg1 > 0.1) {
mIsFinished = true;
finishUserGuide();
}
}
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
};
private void finishUserGuide() {
if (START_FROM_SPLASH == mStartFrom) {
Intent intent = new Intent(UserGuideActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else if (START_FROM_SETTINGS == mStartFrom) {
finish();
} else {
finish();
}
}
private class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return MAX_PAGE + 1;
}
private View createItemView(LayoutInflater inflater, int drawableResId) {
int resId = R.layout.user_guide_item;
View view = inflater.inflate(resId, null);
ImageView imageView = (ImageView) view.findViewById(R.id.helperImageView);
imageView.setImageResource(drawableResId);
return view;
}
@Override
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
View view = null;
switch (position) {
case 0:
view = createItemView(inflater, R.drawable.helper1);
break;
case 1:
view = createItemView(inflater, R.drawable.helper2);
break;
case 2:
view = createItemView(inflater, R.drawable.helper3);
// ImageView startImageView = (ImageView) view.findViewById(R.id.page_user_guide_start_imageview);
//
// startImageView.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// // finish();
// Intent intent = new Intent(UserGuideActivity.this, MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
// finish();
// }
// });
break;
case 3:
view = createItemView(inflater, R.drawable.helper4);
break;
case 4:
view = createItemView(inflater, R.drawable.helper5);
break;
case MAX_PAGE:
resId = R.layout.user_guide_empty;
view = inflater.inflate(resId, null);
break;
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
finishUserGuide();
return true;
}
return super.onKeyDown(keyCode, event);
}
}