summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java16
-rw-r--r--src/com/android/dialer/list/SearchFragment.java63
-rw-r--r--src/com/android/dialer/widget/SearchEditTextLayout.java28
3 files changed, 89 insertions, 18 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index f2f49c1ae..4ea9651d5 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -142,8 +142,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;
/**
@@ -232,8 +230,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;
@@ -689,8 +685,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
private void updateSearchFragmentPosition() {
- int startTranslationValue = mIsDialpadShown ? mActionBarHeight : 0;
- int endTranslationValue = mIsDialpadShown ? 0 : mActionBarHeight;
SearchFragment fragment = null;
if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
fragment = mSmartDialSearchFragment;
@@ -698,11 +692,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
fragment = mRegularSearchFragment;
}
if (fragment != null && fragment.isVisible()) {
- fragment.getListView().setTranslationY(startTranslationValue);
- fragment.getListView().animate().translationY(endTranslationValue)
- .setInterpolator(hideActionBarInterpolator)
- .setDuration(ANIMATION_DURATION)
- .start();
+ fragment.updatePosition(true /* animate */);
}
}
@@ -1176,6 +1166,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 f309f72ea..6abfcaa79 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,13 +84,20 @@ 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();
final ListView listView = getListView();
+
+ listView.setClipToPadding(false);
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
@@ -93,9 +109,8 @@ public class SearchFragment extends PhoneNumberPickerFragment {
int totalItemCount) {
}
});
- if (activity.isActionBarShowing()) {
- listView.setTranslationY(mActionBarHeight);
- }
+
+ updatePosition(false /* animate */);
}
@Override
@@ -147,4 +162,40 @@ 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 startTranslationValue =
+ mActivity.isDialpadShown() ? mActionBarHeight - mShadowHeight: -mShadowHeight;
+ int endTranslationValue =
+ mActivity.isDialpadShown() ? -mShadowHeight : mActionBarHeight -mShadowHeight;
+
+ if (animate) {
+ Interpolator interpolator =
+ mActivity.isDialpadShown() ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
+ int duration =
+ mActivity.isDialpadShown() ? mShowDialpadDuration : mHideDialpadDuration;
+ getView().setTranslationY(startTranslationValue);
+ getView().animate()
+ .translationY(endTranslationValue)
+ .setInterpolator(interpolator)
+ .setDuration(duration);
+ } else {
+ getView().setTranslationY(endTranslationValue);
+ }
+
+ // 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);