Replaced saturation list with slider; added reset button for preferences; added nyan option
This commit is contained in:
parent
6529b44c76
commit
b66a58b883
|
@ -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">
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue