Merge "ResolverDrawerLayout to request layout when needed." into tm-qpr-dev
This commit is contained in:
@@ -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,8 +187,10 @@ public class ResolverDrawerLayout extends ViewGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setSmallCollapsed(boolean smallCollapsed) {
|
public void setSmallCollapsed(boolean smallCollapsed) {
|
||||||
mSmallCollapsed = smallCollapsed;
|
if (mSmallCollapsed != smallCollapsed) {
|
||||||
requestLayout();
|
mSmallCollapsed = smallCollapsed;
|
||||||
|
requestLayout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSmallCollapsed() {
|
public boolean isSmallCollapsed() {
|
||||||
@@ -200,9 +202,10 @@ public class ResolverDrawerLayout extends ViewGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setShowAtTop(boolean showOnTop) {
|
public void setShowAtTop(boolean showOnTop) {
|
||||||
mShowAtTop = showOnTop;
|
if (mShowAtTop != showOnTop) {
|
||||||
invalidate();
|
mShowAtTop = showOnTop;
|
||||||
requestLayout();
|
requestLayout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getShowAtTop() {
|
public boolean getShowAtTop() {
|
||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user