From 4b8f4a4b93647ac06a942fc0802bbacff5ff4323 Mon Sep 17 00:00:00 2001 From: Clark Scheff Date: Fri, 25 Jul 2014 11:56:46 -0700 Subject: Show blank card with loading indicator while loading card. Once the card is loaded the blank card and loading indicator will fade out, revealing the loaded content. Change-Id: I5812cfa837e9a8decdd2cd2a69c1d4e2e30a4aff --- .../cyanogenmod/theme/chooserv2/ThemeFragment.java | 43 ++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'src/org') diff --git a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java index f6b175c..87057bf 100644 --- a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java +++ b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java @@ -15,7 +15,10 @@ */ package org.cyanogenmod.theme.chooserv2; +import android.animation.Animator; +import android.animation.AnimatorSet; import android.animation.IntEvaluator; +import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.app.WallpaperManager; import android.content.ComponentName; @@ -175,6 +178,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb private ScrollView mScrollView; private ViewGroup mScrollContent; private ViewGroup mPreviewContent; // Contains icons, font, nav/status etc. Not wallpaper + private View mLoadingView; //Status Bar Views private ImageView mBluetooth; @@ -286,6 +290,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mScrollView = (ScrollView) v.findViewById(android.R.id.list); mScrollContent = (ViewGroup) mScrollView.getChildAt(0); mPreviewContent = (ViewGroup) v.findViewById(R.id.preview_container); + mLoadingView = v.findViewById(R.id.loading_view); // Status Bar mStatusBar = (ViewGroup) v.findViewById(R.id.status_bar); @@ -1065,6 +1070,12 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb loadTitle(c); loadFont(c, false); loadAndRemoveAdditionalCards(c); + mHandler.post(new Runnable() { + @Override + public void run() { + animateContentIn(); + } + }); break; case LOADER_ID_STATUS_BAR: loadStatusBar(c, true); @@ -1102,6 +1113,9 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb } } + @Override + public void onLoaderReset(Loader loader) {} + private void loadAndRemoveAdditionalCards(Cursor c) { LinkedList removeList = new LinkedList(); for(int i=0; i < mAdditionalCards.getChildCount(); i++) { @@ -1194,9 +1208,6 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb return pkg != null && pkg.equals(mPkgName); } - @Override - public void onLoaderReset(Loader loader) {} - private void loadTitle(Cursor c) { if (CURRENTLY_APPLIED_THEME.equals(mPkgName)) { mTitle.setText(R.string.my_theme); @@ -1740,6 +1751,32 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mProgress.startAnimation(scaleAnim); } + private void animateContentIn() { + AnimatorSet set = new AnimatorSet(); + set.setDuration(ANIMATE_TITLE_IN_DURATION); + set.play(ObjectAnimator.ofFloat(mLoadingView, "alpha", 1f, 0f)) + .with(ObjectAnimator.ofFloat(mTitleLayout, "alpha", 0f, 1f)); + set.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + mLoadingView.setVisibility(View.GONE); + } + + @Override + public void onAnimationCancel(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + } + }); + set.start(); + } + public void fadeInCards() { mActiveCardId = -1; for (int i = 0; i < mCardIdsToComponentTypes.size(); i++) { -- cgit v1.1