package com.jasonchen.microlang.activitys; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.Toast; import com.jasonchen.microlang.R; import com.jasonchen.microlang.settings.SettingUtility; import com.jasonchen.microlang.utils.GlobalContext; import com.jasonchen.microlang.utils.MythouCrashHandler; import com.jasonchen.microlang.utils.Utility; import com.jasonchen.microlang.utils.ViewUtility; import com.jasonchen.microlang.workers.TimeLineBitmapDownloader; import com.jasonchen.microlang.exception.WeiboException; /** * jasonchen * 2015/04/10 */ public class AbstractAppActivity extends ActionBarActivity { protected int mLayout = 0; protected int theme = 0; protected Toolbar mToolbar; @Override protected void onResume() { super.onResume(); GlobalContext.getInstance().setCurrentRunningActivity(this); if (!(GlobalContext.getInstance().getCurrentRunningActivity() instanceof OAuthActivity)) { if (!Utility.isTokenValid(GlobalContext.getInstance().getAccountBean())) { Utility.showExpiredTokenDialogOrNotification(); } } configTheme(); } @Override protected void onPause() { super.onPause(); if (GlobalContext.getInstance().getCurrentRunningActivity() == this) { GlobalContext.getInstance().setCurrentRunningActivity(null); } } private void configTheme() { if (theme == SettingUtility.getTheme()) { setTheme(theme); } else { reload(); return; } } public void reload() { Intent intent = getIntent(); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onCreate(Bundle savedInstanceState) { if (savedInstanceState == null) { theme = SettingUtility.getTheme(); } else { theme = savedInstanceState.getInt("theme"); } configTheme(); super.onCreate(savedInstanceState); Thread.setDefaultUncaughtExceptionHandler(new MythouCrashHandler()); GlobalContext.getInstance().setActivity(this); GlobalContext.getInstance().setCurrentRunningActivity(this); setContentView(mLayout); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); LinearLayout root = (LinearLayout) findViewById(R.id.root); View view = new View(this); LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, Utility.getStatusBarHeight()); int color = SettingUtility.getThemeColor(); if (SettingUtility.getIsNightTheme()) { view.setBackgroundColor(getResources().getColor(R.color.listview_pic_background_dark)); } else { view.setBackgroundColor(getResources().getColor(color)); } view.setLayoutParams(lParams); root.addView(view, 0); } configTheme(); mToolbar = ViewUtility.findViewById(this, R.id.toolbar); if (mToolbar != null) { setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finishWithAnimation(); } }); if (Build.VERSION.SDK_INT >= 21) { mToolbar.setElevation(getToolbarElevation()); } } } public float getToolbarElevation() { if (Build.VERSION.SDK_INT >= 21) { return 12.8f; } else { return -1; } } public TimeLineBitmapDownloader getBitmapDownloader() { return TimeLineBitmapDownloader.getInstance(); } protected void dealWithException(WeiboException e) { Toast.makeText(this, e.getError(), Toast.LENGTH_SHORT).show(); } protected void openActivityWithAnimation() { overridePendingTransition(R.anim.push_left_in, R.anim.stay); } protected void finishWithAnimation() { finish(); overridePendingTransition(R.anim.stay, R.anim.push_right_out); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!(GlobalContext.getInstance().getCurrentRunningActivity() instanceof BrowserActivity)) { finish(); overridePendingTransition(R.anim.stay, R.anim.push_right_out); } } return false; } }