summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLuis Vidal <lvidal@cyngn.com>2016-01-27 18:10:40 -0800
committerLuis Vidal <lvidal@cyngn.com>2016-02-01 13:32:26 -0800
commit73b46248a11d3d5f5aa0e706bef89b65f87b715e (patch)
treef7ddad94eadecb513f121e8d934a999d01c52fe5 /src
parent7e000ea34bc177ce016edd0fcda1a76242e08f4f (diff)
downloadpackages_apps_ThemeChooser-73b46248a11d3d5f5aa0e706bef89b65f87b715e.tar.gz
packages_apps_ThemeChooser-73b46248a11d3d5f5aa0e706bef89b65f87b715e.tar.bz2
packages_apps_ThemeChooser-73b46248a11d3d5f5aa0e706bef89b65f87b715e.zip
Add PICK_ANIMATED_LOCK_SCREEN action
This patch is to instruct the chooser to jump directly to the live lock screen selector if PICK_ANIMATED_LOCK_SCREEN action is sent Change-Id: I1d1df7df2d0d903841c5408bd138e81350327baa TICKET: CYNGNOS-1707
Diffstat (limited to 'src')
-rw-r--r--src/com/cyngn/theme/chooser/ChooserActivity.java68
-rw-r--r--src/com/cyngn/theme/chooser/ComponentSelector.java16
-rw-r--r--src/com/cyngn/theme/chooser/MyThemeFragment.java5
-rw-r--r--src/com/cyngn/theme/chooser/ThemeFragment.java36
-rw-r--r--src/com/cyngn/theme/util/CursorLoaderHelper.java21
5 files changed, 131 insertions, 15 deletions
diff --git a/src/com/cyngn/theme/chooser/ChooserActivity.java b/src/com/cyngn/theme/chooser/ChooserActivity.java
index b80e6c7..1a26828 100644
--- a/src/com/cyngn/theme/chooser/ChooserActivity.java
+++ b/src/com/cyngn/theme/chooser/ChooserActivity.java
@@ -98,6 +98,9 @@ public class ChooserActivity extends FragmentActivity
"com.cyngn.themes.action.THEME_REMOVED_FROM_CHOOSER";
private static final String EXTRA_PACKAGE = "package";
+ private static final String ACTION_PICK_ANIMATED_LOCK_SCREEN =
+ "com.cyngn.intent.action.PICK_ANIMATED_LOCK_SCREEN";
+
/**
* Request code for picking an external wallpaper
*/
@@ -116,6 +119,8 @@ public class ChooserActivity extends FragmentActivity
private static final long FINISH_ANIMATION_DELAY = ThemeFragment.ANIMATE_DURATION
+ ThemeFragment.ANIMATE_START_DELAY + 250;
+ private static final long ANIMATE_CARDS_IN_DURATION = 250;
+
private PagerContainer mContainer;
private ThemeViewPager mPager;
@@ -146,6 +151,7 @@ public class ChooserActivity extends FragmentActivity
private boolean mIsPickingImage = false;
private boolean mRestartLoaderOnCollapse = false;
private boolean mActivityResuming = false;
+ private boolean mShowAnimatedLockScreensOnly = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -344,9 +350,15 @@ public class ChooserActivity extends FragmentActivity
getCallingPackage())) {
mThemeToApply = intent.getStringExtra(EXTRA_PKGNAME);
}
+ } else if (action.equals(ACTION_PICK_ANIMATED_LOCK_SCREEN)) {
+ mShowAnimatedLockScreensOnly = true;
}
}
+ public boolean getShowAnimatedLockScreeOnly() {
+ return mShowAnimatedLockScreensOnly;
+ }
+
private String getSelectedTheme(String requestedTheme) {
String[] projection = { ThemesColumns.PRESENT_AS_THEME };
String selection = ThemesColumns.PKG_NAME + "=?";
@@ -632,6 +644,10 @@ public class ChooserActivity extends FragmentActivity
mContainerYOffset = 0;
}
if (f != null) f.fadeInCards();
+ if (mShowAnimatedLockScreensOnly) {
+ mShowAnimatedLockScreensOnly = false;
+ mSelector.resetComponentType();
+ }
} else if (mExpanded) {
if (mIsAnimating) {
return;
@@ -717,18 +733,23 @@ public class ChooserActivity extends FragmentActivity
((TransitionDrawable) d).startTransition((int) ANIMATE_CONTENT_IN_BLUR_DURATION);
}
- AnimatorSet set = new AnimatorSet();
- set.play(ObjectAnimator.ofFloat(mContainer, "alpha", 0f, 1f)
- .setDuration(ANIMATE_CONTENT_IN_ALPHA_DURATION))
- .with(ObjectAnimator.ofFloat(mContainer, "scaleX", 2f, 1f)
- .setDuration(ANIMATE_CONTENT_IN_SCALE_DURATION))
- .with(ObjectAnimator.ofFloat(mContainer, "scaleY", 2f, 1f)
- .setDuration(ANIMATE_CONTENT_IN_SCALE_DURATION));
- set.setStartDelay(mAnimateContentInDelay);
- set.start();
- mBottomActionsLayout.setAlpha(0f);
- mBottomActionsLayout.animate().alpha(1f).setStartDelay(mAnimateContentInDelay)
- .setDuration(ANIMATE_CONTENT_IN_ALPHA_DURATION);
+ if (!mShowAnimatedLockScreensOnly) {
+ AnimatorSet set = new AnimatorSet();
+ set.play(ObjectAnimator.ofFloat(mContainer, "alpha", 0f, 1f)
+ .setDuration(ANIMATE_CONTENT_IN_ALPHA_DURATION))
+ .with(ObjectAnimator.ofFloat(mContainer, "scaleX", 2f, 1f)
+ .setDuration(ANIMATE_CONTENT_IN_SCALE_DURATION))
+ .with(ObjectAnimator.ofFloat(mContainer, "scaleY", 2f, 1f)
+ .setDuration(ANIMATE_CONTENT_IN_SCALE_DURATION));
+ set.setStartDelay(mAnimateContentInDelay);
+ set.start();
+ mBottomActionsLayout.setAlpha(0f);
+ mBottomActionsLayout.animate().alpha(1f).setStartDelay(mAnimateContentInDelay)
+ .setDuration(ANIMATE_CONTENT_IN_ALPHA_DURATION);
+ } else {
+ mContainer.setAlpha(0f);
+ mContainer.setVisibility(View.GONE);
+ }
mAnimateContentIn = false;
}
@@ -919,7 +940,7 @@ public class ChooserActivity extends FragmentActivity
final String pkgName = mInstalledThemes.get(position);
if (pkgName.equals(mAppliedBaseTheme)) {
f = MyThemeFragment.newInstance(mAppliedBaseTheme, mAppliedThemeTitle,
- mAppliedThemeAuthor, mAnimateContentIn);
+ mAppliedThemeAuthor, mAnimateContentIn, mShowAnimatedLockScreensOnly);
wallpaperCmpntId = mCurrentWallpaperCmpntId;
} else {
f = ThemeFragment.newInstance(pkgName, mAnimateContentIn);
@@ -1057,4 +1078,25 @@ public class ChooserActivity extends FragmentActivity
}
}
}
+
+ public void expandContentAndAnimateLockScreenCardIn() {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ expand();
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ AnimatorSet set = new AnimatorSet();
+ set.play(ObjectAnimator.ofFloat(mContainer, "alpha", 0f, 1f)
+ .setDuration(ANIMATE_CARDS_IN_DURATION));
+ set.setStartDelay(mAnimateContentInDelay);
+ set.start();
+ mContainer.setVisibility(View.VISIBLE);
+ getCurrentFragment().showAnimatedLockScreenCard();
+ }
+ }, ANIMATE_CARDS_IN_DURATION);
+ }
+ });
+ }
}
diff --git a/src/com/cyngn/theme/chooser/ComponentSelector.java b/src/com/cyngn/theme/chooser/ComponentSelector.java
index edcaa19..48704a9 100644
--- a/src/com/cyngn/theme/chooser/ComponentSelector.java
+++ b/src/com/cyngn/theme/chooser/ComponentSelector.java
@@ -63,6 +63,7 @@ import static android.provider.ThemesContract.ThemesColumns.MODIFIES_NAVIGATION_
import static android.provider.ThemesContract.ThemesColumns.MODIFIES_ICONS;
import static android.provider.ThemesContract.ThemesColumns.MODIFIES_FONTS;
+import static com.cyngn.theme.util.CursorLoaderHelper.LOADER_ID_LIVE_LOCK_SCREEN;
import static com.cyngn.theme.util.CursorLoaderHelper.LOADER_ID_STATUS_BAR;
import static com.cyngn.theme.util.CursorLoaderHelper.LOADER_ID_FONT;
import static com.cyngn.theme.util.CursorLoaderHelper.LOADER_ID_ICONS;
@@ -212,6 +213,10 @@ public class ComponentSelector extends LinearLayout
}
}
+ public void resetComponentType() {
+ mComponentType = null;
+ }
+
public void setComponentType(String component) {
setComponentType(component, null, DEFAULT_COMPONENT_ID);
}
@@ -352,7 +357,8 @@ public class ComponentSelector extends LinearLayout
return LOADER_ID_ALARM;
}
if (MODIFIES_LOCKSCREEN.equals(component)) {
- return LOADER_ID_LOCKSCREEN;
+ return (showAnimatedLockScreenOnly()) ? LOADER_ID_LIVE_LOCK_SCREEN
+ : LOADER_ID_LOCKSCREEN;
}
return -1;
}
@@ -541,6 +547,10 @@ public class ComponentSelector extends LinearLayout
return newSoundView(cursor, container, position, mComponentType);
}
if (MODIFIES_LOCKSCREEN.equals(mComponentType)) {
+ if (showAnimatedLockScreenOnly()) {
+ return newWallpapersView(cursor, container, position + EXTRA_WALLPAPER_COMPONENTS,
+ cursor.getColumnIndex(PreviewColumns.LIVE_LOCK_SCREEN_THUMBNAIL), true);
+ }
boolean isLiveLockScreen = false;
if (position >= EXTRA_WALLPAPER_COMPONENTS) {
cursor.moveToPosition(position - EXTRA_WALLPAPER_COMPONENTS);
@@ -866,6 +876,10 @@ public class ComponentSelector extends LinearLayout
}
};
+ private boolean showAnimatedLockScreenOnly() {
+ return ((ChooserActivity)mContext).getShowAnimatedLockScreeOnly();
+ }
+
private class ThemesObserver extends ContentObserver {
public ThemesObserver() {
super(null);
diff --git a/src/com/cyngn/theme/chooser/MyThemeFragment.java b/src/com/cyngn/theme/chooser/MyThemeFragment.java
index 9803b55..1171236 100644
--- a/src/com/cyngn/theme/chooser/MyThemeFragment.java
+++ b/src/com/cyngn/theme/chooser/MyThemeFragment.java
@@ -67,7 +67,8 @@ public class MyThemeFragment extends ThemeFragment {
private SurfaceView mSurfaceView;
static MyThemeFragment newInstance(String baseThemePkgName, String baseThemeName,
- String baseThemeAuthor, boolean skipLoadingAnim) {
+ String baseThemeAuthor, boolean skipLoadingAnim,
+ boolean showAnimatedLockScreensOnly) {
MyThemeFragment f = new MyThemeFragment();
Bundle args = new Bundle();
args.putString(ARG_PACKAGE_NAME, CURRENTLY_APPLIED_THEME);
@@ -75,6 +76,7 @@ public class MyThemeFragment extends ThemeFragment {
args.putString(ARG_BASE_THEME_NAME, baseThemeName);
args.putString(ARG_BASE_THEME_AUTHOR, baseThemeAuthor);
args.putBoolean(ARG_SKIP_LOADING_ANIM, skipLoadingAnim);
+ args.putBoolean(ARG_SHOW_ANIMATED_LOCK_SCREEN_ONLY, showAnimatedLockScreensOnly);
f.setArguments(args);
return f;
}
@@ -89,6 +91,7 @@ public class MyThemeFragment extends ThemeFragment {
mBaseThemePkgName = getArguments().getString(ARG_BASE_THEME_PACKAGE_NAME);
mBaseThemeName = getArguments().getString(ARG_BASE_THEME_NAME);
mBaseThemeAuthor = getArguments().getString(ARG_BASE_THEME_AUTHOR);
+ mShowAnimatedLockScreenSelectorAfterContentLoaded = getArguments().getBoolean(ARG_SHOW_ANIMATED_LOCK_SCREEN_ONLY);
mSurfaceView = createSurfaceView();
}
diff --git a/src/com/cyngn/theme/chooser/ThemeFragment.java b/src/com/cyngn/theme/chooser/ThemeFragment.java
index 7f9d2af..8458637 100644
--- a/src/com/cyngn/theme/chooser/ThemeFragment.java
+++ b/src/com/cyngn/theme/chooser/ThemeFragment.java
@@ -5,6 +5,7 @@ package com.cyngn.theme.chooser;
import android.Manifest;
import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.IntEvaluator;
import android.animation.ObjectAnimator;
@@ -180,6 +181,8 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
private static final int ADDITIONAL_CONTENT_SPACE_ID = 123456;
private static final long SLIDE_CONTENT_ANIM_DURATION = 300L;
+ private static final long LOCK_SCREEN_CARD_SCROLL_ANIMATION_DURATION = 400;
+ private static final long SHOW_LOCK_SCREEN_CARD_DELAY = 500;
private static final int DEFAULT_WIFI_MARGIN = 0;
private static final int DEFAULT_CLOCK_COLOR = Color.WHITE;
@@ -189,6 +192,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
protected static final String ARG_PACKAGE_NAME = "pkgName";
protected static final String ARG_COMPONENT_ID = "cmpntId";
protected static final String ARG_SKIP_LOADING_ANIM = "skipLoadingAnim";
+ protected static final String ARG_SHOW_ANIMATED_LOCK_SCREEN_ONLY = "showAnimatedLockScreenOnly";
private static final String LLS_PACKAGE_NAME = "com.cyngn.lockscreen.live";
private static final String LLS_PROVIDER_NAME =
@@ -315,6 +319,8 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
private static final int mThemeVersion = ThemeVersion.getVersion();
+ protected boolean mShowAnimatedLockScreenSelectorAfterContentLoaded;
+
protected enum CustomizeResetAction {
Customize,
Reset,
@@ -1333,6 +1339,10 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
animateContentIn();
}
});
+ if (mShowAnimatedLockScreenSelectorAfterContentLoaded) {
+ getChooserActivity().expandContentAndAnimateLockScreenCardIn();
+ mShowAnimatedLockScreenSelectorAfterContentLoaded = false;
+ }
break;
case LOADER_ID_STATUS_BAR:
loadStatusBar(c, animate);
@@ -2733,6 +2743,32 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
scrollAnimator.start();
}
+ public void showAnimatedLockScreenCard() {
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ final ValueAnimator scrollAnimator =
+ ValueAnimator.ofInt(0, mStyleCard.getBottom());
+ scrollAnimator.setDuration(LOCK_SCREEN_CARD_SCROLL_ANIMATION_DURATION);
+ scrollAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ int value = (Integer) animation.getAnimatedValue();
+ mScrollView.scrollTo(0, value);
+ }
+ });
+ scrollAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ mCardClickListener.onClick(mLockScreenCard);
+ }
+ });
+ scrollAnimator.start();
+ }
+ }, SHOW_LOCK_SCREEN_CARD_DELAY);
+ }
+
class AnimationLoader extends AsyncTask<Void, Void, Boolean> {
Context mContext;
String mPkgName;
diff --git a/src/com/cyngn/theme/util/CursorLoaderHelper.java b/src/com/cyngn/theme/util/CursorLoaderHelper.java
index 333899b..c4fffa9 100644
--- a/src/com/cyngn/theme/util/CursorLoaderHelper.java
+++ b/src/com/cyngn/theme/util/CursorLoaderHelper.java
@@ -191,6 +191,27 @@ public class CursorLoaderHelper {
};
}
break;
+ case LOADER_ID_LIVE_LOCK_SCREEN:
+ selection = MODIFIES_LIVE_LOCK_SCREEN + "=?";
+ selectionArgs = new String[] { "1" };
+ if (mThemeVersion >= 3) {
+ projection = new String[]{
+ PreviewColumns.LIVE_LOCK_SCREEN_THUMBNAIL,
+ ThemesColumns.TITLE,
+ ThemesColumns.PKG_NAME,
+ ThemesColumns.MODIFIES_LIVE_LOCK_SCREEN,
+ PreviewColumns.COMPONENT_ID
+ };
+ } else {
+ projection = new String[]{
+ PreviewColumns.LOCK_WALLPAPER_THUMBNAIL,
+ PreviewColumns.LIVE_LOCK_SCREEN_THUMBNAIL,
+ ThemesColumns.TITLE,
+ ThemesColumns.MODIFIES_LIVE_LOCK_SCREEN,
+ ThemesColumns.PKG_NAME
+ };
+ }
+ break;
default:
return null;
}