Add new GradientView just for WidgetsBottomSheet

Reusing the one behind all apps caused problems when
opening widgets sheets from all apps.

Bug: 64344341
Change-Id: Ia964d8456645c78614f94693f9538dbac4f566a0
This commit is contained in:
Tony Wickham
2017-08-03 13:59:12 -07:00
parent 7f522a25c3
commit 2bc5c995f6
5 changed files with 41 additions and 26 deletions

View File

@@ -89,7 +89,8 @@ public class WidgetsBottomSheet extends AbstractFloatingView implements Insettab
mInsets = new Rect();
mVerticalPullDetector = new VerticalPullDetector(context);
mVerticalPullDetector.setListener(this);
mGradientBackground = (GradientView) mLauncher.findViewById(R.id.gradient_bg);
mGradientBackground = (GradientView) mLauncher.getLayoutInflater().inflate(
R.layout.gradient_bg, mLauncher.getDragLayer(), false);
}
@Override
@@ -107,6 +108,8 @@ public class WidgetsBottomSheet extends AbstractFloatingView implements Insettab
onWidgetsBound();
mLauncher.getDragLayer().addView(mGradientBackground);
mGradientBackground.setVisibility(VISIBLE);
mLauncher.getDragLayer().addView(this);
measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
setTranslationY(mTranslationYClosed);
@@ -213,11 +216,8 @@ public class WidgetsBottomSheet extends AbstractFloatingView implements Insettab
mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mIsOpen = false;
mVerticalPullDetector.finishedScrolling();
((ViewGroup) getParent()).removeView(WidgetsBottomSheet.this);
mLauncher.getSystemUiController().updateUiState(
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET, 0);
onCloseComplete();
}
});
mOpenCloseAnimator.setInterpolator(mVerticalPullDetector.isIdleState()
@@ -225,12 +225,18 @@ public class WidgetsBottomSheet extends AbstractFloatingView implements Insettab
mOpenCloseAnimator.start();
} else {
setTranslationY(mTranslationYClosed);
mLauncher.getSystemUiController().updateUiState(
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET, 0);
mIsOpen = false;
onCloseComplete();
}
}
private void onCloseComplete() {
mIsOpen = false;
mLauncher.getDragLayer().removeView(mGradientBackground);
mLauncher.getDragLayer().removeView(WidgetsBottomSheet.this);
mLauncher.getSystemUiController().updateUiState(
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET, 0);
}
@Override
protected boolean isOfType(@FloatingViewType int type) {
return (type & TYPE_WIDGETS_BOTTOM_SHEET) != 0;