Epicenter API for ListPopupWindow

Introduced epicenter API for ListPopupWindow to mirror the same API that we've made for PopupWindow (b/123768589). Also add mutability protection to PopupWindow epicenter rects

Bug: b/124094855

Test: All widgets tests passed. getter / setter tests introduced in
I648c169b67972c80befbeae9c37c2819eaad27d4
Change-Id: I2b79a16039d345c9c8893b815735a2811543cf60
This commit is contained in:
Matvei Malkov
2019-02-08 16:16:44 +00:00
parent de86b3754b
commit b0bd3e7a04
3 changed files with 21 additions and 6 deletions

View File

@@ -56015,6 +56015,7 @@ package android.widget {
method @Nullable public android.view.View getAnchorView();
method @StyleRes public int getAnimationStyle();
method @Nullable public android.graphics.drawable.Drawable getBackground();
method @Nullable public android.graphics.Rect getEpicenterBounds();
method public int getHeight();
method public int getHorizontalOffset();
method public int getInputMethodMode();
@@ -56041,6 +56042,7 @@ package android.widget {
method public void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
method public void setContentWidth(int);
method public void setDropDownGravity(int);
method public void setEpicenterBounds(@Nullable android.graphics.Rect);
method public void setHeight(int);
method public void setHorizontalOffset(int);
method public void setInputMethodMode(int);

View File

@@ -471,11 +471,24 @@ public class ListPopupWindow implements ShowableListMenu {
* Specifies the anchor-relative bounds of the popup's transition
* epicenter.
*
* @param bounds anchor-relative bounds
* @hide
* @param bounds anchor-relative bounds, or {@code null} to use default epicenter
*
* @see #getEpicenterBounds()
*/
public void setEpicenterBounds(Rect bounds) {
mEpicenterBounds = bounds;
public void setEpicenterBounds(@Nullable Rect bounds) {
mEpicenterBounds = bounds != null ? new Rect(bounds) : null;
}
/**
* Returns bounds which are used as a popup's epicenter
* of the enter and exit transitions.
*
* @return bounds relative to anchor view, or {@code null} if not set
* @see #setEpicenterBounds(Rect)
*/
@Nullable
public Rect getEpicenterBounds() {
return mEpicenterBounds != null ? new Rect(mEpicenterBounds) : null;
}
/**

View File

@@ -490,7 +490,7 @@ public class PopupWindow {
*/
@Nullable
public Rect getEpicenterBounds() {
return mEpicenterBounds;
return mEpicenterBounds != null ? new Rect(mEpicenterBounds) : null;
}
/**
@@ -509,7 +509,7 @@ public class PopupWindow {
* @see #getEpicenterBounds()
*/
public void setEpicenterBounds(@Nullable Rect bounds) {
mEpicenterBounds = bounds;
mEpicenterBounds = bounds != null ? new Rect(bounds) : null;
}
private Transition getTransition(int resId) {