summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2014-05-19 15:39:27 -0700
committerYorke Lee <yorkelee@google.com>2014-05-20 12:40:17 -0700
commitec489fb5d4bba57ccdfd24b48e26257294d29979 (patch)
tree65677867ea515458573336134a81da36e600d2df
parent024a7f84fe0c605f97ffe4a176d5a8c2c17ffe7a (diff)
Make searchbox expand when entering search UI
Bug: 14900155 Change-Id: Ib6e500ed55db90ad1fa13ba6dd0e141721331ba4
-rw-r--r--res/drawable/rounded_corner.xml22
-rw-r--r--res/layout/search_edittext.xml2
-rw-r--r--src/com/android/dialer/DialtactsActivity.java19
-rw-r--r--src/com/android/dialer/widget/SearchEditTextLayout.java46
4 files changed, 79 insertions, 10 deletions
diff --git a/res/drawable/rounded_corner.xml b/res/drawable/rounded_corner.xml
new file mode 100644
index 000000000..fb8f4f56d
--- /dev/null
+++ b/res/drawable/rounded_corner.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2014 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle" >
+ <solid android:color="@color/searchbox_background_color" />
+ <corners android:radius="2dp" />
+</shape>
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
index 03c51060e..ff9cabbfd 100644
--- a/res/layout/search_edittext.xml
+++ b/res/layout/search_edittext.xml
@@ -11,7 +11,7 @@
android:layout_marginRight="@dimen/search_margin_horizontal"
android:paddingLeft="@dimen/search_box_left_padding"
android:paddingRight="@dimen/search_box_right_padding"
- android:background="@drawable/rounded_corner_bg"
+ android:background="@drawable/rounded_corner"
android:gravity="center_vertical"
android:elevation="@dimen/search_box_elevation"
>
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 3b68db97b..4149f3986 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -193,6 +193,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
private View mSearchIcon;
private View mSearchViewCloseButton;
private View mVoiceSearchButton;
+ private SearchEditTextLayout mSearchEditTextLayout;
/**
* View that contains the "Remove" dialog that shows up when the user long presses a contact.
@@ -332,21 +333,21 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
actionBar.setCustomView(R.layout.search_edittext);
actionBar.setDisplayShowCustomEnabled(true);
- SearchEditTextLayout actionBarView = (SearchEditTextLayout) actionBar.getCustomView();
- actionBarView.setPreImeKeyListener(mSearchEditTextLayoutListener);
+ mSearchEditTextLayout = (SearchEditTextLayout) actionBar.getCustomView();
+ mSearchEditTextLayout.setPreImeKeyListener(mSearchEditTextLayoutListener);
- mSearchIcon = actionBarView.findViewById(R.id.search_magnifying_glass);
- mVoiceSearchButton = actionBarView.findViewById(R.id.voice_search_button);
+ mSearchIcon = mSearchEditTextLayout.findViewById(R.id.search_magnifying_glass);
+ mVoiceSearchButton = mSearchEditTextLayout.findViewById(R.id.voice_search_button);
- mSearchView = (EditText) actionBarView.findViewById(R.id.search_view);
+ mSearchView = (EditText) mSearchEditTextLayout.findViewById(R.id.search_view);
mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
mSearchView.setOnTouchListener(mSearchViewOnTouchListener);
- mSearchViewCloseButton = actionBarView.findViewById(R.id.search_close_button);
+ mSearchViewCloseButton = mSearchEditTextLayout.findViewById(R.id.search_close_button);
mSearchViewCloseButton.setOnClickListener(this);
- ImageButton optionsMenuButton =
- (ImageButton) actionBarView.findViewById(R.id.dialtacts_options_menu_button);
+ ImageButton optionsMenuButton = (ImageButton) mSearchEditTextLayout.findViewById(
+ R.id.dialtacts_options_menu_button);
optionsMenuButton.setOnClickListener(this);
final OptionsPopupMenu optionsMenu = buildOptionsMenu(optionsMenuButton);
optionsMenuButton.setOnTouchListener(optionsMenu.getDragToOpenListener());
@@ -816,6 +817,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
transaction.commit();
mListsFragment.getView().animate().alpha(0).withLayer();
+ mSearchEditTextLayout.animateExpandOrCollapse(true);
if (!mIsDialpadShown) {
mSearchIcon.setVisibility(View.GONE);
@@ -847,6 +849,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
transaction.commit();
mListsFragment.getView().animate().alpha(1).withLayer();
+ mSearchEditTextLayout.animateExpandOrCollapse(false);
mSearchIcon.setVisibility(View.VISIBLE);
}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index 40a4e43b9..e2cbcb3ef 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -16,17 +16,27 @@
package com.android.dialer.widget;
-
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.LinearLayout;
+import com.android.dialer.R;
+
public class SearchEditTextLayout extends LinearLayout {
private OnKeyListener mPreImeKeyListener;
+ private int mTopMargin;
+ private int mBottomMargin;
+ private int mLeftMargin;
+ private int mRightMargin;
+
+ private int mBackgroundColor;
public SearchEditTextLayout(Context context, AttributeSet attrs) {
super(context, attrs);
+ mBackgroundColor = getResources().getColor(R.color.searchbox_background_color);
}
public void setPreImeKeyListener(OnKeyListener listener) {
@@ -34,6 +44,16 @@ public class SearchEditTextLayout extends LinearLayout {
}
@Override
+ protected void onFinishInflate() {
+ MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
+ mTopMargin = params.topMargin;
+ mBottomMargin = params.bottomMargin;
+ mLeftMargin = params.leftMargin;
+ mRightMargin = params.rightMargin;
+ super.onFinishInflate();
+ }
+
+ @Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if (mPreImeKeyListener != null) {
if (mPreImeKeyListener.onKey(this, event.getKeyCode(), event)) {
@@ -42,4 +62,28 @@ public class SearchEditTextLayout extends LinearLayout {
}
return super.dispatchKeyEventPreIme(event);
}
+
+ public void animateExpandOrCollapse(boolean expand) {
+ final ValueAnimator animator;
+ if (expand) {
+ animator = ValueAnimator.ofFloat(1f, 0f);
+ setBackgroundColor(mBackgroundColor);
+ } else {
+ animator = ValueAnimator.ofFloat(0f, 1f);
+ setBackgroundResource(R.drawable.rounded_corner);
+ }
+ animator.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ final Float fraction = (Float) animation.getAnimatedValue();
+ MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
+ params.topMargin = (int) (mTopMargin * fraction);
+ params.bottomMargin = (int) (mBottomMargin * fraction);
+ params.leftMargin = (int) (mLeftMargin * fraction);
+ params.rightMargin = (int) (mRightMargin * fraction);
+ requestLayout();
+ }
+ });
+ animator.start();
+ }
} \ No newline at end of file