summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/list
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2015-06-29 23:57:04 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-06-29 23:57:04 +0000
commit68421ad0c283e5fdae8d11137c83299fc5b6822c (patch)
tree4b7eb858c5bd6edd7e38be960f01b1f7e1380a3b /src/com/android/dialer/list
parentc7d111490f9f850be076cf66b2d1336142d89c56 (diff)
parent9677b253034fd79eb8eccdfa40e4bb50bb2801dc (diff)
am 9677b253: am 9cc1a77b: am 9f12d3c7: Merge "Accessibility fix for Dialer search results" into mnc-dev
* commit '9677b253034fd79eb8eccdfa40e4bb50bb2801dc': Accessibility fix for Dialer search results
Diffstat (limited to 'src/com/android/dialer/list')
-rw-r--r--src/com/android/dialer/list/SearchFragment.java68
1 files changed, 63 insertions, 5 deletions
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 78c3ad3c1..1f33d5b75 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -21,17 +21,23 @@ import android.animation.AnimatorListenerAdapter;
import android.app.Activity;
import android.app.DialogFragment;
import android.content.Intent;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.animation.Interpolator;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
+import android.widget.LinearLayout;
import android.widget.ListView;
+import android.widget.Space;
import com.android.contacts.common.list.ContactEntryListAdapter;
import com.android.contacts.common.list.ContactListItemView;
@@ -63,11 +69,20 @@ public class SearchFragment extends PhoneNumberPickerFragment {
private int mShowDialpadDuration;
private int mHideDialpadDuration;
+ /**
+ * Used to resize the list view containing search results so that it fits the available space
+ * above the dialpad. Does not have a user-visible effect in regular touch usage (since the
+ * dialpad hides that portion of the ListView anyway), but improves usability in accessibility
+ * mode.
+ */
+ private Space mSpacer;
+
private HostInterface mActivity;
public interface HostInterface {
public boolean isActionBarShowing();
public boolean isDialpadShown();
+ public int getDialpadHeight();
public int getActionBarHideOffset();
public int getActionBarHeight();
}
@@ -270,17 +285,35 @@ public class SearchFragment extends PhoneNumberPickerFragment {
mActivity.isDialpadShown() ? 0 : mActionBarHeight -mShadowHeight;
}
if (animate) {
- Interpolator interpolator =
- mActivity.isDialpadShown() ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
- int duration =
- mActivity.isDialpadShown() ? mShowDialpadDuration : mHideDialpadDuration;
+ // If the dialpad will be shown, then this animation involves sliding the list up.
+ final boolean slideUp = mActivity.isDialpadShown();
+
+ Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
+ int duration = slideUp ? mShowDialpadDuration : mHideDialpadDuration;
getView().setTranslationY(startTranslationValue);
getView().animate()
.translationY(endTranslationValue)
.setInterpolator(interpolator)
- .setDuration(duration);
+ .setDuration(duration)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ if (!slideUp) {
+ resizeListView();
+ }
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (slideUp) {
+ resizeListView();
+ }
+ }
+ });
+
} else {
getView().setTranslationY(endTranslationValue);
+ resizeListView();
}
// There is padding which should only be applied when the dialpad is not shown.
@@ -293,6 +326,19 @@ public class SearchFragment extends PhoneNumberPickerFragment {
listView.getPaddingBottom());
}
+ public void resizeListView() {
+ if (mSpacer == null) {
+ return;
+ }
+ int spacerHeight = mActivity.isDialpadShown() ? mActivity.getDialpadHeight() : 0;
+ if (spacerHeight != mSpacer.getHeight()) {
+ final LinearLayout.LayoutParams lp =
+ (LinearLayout.LayoutParams) mSpacer.getLayoutParams();
+ lp.height = spacerHeight;
+ mSpacer.setLayoutParams(lp);
+ }
+ }
+
@Override
protected void startLoading() {
if (PermissionsUtil.hasContactsPermissions(getActivity())) {
@@ -306,4 +352,16 @@ public class SearchFragment extends PhoneNumberPickerFragment {
public void setOnTouchListener(View.OnTouchListener onTouchListener) {
mActivityOnTouchListener = onTouchListener;
}
+
+ @Override
+ protected View inflateView(LayoutInflater inflater, ViewGroup container) {
+ final LinearLayout parent = (LinearLayout) super.inflateView(inflater, container);
+ final int orientation = getResources().getConfiguration().orientation;
+ if (orientation == Configuration.ORIENTATION_PORTRAIT) {
+ mSpacer = new Space(getActivity());
+ parent.addView(mSpacer,
+ new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0));
+ }
+ return parent;
+ }
}