diff options
author | Clark Scheff <clark@cyngn.com> | 2014-07-09 17:21:38 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-07-10 15:35:58 +0000 |
commit | bb087f0c9c918ebcd5c6471e5a6cc3111249f545 (patch) | |
tree | 82c0254257011eda8fbc0c4caa2a6bbd96ca83c2 /src/org | |
parent | e7a0b1076f5e2ccf4c2a84dc58e97a296e83b4d0 (diff) | |
download | packages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.tar.gz packages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.tar.bz2 packages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.zip |
Add save & apply view.
When the user is done making their changes, a view will be animated
in which allows the user to save and apply their changes.
Change-Id: I7a4eba06709f94c15ec94a48f2d561f84e9f5e42
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java | 52 | ||||
-rw-r--r-- | src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java | 35 | ||||
-rw-r--r-- | src/org/cyanogenmod/theme/util/Utils.java | 5 |
3 files changed, 87 insertions, 5 deletions
diff --git a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java index 3fec568..ee60286 100644 --- a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java +++ b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java @@ -34,10 +34,13 @@ import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.TextView; import org.cyanogenmod.theme.chooser.R; +import org.cyanogenmod.theme.util.Utils; public class ChooserActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor>, ThemeManager.ThemeChangeListener { @@ -60,6 +63,7 @@ public class ChooserActivity extends FragmentActivity private Button mWallpaper; private Button mBootani; private ComponentSelector mSelector; + private View mSaveApplyLayout; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -114,6 +118,7 @@ public class ChooserActivity extends FragmentActivity }); mSelector = (ComponentSelector) findViewById(R.id.component_selector); + mSelector.setOnOpenCloseListener(mOpenCloseListener); if (ComponentSelector.DEBUG_SELECTOR) { findViewById(R.id.selector_testing).setVisibility(View.VISIBLE); @@ -135,6 +140,37 @@ public class ChooserActivity extends FragmentActivity mService = (ThemeManager) getSystemService(Context.THEME_SERVICE); getSupportLoaderManager().initLoader(0, null, this); + + mSaveApplyLayout = findViewById(R.id.save_apply_layout); + if (!Utils.hasNavigationBar(this)) { + mSaveApplyLayout.findViewById(R.id.navbar_padding).setVisibility(View.GONE); + } + mSaveApplyLayout.findViewById(R.id.save_apply_button).setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSaveApplyButton(); + } + }); + } + + private void hideSaveApplyButton() { + Animation anim = AnimationUtils.loadAnimation(this, R.anim.component_selection_animate_out); + mSaveApplyLayout.startAnimation(anim); + anim.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + mSaveApplyLayout.setVisibility(View.GONE); + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + }); } @Override @@ -147,6 +183,8 @@ public class ChooserActivity extends FragmentActivity public void onBackPressed() { if (mSelector.getVisibility() == View.VISIBLE) { mSelector.hide(); + } else if (mSaveApplyLayout.getVisibility() == View.VISIBLE) { + hideSaveApplyButton(); } else if (mExpanded) { mExpanded = false; mContainer.collapse(); @@ -215,6 +253,7 @@ public class ChooserActivity extends FragmentActivity R.dimen.component_selection_cell_height_boot_anim)); mSelector.setComponentType(ThemesColumns.MODIFIES_BOOT_ANIM); } + if (mSaveApplyLayout.getVisibility() == View.VISIBLE) hideSaveApplyButton(); if (mSelector.getVisibility() == View.GONE) mSelector.show(); } }; @@ -237,6 +276,19 @@ public class ChooserActivity extends FragmentActivity } }; + private ComponentSelector.OnOpenCloseListener mOpenCloseListener = new ComponentSelector.OnOpenCloseListener() { + @Override + public void onSelectorOpened() { + } + + @Override + public void onSelectorClosed() { + mSaveApplyLayout.setVisibility(View.VISIBLE); + mSaveApplyLayout.startAnimation(AnimationUtils.loadAnimation(ChooserActivity.this, + R.anim.component_selection_animate_in)); + } + }; + private String getFragmentTag(int pos){ return "android:switcher:"+R.id.viewpager+":"+pos; } diff --git a/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java b/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java index 30ce474..6a884a3 100644 --- a/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java +++ b/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java @@ -54,6 +54,7 @@ import com.viewpagerindicator.PageIndicator; import org.cyanogenmod.theme.chooser.R; import org.cyanogenmod.theme.util.AudioUtils; import org.cyanogenmod.theme.util.ThemedTypefaceHelper; +import org.cyanogenmod.theme.util.Utils; import java.util.HashMap; @@ -101,6 +102,8 @@ public class ComponentSelector extends LinearLayout private OnItemClickedListener mListener; + private OnOpenCloseListener mOpenCloseListener; + private MediaPlayer mMediaPlayer; public ComponentSelector(Context context, AttributeSet attrs) { @@ -120,6 +123,20 @@ public class ComponentSelector extends LinearLayout R.anim.component_selection_animate_in); mAnimateOut = AnimationUtils.loadAnimation(mContext, R.anim.component_selection_animate_out); + mAnimateIn.setAnimationListener(new AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + if (mOpenCloseListener != null) mOpenCloseListener.onSelectorOpened(); + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + }); mAnimateOut.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { @@ -128,6 +145,7 @@ public class ComponentSelector extends LinearLayout @Override public void onAnimationEnd(Animation animation) { setVisibility(View.GONE); + if (mOpenCloseListener != null) mOpenCloseListener.onSelectorClosed(); } @Override @@ -147,7 +165,9 @@ public class ComponentSelector extends LinearLayout indicator.setViewPager(mPager); // set navbar_padding to GONE if no on screen navigation bar is available - if (!hasNavigationBar()) findViewById(R.id.navbar_padding).setVisibility(View.GONE); + if (!Utils.hasNavigationBar(mContext)) { + findViewById(R.id.navbar_padding).setVisibility(View.GONE); + } setNumItemsPerPage(2); setComponentType(MODIFIES_RINGTONES); show(); @@ -196,10 +216,6 @@ public class ComponentSelector extends LinearLayout if (mMediaPlayer != null && mMediaPlayer.isPlaying()) mMediaPlayer.stop(); } - private boolean hasNavigationBar() { - return !ViewConfiguration.get(mContext).hasPermanentMenuKey(); - } - private int getLoaderIdFromComponent(String component) { if (MODIFIES_STATUS_BAR.equals(component)) { return LOADER_ID_STATUS_BAR; @@ -350,6 +366,10 @@ public class ComponentSelector extends LinearLayout mListener = listener; } + public void setOnOpenCloseListener(OnOpenCloseListener listener) { + mOpenCloseListener = listener; + } + public class CursorPagerAdapter<T extends View> extends PagerAdapter { LinearLayout.LayoutParams mItemParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f); @@ -690,4 +710,9 @@ public class ComponentSelector extends LinearLayout public interface OnItemClickedListener { public void onItemClicked(String pkgName); } + + public interface OnOpenCloseListener { + public void onSelectorOpened(); + public void onSelectorClosed(); + } }
\ No newline at end of file diff --git a/src/org/cyanogenmod/theme/util/Utils.java b/src/org/cyanogenmod/theme/util/Utils.java index 27e854d..80fdb80 100644 --- a/src/org/cyanogenmod/theme/util/Utils.java +++ b/src/org/cyanogenmod/theme/util/Utils.java @@ -24,6 +24,7 @@ import android.graphics.BitmapRegionDecoder; import android.graphics.Rect; import android.util.Log; import android.util.TypedValue; +import android.view.ViewConfiguration; import java.io.File; import java.io.IOException; @@ -235,4 +236,8 @@ public class Utils { } } } + + public static boolean hasNavigationBar(Context context) { + return !ViewConfiguration.get(context).hasPermanentMenuKey(); + } } |