package com.anthony.app.module.splash;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.anthony.app.R;
import com.anthony.app.dagger.DaggerActivity;
import com.anthony.app.dagger.component.ActivityComponent;
import com.anthony.library.widgets.CircleProgressBar;
import com.anthony.library.widgets.ViewDisplay;
import com.viewpagerindicator.CirclePageIndicator;
import java.util.ArrayList;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by Anthony on 2016/9/5.
* Class Note:
* loading introduction view when firstly open this project
* or loading splash view when open this project but not the first time
* todo add Ads
*
* 第一次打开app时加载引导页
* 后面打开app时加载闪屏页
* todo 加入广告页
*/
public class LoadingActivity extends DaggerActivity {
@BindView(R.id.view_pager)
ViewPager mViewPager;
@BindView(R.id.pager_indicator)
CirclePageIndicator mPagerIndicator;
@BindView(R.id.btn_enter_home)
Button mBtnEnterHome;
@BindView(R.id.layout_intro)
RelativeLayout mLayoutIntro;
@BindView(R.id.pb_splash)
CircleProgressBar mProgressBar;
@BindView(R.id.layout_splash)
RelativeLayout mLayoutSplash;
@Inject
ViewDisplay mViewDisplay;
// @Inject
// DataManager mDataManager;
// @Inject
// MyApplication mApplication;
int[] loadingPics = new int[]{R.mipmap.loading_bg1, R.mipmap.loading_bg2, R.mipmap.loading_bg3};
private ArrayList<View> mPageView;
private AsyncTask<String, String, String> showMainTask;
private static final short SPLASH_SHOW_SECONDS = 2;
private long mShowMainTime;
@Override
protected int getContentViewID() {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
return R.layout.prj_activity_loading;
}
@Override
protected void injectDagger(ActivityComponent activityComponent) {
activityComponent.inject(this);
}
@Override
protected void initViewsAndEvents(Bundle savedInstanceState) {
loadData();
if (whetherFirstTimeEnterApp())
initIntroView();
else
initSplashView();
}
/**
* @return true ,first time entering . false, not first time
*/
public boolean whetherFirstTimeEnterApp() {
if (getDataRepository().getPreferencesHelper().isFirstTime()) {
getDataRepository().getPreferencesHelper().saveFirstTime(false);
return true;
} else {
return false;
}
}
/**
* pre load data in loading view
* todo
*/
private void loadData() {
}
private void initIntroView() {
mLayoutIntro.setVisibility(View.VISIBLE);
mLayoutSplash.setVisibility(View.INVISIBLE);
mPageView = new ArrayList<>();
for (int i = 0; i < loadingPics.length; i++) {
//初始化三张图片
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(loadingPics[i]);
mPageView.add(imageView);
}
mViewPager.setAdapter(new LoadingIvAdapter());
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == mPageView.size() - 1) {
mBtnEnterHome.setVisibility(View.VISIBLE);
} else {
mBtnEnterHome.setVisibility(View.INVISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mPagerIndicator.setViewPager(mViewPager);
mBtnEnterHome.setVisibility(View.INVISIBLE);
}
@OnClick({R.id.btn_enter_home, R.id.pb_splash})
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_enter_home:
mViewDisplay.showActivity(this, "1000");
this.finish();
break;
case R.id.pb_splash:
mProgressBar.stop();
if (!showMainTask.isCancelled()) {
showMainTask.cancel(true);
}
showMain();
finish();
break;
}
}
public class LoadingIvAdapter extends PagerAdapter {
@Override
public int getCount() {
return mPageView.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mPageView.get(position));
return mPageView.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mPageView.get(position));
}
}
private void initSplashView() {
mLayoutIntro.setVisibility(View.INVISIBLE);
mLayoutSplash.setVisibility(View.VISIBLE);
mShowMainTime = System.currentTimeMillis() + SPLASH_SHOW_SECONDS * 1000;
showMainTask = new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String[] params) {
if (System.currentTimeMillis() < mShowMainTime) {
try {
long sleepTime = mShowMainTime - System.currentTimeMillis();
if (sleepTime > 0) {
Thread.sleep(mShowMainTime - System.currentTimeMillis());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String o) {
showMain();
finish();
}
};
showMainTask.execute();
}
/**
* main view
*/
protected void showMain() {
mViewDisplay.showActivity(this, "1000");
}
}