Merge "Apply static offset to PiP IME adjustment." into oc-dr1-dev

am: a363ab9d6f

Change-Id: I77df82fb8fab936b4affaf57661a227eefcb06b3
This commit is contained in:
Winson Chung
2017-07-21 00:09:53 +00:00
committed by android-build-merger
2 changed files with 19 additions and 8 deletions

View File

@@ -801,6 +801,9 @@
<!-- The shortest-edge size of the expanded PiP. --> <!-- The shortest-edge size of the expanded PiP. -->
<dimen name="pip_expanded_shortest_edge_size">160dp</dimen> <dimen name="pip_expanded_shortest_edge_size">160dp</dimen>
<!-- The additional offset to apply to the IME animation to account for the input field. -->
<dimen name="pip_ime_offset">48dp</dimen>
<!-- The padding between actions in the PiP in landscape Note that the PiP does not reflect <!-- The padding between actions in the PiP in landscape Note that the PiP does not reflect
the configuration of the device, so we can't use -land resources. --> the configuration of the device, so we can't use -land resources. -->
<dimen name="pip_between_action_padding_land">8dp</dimen> <dimen name="pip_between_action_padding_land">8dp</dimen>

View File

@@ -27,6 +27,7 @@ import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.Rect; import android.graphics.Rect;
@@ -122,6 +123,7 @@ public class PipTouchHandler {
private boolean mIsMinimized; private boolean mIsMinimized;
private boolean mIsImeShowing; private boolean mIsImeShowing;
private int mImeHeight; private int mImeHeight;
private int mImeOffset;
private float mSavedSnapFraction = -1f; private float mSavedSnapFraction = -1f;
private boolean mSendingHoverAccessibilityEvents; private boolean mSendingHoverAccessibilityEvents;
private boolean mMovementWithinMinimize; private boolean mMovementWithinMinimize;
@@ -192,8 +194,11 @@ public class PipTouchHandler {
}; };
mMotionHelper = new PipMotionHelper(mContext, mActivityManager, mMenuController, mMotionHelper = new PipMotionHelper(mContext, mActivityManager, mMenuController,
mSnapAlgorithm, mFlingAnimationUtils); mSnapAlgorithm, mFlingAnimationUtils);
mExpandedShortestEdgeSize = context.getResources().getDimensionPixelSize(
Resources res = context.getResources();
mExpandedShortestEdgeSize = res.getDimensionPixelSize(
R.dimen.pip_expanded_shortest_edge_size); R.dimen.pip_expanded_shortest_edge_size);
mImeOffset = res.getDimensionPixelSize(R.dimen.pip_ime_offset);
// Register the listener for input consumer touch events // Register the listener for input consumer touch events
inputConsumerController.setTouchListener(this::handleTouchEvent); inputConsumerController.setTouchListener(this::handleTouchEvent);
@@ -265,7 +270,6 @@ public class PipTouchHandler {
mSnapAlgorithm.getMovementBounds(mExpandedBounds, insetBounds, expandedMovementBounds, mSnapAlgorithm.getMovementBounds(mExpandedBounds, insetBounds, expandedMovementBounds,
mIsImeShowing ? mImeHeight : 0); mIsImeShowing ? mImeHeight : 0);
// If this is from an IME adjustment, then we should move the PiP so that it is not occluded // If this is from an IME adjustment, then we should move the PiP so that it is not occluded
// by the IME // by the IME
if (fromImeAdjustement) { if (fromImeAdjustement) {
@@ -278,18 +282,22 @@ public class PipTouchHandler {
? expandedMovementBounds ? expandedMovementBounds
: normalMovementBounds; : normalMovementBounds;
if (mIsImeShowing) { if (mIsImeShowing) {
// IME visible // IME visible, apply the IME offset if the space allows for it
final int imeOffset = toMovementBounds.bottom - Math.max(toMovementBounds.top,
toMovementBounds.bottom - mImeOffset);
if (bounds.top == mMovementBounds.bottom) { if (bounds.top == mMovementBounds.bottom) {
// If the PIP is currently resting on top of the IME, then adjust it with // If the PIP is currently resting on top of the IME, then adjust it with
// the hiding IME // the showing IME
bounds.offsetTo(bounds.left, toMovementBounds.bottom); bounds.offsetTo(bounds.left, toMovementBounds.bottom - imeOffset);
} else { } else {
bounds.offset(0, Math.min(0, toMovementBounds.bottom - bounds.top)); bounds.offset(0, Math.min(0, toMovementBounds.bottom - imeOffset
- bounds.top));
} }
} else { } else {
// IME hidden // IME hidden
if (bounds.top == mMovementBounds.bottom) { if (bounds.top >= (mMovementBounds.bottom - mImeOffset)) {
// If the PIP is resting on top of the IME, then adjust it with the hiding IME // If the PIP is resting on top of the IME, then adjust it with the hiding
// IME
bounds.offsetTo(bounds.left, toMovementBounds.bottom); bounds.offsetTo(bounds.left, toMovementBounds.bottom);
} }
} }