diff --git a/.idea/misc.xml b/.idea/misc.xml
index fbb6828..5d19981 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index babf626..5fd1f7b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,7 +6,7 @@ android {
defaultConfig {
applicationId "nonphatic.quoz"
- minSdkVersion 21
+ minSdkVersion 23
targetSdkVersion 24
versionCode 1
versionName "1.0"
diff --git a/app/src/main/java/nonphatic/quoz/MainActivity.java b/app/src/main/java/nonphatic/quoz/MainActivity.java
index 3a7a775..b0ffd6d 100644
--- a/app/src/main/java/nonphatic/quoz/MainActivity.java
+++ b/app/src/main/java/nonphatic/quoz/MainActivity.java
@@ -9,6 +9,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.media.MediaPlayer;
+import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton;
@@ -58,6 +59,10 @@ public class MainActivity extends AppCompatActivity {
private TimerTask timerTask;
private MediaPlayer mediaPlayer;
private Random random;
+
+ private int saturationPercent;
+ private String changeMode;
+
private final Runnable mHidePart2Runnable = new Runnable() {
@SuppressLint("InlinedApi")
@Override
@@ -98,6 +103,7 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main);
+ getPreferences();
mContentView = findViewById(R.id.fullscreen_content);
mFab = (FloatingActionButton)findViewById(R.id.fab);
mainView = findViewById(R.id.main_layout);
@@ -179,9 +185,8 @@ public class MainActivity extends AppCompatActivity {
mHideHandler.postDelayed(mHideRunnable, delayMillis);
}
- /**
- * Directs swipe events to toggle and click events to colour change
- */
+
+ //region OVERRIDES
private float yPosOnDown;
private float yDelta;
private boolean isSwiping;
@@ -209,20 +214,14 @@ public class MainActivity extends AppCompatActivity {
return super.dispatchTouchEvent(event);
}
- /**
- * Sets a random background colour when activity resumes
- * Adds setting background regularly based on preference
- */
@Override
public void onResume() {
super.onResume();
+ getPreferences();
setBackgroundToRandomColour();
setTimer();
}
- /**
- * Release the media player when not in use
- */
@Override
public void onPause() {
super.onPause();
@@ -232,45 +231,39 @@ public class MainActivity extends AppCompatActivity {
mediaPlayer = null;
}
}
+ //endregion
- /**
- * Sets background colour to a randomly-generated pastel colour
- */
- private void setBackgroundToRandomColour() {
- int randomColour = generateRandomColour();
- mainView.setBackgroundColor(randomColour);
- ((TextView)mContentView).setText(String.format("#%s", Integer.toHexString(randomColour).substring(2)));
-
- // Set the text colour to something more readable given the colour type
+ //region HELPERS
+ public void getPreferences() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
- String currentColourType = preferences.getString("colour_type", "0.3");
- switch (currentColourType) {
- case "0.3":
- ((TextView)mContentView).setTextColor(ContextCompat.getColor(this, R.color.colorPastelBackground));
- break;
- case "0.5":
- ((TextView)mContentView).setTextColor(ContextCompat.getColor(this, R.color.colorPastelNeonBackground));
- break;
- case "0.7":
- ((TextView)mContentView).setTextColor(ContextCompat.getColor(this, R.color.colorNeonBackground));
- break;
- }
+ saturationPercent = preferences.getInt("saturation", 30);
+ changeMode = preferences.getString("change_mode", "tap");
}
- /**
- * Generates a random pastel colour
- */
- private int generateRandomColour() {
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
- float saturation = Float.parseFloat(preferences.getString("colour_type", "0.3"));
+ public void resetPreferences(Context context) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ preferences.edit().clear().commit();
+ PreferenceManager.setDefaultValues(context, R.xml.preferences, true);
+ }
+ private void setBackgroundToRandomColour() {
+ float[] hsv = generateRandomColour();
+ float[] hsvText = new float[] { 0, 0, hsv[1] / 2 + 0.25f };
+ int randomColour = Color.HSVToColor(hsv);
+ int textColour = Color.HSVToColor(hsvText);
+
+ mainView.setBackgroundColor(randomColour);
+ ((TextView)mContentView).setText(String.format("#%s", Integer.toHexString(randomColour).substring(2)));
+ ((TextView)mContentView).setTextColor(textColour);
+ }
+
+ private float[] generateRandomColour() {
float phiRecip = Float.parseFloat(getResources().getText(R.string.phiRecip).toString());
- float[] hsv = {
- (random.nextFloat() + phiRecip) % 1 * 360, // random, nicely spaced hue
- saturation,
+ return new float[] {
+ (random.nextFloat() + phiRecip) % 1 * 360, // random, nicely-spaced hue
+ saturationPercent / 100f, // saturation
1.0f // value
};
- return Color.HSVToColor(hsv);
}
private void setTimer() {
@@ -278,8 +271,6 @@ public class MainActivity extends AppCompatActivity {
timerTask.cancel();
}
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
- String changeMode = preferences.getString("change_mode", "tap");
switch (changeMode) {
case "tap":
break;
@@ -309,18 +300,38 @@ public class MainActivity extends AppCompatActivity {
});
}
};
- timer.schedule(timerTask, 0, 556);
+ timer.schedule(timerTask, 350, 555);
mediaPlayer = MediaPlayer.create(this, R.raw.ievan_polkka);
mediaPlayer.setLooping(true);
mediaPlayer.start();
break;
+ case "nyan":
+ timerTask = new TimerTask() {
+ @Override
+ public void run() {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ setBackgroundToRandomColour();
+ }
+ });
+ }
+ };
+ timer.schedule(timerTask, 200, 424);
+ mediaPlayer = MediaPlayer.create(this, R.raw.nyan);
+ mediaPlayer.setLooping(true);
+ mediaPlayer.start();
+ break;
}
}
+ //endregion
+ //region ACTIVITIES
public void openSettings(View view) {
Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, SettingsActivity.PreferencesFragment.class.getName());
intent.putExtra(SettingsActivity.EXTRA_NO_HEADERS, true);
startActivity(intent);
}
+ //endregion
}
diff --git a/app/src/main/java/nonphatic/quoz/SettingsActivity.java b/app/src/main/java/nonphatic/quoz/SettingsActivity.java
index bfd60fb..b393cf1 100644
--- a/app/src/main/java/nonphatic/quoz/SettingsActivity.java
+++ b/app/src/main/java/nonphatic/quoz/SettingsActivity.java
@@ -4,6 +4,7 @@ package nonphatic.quoz;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.media.Ringtone;
import android.media.RingtoneManager;
@@ -13,6 +14,7 @@ import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
+import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
@@ -90,10 +92,18 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
// Trigger the listener immediately with the preference's
// current value.
- sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
- PreferenceManager
- .getDefaultSharedPreferences(preference.getContext())
- .getString(preference.getKey(), ""));
+ try {
+ sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
+ PreferenceManager
+ .getDefaultSharedPreferences(preference.getContext())
+ .getString(preference.getKey(), ""));
+ }
+ catch (ClassCastException e) {
+ sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
+ PreferenceManager
+ .getDefaultSharedPreferences(preference.getContext())
+ .getInt(preference.getKey(), 0));
+ }
}
@Override
@@ -146,13 +156,26 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class PreferencesFragment extends PreferenceFragment {
@Override
- public void onCreate(Bundle savedInstanceState) {
+ public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
setHasOptionsMenu(true);
- bindPreferenceSummaryToValue(findPreference("colour_type"));
+ Preference resetButton = findPreference("reset_button");
+ resetButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ preferences.edit().clear().commit();
+ PreferenceManager.setDefaultValues(getContext(), R.xml.preferences, true);
+ onStop();
+ onCreate(savedInstanceState);
+ return true;
+ }
+ });
+
bindPreferenceSummaryToValue(findPreference("change_mode"));
+ bindPreferenceSummaryToValue(findPreference("saturation"));
}
@Override
diff --git a/app/src/main/res/raw/nyan.mp3 b/app/src/main/res/raw/nyan.mp3
new file mode 100644
index 0000000..fe406b8
Binary files /dev/null and b/app/src/main/res/raw/nyan.mp3 differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 528ea9a..f60db50 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,9 +4,5 @@
#555
#777
- #666
- #777
- #888
-
#66000000
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d9298f1..b9e9fc2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -23,10 +23,12 @@
- Tap
- Cycle
- Leekspin
+ - Nyan
- tap
- cycle
- leekspin
+ - nyan
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 9ce8221..ffa053b 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -1,19 +1,20 @@
-
-
+
+
+
\ No newline at end of file