Fix for search UI remaining on screen after call is made
Also slide up the action bar after it is faded out - this is so that
it doesn't remain in the same position and intercept touches
Remove unneeded FragmentTransaction fadeout animation in exitSearchUI
that was causing jank when returning to the favorites screen
Bug: 15120649
Change-Id: Idcf96c2339603af09e1773729994d267158f70a0
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 82b7838..b7772c1 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -263,10 +263,11 @@
// no need to do anything here.
return;
}
- mSearchQuery = newText;
if (DEBUG) {
Log.d(TAG, "onTextChange for mSearchView called with new query: " + newText);
+ Log.d(TAG, "Previous Query: " + mSearchQuery);
}
+ mSearchQuery = newText;
// Show search fragment only when the query string is changed to non-empty text.
if (!TextUtils.isEmpty(newText)) {
@@ -687,8 +688,11 @@
}
private void hideDialpadAndSearchUi() {
- mSearchView.setText(null);
- hideDialpadFragment(false, true);
+ if (mIsDialpadShown) {
+ hideDialpadFragment(false, true);
+ } else {
+ exitSearchUi();
+ }
}
private void hideInputMethod(View view) {
@@ -873,7 +877,6 @@
setNotInSearchUi();
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
- transaction.setCustomAnimations(0, android.R.animator.fade_out);
if (mSmartDialSearchFragment != null) {
transaction.remove(mSmartDialSearchFragment);
}
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 229f7f3..30e0e0f 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -52,6 +52,9 @@
public class ListsFragment extends Fragment implements CallLogQueryHandler.Listener,
CallLogAdapter.CallFetcher, ViewPager.OnPageChangeListener {
+ private static final boolean DEBUG = DialtactsActivity.DEBUG;
+ private static final String TAG = "ListsFragment";
+
public static final int TAB_INDEX_SPEED_DIAL = 0;
public static final int TAB_INDEX_RECENTS = 1;
public static final int TAB_INDEX_ALL_CONTACTS = 2;
@@ -154,11 +157,17 @@
@Override
public void onPanelOpened(View panel) {
+ if (DEBUG) {
+ Log.d(TAG, "onPanelOpened");
+ }
mIsPanelOpen = true;
}
@Override
public void onPanelClosed(View panel) {
+ if (DEBUG) {
+ Log.d(TAG, "onPanelClosed");
+ }
mIsPanelOpen = false;
}
};
@@ -232,7 +241,6 @@
// Wipe the cache to refresh the call shortcut item. This is not that expensive because
// it only contains one item.
mCallLogAdapter.invalidateCache();
- mActionBar = null;
super.onPause();
}
diff --git a/src/com/android/dialer/widget/ActionBarController.java b/src/com/android/dialer/widget/ActionBarController.java
index 49506f4..67037a2 100644
--- a/src/com/android/dialer/widget/ActionBarController.java
+++ b/src/com/android/dialer/widget/ActionBarController.java
@@ -7,6 +7,8 @@
import android.os.Bundle;
import android.util.Log;
+import com.android.contacts.common.animation.AnimUtils;
+import com.android.contacts.common.animation.AnimUtils.AnimationCallback;
import com.android.dialer.DialtactsActivity;
/**
@@ -26,6 +28,18 @@
private boolean mIsActionBarSlidUp;
+ private final AnimationCallback mFadeOutCallback = new AnimationCallback() {
+ @Override
+ public void onAnimationEnd() {
+ slideActionBarUp(false);
+ }
+
+ @Override
+ public void onAnimationCancel() {
+ slideActionBarUp(false);
+ }
+ };
+
public interface ActivityUi {
public boolean isInSearchUi();
public boolean hasSearchQuery();
@@ -127,7 +141,7 @@
slideActionBarUp(true);
} else {
// From the lists fragment
- mSearchBox.fadeOut();
+ mSearchBox.fadeOut(mFadeOutCallback);
}
}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index ef3ddcc..311d2af 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -123,7 +123,11 @@
}
public void fadeOut() {
- AnimUtils.fadeOut(this, ANIMATION_DURATION);
+ fadeOut(null);
+ }
+
+ public void fadeOut(AnimUtils.AnimationCallback callback) {
+ AnimUtils.fadeOut(this, ANIMATION_DURATION, callback);
mIsFadedOut = true;
}