Merge "Sharesheet - Modify header scrolling behavior" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-04-25 21:49:04 +00:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 7 deletions

View File

@@ -3059,10 +3059,9 @@ public class ChooserActivity extends ResolverActivity {
int yDiff = (int) ((oldy - y) * DIRECT_SHARE_EXPANSION_RATE);
int prevHeight = mDirectShareCurrHeight;
mDirectShareCurrHeight = Math.min(mDirectShareCurrHeight + yDiff,
mDirectShareMaxHeight);
mDirectShareCurrHeight = Math.max(mDirectShareCurrHeight, mDirectShareMinHeight);
yDiff = mDirectShareCurrHeight - prevHeight;
int newHeight = Math.min(prevHeight + yDiff, mDirectShareMaxHeight);
newHeight = Math.max(newHeight, mDirectShareMinHeight);
yDiff = newHeight - prevHeight;
if (view == null || view.getChildCount() == 0 || yDiff == 0) {
return;
@@ -3079,7 +3078,7 @@ public class ChooserActivity extends ResolverActivity {
if (child.getTag() != null && child.getTag() instanceof DirectShareViewHolder) {
int widthSpec = MeasureSpec.makeMeasureSpec(child.getWidth(),
MeasureSpec.EXACTLY);
int heightSpec = MeasureSpec.makeMeasureSpec(mDirectShareCurrHeight,
int heightSpec = MeasureSpec.makeMeasureSpec(newHeight,
MeasureSpec.EXACTLY);
child.measure(widthSpec, heightSpec);
child.getLayoutParams().height = child.getMeasuredHeight();
@@ -3090,6 +3089,10 @@ public class ChooserActivity extends ResolverActivity {
}
}
}
if (foundExpansion) {
mDirectShareCurrHeight = newHeight;
}
}
}

View File

@@ -114,6 +114,8 @@ public class ResolverDrawerLayout extends ViewGroup {
private final Rect mTempRect = new Rect();
private AbsListView mNestedScrollingChild;
private final ViewTreeObserver.OnTouchModeChangeListener mTouchModeChangeListener =
new ViewTreeObserver.OnTouchModeChangeListener() {
@Override
@@ -317,6 +319,13 @@ public class ResolverDrawerLayout extends ViewGroup {
return mIsDragging || mOpenOnClick;
}
private boolean isNestedChildScrolled() {
return mNestedScrollingChild != null
&& mNestedScrollingChild.getChildCount() > 0
&& (mNestedScrollingChild.getFirstVisiblePosition() > 0
|| mNestedScrollingChild.getChildAt(0).getTop() < 0);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getActionMasked();
@@ -359,7 +368,11 @@ public class ResolverDrawerLayout extends ViewGroup {
}
if (mIsDragging) {
final float dy = y - mLastTouchY;
performDrag(dy);
if (dy > 0 && isNestedChildScrolled()) {
mNestedScrollingChild.smoothScrollBy((int) -dy, 0);
} else {
performDrag(dy);
}
}
mLastTouchY = y;
}
@@ -411,6 +424,9 @@ public class ResolverDrawerLayout extends ViewGroup {
smoothScrollTo(mCollapsibleHeight + mUncollapsibleHeight, yvel);
mDismissOnScrollerFinished = true;
} else {
if (isNestedChildScrolled()) {
mNestedScrollingChild.smoothScrollToPosition(0);
}
smoothScrollTo(yvel < 0 ? 0 : mCollapsibleHeight, yvel);
}
}
@@ -680,7 +696,13 @@ public class ResolverDrawerLayout extends ViewGroup {
@Override
public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
return (nestedScrollAxes & View.SCROLL_AXIS_VERTICAL) != 0;
if ((nestedScrollAxes & View.SCROLL_AXIS_VERTICAL) != 0) {
if (child instanceof AbsListView) {
mNestedScrollingChild = (AbsListView) child;
}
return true;
}
return false;
}
@Override