Fix off-center bubble pointer

Bubble position is calculated w.r.t left screen edge.
Pointer position is set w.r.t right end of expanded view left padding.
Add missing correction for expanded view left padding.

Fixes: 158621663
Test: pointer points to bubble center
Change-Id: I94d320b0b599865378d8297d50f555d5edd07203
This commit is contained in:
Lyn Han
2020-06-18 21:15:28 -07:00
parent 67cb3a610d
commit 3989260800

View File

@@ -120,6 +120,8 @@ public class BubbleExpandedView extends LinearLayout {
private int mPointerWidth;
private int mPointerHeight;
private ShapeDrawable mPointerDrawable;
private int mExpandedViewPadding;
@Nullable private Bubble mBubble;
@@ -345,11 +347,9 @@ public class BubbleExpandedView extends LinearLayout {
return view.onApplyWindowInsets(insets);
});
final int expandedViewPadding =
res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding);
setPadding(
expandedViewPadding, expandedViewPadding, expandedViewPadding, expandedViewPadding);
mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding);
setPadding(mExpandedViewPadding, mExpandedViewPadding, mExpandedViewPadding,
mExpandedViewPadding);
setOnTouchListener((view, motionEvent) -> {
if (!usingActivityView()) {
return false;
@@ -729,7 +729,7 @@ public class BubbleExpandedView extends LinearLayout {
*/
public void setPointerPosition(float x) {
float halfPointerWidth = mPointerWidth / 2f;
float pointerLeft = x - halfPointerWidth;
float pointerLeft = x - halfPointerWidth - mExpandedViewPadding;
mPointerView.setTranslationX(pointerLeft);
mPointerView.setVisibility(VISIBLE);
}