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="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">
|
||||
|
|
|
@ -6,7 +6,7 @@ android {
|
|||
|
||||
defaultConfig {
|
||||
applicationId "nonphatic.quoz"
|
||||
minSdkVersion 21
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 24
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
|
|
@ -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
|
||||
|
||||
//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() {
|
||||
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);
|
||||
((TextView)mContentView).setText(String.format("#%s", Integer.toHexString(randomColour).substring(2)));
|
||||
|
||||
// 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;
|
||||
}
|
||||
((TextView)mContentView).setTextColor(textColour);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a random pastel colour
|
||||
*/
|
||||
private int generateRandomColour() {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
float saturation = Float.parseFloat(preferences.getString("colour_type", "0.3"));
|
||||
|
||||
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
|
||||
}
|
||||
|
|
|
@ -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,11 +92,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
|||
|
||||
// Trigger the listener immediately with the preference's
|
||||
// current value.
|
||||
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
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -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.
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue