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="Remove" />
</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" />
</component>
<component name="ProjectType">

View File

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

View File

@ -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
}

View File

@ -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

Binary file not shown.

View File

@ -4,9 +4,5 @@
<color name="colorPrimaryDark">#555</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>
</resources>

View File

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

View File

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