Merge "Set system gesture exclusion rects for Bubbles" into qt-dev
am: 0f6b976405
Change-Id: I23df4e99b5e172f6eafdde40acd539ae3965ace8
This commit is contained in:
@@ -64,6 +64,8 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders bubbles in a stack and handles animating expanded and collapsed states.
|
* Renders bubbles in a stack and handles animating expanded and collapsed states.
|
||||||
@@ -164,6 +166,8 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
int[] mTempLoc = new int[2];
|
int[] mTempLoc = new int[2];
|
||||||
RectF mTempRect = new RectF();
|
RectF mTempRect = new RectF();
|
||||||
|
|
||||||
|
private final List<Rect> mSystemGestureExclusionRects = Collections.singletonList(new Rect());
|
||||||
|
|
||||||
private ViewTreeObserver.OnPreDrawListener mViewUpdater =
|
private ViewTreeObserver.OnPreDrawListener mViewUpdater =
|
||||||
new ViewTreeObserver.OnPreDrawListener() {
|
new ViewTreeObserver.OnPreDrawListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -175,6 +179,9 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private ViewTreeObserver.OnDrawListener mSystemGestureExcludeUpdater =
|
||||||
|
this::updateSystemGestureExcludeRects;
|
||||||
|
|
||||||
private ViewClippingUtil.ClippingParameters mClippingParameters =
|
private ViewClippingUtil.ClippingParameters mClippingParameters =
|
||||||
new ViewClippingUtil.ClippingParameters() {
|
new ViewClippingUtil.ClippingParameters() {
|
||||||
|
|
||||||
@@ -296,6 +303,9 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
() -> mExpandedBubble.expandedView.updateInsets(insets));
|
() -> mExpandedBubble.expandedView.updateInsets(insets));
|
||||||
return view.onApplyWindowInsets(insets);
|
return view.onApplyWindowInsets(insets);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// This must be a separate OnDrawListener since it should be called for every draw.
|
||||||
|
getViewTreeObserver().addOnDrawListener(mSystemGestureExcludeUpdater);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -362,6 +372,22 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateSystemGestureExcludeRects() {
|
||||||
|
// Exclude the region occupied by the first BubbleView in the stack
|
||||||
|
Rect excludeZone = mSystemGestureExclusionRects.get(0);
|
||||||
|
if (mBubbleContainer.getChildCount() > 0) {
|
||||||
|
View firstBubble = mBubbleContainer.getChildAt(0);
|
||||||
|
excludeZone.set(firstBubble.getLeft(), firstBubble.getTop(), firstBubble.getRight(),
|
||||||
|
firstBubble.getBottom());
|
||||||
|
excludeZone.offset((int) (firstBubble.getTranslationX() + 0.5f),
|
||||||
|
(int) (firstBubble.getTranslationY() + 0.5f));
|
||||||
|
mBubbleContainer.setSystemGestureExclusionRects(mSystemGestureExclusionRects);
|
||||||
|
} else {
|
||||||
|
excludeZone.setEmpty();
|
||||||
|
mBubbleContainer.setSystemGestureExclusionRects(Collections.emptyList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the visibility of the 'dot' indicating an update on the bubble.
|
* Updates the visibility of the 'dot' indicating an update on the bubble.
|
||||||
* @param key the {@link NotificationEntry#key} associated with the bubble.
|
* @param key the {@link NotificationEntry#key} associated with the bubble.
|
||||||
|
|||||||
Reference in New Issue
Block a user