Animator
object.
+ *
+ * @return ArrayListAnimator
object.
+ *
+ * @return ArrayListThe animation started by calling this method will be run on the thread that called + * this method. This thread should have a Looper on it (a runtime exception will be thrown if + * this is not the case). Also, if the animation will animate + * properties of objects in the view hierarchy, then the calling thread should be the UI + * thread for that view hierarchy.
+ * + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void start() { + if(LOLLIPOP){ + mNativeAnimator.start(); + }else{ + mSupportAnimator.start(); + } + } + + + public com.nineoldandroids.animation.Animator getSupportAnimator(){ + return mSupportAnimator; + } + + public android.animation.Animator getNativeAnimator(){ + return mNativeAnimator; + } + +} diff --git a/circualreveal/src/main/java/io/codetail/animation/ViewAnimationUtils.java b/circualreveal/src/main/java/io/codetail/animation/ViewAnimationUtils.java index a0396ce..e75365e 100644 --- a/circualreveal/src/main/java/io/codetail/animation/ViewAnimationUtils.java +++ b/circualreveal/src/main/java/io/codetail/animation/ViewAnimationUtils.java @@ -31,10 +31,15 @@ public class ViewAnimationUtils { * @param startRadius The starting radius of the animating circle. * @param endRadius The ending radius of the animating circle. */ - public static Animator createCircularReveal(View view, + public static io.codetail.animation.Animator createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius) { + if(io.codetail.animation.Animator.LOLLIPOP){ + return new io.codetail.animation.Animator(android.view.ViewAnimationUtils + .createCircularReveal(view, centerX, centerY, startRadius, endRadius)); + } + if(!(view.getParent() instanceof RevealAnimator)){ throw new IllegalArgumentException("View must be inside dreamers.widget.RevealLayout."); } @@ -46,10 +51,10 @@ public static Animator createCircularReveal(View view, Rect bounds = new Rect(); view.getHitRect(bounds); - Animator reveal = ObjectAnimator.ofFloat(revealLayout, "revealRadius", startRadius, endRadius); + ObjectAnimator reveal = ObjectAnimator.ofFloat(revealLayout, "revealRadius", startRadius, endRadius); reveal.addListener(new RevealAnimator.RevealFinished(revealLayout, bounds)); - return reveal; + return new io.codetail.animation.Animator(reveal); } /** diff --git a/circualreveal/src/main/java/io/codetail/widget/FrameLayoutCompat.java b/circualreveal/src/main/java/io/codetail/widget/FrameLayoutCompat.java index f7af3a8..1805591 100644 --- a/circualreveal/src/main/java/io/codetail/widget/FrameLayoutCompat.java +++ b/circualreveal/src/main/java/io/codetail/widget/FrameLayoutCompat.java @@ -23,15 +23,16 @@ import java.util.ArrayList; +import io.codetail.animation.Animator; import io.codetail.view.R; // Port of FrameLayout for Android 2.3 Gingerbread public class FrameLayoutCompat extends ViewGroup{ - private static final int DEFAULT_CHILD_GRAVITY = Gravity.TOP | Gravity.START; - private static final boolean FEATURES_HONEYCOMB = Build.VERSION.SDK_INT > 10; - private static final boolean FEATURES_KITKAT = Build.VERSION.SDK_INT > 16; - private static final boolean FEATURES_LOLLIPOP = Build.VERSION.SDK_INT > 16; + static final int DEFAULT_CHILD_GRAVITY = Gravity.TOP | Gravity.START; + static final boolean FEATURES_HONEYCOMB = Build.VERSION.SDK_INT > 10; + static final boolean FEATURES_KITKAT = Build.VERSION.SDK_INT > 16; + static final boolean FEATURES_LOLLIPOP = Animator.LOLLIPOP; boolean mMeasureAllChildren = false; diff --git a/circualreveal/src/main/java/io/codetail/widget/RevealFrameLayout.java b/circualreveal/src/main/java/io/codetail/widget/RevealFrameLayout.java index 2a320d5..dcc62a4 100644 --- a/circualreveal/src/main/java/io/codetail/widget/RevealFrameLayout.java +++ b/circualreveal/src/main/java/io/codetail/widget/RevealFrameLayout.java @@ -32,6 +32,10 @@ public RevealFrameLayout(Context context, AttributeSet attrs) { public RevealFrameLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + if(FEATURES_HONEYCOMB && !FEATURES_KITKAT){ + setLayerType(LAYER_TYPE_SOFTWARE, null); + } + mRevealPath = new Path(); }