Merge "ResolverDrawerLayout to request layout when needed." into tm-qpr-dev am: d238f79f92

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19142926

Change-Id: Ic131b206b4c4153334a876e01649833477ce8887
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Andrey Epin
2022-07-07 17:05:27 +00:00
committed by Automerger Merge Worker

View File

@@ -53,7 +53,7 @@ public class ResolverDrawerLayout extends ViewGroup {
/** /**
* Max width of the whole drawer layout * Max width of the whole drawer layout
*/ */
private int mMaxWidth; private final int mMaxWidth;
/** /**
* Max total visible height of views not marked always-show when in the closed/initial state * Max total visible height of views not marked always-show when in the closed/initial state
@@ -187,9 +187,11 @@ public class ResolverDrawerLayout extends ViewGroup {
} }
public void setSmallCollapsed(boolean smallCollapsed) { public void setSmallCollapsed(boolean smallCollapsed) {
if (mSmallCollapsed != smallCollapsed) {
mSmallCollapsed = smallCollapsed; mSmallCollapsed = smallCollapsed;
requestLayout(); requestLayout();
} }
}
public boolean isSmallCollapsed() { public boolean isSmallCollapsed() {
return mSmallCollapsed; return mSmallCollapsed;
@@ -200,10 +202,11 @@ public class ResolverDrawerLayout extends ViewGroup {
} }
public void setShowAtTop(boolean showOnTop) { public void setShowAtTop(boolean showOnTop) {
if (mShowAtTop != showOnTop) {
mShowAtTop = showOnTop; mShowAtTop = showOnTop;
invalidate();
requestLayout(); requestLayout();
} }
}
public boolean getShowAtTop() { public boolean getShowAtTop() {
return mShowAtTop; return mShowAtTop;
@@ -220,6 +223,9 @@ public class ResolverDrawerLayout extends ViewGroup {
public void setCollapsibleHeightReserved(int heightPixels) { public void setCollapsibleHeightReserved(int heightPixels) {
final int oldReserved = mCollapsibleHeightReserved; final int oldReserved = mCollapsibleHeightReserved;
mCollapsibleHeightReserved = heightPixels; mCollapsibleHeightReserved = heightPixels;
if (oldReserved != mCollapsibleHeightReserved) {
requestLayout();
}
final int dReserved = mCollapsibleHeightReserved - oldReserved; final int dReserved = mCollapsibleHeightReserved - oldReserved;
if (dReserved != 0 && mIsDragging) { if (dReserved != 0 && mIsDragging) {
@@ -255,7 +261,7 @@ public class ResolverDrawerLayout extends ViewGroup {
if (getShowAtTop()) { if (getShowAtTop()) {
// Keep the drawer fully open. // Keep the drawer fully open.
mCollapseOffset = 0; setCollapseOffset(0);
return false; return false;
} }
@@ -264,9 +270,9 @@ public class ResolverDrawerLayout extends ViewGroup {
if (remainClosed && (oldCollapsibleHeight < mCollapsibleHeight if (remainClosed && (oldCollapsibleHeight < mCollapsibleHeight
&& mCollapseOffset == oldCollapsibleHeight)) { && mCollapseOffset == oldCollapsibleHeight)) {
// Stay closed even at the new height. // Stay closed even at the new height.
mCollapseOffset = mCollapsibleHeight; setCollapseOffset(mCollapsibleHeight);
} else { } else {
mCollapseOffset = Math.min(mCollapseOffset, mCollapsibleHeight); setCollapseOffset(Math.min(mCollapseOffset, mCollapsibleHeight));
} }
final boolean isCollapsedNew = mCollapseOffset != 0; final boolean isCollapsedNew = mCollapseOffset != 0;
if (isCollapsedOld != isCollapsedNew) { if (isCollapsedOld != isCollapsedNew) {
@@ -274,11 +280,18 @@ public class ResolverDrawerLayout extends ViewGroup {
} }
} else { } else {
// Start out collapsed at first unless we restored state for otherwise // Start out collapsed at first unless we restored state for otherwise
mCollapseOffset = mOpenOnLayout ? 0 : mCollapsibleHeight; setCollapseOffset(mOpenOnLayout ? 0 : mCollapsibleHeight);
} }
return true; return true;
} }
private void setCollapseOffset(float collapseOffset) {
if (mCollapseOffset != collapseOffset) {
mCollapseOffset = collapseOffset;
requestLayout();
}
}
private int getMaxCollapsedHeight() { private int getMaxCollapsedHeight() {
return (isSmallCollapsed() ? mMaxCollapsedHeightSmall : mMaxCollapsedHeight) return (isSmallCollapsed() ? mMaxCollapsedHeightSmall : mMaxCollapsedHeight)
+ mCollapsibleHeightReserved; + mCollapsibleHeightReserved;
@@ -420,8 +433,7 @@ public class ResolverDrawerLayout extends ViewGroup {
case MotionEvent.ACTION_POINTER_DOWN: { case MotionEvent.ACTION_POINTER_DOWN: {
final int pointerIndex = ev.getActionIndex(); final int pointerIndex = ev.getActionIndex();
final int pointerId = ev.getPointerId(pointerIndex); mActivePointerId = ev.getPointerId(pointerIndex);
mActivePointerId = pointerId;
mInitialTouchX = ev.getX(pointerIndex); mInitialTouchX = ev.getX(pointerIndex);
mInitialTouchY = mLastTouchY = ev.getY(pointerIndex); mInitialTouchY = mLastTouchY = ev.getY(pointerIndex);
} }
@@ -924,7 +936,7 @@ public class ResolverDrawerLayout extends ViewGroup {
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int sourceWidth = MeasureSpec.getSize(widthMeasureSpec); final int sourceWidth = MeasureSpec.getSize(widthMeasureSpec);
int widthSize = sourceWidth; int widthSize = sourceWidth;
int heightSize = MeasureSpec.getSize(heightMeasureSpec); final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
// Single-use layout; just ignore the mode and use available space. // Single-use layout; just ignore the mode and use available space.
// Clamp to maxWidth. // Clamp to maxWidth.