package jianshu.io.app; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.ImageView; import java.util.Timer; import java.util.TimerTask; import jianshu.io.app.model.CoverDownloader; import jianshu.io.app.stackblur.StackBlurManager; public class SplashActivity extends Activity { ImageView mSplash; View mIntroView; Bitmap[] mBitmaps; Handler mHandler; int mIndex; StackBlurManager mStackBlurManager; private static final int[] STEPS = new int[]{205, 155, 105, 55, 5, 0}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); mHandler = new Handler(); mSplash = (ImageView) findViewById(R.id.splash); mIntroView = findViewById(R.id.intro); boolean isSplashToShow = false; SharedPreferences preferences = getSharedPreferences("jianshu", MODE_PRIVATE); String cover = preferences.getString("cover", null); if (cover != null) { String coverShown = preferences.getString("shown", null); if (coverShown == null || !coverShown.equals(cover)) { isSplashToShow = true; preferences.edit().putString("shown", cover).commit(); final Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if (mBitmaps == null) { mBitmaps = CoverDownloader.getInstance().loadCover(SplashActivity.this); if (mBitmaps == null) { timer.cancel(); timer.purge(); SplashActivity.this.finish(); startActivity(new Intent(SplashActivity.this, MainActivity.class)); } } mHandler.post(new Runnable() { @Override public void run() { if (mIndex < mBitmaps.length) { Bitmap bitmap = mBitmaps[mIndex]; mSplash.setImageBitmap(bitmap); } else if (mIndex == mBitmaps.length) { mIntroView.setVisibility(View.VISIBLE); } else if (mIndex == mBitmaps.length + 10) { timer.cancel(); timer.purge(); SplashActivity.this.finish(); startActivity(new Intent(SplashActivity.this, MainActivity.class)); } mIndex++; } }); } }, 0, 200); } } if(!isSplashToShow) { SplashActivity.this.finish(); startActivity(new Intent(SplashActivity.this, MainActivity.class)); } } @Override protected void onPause() { super.onDestroy(); if (mBitmaps != null) { for (int i = 0; i < mBitmaps.length; i++) { if (mBitmaps[i] != null) { mBitmaps[i].recycle(); } } } } }