From bcbcd9c2db5035fa010f12c2a120fd4c35cae005 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Tue, 3 Jun 2014 17:11:42 -0700 Subject: Some more search polish. - Reset padding after applying 9-patch so things are centered properly. - Properly adjust visibility of more views to make animation more smooth. Merge logic into common helper method. Bug: 15343931 Change-Id: I5ab62a823c8fad8a7644aaad641d5193d0dc6af8 --- .../dialer/widget/SearchEditTextLayout.java | 45 ++++++++++++++++------ 1 file changed, 34 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java index d229aa402..f3e355d7c 100644 --- a/src/com/android/dialer/widget/SearchEditTextLayout.java +++ b/src/com/android/dialer/widget/SearchEditTextLayout.java @@ -49,10 +49,12 @@ public class SearchEditTextLayout extends FrameLayout { private View mCollapsed; private View mExpanded; private EditText mSearchView; + private View mSearchIcon; private View mCollapsedSearchBox; private View mVoiceSearchButtonView; private View mOverflowButtonView; private View mBackButtonView; + private View mExpandedSearchBox; private View mClearButtonView; private ValueAnimator mAnimator; @@ -92,10 +94,12 @@ public class SearchEditTextLayout extends FrameLayout { mExpanded = findViewById(R.id.search_box_expanded); mSearchView = (EditText) mExpanded.findViewById(R.id.search_view); + mSearchIcon = findViewById(R.id.search_magnifying_glass); mCollapsedSearchBox = findViewById(R.id.search_box_start_search); mVoiceSearchButtonView = findViewById(R.id.voice_search_button); mOverflowButtonView = findViewById(R.id.dialtacts_options_menu_button); mBackButtonView = findViewById(R.id.search_back_button); + mExpandedSearchBox = findViewById(R.id.search_box_expanded); mClearButtonView = findViewById(R.id.search_close_button); mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() { @@ -162,11 +166,7 @@ public class SearchEditTextLayout extends FrameLayout { } } public void expand(boolean animate, boolean requestFocus) { - mCollapsedSearchBox.setVisibility(View.GONE); - mVoiceSearchButtonView.setVisibility(View.GONE); - mOverflowButtonView.setVisibility(View.GONE); - mBackButtonView.setVisibility(View.VISIBLE); - mClearButtonView.setVisibility(View.VISIBLE); + updateVisibility(true /* isExpand */); if (animate) { AnimUtils.crossFadeViews(mExpanded, mCollapsed, ANIMATION_DURATION); @@ -180,7 +180,15 @@ public class SearchEditTextLayout extends FrameLayout { mCollapsed.setVisibility(View.GONE); } + // Set 9-patch background. This owns the padding, so we need to restore the original values. + int paddingTop = this.getPaddingTop(); + int paddingStart = this.getPaddingStart(); + int paddingBottom = this.getPaddingBottom(); + int paddingEnd = this.getPaddingEnd(); setBackgroundResource(R.drawable.search_shadow); + setElevation(0); + setPaddingRelative(paddingStart, paddingTop, paddingEnd, paddingBottom); + setElevation(0); if (requestFocus) { mSearchView.requestFocus(); @@ -189,11 +197,7 @@ public class SearchEditTextLayout extends FrameLayout { } public void collapse(boolean animate) { - mCollapsedSearchBox.setVisibility(View.VISIBLE); - mVoiceSearchButtonView.setVisibility(View.VISIBLE); - mOverflowButtonView.setVisibility(View.VISIBLE); - mBackButtonView.setVisibility(View.GONE); - mClearButtonView.setVisibility(View.GONE); + updateVisibility(false /* isExpand */); if (animate) { AnimUtils.crossFadeViews(mCollapsed, mExpanded, ANIMATION_DURATION); @@ -211,6 +215,25 @@ public class SearchEditTextLayout extends FrameLayout { setBackgroundResource(R.drawable.rounded_corner); } + /** + * Updates the visibility of views depending on whether we will show the expanded or collapsed + * search view. This helps prevent some jank with the crossfading if we are animating. + * + * @param isExpand Whether we are about to show the expanded search box. + */ + private void updateVisibility(boolean isExpand) { + int collapsedViewVisibility = isExpand ? View.GONE : View.VISIBLE; + int expandedViewVisibility = isExpand ? View.VISIBLE : View.GONE; + + mSearchIcon.setVisibility(collapsedViewVisibility); + mCollapsedSearchBox.setVisibility(collapsedViewVisibility); + mVoiceSearchButtonView.setVisibility(collapsedViewVisibility); + mOverflowButtonView.setVisibility(collapsedViewVisibility); + mBackButtonView.setVisibility(expandedViewVisibility); + mExpandedSearchBox.setVisibility(expandedViewVisibility); + mClearButtonView.setVisibility(expandedViewVisibility); + } + private void prepareAnimator(final boolean expand) { if (mAnimator != null) { mAnimator.cancel(); @@ -257,4 +280,4 @@ public class SearchEditTextLayout extends FrameLayout { params.rightMargin = (int) (mRightMargin * fraction); requestLayout(); } -} \ No newline at end of file +} -- cgit v1.2.3