summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2014-06-03 22:17:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-06-03 22:17:02 +0000
commitc7244339c8d06831e9e6dff5d3434d4e82f5c225 (patch)
tree85e3dfd6150ffdc4d1171e6c3d976c7dfc45f73d
parente1c0396db7e655e2a4e9ce5ce85c614ea450c723 (diff)
parent05b6267428450f190d04af187a206cc495da8995 (diff)
Merge "DO NOT MERGE. Styling search to match redlines." into lmp-preview-dev
-rw-r--r--res/anim/slide_in.xml2
-rw-r--r--res/anim/slide_out.xml2
-rw-r--r--res/layout/search_edittext.xml42
-rw-r--r--res/values/animation_constants.xml2
-rw-r--r--res/values/dimens.xml13
-rw-r--r--src/com/android/dialer/DialtactsActivity.java12
-rw-r--r--src/com/android/dialer/list/SearchFragment.java58
-rw-r--r--src/com/android/dialer/widget/SearchEditTextLayout.java28
8 files changed, 113 insertions, 46 deletions
diff --git a/res/anim/slide_in.xml b/res/anim/slide_in.xml
index b0eed3713..4463f2f24 100644
--- a/res/anim/slide_in.xml
+++ b/res/anim/slide_in.xml
@@ -15,6 +15,6 @@
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@interpolator/ease_in_interpolator"
- android:duration="532"
+ android:duration="@integer/dialpad_slide_in_duration"
android:fromYDelta="67%p"
android:toYDelta="0" /> \ No newline at end of file
diff --git a/res/anim/slide_out.xml b/res/anim/slide_out.xml
index 231555e88..88687f477 100644
--- a/res/anim/slide_out.xml
+++ b/res/anim/slide_out.xml
@@ -15,6 +15,6 @@
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@interpolator/ease_out_interpolator"
- android:duration="257"
+ android:duration="@integer/dialpad_slide_out_duration"
android:fromYDelta="0"
android:toYDelta="80%p" /> \ No newline at end of file
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
index 50cbf5af9..ac1114e2a 100644
--- a/res/layout/search_edittext.xml
+++ b/res/layout/search_edittext.xml
@@ -9,18 +9,28 @@
android:layout_marginBottom="@dimen/search_bottom_margin"
android:layout_marginLeft="@dimen/search_margin_horizontal"
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"
- android:elevation="@dimen/search_box_elevation"
- >
+ android:elevation="@dimen/search_box_elevation">
+
<LinearLayout
android:id="@+id/search_box_collapsed"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:paddingStart="@dimen/search_box_left_padding"
+ android:paddingEnd="@dimen/search_box_right_padding"
android:gravity="center_vertical"
android:orientation="horizontal" >
+ <ImageView
+ android:id="@+id/search_magnifying_glass"
+ android:layout_height="@dimen/search_box_icon_size"
+ android:layout_width="@dimen/search_box_icon_size"
+ android:layout_margin="@dimen/search_box_icon_margin"
+ android:padding="@dimen/search_box_search_icon_padding"
+ android:src="@drawable/ic_ab_search"
+ android:importantForAccessibility="no"
+ android:tint="@color/searchbox_icon_tint" />
+
<!-- Portion of the search box that starts a search when clicked -->
<LinearLayout
android:id="@+id/search_box_start_search"
@@ -29,21 +39,11 @@
android:layout_weight="1"
android:gravity="center_vertical" >
- <ImageView
- android:id="@+id/search_magnifying_glass"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_width="@dimen/search_box_icon_size"
- android:layout_margin="@dimen/search_box_icon_margin"
- android:padding="@dimen/search_box_search_icon_padding"
- android:src="@drawable/ic_ab_search"
- android:importantForAccessibility="no"
- android:tint="@color/searchbox_icon_tint" />
-
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/search_box_icon_size"
- android:layout_marginLeft="@dimen/search_box_text_left_margin"
- android:textSize="@dimen/search_text_size"
+ android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
+ android:textSize="@dimen/search_collapsed_text_size"
android:fontFamily="@string/search_font_family"
android:textColor="@color/searchbox_text_color"
android:textColorHint="@color/searchbox_hint_text_color"
@@ -88,7 +88,7 @@
android:id="@+id/search_back_button"
android:layout_width="@dimen/search_box_icon_size"
android:layout_height="@dimen/search_box_icon_size"
- android:layout_margin="@dimen/search_box_icon_margin"
+ android:layout_marginLeft="8dp"
android:src="@drawable/ic_back_arrow"
android:background="?android:attr/selectableItemBackground"
android:contentDescription="@string/action_menu_overflow_description"
@@ -97,10 +97,10 @@
<EditText
android:id="@+id/search_view"
android:layout_width="0dp"
- android:layout_height="@dimen/search_box_icon_size"
+ android:layout_height="@dimen/action_bar_height"
android:layout_weight="1"
- android:layout_marginLeft="@dimen/search_box_text_left_margin"
- android:textSize="@dimen/search_text_size"
+ android:layout_marginLeft="@dimen/search_box_expanded_text_margin_left"
+ android:textSize="@dimen/search_expanded_text_size"
android:fontFamily="@string/search_font_family"
android:textColor="@color/searchbox_text_color"
android:inputType="textFilter" />
@@ -109,7 +109,7 @@
android:id="@+id/search_close_button"
android:layout_height="@dimen/search_box_icon_size"
android:layout_width="@dimen/search_box_icon_size"
- android:layout_margin="@dimen/search_box_icon_margin"
+ android:layout_marginRight="8dp"
android:src="@drawable/ic_close_dk"
android:clickable="true"
android:background="?android:attr/selectableItemBackground"
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
index 786306092..05b8e218d 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -16,6 +16,8 @@
-->
<resources>
<integer name="fade_duration">300</integer>
+ <integer name="dialpad_slide_in_duration">532</integer>
+ <integer name="dialpad_slide_out_duration">257</integer>
<!-- Swipe constants -->
<integer name="swipe_escape_velocity">100</integer>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e659f5791..6efb5ac5c 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -16,9 +16,6 @@
-->
<resources>
- <!-- Search View -->
- <dimen name="search_text_size">14sp</dimen>
-
<!--
Drag to remove view (in dp because it is used in conjunction with a statically
sized icon
@@ -106,8 +103,8 @@
<dimen name="search_top_margin">8dp</dimen>
<!-- Margin below the search box. -->
<dimen name="search_bottom_margin">8dp</dimen>
- <!-- Search box text size -->
- <dimen name="search_text_size">13.24sp</dimen>
+ <dimen name="search_collapsed_text_size">14sp</dimen>
+ <dimen name="search_expanded_text_size">20sp</dimen>
<!-- Search box interior padding - left -->
<dimen name="search_box_left_padding">8dp</dimen>
<!-- Search box interior padding - right -->
@@ -115,11 +112,11 @@
<!-- Padding around the icon in the search box. -->
<dimen name="search_box_icon_margin">4dp</dimen>
<dimen name="search_box_search_icon_padding">4dp</dimen>
- <!-- Left margin of the text field in the search box. -->
- <dimen name="search_box_text_left_margin">27dp</dimen>
+ <dimen name="search_box_collapsed_text_margin_left">24dp</dimen>
+ <dimen name="search_box_expanded_text_margin_left">26dp</dimen>
<!-- Size of the icon (voice search, close search) in the search box. -->
<dimen name="search_box_icon_size">28dp</dimen>
- <!-- Elevation of the search box -->
+ <dimen name="search_list_padding_top">8dp</dimen>
<dimen name="search_box_elevation">3dp</dimen>
<!-- Size of text in tabs. -->
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index df2a87c8a..26c169843 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -141,8 +141,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
- private static final int ANIMATION_DURATION = 250;
-
private RelativeLayout parentLayout;
/**
@@ -206,8 +204,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
private View mRemoveViewContainer;
- final Interpolator hideActionBarInterpolator = new AccelerateInterpolator(1.5f);
- final Interpolator showActionBarInterpolator = new DecelerateInterpolator(1.5f);
private String mSearchQuery;
private DialerDatabaseHelper mDialerDatabaseHelper;
@@ -662,7 +658,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
private void updateSearchFragmentPosition() {
- int translationValue = mIsDialpadShown ? -mActionBarHeight : 0;
SearchFragment fragment = null;
if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
fragment = mSmartDialSearchFragment;
@@ -670,8 +665,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
fragment = mRegularSearchFragment;
}
if (fragment != null && fragment.isVisible()) {
- fragment.getView().animate().translationY(translationValue)
- .setInterpolator(hideActionBarInterpolator).setDuration(ANIMATION_DURATION);
+ fragment.updatePosition(true /* animate */);
}
}
@@ -1145,6 +1139,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
return mActionBarController.isActionBarShowing();
}
+ public boolean isDialpadShown() {
+ return mIsDialpadShown;
+ }
+
@Override
public int getActionBarHideOffset() {
return getActionBar().getHideOffset();
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 9a30c4de6..9e2b8d089 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -17,13 +17,16 @@ package com.android.dialer.list;
import android.app.Activity;
import android.content.Intent;
+import android.content.res.Resources;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
+import android.view.animation.Interpolator;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
+import com.android.contacts.common.animation.AnimUtils;
import com.android.contacts.common.list.ContactEntryListAdapter;
import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
@@ -31,7 +34,6 @@ import com.android.contacts.common.list.PhoneNumberPickerFragment;
import com.android.contacts.common.util.ViewUtil;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
-import com.android.dialer.list.OnListFragmentScrolledListener;
import com.android.dialer.util.DialerUtils;
public class SearchFragment extends PhoneNumberPickerFragment {
@@ -44,9 +46,16 @@ public class SearchFragment extends PhoneNumberPickerFragment {
*/
private String mAddToContactNumber;
private int mActionBarHeight;
+ private int mShadowHeight;
+ private int mPaddingTop;
+ private int mShowDialpadDuration;
+ private int mHideDialpadDuration;
+
+ private HostInterface mActivity;
public interface HostInterface {
public boolean isActionBarShowing();
+ public boolean isDialpadShown();
public int getActionBarHideOffset();
public int getActionBarHeight();
}
@@ -75,9 +84,14 @@ public class SearchFragment extends PhoneNumberPickerFragment {
getAdapter().setHasHeader(0, false);
}
- HostInterface activity = (HostInterface) getActivity();
+ mActivity = (HostInterface) getActivity();
- mActionBarHeight = activity.getActionBarHeight();
+ final Resources res = getResources();
+ mActionBarHeight = mActivity.getActionBarHeight();
+ mShadowHeight = res.getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
+ mPaddingTop = res.getDimensionPixelSize(R.dimen.search_list_padding_top);
+ mShowDialpadDuration = res.getInteger(R.integer.dialpad_slide_in_duration);
+ mHideDialpadDuration = res.getInteger(R.integer.dialpad_slide_out_duration);
final View parentView = getView();
parentView.setPaddingRelative(
@@ -88,6 +102,7 @@ public class SearchFragment extends PhoneNumberPickerFragment {
final ListView listView = getListView();
+ listView.setClipToPadding(false);
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
@@ -100,10 +115,7 @@ public class SearchFragment extends PhoneNumberPickerFragment {
}
});
-
- if (!activity.isActionBarShowing()) {
- parentView.setTranslationY(-mActionBarHeight);
- }
+ updatePosition(false /* animate */);
}
@Override
@@ -155,4 +167,36 @@ public class SearchFragment extends PhoneNumberPickerFragment {
R.string.add_contact_not_available);
}
}
+
+ /**
+ * Updates the position and padding of the search fragment, depending on whether the dialpad is
+ * shown. This can be optionally animated.
+ * @param animate
+ */
+ public void updatePosition(boolean animate) {
+ // Use negative shadow height instead of 0 to account for the 9-patch's shadow.
+ int translationValue = mActivity.isDialpadShown() ? -mActionBarHeight : -mShadowHeight;
+
+ if (animate) {
+ Interpolator interpolator =
+ mActivity.isDialpadShown() ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
+ int duration =
+ mActivity.isDialpadShown() ? mShowDialpadDuration : mHideDialpadDuration;
+ getView().animate()
+ .translationY(translationValue)
+ .setInterpolator(interpolator)
+ .setDuration(duration);
+ } else {
+ getView().setTranslationY(translationValue);
+ }
+
+ // There is padding which should only be applied when the dialpad is not shown.
+ int paddingTop = mActivity.isDialpadShown() ? 0 : mPaddingTop;
+ final ListView listView = getListView();
+ listView.setPaddingRelative(
+ listView.getPaddingStart(),
+ paddingTop,
+ listView.getPaddingEnd(),
+ listView.getPaddingBottom());
+ }
}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index dbb2b22de..d229aa402 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -19,6 +19,7 @@ package com.android.dialer.widget;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.content.Context;
+import android.graphics.Color;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
@@ -30,6 +31,7 @@ import com.android.contacts.common.animation.AnimUtils;
import com.android.dialer.R;
public class SearchEditTextLayout extends FrameLayout {
+ private static final float EXPAND_MARGIN_FRACTION_START = 0.8f;
private static final int ANIMATION_DURATION = 200;
private OnKeyListener mPreImeKeyListener;
@@ -47,6 +49,11 @@ public class SearchEditTextLayout extends FrameLayout {
private View mCollapsed;
private View mExpanded;
private EditText mSearchView;
+ private View mCollapsedSearchBox;
+ private View mVoiceSearchButtonView;
+ private View mOverflowButtonView;
+ private View mBackButtonView;
+ private View mClearButtonView;
private ValueAnimator mAnimator;
@@ -85,6 +92,12 @@ public class SearchEditTextLayout extends FrameLayout {
mExpanded = findViewById(R.id.search_box_expanded);
mSearchView = (EditText) mExpanded.findViewById(R.id.search_view);
+ 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);
+ mClearButtonView = findViewById(R.id.search_close_button);
+
mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
@@ -149,9 +162,16 @@ 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);
+
if (animate) {
AnimUtils.crossFadeViews(mExpanded, mCollapsed, ANIMATION_DURATION);
- mAnimator = ValueAnimator.ofFloat(1f, 0f);
+ mAnimator = ValueAnimator.ofFloat(EXPAND_MARGIN_FRACTION_START, 0f);
+ setMargins(EXPAND_MARGIN_FRACTION_START);
prepareAnimator(true);
} else {
mExpanded.setVisibility(View.VISIBLE);
@@ -169,6 +189,12 @@ 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);
+
if (animate) {
AnimUtils.crossFadeViews(mCollapsed, mExpanded, ANIMATION_DURATION);
mAnimator = ValueAnimator.ofFloat(0f, 1f);