1
0
Fork 0

Replaced saturation list with slider; added reset button for preferences; added nyan option

This commit is contained in:
Jonathan Chan 2016-08-04 14:22:08 -07:00
parent 6529b44c76
commit b66a58b883
8 changed files with 98 additions and 65 deletions

View File

@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" /> <ConfirmationsSetting value="0" id="Remove" />
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -6,7 +6,7 @@ android {
defaultConfig { defaultConfig {
applicationId "nonphatic.quoz" applicationId "nonphatic.quoz"
minSdkVersion 21 minSdkVersion 23
targetSdkVersion 24 targetSdkVersion 24
versionCode 1 versionCode 1
versionName "1.0" versionName "1.0"

View File

@ -9,6 +9,7 @@ import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.Color; import android.graphics.Color;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton; import android.support.design.widget.FloatingActionButton;
@ -58,6 +59,10 @@ public class MainActivity extends AppCompatActivity {
private TimerTask timerTask; private TimerTask timerTask;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
private Random random; private Random random;
private int saturationPercent;
private String changeMode;
private final Runnable mHidePart2Runnable = new Runnable() { private final Runnable mHidePart2Runnable = new Runnable() {
@SuppressLint("InlinedApi") @SuppressLint("InlinedApi")
@Override @Override
@ -98,6 +103,7 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
getPreferences();
mContentView = findViewById(R.id.fullscreen_content); mContentView = findViewById(R.id.fullscreen_content);
mFab = (FloatingActionButton)findViewById(R.id.fab); mFab = (FloatingActionButton)findViewById(R.id.fab);
mainView = findViewById(R.id.main_layout); mainView = findViewById(R.id.main_layout);
@ -179,9 +185,8 @@ public class MainActivity extends AppCompatActivity {
mHideHandler.postDelayed(mHideRunnable, delayMillis); mHideHandler.postDelayed(mHideRunnable, delayMillis);
} }
/**
* Directs swipe events to toggle and click events to colour change //region OVERRIDES
*/
private float yPosOnDown; private float yPosOnDown;
private float yDelta; private float yDelta;
private boolean isSwiping; private boolean isSwiping;
@ -209,20 +214,14 @@ public class MainActivity extends AppCompatActivity {
return super.dispatchTouchEvent(event); return super.dispatchTouchEvent(event);
} }
/**
* Sets a random background colour when activity resumes
* Adds setting background regularly based on preference
*/
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
getPreferences();
setBackgroundToRandomColour(); setBackgroundToRandomColour();
setTimer(); setTimer();
} }
/**
* Release the media player when not in use
*/
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
@ -232,45 +231,39 @@ public class MainActivity extends AppCompatActivity {
mediaPlayer = null; mediaPlayer = null;
} }
} }
//endregion
//region HELPERS
public void getPreferences() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
saturationPercent = preferences.getInt("saturation", 30);
changeMode = preferences.getString("change_mode", "tap");
}
public void resetPreferences(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
preferences.edit().clear().commit();
PreferenceManager.setDefaultValues(context, R.xml.preferences, true);
}
/**
* Sets background colour to a randomly-generated pastel colour
*/
private void setBackgroundToRandomColour() { private void setBackgroundToRandomColour() {
int randomColour = generateRandomColour(); 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); mainView.setBackgroundColor(randomColour);
((TextView)mContentView).setText(String.format("#%s", Integer.toHexString(randomColour).substring(2))); ((TextView)mContentView).setText(String.format("#%s", Integer.toHexString(randomColour).substring(2)));
((TextView)mContentView).setTextColor(textColour);
// Set the text colour to something more readable given the colour type
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;
}
} }
/** private float[] generateRandomColour() {
* Generates a random pastel colour
*/
private int generateRandomColour() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
float saturation = Float.parseFloat(preferences.getString("colour_type", "0.3"));
float phiRecip = Float.parseFloat(getResources().getText(R.string.phiRecip).toString()); float phiRecip = Float.parseFloat(getResources().getText(R.string.phiRecip).toString());
float[] hsv = { return new float[] {
(random.nextFloat() + phiRecip) % 1 * 360, // random, nicely spaced hue (random.nextFloat() + phiRecip) % 1 * 360, // random, nicely-spaced hue
saturation, saturationPercent / 100f, // saturation
1.0f // value 1.0f // value
}; };
return Color.HSVToColor(hsv);
} }
private void setTimer() { private void setTimer() {
@ -278,8 +271,6 @@ public class MainActivity extends AppCompatActivity {
timerTask.cancel(); timerTask.cancel();
} }
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String changeMode = preferences.getString("change_mode", "tap");
switch (changeMode) { switch (changeMode) {
case "tap": case "tap":
break; 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 = MediaPlayer.create(this, R.raw.ievan_polkka);
mediaPlayer.setLooping(true); mediaPlayer.setLooping(true);
mediaPlayer.start(); mediaPlayer.start();
break; 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) { public void openSettings(View view) {
Intent intent = new Intent(this, SettingsActivity.class); Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, SettingsActivity.PreferencesFragment.class.getName()); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, SettingsActivity.PreferencesFragment.class.getName());
intent.putExtra(SettingsActivity.EXTRA_NO_HEADERS, true); intent.putExtra(SettingsActivity.EXTRA_NO_HEADERS, true);
startActivity(intent); startActivity(intent);
} }
//endregion
} }

View File

@ -4,6 +4,7 @@ package nonphatic.quoz;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.media.Ringtone; import android.media.Ringtone;
import android.media.RingtoneManager; import android.media.RingtoneManager;
@ -13,6 +14,7 @@ import android.os.Bundle;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@ -90,11 +92,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
// Trigger the listener immediately with the preference's // Trigger the listener immediately with the preference's
// current value. // current value.
try {
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager PreferenceManager
.getDefaultSharedPreferences(preference.getContext()) .getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), "")); .getString(preference.getKey(), ""));
} }
catch (ClassCastException e) {
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getInt(preference.getKey(), 0));
}
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -146,13 +156,26 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class PreferencesFragment extends PreferenceFragment { public static class PreferencesFragment extends PreferenceFragment {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences); addPreferencesFromResource(R.xml.preferences);
setHasOptionsMenu(true); 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("change_mode"));
bindPreferenceSummaryToValue(findPreference("saturation"));
} }
@Override @Override

Binary file not shown.

View File

@ -4,9 +4,5 @@
<color name="colorPrimaryDark">#555</color> <color name="colorPrimaryDark">#555</color>
<color name="colorAccent">#777</color> <color name="colorAccent">#777</color>
<color name="colorPastelBackground">#666</color>
<color name="colorPastelNeonBackground">#777</color>
<color name="colorNeonBackground">#888</color>
<color name="black_overlay">#66000000</color> <color name="black_overlay">#66000000</color>
</resources> </resources>

View File

@ -23,10 +23,12 @@
<item>Tap</item> <item>Tap</item>
<item>Cycle</item> <item>Cycle</item>
<item>Leekspin</item> <item>Leekspin</item>
<item>Nyan</item>
</string-array> </string-array>
<string-array name="preferences_mode_values"> <string-array name="preferences_mode_values">
<item>tap</item> <item>tap</item>
<item>cycle</item> <item>cycle</item>
<item>leekspin</item> <item>leekspin</item>
<item>nyan</item>
</string-array> </string-array>
</resources> </resources>

View File

@ -1,19 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference <SeekBarPreference
android:title="Colour Type" android:key="saturation"
android:summary="The family of colours to randomly generate from." android:title="Saturation"
android:key="colour_type" android:summary="Set saturation"
android:defaultValue="0.3" android:max="100"
android:entries="@array/preferences_colour_title" android:defaultValue="30">
android:entryValues="@array/preferences_colour_values"> </SeekBarPreference>
</ListPreference>
<ListPreference <ListPreference
android:title="Change Mode" android:title="Change Mode"
android:summary="How a colour change will be triggered."
android:key="change_mode" android:key="change_mode"
android:defaultValue="tap" android:defaultValue="tap"
android:entries="@array/preferences_mode_title" android:entries="@array/preferences_mode_title"
android:entryValues="@array/preferences_mode_values"> android:entryValues="@array/preferences_mode_values">
</ListPreference> </ListPreference>
<Preference
android:title="Reset settings"
android:key="reset_button" />
</PreferenceScreen> </PreferenceScreen>