From e8d7752e920b6f31874a770c9ddcbbaaee0627cb Mon Sep 17 00:00:00 2001 From: Android Dialer Date: Mon, 16 Oct 2017 11:33:58 -0700 Subject: Keep promo state on rotate Promo was being collapsed because rotate causes list to be scrolled at IDLE state. Make the drag more explicit by including the fastScroller drag state instead manually verified fast scrolling still minimizes promo and rotating while promo is expanded keeps it expanded Bug: 67670326 Test: ContactsPromoFragmentTest PiperOrigin-RevId: 172352966 Change-Id: Iab5438501db1d54b7ffac3339faecde0256a3632 --- java/com/android/dialer/app/DialtactsActivity.java | 2 +- java/com/android/dialer/contactsfragment/ContactsFragment.java | 6 ++++-- java/com/android/dialer/contactsfragment/FastScroller.java | 7 ++++++- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 791a710a9..56e0a95e5 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -900,7 +900,7 @@ public class DialtactsActivity extends TransactionSafeActivity } @Override - public void onContactsListScrolled(int scrollState) { + public void onContactsListScrolled(boolean isDragging) { // intentionally empty. } diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java index 759897f91..a8daa546a 100644 --- a/java/com/android/dialer/contactsfragment/ContactsFragment.java +++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java @@ -93,7 +93,7 @@ public class ContactsFragment extends Fragment /** Listener for contacts list scroll state. */ public interface OnContactsListScrolledListener { - void onContactsListScrolled(int scrollState); + void onContactsListScrolled(boolean isDragging); } /** @@ -248,7 +248,9 @@ public class ContactsFragment extends Fragment String anchoredHeaderString = adapter.getHeaderString(firstCompletelyVisible); FragmentUtils.getParentUnsafe(this, OnContactsListScrolledListener.class) - .onContactsListScrolled(recyclerView.getScrollState()); + .onContactsListScrolled( + recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING + || fastScroller.isDragStarted()); // If the user swipes to the top of the list very quickly, there is some strange behavior // between this method updating headers and adapter#onBindViewHolder updating headers. diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java index 2a86a3bb6..2bd07ac5d 100644 --- a/java/com/android/dialer/contactsfragment/FastScroller.java +++ b/java/com/android/dialer/contactsfragment/FastScroller.java @@ -81,8 +81,13 @@ public class FastScroller extends RelativeLayout { container.setVisibility(INVISIBLE); scrollBar.setSelected(false); return true; + default: + return super.onTouchEvent(event); } - return super.onTouchEvent(event); + } + + public boolean isDragStarted() { + return dragStarted; } private void setRecyclerViewPosition(float y) { -- cgit v1.2.3