Merge "Sharesheet - Modify header scrolling behavior" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2f956b53df
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user