plectrum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 6918522fea26c6db62028072864c84628fd4184c
parent b583f052765535e4d82a3ca8bf0177b4a78a0ada
Author: gstraube <gstraube@mailbox.org>
Date:   Mon,  5 Feb 2018 14:44:07 +0100

Introduce night mode

Diffstat:
Mapp/src/main/java/com/github/cythara/CanvasPainter.java | 10++++++++--
Mapp/src/main/java/com/github/cythara/MainActivity.java | 57+++++++++++++++++++++++++++++++++++++++++++++++++++------
Mapp/src/main/res/layout/activity_main.xml | 7++++---
Mapp/src/main/res/menu/toolbar_menu.xml | 5+++++
Mapp/src/main/res/values-pt-rBR/strings.xml | 1+
Mapp/src/main/res/values/colors.xml | 5++---
Mapp/src/main/res/values/strings.xml | 1+
Mapp/src/main/res/values/styles.xml | 7+------
8 files changed, 73 insertions(+), 20 deletions(-)

diff --git a/app/src/main/java/com/github/cythara/CanvasPainter.java b/app/src/main/java/com/github/cythara/CanvasPainter.java @@ -11,9 +11,10 @@ import android.graphics.drawable.Drawable; import android.support.v4.content.ContextCompat; import android.text.TextPaint; -import static android.content.Context.*; +import static android.content.Context.MODE_PRIVATE; import static com.github.cythara.ListenerFragment.IS_RECORDING; -import static com.github.cythara.MainActivity.*; +import static com.github.cythara.MainActivity.PREFS_FILE; +import static com.github.cythara.MainActivity.USE_SCIENTIFIC_NOTATION; class CanvasPainter { @@ -57,6 +58,11 @@ class CanvasPainter { this.canvas = canvas; + if (MainActivity.isNightModeEnabled()) { + int color = context.getResources().getColor(R.color.colorPrimaryDark); + this.canvas.drawColor(color); + } + gaugeWidth = 0.45F * canvas.getWidth(); x = canvas.getWidth() / 2F; y = canvas.getHeight() / 2F; diff --git a/app/src/main/java/com/github/cythara/MainActivity.java b/app/src/main/java/com/github/cythara/MainActivity.java @@ -14,15 +14,18 @@ import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; +import android.view.ContextThemeWrapper; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; -import android.widget.ArrayAdapter; import com.jaredrummler.materialspinner.MaterialSpinner; +import com.jaredrummler.materialspinner.MaterialSpinnerAdapter; + +import java.util.Arrays; -import static android.widget.ArrayAdapter.createFromResource; import static com.github.cythara.TuningMapper.getTuningFromPosition; public class MainActivity extends AppCompatActivity implements ListenerFragment.TaskCallbacks, @@ -33,12 +36,18 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. public static final String USE_SCIENTIFIC_NOTATION = "use_scientific_notation"; public static final String CURRENT_TUNING = "current_tuning"; private static final String TAG_LISTENER_FRAGMENT = "listener_fragment"; + private static final String USE_NIGHT_MODE = "use_night_mode"; private static int tuningPosition = 0; + private static boolean isNightModeEnabled; public static Tuning getCurrentTuning() { return getTuningFromPosition(tuningPosition); } + public static boolean isNightModeEnabled() { + return isNightModeEnabled; + } + @Override protected void onCreate(Bundle savedInstanceState) { int permissionCheck = ContextCompat.checkSelfPermission(this, @@ -51,6 +60,8 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. startRecording(); } + enableTheme(); + super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); @@ -88,7 +99,8 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. int checkedItem = useScientificNotation ? 0 : 1; - AlertDialog.Builder builder = new AlertDialog.Builder(this); + AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, + R.style.AppTheme)); builder.setTitle(R.string.choose_notation); builder.setSingleChoiceItems(R.array.notations, checkedItem, new DialogInterface.OnClickListener() { @@ -105,6 +117,17 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. break; } + case R.id.toggle_night_mode: { + final SharedPreferences preferences = getSharedPreferences(PREFS_FILE, + MODE_PRIVATE); + boolean currentlyUsingNightMode = preferences.getBoolean(USE_NIGHT_MODE, false); + + SharedPreferences.Editor editor = preferences.edit(); + editor.putBoolean(USE_NIGHT_MODE, !currentlyUsingNightMode); + editor.apply(); + + recreate(); + } } return false; @@ -183,12 +206,34 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. MODE_PRIVATE); tuningPosition = preferences.getInt(CURRENT_TUNING, 0); + int textColorDark = getResources().getColor(R.color.colorTextDark); + MaterialSpinner spinner = findViewById(R.id.tuning); - ArrayAdapter<CharSequence> adapter = createFromResource(this, - R.array.tunings, android.R.layout.simple_spinner_item); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + MaterialSpinnerAdapter<String> adapter = new MaterialSpinnerAdapter<>(this, + Arrays.asList(getResources().getStringArray(R.array.tunings))); + + if (isNightModeEnabled) { + spinner.setTextColor(textColorDark); + spinner.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); + spinner.setTextColor(textColorDark); + spinner.setArrowColor(textColorDark); + } + spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); spinner.setSelectedIndex(tuningPosition); } + + private void enableTheme() { + final SharedPreferences preferences = getSharedPreferences(PREFS_FILE, + MODE_PRIVATE); + isNightModeEnabled = preferences.getBoolean(USE_NIGHT_MODE, false); + + int mode = AppCompatDelegate.MODE_NIGHT_NO; + if (isNightModeEnabled) { + mode = AppCompatDelegate.MODE_NIGHT_YES; + } + + AppCompatDelegate.setDefaultNightMode(mode); + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml @@ -13,8 +13,8 @@ android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" - android:theme="@style/ThemeOverlay.AppCompat.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> + android:theme="@style/AppTheme" + app:popupTheme="@style/AppTheme" /> <com.jaredrummler.materialspinner.MaterialSpinner android:id="@+id/tuning" @@ -24,6 +24,7 @@ <com.github.cythara.TunerView android:id="@+id/pitch" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:theme="@style/AppTheme"/> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/menu/toolbar_menu.xml b/app/src/main/res/menu/toolbar_menu.xml @@ -11,4 +11,9 @@ android:id="@+id/show_privacy_policy" android:title="@string/privacy_policy" app:showAsAction="never" /> + + <item + android:id="@+id/toggle_night_mode" + android:title="@string/toggle_night_mode" + app:showAsAction="never" /> </menu> \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml @@ -20,4 +20,5 @@ <item name="scientific">Notação de pitch científico</item> <item name="sol">Solfège</item> </string-array> + <string name="toggle_night_mode">Alternar modo noturno</string> </resources> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <color name="colorPrimary">#3F51B5</color> - <color name="colorPrimaryDark">#303F9F</color> - <color name="colorAccent">#FF4081</color> + <color name="colorPrimaryDark">#FF212121</color> + <color name="colorTextDark">#DDFFFFFF</color> </resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ <string name="app_name">Cythara</string> <string name="privacy_policy">Show privacy policy</string> <string name="set_notation">Set notation</string> + <string name="toggle_night_mode">Toggle night mode</string> <string name="choose_notation">Choose notation</string> <string name="permission_required">Permission required</string> <string-array name="tunings"> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml @@ -1,11 +1,6 @@ <resources> <!-- Base application theme. --> - <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> - <!-- Customize your theme here. --> - <item name="colorPrimary">@color/colorPrimary</item> - <item name="colorPrimaryDark">@color/colorPrimaryDark</item> - <item name="colorAccent">@color/colorAccent</item> - </style> + <style name="AppTheme" parent="Theme.AppCompat.DayNight"/> </resources>