package com.liyu.fakeweather.ui.base; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.annotation.MenuRes; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.liyu.fakeweather.R; import com.liyu.fakeweather.utils.SettingsUtil; public abstract class BaseActivity extends AppCompatActivity { protected Toolbar toolbar; protected abstract @LayoutRes int getLayoutId(); protected abstract @MenuRes int getMenuId(); protected abstract void initViews(Bundle savedInstanceState); protected abstract void loadData(); static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initTheme(); setContentView(getLayoutId()); initToolBar(); initViews(savedInstanceState); loadData(); } private void initToolBar() { toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); } protected void setDisplayHomeAsUpEnabled(boolean enable) { if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(enable); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (getMenuId() != 0) { getMenuInflater().inflate(getMenuId(), menu); return true; } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } private void initTheme(){ int themeIndex = SettingsUtil.getTheme(); switch (themeIndex){ case 0: setTheme(R.style.LapisBlueTheme); break; case 1: setTheme(R.style.PaleDogwoodTheme); break; case 2: setTheme(R.style.GreeneryTheme); break; case 3: setTheme(R.style.PrimroseYellowTheme); break; case 4: setTheme(R.style.FlameTheme); break; case 5: setTheme(R.style.IslandParadiseTheme); break; case 6: setTheme(R.style.KaleTheme); break; case 7: setTheme(R.style.PinkYarrowTheme); break; case 8: setTheme(R.style.NiagaraTheme); break; } } protected void hideSystemUI() { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } protected void showSystemUI() { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } }