Merge "Fixed an issue where a notification could stay userlocked" into oc-dr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7b04275a68
@@ -545,6 +545,16 @@ public class ExpandHelper implements Gefingerpoken {
|
|||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void finishExpanding(boolean forceAbort, float velocity) {
|
void finishExpanding(boolean forceAbort, float velocity) {
|
||||||
|
finishExpanding(forceAbort, velocity, true /* allowAnimation */);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finish the current expand motion
|
||||||
|
* @param forceAbort whether the expansion should be forcefully aborted and returned to the old
|
||||||
|
* state
|
||||||
|
* @param velocity the velocity this was expanded/ collapsed with
|
||||||
|
*/
|
||||||
|
private void finishExpanding(boolean forceAbort, float velocity, boolean allowAnimation) {
|
||||||
if (!mExpanding) return;
|
if (!mExpanding) return;
|
||||||
|
|
||||||
if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView);
|
if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView);
|
||||||
@@ -568,7 +578,7 @@ public class ExpandHelper implements Gefingerpoken {
|
|||||||
mCallback.expansionStateChanged(false);
|
mCallback.expansionStateChanged(false);
|
||||||
int naturalHeight = mScaler.getNaturalHeight();
|
int naturalHeight = mScaler.getNaturalHeight();
|
||||||
float targetHeight = nowExpanded ? naturalHeight : mSmallSize;
|
float targetHeight = nowExpanded ? naturalHeight : mSmallSize;
|
||||||
if (targetHeight != currentHeight && mEnabled) {
|
if (targetHeight != currentHeight && mEnabled && allowAnimation) {
|
||||||
mScaleAnimation.setFloatValues(targetHeight);
|
mScaleAnimation.setFloatValues(targetHeight);
|
||||||
mScaleAnimation.setupStartValues();
|
mScaleAnimation.setupStartValues();
|
||||||
final View scaledView = mResizedView;
|
final View scaledView = mResizedView;
|
||||||
@@ -621,11 +631,23 @@ public class ExpandHelper implements Gefingerpoken {
|
|||||||
mResizedView = null;
|
mResizedView = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this to abort any pending expansions in progress and force that there will be no
|
||||||
|
* animations.
|
||||||
|
*/
|
||||||
|
public void cancelImmediately() {
|
||||||
|
cancel(false /* allowAnimation */);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this to abort any pending expansions in progress.
|
* Use this to abort any pending expansions in progress.
|
||||||
*/
|
*/
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
finishExpanding(true /* forceAbort */, 0f /* velocity */);
|
cancel(true /* allowAnimation */);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancel(boolean allowAnimation) {
|
||||||
|
finishExpanding(true /* forceAbort */, 0f /* velocity */, allowAnimation);
|
||||||
clearView();
|
clearView();
|
||||||
|
|
||||||
// reset the gesture detector
|
// reset the gesture detector
|
||||||
|
|||||||
@@ -3362,15 +3362,29 @@ public class NotificationStackScrollLayout extends ViewGroup
|
|||||||
if (!mIsExpanded) {
|
if (!mIsExpanded) {
|
||||||
setOwnScrollY(0);
|
setOwnScrollY(0);
|
||||||
mStatusBar.resetUserExpandedStates();
|
mStatusBar.resetUserExpandedStates();
|
||||||
|
clearTemporaryViews();
|
||||||
|
clearUserLockedViews();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// lets make sure nothing is in the overlay / transient anymore
|
private void clearUserLockedViews() {
|
||||||
clearTemporaryViews(this);
|
for (int i = 0; i < getChildCount(); i++) {
|
||||||
for (int i = 0; i < getChildCount(); i++) {
|
ExpandableView child = (ExpandableView) getChildAt(i);
|
||||||
ExpandableView child = (ExpandableView) getChildAt(i);
|
if (child instanceof ExpandableNotificationRow) {
|
||||||
if (child instanceof ExpandableNotificationRow) {
|
ExpandableNotificationRow row = (ExpandableNotificationRow) child;
|
||||||
ExpandableNotificationRow row = (ExpandableNotificationRow) child;
|
row.setUserLocked(false);
|
||||||
clearTemporaryViews(row.getChildrenContainer());
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearTemporaryViews() {
|
||||||
|
// lets make sure nothing is in the overlay / transient anymore
|
||||||
|
clearTemporaryViews(this);
|
||||||
|
for (int i = 0; i < getChildCount(); i++) {
|
||||||
|
ExpandableView child = (ExpandableView) getChildAt(i);
|
||||||
|
if (child instanceof ExpandableNotificationRow) {
|
||||||
|
ExpandableNotificationRow row = (ExpandableNotificationRow) child;
|
||||||
|
clearTemporaryViews(row.getChildrenContainer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3405,6 +3419,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
|||||||
if (changed) {
|
if (changed) {
|
||||||
if (!mIsExpanded) {
|
if (!mIsExpanded) {
|
||||||
mGroupManager.collapseAllGroups();
|
mGroupManager.collapseAllGroups();
|
||||||
|
mExpandHelper.cancelImmediately();
|
||||||
}
|
}
|
||||||
updateNotificationAnimationStates();
|
updateNotificationAnimationStates();
|
||||||
updateChronometers();
|
updateChronometers();
|
||||||
|
|||||||
Reference in New Issue
Block a user