final WindowStateAnimator winAnimator = w.mWinAnimator;
- // If the window has moved due to its containing
- // content frame changing, then we'd like to animate
- // it.
- if (w.mHasSurface && w.shouldAnimateMove()) {
- // Frame has moved, containing content frame
- // has also moved, and we're not currently animating...
- // let's do something.
- Animation a = AnimationUtils.loadAnimation(mContext,
- com.android.internal.R.anim.window_move_from_decor);
- winAnimator.setAnimation(a);
- winAnimator.mAnimDw = w.mLastFrame.left - w.mFrame.left;
- winAnimator.mAnimDh = w.mLastFrame.top - w.mFrame.top;
+ // If the window has moved due to its containing content frame changing, then
+ // notify the listeners and optionally animate it.
+ if (w.hasMoved()) {
+ // Frame has moved, containing content frame has also moved, and we're not
+ // currently animating... let's do something.
+ final int left = w.mFrame.left;
+ final int top = w.mFrame.top;
+ if ((w.mAttrs.privateFlags & PRIVATE_FLAG_NO_MOVE_ANIMATION) == 0) {
+ Animation a = AnimationUtils.loadAnimation(mContext,
+ com.android.internal.R.anim.window_move_from_decor);
+ winAnimator.setAnimation(a);
+ winAnimator.mAnimDw = w.mLastFrame.left - left;
+ winAnimator.mAnimDh = w.mLastFrame.top - top;
+ }
//TODO (multidisplay): Accessibility supported only for the default display.
if (mAccessibilityController != null
}
try {
- w.mClient.moved(w.mFrame.left, w.mFrame.top);
+ w.mClient.moved(left, top);
} catch (RemoteException e) {
}
}
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW;
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
}
/**
- * Return whether this window is wanting to have a translation
- * animation applied to it for an in-progress move. (Only makes
+ * Return whether this window has moved. (Only makes
* sense to call from performLayoutAndPlaceSurfacesLockedInner().)
*/
- boolean shouldAnimateMove() {
- return mContentChanged && !mExiting && !mWinAnimator.mLastHidden && mService.okToDisplay()
- && (mFrame.top != mLastFrame.top
+ boolean hasMoved() {
+ return mHasSurface && mContentChanged && !mExiting && !mWinAnimator.mLastHidden
+ && mService.okToDisplay() && (mFrame.top != mLastFrame.top
|| mFrame.left != mLastFrame.left)
- && (mAttrs.privateFlags&PRIVATE_FLAG_NO_MOVE_ANIMATION) == 0
- && (mAttachedWindow == null || !mAttachedWindow.shouldAnimateMove());
+ && (mAttachedWindow == null || !mAttachedWindow.hasMoved());
}
boolean isFullscreen(int screenWidth, int screenHeight) {