Loading core/java/com/android/internal/policy/PhoneWindow.java +93 −5 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,8 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowManager.LayoutParams.*; import static android.view.WindowManager.LayoutParams.*; import android.animation.Animator; import android.animation.ObjectAnimator; import android.app.ActivityManagerNative; import android.app.ActivityManagerNative; import android.app.SearchManager; import android.app.SearchManager; import android.os.UserHandle; import android.os.UserHandle; Loading Loading @@ -2216,6 +2218,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private OnPreDrawListener mFloatingToolbarPreDrawListener; private OnPreDrawListener mFloatingToolbarPreDrawListener; private View mFloatingActionModeOriginatingView; private View mFloatingActionModeOriginatingView; private FloatingToolbar mFloatingToolbar; private FloatingToolbar mFloatingToolbar; private ObjectAnimator mFadeAnim; // View added at runtime to draw under the status bar area // View added at runtime to draw under the status bar area private View mStatusGuard; private View mStatusGuard; Loading Loading @@ -3345,6 +3348,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } private ActionMode createStandaloneActionMode(ActionMode.Callback callback) { private ActionMode createStandaloneActionMode(ActionMode.Callback callback) { endOnGoingFadeAnimation(); cleanupPrimaryActionMode(); cleanupPrimaryActionMode(); if (mPrimaryActionModeView == null) { if (mPrimaryActionModeView == null) { if (isFloating()) { if (isFloating()) { Loading Loading @@ -3384,6 +3388,32 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mPrimaryActionModePopup.showAtLocation( mPrimaryActionModePopup.showAtLocation( mPrimaryActionModeView.getApplicationWindowToken(), mPrimaryActionModeView.getApplicationWindowToken(), Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0); Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0); endOnGoingFadeAnimation(); mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { mPrimaryActionModeView.setVisibility(VISIBLE); } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setAlpha(1f); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } } }; }; } else { } else { Loading @@ -3404,13 +3434,44 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { return null; return null; } } private void endOnGoingFadeAnimation() { if (mFadeAnim != null) { mFadeAnim.end(); } } private void setHandledPrimaryActionMode(ActionMode mode) { private void setHandledPrimaryActionMode(ActionMode mode) { endOnGoingFadeAnimation(); mPrimaryActionMode = mode; mPrimaryActionMode = mode; mPrimaryActionMode.invalidate(); mPrimaryActionMode.invalidate(); mPrimaryActionModeView.initForMode(mPrimaryActionMode); mPrimaryActionModeView.initForMode(mPrimaryActionMode); mPrimaryActionModeView.setVisibility(View.VISIBLE); if (mPrimaryActionModePopup != null) { if (mPrimaryActionModePopup != null) { post(mShowPrimaryActionModePopup); post(mShowPrimaryActionModePopup); } else { mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { mPrimaryActionModeView.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setAlpha(1f); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } } mPrimaryActionModeView.sendAccessibilityEvent( mPrimaryActionModeView.sendAccessibilityEvent( AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); Loading Loading @@ -3473,13 +3534,40 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (mode == mPrimaryActionMode) { if (mode == mPrimaryActionMode) { if (mPrimaryActionModePopup != null) { if (mPrimaryActionModePopup != null) { removeCallbacks(mShowPrimaryActionModePopup); removeCallbacks(mShowPrimaryActionModePopup); mPrimaryActionModePopup.dismiss(); } else if (mPrimaryActionModeView != null) { mPrimaryActionModeView.setVisibility(GONE); } } if (mPrimaryActionModeView != null) { if (mPrimaryActionModeView != null) { endOnGoingFadeAnimation(); mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 1f, 0f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setVisibility(GONE); if (mPrimaryActionModePopup != null) { mPrimaryActionModePopup.dismiss(); } mPrimaryActionModeView.removeAllViews(); mPrimaryActionModeView.removeAllViews(); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } mPrimaryActionMode = null; mPrimaryActionMode = null; } else if (mode == mFloatingActionMode) { } else if (mode == mFloatingActionMode) { cleanupFloatingActionModeViews(); cleanupFloatingActionModeViews(); Loading Loading
core/java/com/android/internal/policy/PhoneWindow.java +93 −5 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,8 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowManager.LayoutParams.*; import static android.view.WindowManager.LayoutParams.*; import android.animation.Animator; import android.animation.ObjectAnimator; import android.app.ActivityManagerNative; import android.app.ActivityManagerNative; import android.app.SearchManager; import android.app.SearchManager; import android.os.UserHandle; import android.os.UserHandle; Loading Loading @@ -2216,6 +2218,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private OnPreDrawListener mFloatingToolbarPreDrawListener; private OnPreDrawListener mFloatingToolbarPreDrawListener; private View mFloatingActionModeOriginatingView; private View mFloatingActionModeOriginatingView; private FloatingToolbar mFloatingToolbar; private FloatingToolbar mFloatingToolbar; private ObjectAnimator mFadeAnim; // View added at runtime to draw under the status bar area // View added at runtime to draw under the status bar area private View mStatusGuard; private View mStatusGuard; Loading Loading @@ -3345,6 +3348,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } private ActionMode createStandaloneActionMode(ActionMode.Callback callback) { private ActionMode createStandaloneActionMode(ActionMode.Callback callback) { endOnGoingFadeAnimation(); cleanupPrimaryActionMode(); cleanupPrimaryActionMode(); if (mPrimaryActionModeView == null) { if (mPrimaryActionModeView == null) { if (isFloating()) { if (isFloating()) { Loading Loading @@ -3384,6 +3388,32 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mPrimaryActionModePopup.showAtLocation( mPrimaryActionModePopup.showAtLocation( mPrimaryActionModeView.getApplicationWindowToken(), mPrimaryActionModeView.getApplicationWindowToken(), Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0); Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0); endOnGoingFadeAnimation(); mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { mPrimaryActionModeView.setVisibility(VISIBLE); } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setAlpha(1f); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } } }; }; } else { } else { Loading @@ -3404,13 +3434,44 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { return null; return null; } } private void endOnGoingFadeAnimation() { if (mFadeAnim != null) { mFadeAnim.end(); } } private void setHandledPrimaryActionMode(ActionMode mode) { private void setHandledPrimaryActionMode(ActionMode mode) { endOnGoingFadeAnimation(); mPrimaryActionMode = mode; mPrimaryActionMode = mode; mPrimaryActionMode.invalidate(); mPrimaryActionMode.invalidate(); mPrimaryActionModeView.initForMode(mPrimaryActionMode); mPrimaryActionModeView.initForMode(mPrimaryActionMode); mPrimaryActionModeView.setVisibility(View.VISIBLE); if (mPrimaryActionModePopup != null) { if (mPrimaryActionModePopup != null) { post(mShowPrimaryActionModePopup); post(mShowPrimaryActionModePopup); } else { mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { mPrimaryActionModeView.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setAlpha(1f); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } } mPrimaryActionModeView.sendAccessibilityEvent( mPrimaryActionModeView.sendAccessibilityEvent( AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); Loading Loading @@ -3473,13 +3534,40 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (mode == mPrimaryActionMode) { if (mode == mPrimaryActionMode) { if (mPrimaryActionModePopup != null) { if (mPrimaryActionModePopup != null) { removeCallbacks(mShowPrimaryActionModePopup); removeCallbacks(mShowPrimaryActionModePopup); mPrimaryActionModePopup.dismiss(); } else if (mPrimaryActionModeView != null) { mPrimaryActionModeView.setVisibility(GONE); } } if (mPrimaryActionModeView != null) { if (mPrimaryActionModeView != null) { endOnGoingFadeAnimation(); mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 1f, 0f); mFadeAnim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { mPrimaryActionModeView.setVisibility(GONE); if (mPrimaryActionModePopup != null) { mPrimaryActionModePopup.dismiss(); } mPrimaryActionModeView.removeAllViews(); mPrimaryActionModeView.removeAllViews(); mFadeAnim = null; } @Override public void onAnimationCancel(Animator animation) { } } @Override public void onAnimationRepeat(Animator animation) { } }); mFadeAnim.start(); } mPrimaryActionMode = null; mPrimaryActionMode = null; } else if (mode == mFloatingActionMode) { } else if (mode == mFloatingActionMode) { cleanupFloatingActionModeViews(); cleanupFloatingActionModeViews(); Loading