From eced5a55cdec21d4e380a57d523c30f80cec6e1b Mon Sep 17 00:00:00 2001 From: Jorge Ruesga Date: Sun, 13 Oct 2013 00:04:11 +0200 Subject: Change transitions interval behavior Now user can select between 0 and 60 seconds (10 steps/ 10 diff. values) 0 seconds means just draw the initial frames and without transitions, while world isn't recreated Signed-off-by: Jorge Ruesga --- .../wallpapers/photophase/PhotoPhaseRenderer.java | 27 ++++++++++++++-------- .../preferences/GeneralPreferenceFragment.java | 23 ++++++++++-------- .../preferences/PreferencesProvider.java | 26 +++++++++++---------- 3 files changed, 45 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java index 1ca7656..cce6b3a 100644 --- a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java +++ b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java @@ -578,15 +578,24 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { // Now draw the world (all the photo frames with effects) mWorld.draw(mMVPMatrix); - // Check if we have some pending transition or transition has exceed its timeout - if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { - mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); - - // Now start a delayed thread to generate the next effect - deselectCurrentTransition(); - mLastRunningTransition = 0; - mHandler.postDelayed(mTransitionThread, - Preferences.General.Transitions.getTransitionInterval()); + // Check if we have some pending transition or transition has + // exceed its timeout + if (Preferences.General.Transitions.getTransitionInterval() > 0) { + if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + + // Now start a delayed thread to generate the next effect + deselectCurrentTransition(); + mLastRunningTransition = 0; + mHandler.postDelayed(mTransitionThread, + Preferences.General.Transitions.getTransitionInterval()); + } + } else { + // Just display the initial frames and never make transitions + if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + } } } diff --git a/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java b/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java index d5264f7..02cf741 100644 --- a/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java +++ b/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java @@ -18,6 +18,8 @@ package com.ruesga.android.wallpapers.photophase.preferences; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Resources; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; @@ -34,8 +36,6 @@ import com.ruesga.android.wallpapers.photophase.preferences.PreferencesProvider. import com.ruesga.android.wallpapers.photophase.preferences.SeekBarProgressPreference.OnDisplayProgress; import com.ruesga.android.wallpapers.photophase.widgets.ColorPickerPreference; -import java.text.DecimalFormat; - /** * A fragment class with all the general settings */ @@ -113,9 +113,8 @@ public class GeneralPreferenceFragment extends PreferenceFragment { getPreferenceManager().setSharedPreferencesName(PreferencesProvider.PREFERENCES_FILE); getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE); - final DecimalFormat df = new DecimalFormat(); - df.setMinimumFractionDigits(0); - df.setMaximumIntegerDigits(1); + final SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); + final Resources res = getActivity().getResources(); // Add the preferences addPreferencesFromResource(R.xml.preferences_general); @@ -136,16 +135,20 @@ public class GeneralPreferenceFragment extends PreferenceFragment { mTransitionsTypes = (MultiSelectListPreference)findPreference("ui_transition_types"); mTransitionsTypes.setOnPreferenceChangeListener(mOnChangeListener); + final int[] transitionsIntervals = res.getIntArray(R.array.transitions_intervals_values); mTransitionsInterval = (SeekBarProgressPreference)findPreference("ui_transition_interval"); mTransitionsInterval.setFormat(getString(R.string.pref_general_transitions_interval_format)); - int max = Preferences.General.Transitions.MAX_TRANSITION_INTERVAL; - int min = Preferences.General.Transitions.MIN_TRANSITION_INTERVAL; - final int MAX = ((max - min) / 1000) * 2; - mTransitionsInterval.setMax(MAX); + mTransitionsInterval.setMax(transitionsIntervals.length - 1); + int transitionInterval = prefs.getInt("ui_transition_interval", + Preferences.General.Transitions.DEFAULT_TRANSITION_INTERVAL_INDEX); + if (transitionInterval > (transitionsIntervals.length - 1)) { + mTransitionsInterval.setProgress( + Preferences.General.Transitions.DEFAULT_TRANSITION_INTERVAL_INDEX); + } mTransitionsInterval.setOnDisplayProgress(new OnDisplayProgress() { @Override public String onDisplayProgress(int progress) { - return df.format((progress * 0.5) + 1); + return String.valueOf(transitionsIntervals[progress] / 1000); } }); mTransitionsInterval.setOnPreferenceChangeListener(mOnChangeListener); diff --git a/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java b/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java index b59805a..f134516 100644 --- a/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java +++ b/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java @@ -19,7 +19,9 @@ package com.ruesga.android.wallpapers.photophase.preferences; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import android.content.res.Resources; +import com.ruesga.android.wallpapers.photophase.R; import com.ruesga.android.wallpapers.photophase.utils.GLESUtil.GLColor; import com.ruesga.android.wallpapers.photophase.effects.Effects.EFFECTS; import com.ruesga.android.wallpapers.photophase.model.Disposition; @@ -91,6 +93,11 @@ public final class PreferencesProvider { private static Map mPreferences = new HashMap(); + /** + * @hide + */ + /*package*/ static int[] TRANSITIONS_INTERVALS; + /** * Method that loads the all the preferences of the application * @@ -100,6 +107,9 @@ public final class PreferencesProvider { SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE); mPreferences = preferences.getAll(); + + final Resources res = context.getResources(); + TRANSITIONS_INTERVALS = res.getIntArray(R.array.transitions_intervals_values); } /** @@ -221,15 +231,7 @@ public final class PreferencesProvider { /** * The default transition interval */ - public static final int DEFAULT_TRANSITION_INTERVAL = 2000; - /** - * The minimum transition interval - */ - public static final int MIN_TRANSITION_INTERVAL = 1000; - /** - * The maximum transition interval - */ - public static final int MAX_TRANSITION_INTERVAL = 8000; + public static final int DEFAULT_TRANSITION_INTERVAL_INDEX = 2; /** * Return the current user preference about the transition to apply to @@ -258,9 +260,9 @@ public final class PreferencesProvider { * @return int The milliseconds in which the next transition will be triggered */ public static int getTransitionInterval() { - int def = (DEFAULT_TRANSITION_INTERVAL / 500) - 2; - int interval = getInt("ui_transition_interval", def); - return (interval * 500) + 1000; + int interval = getInt("ui_transition_interval", + DEFAULT_TRANSITION_INTERVAL_INDEX); + return TRANSITIONS_INTERVALS[interval]; } } -- cgit v1.2.3