summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-04-08 15:27:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-04-08 15:27:12 +0000
commit658312b51cb7b8beb649a07b85a7ba4f37d40151 (patch)
treefeffd918b7761373734869b1587c84e3c7aeabc2
parente9d146ec9acd932f906d68cf836bb162bde7f7ab (diff)
parentd568294c1a587fd712b41f072d6e1a521fe09a72 (diff)
Merge "Sharesheet - Fix scroll behavior moving past bounds" into qt-dev
-rw-r--r--core/java/com/android/internal/widget/ResolverDrawerLayout.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
index 329c6b395bba..66bbe22c9969 100644
--- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java
+++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
@@ -73,6 +73,11 @@ public class ResolverDrawerLayout extends ViewGroup {
*/
private float mCollapseOffset;
+ /**
+ * Track fractions of pixels from drag calculations. Without this, the view offsets get
+ * out of sync due to frequently dropping fractions of a pixel from '(int) dy' casts.
+ */
+ private float mDragRemainder = 0.0f;
private int mCollapsibleHeight;
private int mUncollapsibleHeight;
private int mAlwaysShowHeight;
@@ -485,6 +490,16 @@ public class ResolverDrawerLayout extends ViewGroup {
mCollapsibleHeight + mUncollapsibleHeight));
if (newPos != mCollapseOffset) {
dy = newPos - mCollapseOffset;
+
+ mDragRemainder += dy - (int) dy;
+ if (mDragRemainder >= 1.0f) {
+ mDragRemainder -= 1.0f;
+ dy += 1.0f;
+ } else if (mDragRemainder <= -1.0f) {
+ mDragRemainder += 1.0f;
+ dy -= 1.0f;
+ }
+
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);