summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/util/UiThreadCircularReveal.java
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2015-07-21 17:01:26 -0700
committerEd Heyl <edheyl@google.com>2015-07-22 11:31:04 -0700
commite612775922ec9f8cc4e5cb976bc62b3312a3de0e (patch)
tree96beaf07307486f6491f022da63ebe381765d1a8 /src/com/android/launcher3/util/UiThreadCircularReveal.java
parenta83129f0bc778fd1ccd799bd8cfa40270f632e1d (diff)
downloadandroid_packages_apps_Trebuchet-e612775922ec9f8cc4e5cb976bc62b3312a3de0e.tar.gz
android_packages_apps_Trebuchet-e612775922ec9f8cc4e5cb976bc62b3312a3de0e.tar.bz2
android_packages_apps_Trebuchet-e612775922ec9f8cc4e5cb976bc62b3312a3de0e.zip
resolved conflicts for merge of 13ef17a3 to mnc-dr-dev
b/22609402 Change-Id: I140cf972d57e14737a6f91c0b4a8ec6c7ff1af2b
Diffstat (limited to 'src/com/android/launcher3/util/UiThreadCircularReveal.java')
-rw-r--r--src/com/android/launcher3/util/UiThreadCircularReveal.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/com/android/launcher3/util/UiThreadCircularReveal.java b/src/com/android/launcher3/util/UiThreadCircularReveal.java
new file mode 100644
index 000000000..3ca3aeeee
--- /dev/null
+++ b/src/com/android/launcher3/util/UiThreadCircularReveal.java
@@ -0,0 +1,57 @@
+package com.android.launcher3.util;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+
+import com.android.launcher3.Utilities;
+
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class UiThreadCircularReveal {
+
+ public static ValueAnimator createCircularReveal(View v, int x, int y, float r0, float r1) {
+ return createCircularReveal(v, x, y, r0, r1, ViewOutlineProvider.BACKGROUND);
+ }
+
+ public static ValueAnimator createCircularReveal(View v, int x, int y, float r0, float r1,
+ final ViewOutlineProvider originalProvider) {
+ ValueAnimator va = ValueAnimator.ofFloat(0f, 1f);
+
+ final View revealView = v;
+ final RevealOutlineProvider outlineProvider = new RevealOutlineProvider(x, y, r0, r1);
+ final float elevation = v.getElevation();
+
+ va.addListener(new AnimatorListenerAdapter() {
+ public void onAnimationStart(Animator animation) {
+ revealView.setOutlineProvider(outlineProvider);
+ revealView.setClipToOutline(true);
+ revealView.setTranslationZ(-elevation);
+ }
+
+ public void onAnimationEnd(Animator animation) {
+ revealView.setOutlineProvider(originalProvider);
+ revealView.setClipToOutline(false);
+ revealView.setTranslationZ(0);
+ }
+
+ });
+
+ va.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator arg0) {
+ float progress = arg0.getAnimatedFraction();
+ outlineProvider.setProgress(progress);
+ revealView.invalidateOutline();
+ if (!Utilities.isLmpMR1OrAbove()) {
+ revealView.invalidate();
+ }
+ }
+ });
+ return va;
+ }
+}