From 8ae41cb2ee75c6387820e7fdf98ea05f3c6c3f9c Mon Sep 17 00:00:00 2001 From: Ilia Solovyev Date: Wed, 10 Aug 2016 00:50:23 +0700 Subject: [PATCH 1/3] Update MaterialSearchView.java --- .../MaterialSearchView.java | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java b/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java index 0261f7f..1d7c64c 100644 --- a/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java +++ b/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java @@ -565,11 +565,37 @@ public void closeSearch() { return; } - mSearchSrcTextView.setText(null); + AnimationUtil.AnimationListener animationListener = new AnimationUtil.AnimationListener() { + @Override + public boolean onAnimationStart(View view) { + return false; + } + + @Override + public boolean onAnimationEnd(View view) { + if (mSearchViewListener != null) { + mSearchViewListener.onSearchViewShown(); + } + return false; + } + + @Override + public boolean onAnimationCancel(View view) { + return false; + } + }; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + AnimationUtil.disappear(mSearchTopBar, animationListener); + } else { + AnimationUtil.fadeOutView(mSearchLayout, mAnimationDuration, animationListener); + } + + //mSearchSrcTextView.setText(null); dismissSuggestions(); clearFocus(); - mSearchLayout.setVisibility(GONE); + //mSearchLayout.setVisibility(GONE); if (mSearchViewListener != null) { mSearchViewListener.onSearchViewClosed(); } @@ -725,4 +751,4 @@ public interface SearchViewListener { } -} \ No newline at end of file +} From da35ac5d697c0dcbbf7bf66ed05d9c25cbc36792 Mon Sep 17 00:00:00 2001 From: Ilia Solovyev Date: Wed, 10 Aug 2016 00:51:11 +0700 Subject: [PATCH 2/3] Added disappear method --- .../utils/AnimationUtil.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/miguelcatalan/materialsearchview/utils/AnimationUtil.java b/library/src/main/java/com/miguelcatalan/materialsearchview/utils/AnimationUtil.java index e6f1135..1b46a23 100644 --- a/library/src/main/java/com/miguelcatalan/materialsearchview/utils/AnimationUtil.java +++ b/library/src/main/java/com/miguelcatalan/materialsearchview/utils/AnimationUtil.java @@ -109,6 +109,40 @@ public void onAnimationRepeat(Animator animation) { anim.start(); } + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public static void disappear(final View view, final AnimationListener listener) { + int cx = view.getWidth() - (int) TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, 24, view.getResources().getDisplayMetrics()); + int cy = view.getHeight() / 2; + int finalRadius = Math.max(view.getWidth(), view.getHeight()); + + Animator anim = ViewAnimationUtils.createCircularReveal(view, cx, cy, finalRadius, 0); + view.setVisibility(View.VISIBLE); + anim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + listener.onAnimationStart(view); + } + + @Override + public void onAnimationEnd(Animator animation) { + view.setVisibility(View.GONE); + listener.onAnimationEnd(view); + } + + @Override + public void onAnimationCancel(Animator animation) { + listener.onAnimationCancel(view); + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }); + anim.start(); + } + public static void fadeOutView(View view) { fadeOutView(view, ANIMATION_DURATION_SHORT); } @@ -139,4 +173,4 @@ public void onAnimationCancel(View view) { } }); } -} \ No newline at end of file +} From 9d825a3fe30688ef6a70d39cf7057a98864ed7ce Mon Sep 17 00:00:00 2001 From: Ilia Solovyev Date: Wed, 10 Aug 2016 01:13:17 +0700 Subject: [PATCH 3/3] Added code for closing animation --- .../MaterialSearchView.java | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java b/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java index 1d7c64c..936c7ea 100644 --- a/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java +++ b/library/src/main/java/com/miguelcatalan/materialsearchview/MaterialSearchView.java @@ -558,13 +558,37 @@ public boolean onAnimationCancel(View view) { } /** - * Close search view. + * Close search view. This will animate the closing of the view. */ public void closeSearch() { + closeSearch(true); + } + + /** + * Close Search View. If animate is true, Animate the closing of the view. + * + * @param animate true for animate + */ + public void closeSearch(boolean animate) { if (!isSearchOpen()) { return; } + dismissSuggestions(); + clearFocus(); + + if (animate) { + setInvisibleWithAnimation(); + } else { + mSearchLayout.setVisibility(GONE); + if (mSearchViewListener != null) { + mSearchViewListener.onSearchViewClosed(); + } + } + mIsSearchOpen = false; + } + + private void setInvisibleWithAnimation() { AnimationUtil.AnimationListener animationListener = new AnimationUtil.AnimationListener() { @Override public boolean onAnimationStart(View view) { @@ -574,7 +598,7 @@ public boolean onAnimationStart(View view) { @Override public boolean onAnimationEnd(View view) { if (mSearchViewListener != null) { - mSearchViewListener.onSearchViewShown(); + mSearchViewListener.onSearchViewClosed(); } return false; } @@ -590,17 +614,6 @@ public boolean onAnimationCancel(View view) { } else { AnimationUtil.fadeOutView(mSearchLayout, mAnimationDuration, animationListener); } - - //mSearchSrcTextView.setText(null); - dismissSuggestions(); - clearFocus(); - - //mSearchLayout.setVisibility(GONE); - if (mSearchViewListener != null) { - mSearchViewListener.onSearchViewClosed(); - } - mIsSearchOpen = false; - } /**