package io.hefuyi.listener.ui.activity; import android.app.FragmentManager; import android.os.Bundle; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import com.afollestad.appthemeengine.ATE; import com.afollestad.appthemeengine.Config; import com.afollestad.appthemeengine.customizers.ATEActivityThemeCustomizer; import com.afollestad.materialdialogs.color.ColorChooserDialog; import io.hefuyi.listener.R; import io.hefuyi.listener.ui.fragment.SettingFragment; import io.hefuyi.listener.util.ColorUtil; public class SettingActivity extends BaseActivity implements ColorChooserDialog.ColorCallback, ATEActivityThemeCustomizer { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(R.string.settings); PreferenceFragment fragment = new SettingFragment(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.clear(); return true; } @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: break; } return super.onOptionsItemSelected(item); } @Override public int getActivityTheme() { return PreferenceManager.getDefaultSharedPreferences(this).getBoolean("dark_theme", false) ? R.style.AppThemeDark : R.style.AppThemeLight; } @Override public void onColorSelection(@NonNull ColorChooserDialog dialog, @ColorInt int selectedColor) { final Config config = ATE.config(this, getATEKey()); config.primaryColor(selectedColor); config.primaryColorDark(ColorUtil.getStatusBarColor(selectedColor)); config.accentColor(selectedColor); config.commit(); Config.markChanged(this, "light_theme"); recreate(); // recreation needed to reach the checkboxes in the preferences layout } }