package com.gzsll.hupu.ui; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.Window; import android.view.WindowManager; import com.gzsll.hupu.AppManager; import com.gzsll.hupu.MyApplication; import com.gzsll.hupu.R; import com.gzsll.hupu.injector.component.ActivityComponent; import com.gzsll.hupu.injector.component.ApplicationComponent; import com.gzsll.hupu.injector.module.ActivityModule; import com.gzsll.hupu.util.ResourceUtil; import com.gzsll.hupu.util.SettingPrefUtil; import com.gzsll.hupu.util.StatusBarUtil; import com.gzsll.hupu.util.ThemeUtil; import com.umeng.analytics.MobclickAgent; /** * Created by sll on 2016/3/9. */ public abstract class BaseActivity extends AppCompatActivity { protected ActivityComponent mActivityComponent; @Override protected void onCreate(Bundle savedInstanceState) { getApplicationComponent().inject(this); initTheme(); super.onCreate(savedInstanceState); setContentView(initContentView()); setTranslucentStatus(isApplyStatusBarTranslucency()); setStatusBarColor(isApplyStatusBarColor()); initInjector(); initUiAndListener(); AppManager.getAppManager().addActivity(this); } protected ApplicationComponent getApplicationComponent() { return ((MyApplication) getApplication()).getApplicationComponent(); } protected ActivityModule getActivityModule() { return new ActivityModule(this); } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); } private void initTheme() { int theme; try { theme = getPackageManager().getActivityInfo(getComponentName(), 0).theme; } catch (PackageManager.NameNotFoundException e) { return; } if (theme != R.style.AppThemeLaunch) { theme = ThemeUtil.themeArr[SettingPrefUtil.getThemeIndex(this)][ SettingPrefUtil.getNightModel(this) ? 1 : 0]; } setTheme(theme); } /** * 设置view */ public abstract int initContentView(); /** * 注入Injector */ public abstract void initInjector(); /** * init UI && Listener */ public abstract void initUiAndListener(); /** * is applyStatusBarTranslucency */ protected abstract boolean isApplyStatusBarTranslucency(); /** * set status bar translucency */ protected void setTranslucentStatus(boolean on) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window win = getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); } } protected abstract boolean isApplyStatusBarColor(); /** * use SystemBarTintManager */ public void setStatusBarColor(boolean on) { if (on) { StatusBarUtil.setColor(this, ResourceUtil.getThemeColor(this), 0); } } public void reload() { Intent intent = getIntent(); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); } public int getStatusBarHeight() { return ResourceUtil.getStatusBarHeight(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override protected void onDestroy() { super.onDestroy(); AppManager.getAppManager().finishActivity(this); } }