From c28308b1e32c9dfe6588f13477fd6a47c0f1dab0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 20 Jul 2016 18:51:12 +0200 Subject: [PATCH] add Dark Theme --- app/src/main/AndroidManifest.xml | 10 ++++-- .../com/simplemobiletools/camera/Config.java | 8 +++++ .../simplemobiletools/camera/Constants.java | 1 + .../camera/activities/AboutActivity.java | 3 +- .../camera/activities/LicenseActivity.java | 3 +- .../camera/activities/MainActivity.java | 3 +- .../camera/activities/SettingsActivity.java | 21 +++++++++-- .../camera/activities/SimpleActivity.java | 35 +++++++++++++++++++ app/src/main/res/layout/activity_settings.xml | 26 ++++++++++++++ app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-v21/styles.xml | 4 +++ app/src/main/res/values-v23/styles.xml | 4 +++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 12 +++++++ 16 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/simplemobiletools/camera/activities/SimpleActivity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 97e4a87d..3bd29c37 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,15 +63,19 @@ + android:label="@string/third_party_licences" + android:parentActivityName=".activities.AboutActivity"/> + android:label="@string/about" + android:parentActivityName=".activities.MainActivity"/> + android:allowTaskReparenting="true" + android:label="@string/settings" + android:parentActivityName=".activities.AboutActivity"/> diff --git a/app/src/main/java/com/simplemobiletools/camera/Config.java b/app/src/main/java/com/simplemobiletools/camera/Config.java index 4035b44c..a72bbfa6 100644 --- a/app/src/main/java/com/simplemobiletools/camera/Config.java +++ b/app/src/main/java/com/simplemobiletools/camera/Config.java @@ -22,6 +22,14 @@ public class Config { mPrefs.edit().putBoolean(Constants.IS_FIRST_RUN, firstRun).apply(); } + public boolean getIsDarkTheme() { + return mPrefs.getBoolean(Constants.IS_DARK_THEME, false); + } + + public void setIsDarkTheme(boolean isDarkTheme) { + mPrefs.edit().putBoolean(Constants.IS_DARK_THEME, isDarkTheme).apply(); + } + public boolean getLongTapEnabled() { return mPrefs.getBoolean(Constants.LONG_TAP, true); } diff --git a/app/src/main/java/com/simplemobiletools/camera/Constants.java b/app/src/main/java/com/simplemobiletools/camera/Constants.java index 5b0f5eda..8bbe8992 100644 --- a/app/src/main/java/com/simplemobiletools/camera/Constants.java +++ b/app/src/main/java/com/simplemobiletools/camera/Constants.java @@ -8,6 +8,7 @@ public class Constants { // shared preferences public static final String PREFS_KEY = "Camera"; public static final String IS_FIRST_RUN = "is_first_run"; + public static final String IS_DARK_THEME = "is_dark_theme"; public static final String LONG_TAP = "long_tap"; public static final String FOCUS_BEFORE_CAPTURE = "focus_before_capture"; public static final String SOUND = "sound"; diff --git a/app/src/main/java/com/simplemobiletools/camera/activities/AboutActivity.java b/app/src/main/java/com/simplemobiletools/camera/activities/AboutActivity.java index 724d2301..78fbe0d2 100644 --- a/app/src/main/java/com/simplemobiletools/camera/activities/AboutActivity.java +++ b/app/src/main/java/com/simplemobiletools/camera/activities/AboutActivity.java @@ -5,7 +5,6 @@ import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.Menu; @@ -23,7 +22,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -public class AboutActivity extends AppCompatActivity { +public class AboutActivity extends SimpleActivity { @BindView(R.id.about_copyright) TextView mCopyright; @BindView(R.id.about_email) TextView mEmailTV; @BindView(R.id.about_rate_us) View mRateUs; diff --git a/app/src/main/java/com/simplemobiletools/camera/activities/LicenseActivity.java b/app/src/main/java/com/simplemobiletools/camera/activities/LicenseActivity.java index 21f97dea..a40a3ea0 100644 --- a/app/src/main/java/com/simplemobiletools/camera/activities/LicenseActivity.java +++ b/app/src/main/java/com/simplemobiletools/camera/activities/LicenseActivity.java @@ -3,14 +3,13 @@ package com.simplemobiletools.camera.activities; import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import com.simplemobiletools.camera.R; import butterknife.ButterKnife; import butterknife.OnClick; -public class LicenseActivity extends AppCompatActivity { +public class LicenseActivity extends SimpleActivity { @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/simplemobiletools/camera/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/camera/activities/MainActivity.java index 55712286..f6cde596 100644 --- a/app/src/main/java/com/simplemobiletools/camera/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/camera/activities/MainActivity.java @@ -21,7 +21,6 @@ import android.os.Handler; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.SurfaceView; import android.view.View; @@ -48,7 +47,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -public class MainActivity extends AppCompatActivity +public class MainActivity extends SimpleActivity implements SensorEventListener, PreviewListener, PhotoProcessor.MediaSavedListener, MediaScannerConnection.OnScanCompletedListener { @BindView(R.id.view_holder) RelativeLayout mViewHolder; @BindView(R.id.toggle_camera) ImageView mToggleCameraBtn; diff --git a/app/src/main/java/com/simplemobiletools/camera/activities/SettingsActivity.java b/app/src/main/java/com/simplemobiletools/camera/activities/SettingsActivity.java index b682dcd4..5119eda8 100644 --- a/app/src/main/java/com/simplemobiletools/camera/activities/SettingsActivity.java +++ b/app/src/main/java/com/simplemobiletools/camera/activities/SettingsActivity.java @@ -1,7 +1,7 @@ package com.simplemobiletools.camera.activities; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import android.support.v4.app.TaskStackBuilder; import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.SwitchCompat; @@ -13,7 +13,8 @@ import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnItemSelected; -public class SettingsActivity extends AppCompatActivity { +public class SettingsActivity extends SimpleActivity { + @BindView(R.id.settings_dark_theme) SwitchCompat mDarkThemeSwitch; @BindView(R.id.settings_long_tap) SwitchCompat mLongTapSwitch; @BindView(R.id.settings_focus_before_capture) SwitchCompat mFocusBeforeCaptureSwitch; @BindView(R.id.settings_sound) SwitchCompat mSoundSwitch; @@ -29,6 +30,7 @@ public class SettingsActivity extends AppCompatActivity { mConfig = Config.newInstance(getApplicationContext()); ButterKnife.bind(this); + setupDarkTheme(); setupLongTap(); setupFocusBeforeCapture(); setupSound(); @@ -36,6 +38,10 @@ public class SettingsActivity extends AppCompatActivity { setupMaxResolution(); } + private void setupDarkTheme() { + mDarkThemeSwitch.setChecked(mConfig.getIsDarkTheme()); + } + private void setupLongTap() { mLongTapSwitch.setChecked(mConfig.getLongTapEnabled()); } @@ -56,6 +62,13 @@ public class SettingsActivity extends AppCompatActivity { mMaxResolutionSpinner.setSelection(mConfig.getMaxResolution()); } + @OnClick(R.id.settings_dark_theme_holder) + public void handleDarkTheme() { + mDarkThemeSwitch.setChecked(!mDarkThemeSwitch.isChecked()); + mConfig.setIsDarkTheme(mDarkThemeSwitch.isChecked()); + restartActivity(); + } + @OnClick(R.id.settings_long_tap_holder) public void handleLongTapToTrigger() { mLongTapSwitch.setChecked(!mLongTapSwitch.isChecked()); @@ -84,4 +97,8 @@ public class SettingsActivity extends AppCompatActivity { public void handleMaxResolution() { mConfig.setMaxResolution(mMaxResolutionSpinner.getSelectedItemPosition()); } + + private void restartActivity() { + TaskStackBuilder.create(getApplicationContext()).addNextIntentWithParentStack(getIntent()).startActivities(); + } } diff --git a/app/src/main/java/com/simplemobiletools/camera/activities/SimpleActivity.java b/app/src/main/java/com/simplemobiletools/camera/activities/SimpleActivity.java new file mode 100644 index 00000000..7e48007e --- /dev/null +++ b/app/src/main/java/com/simplemobiletools/camera/activities/SimpleActivity.java @@ -0,0 +1,35 @@ +package com.simplemobiletools.camera.activities; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.MenuItem; + +import com.simplemobiletools.camera.Config; +import com.simplemobiletools.camera.R; + +public class SimpleActivity extends AppCompatActivity { + protected Config mConfig; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + mConfig = Config.newInstance(getApplicationContext()); + int theme = mConfig.getIsDarkTheme() ? R.style.AppTheme_Base_Dark : R.style.AppTheme_Base; + if (this instanceof MainActivity) { + theme = mConfig.getIsDarkTheme() ? R.style.FullScreenTheme_Dark : R.style.FullScreenTheme; + } + setTheme(theme); + super.onCreate(savedInstanceState); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + finish(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } +} diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 6931d689..e4470604 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -12,6 +12,32 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + + + + + Impostazioni + Tema scuro Tocco prolungato per la cattura Messa a fuoco prima della cattura Forza proporzione 16:9 diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index bd3677ae..4cadf74c 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -15,6 +15,7 @@ 設定 + ダークテーマ 長押ししてキャプチャする キャプチャ前に再度焦点を合わせる 強制的に 16:9 レシオにする diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index bb72d46c..d9651e64 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -15,6 +15,7 @@ Inställningar + Mörkt tema Långtryck för bildtagning Fokusera om innan bildtagning Tvinga 16:9-förhållande diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 7f1ac50b..a32f3d1b 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -4,4 +4,8 @@ true + + diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml index f33b17a2..29283000 100644 --- a/app/src/main/res/values-v23/styles.xml +++ b/app/src/main/res/values-v23/styles.xml @@ -4,5 +4,9 @@ true + + + +