Loading core/java/com/android/internal/view/FloatingActionMode.java +15 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,8 @@ import com.android.internal.util.Preconditions; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.widget.FloatingToolbar; import java.util.Arrays; public class FloatingActionMode extends ActionMode { private static final int MAX_HIDE_DURATION = 3000; Loading @@ -42,7 +44,9 @@ public class FloatingActionMode extends ActionMode { private final Rect mContentRectOnWindow; private final Rect mPreviousContentRectOnWindow; private final int[] mViewPosition; private final int[] mPreviousViewPosition; private final Rect mViewRect; private final Rect mPreviousViewRect; private final Rect mScreenRect; private final View mOriginatingView; private final int mBottomAllowance; Loading Loading @@ -75,7 +79,9 @@ public class FloatingActionMode extends ActionMode { mContentRectOnWindow = new Rect(); mPreviousContentRectOnWindow = new Rect(); mViewPosition = new int[2]; mPreviousViewPosition = new int[2]; mViewRect = new Rect(); mPreviousViewRect = new Rect(); mScreenRect = new Rect(); mOriginatingView = Preconditions.checkNotNull(originatingView); mOriginatingView.getLocationInWindow(mViewPosition); Loading Loading @@ -129,9 +135,17 @@ public class FloatingActionMode extends ActionMode { public void updateViewLocationInWindow() { checkToolbarInitialized(); mOriginatingView.getLocationInWindow(mViewPosition); mOriginatingView.getGlobalVisibleRect(mViewRect); if (!Arrays.equals(mViewPosition, mPreviousViewPosition) || !mViewRect.equals(mPreviousViewRect)) { repositionToolbar(); mPreviousViewPosition[0] = mViewPosition[0]; mPreviousViewPosition[1] = mViewPosition[1]; mPreviousViewRect.set(mViewRect); } } private void repositionToolbar() { Loading core/java/com/android/internal/widget/FloatingToolbar.java +24 −21 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ public final class FloatingToolbar { private final FloatingToolbarPopup mPopup; private final Rect mContentRect = new Rect(); private final Rect mPreviousContentRect = new Rect(); private Menu mMenu; private List<Object> mShowingMenuItems = new ArrayList<Object>(); Loading Loading @@ -178,11 +179,13 @@ public final class FloatingToolbar { mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } mPopup.updateCoordinates(mContentRect); if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); return this; } Loading Loading @@ -318,24 +321,8 @@ public final class FloatingToolbar { }; private final AnimatorSet mDismissAnimation; private final AnimatorSet mHideAnimation; private final AnimationSet mOpenOverflowAnimation = new AnimationSet(true) { @Override public void cancel() { if (hasStarted() && !hasEnded()) { super.cancel(); setOverflowPanelAsContent(); } } }; private final AnimationSet mCloseOverflowAnimation = new AnimationSet(true) { @Override public void cancel() { if (hasStarted() && !hasEnded()) { super.cancel(); setMainPanelAsContent(); } } }; private final AnimationSet mOpenOverflowAnimation = new AnimationSet(true); private final AnimationSet mCloseOverflowAnimation = new AnimationSet(true); private final Runnable mOpenOverflow = new Runnable() { @Override Loading Loading @@ -657,8 +644,24 @@ public final class FloatingToolbar { } private void cancelOverflowAnimations() { mOpenOverflowAnimation.cancel(); mCloseOverflowAnimation.cancel(); if (mOpenOverflowAnimation.hasStarted() && !mOpenOverflowAnimation.hasEnded()) { // Remove the animation listener, stop the animation, // then trigger the lister explicitly so it is not posted // to the message queue. mOpenOverflowAnimation.setAnimationListener(null); mContentContainer.clearAnimation(); mOnOverflowOpened.onAnimationEnd(null); } if (mCloseOverflowAnimation.hasStarted() && !mCloseOverflowAnimation.hasEnded()) { // Remove the animation listener, stop the animation, // then trigger the lister explicitly so it is not posted // to the message queue. mCloseOverflowAnimation.setAnimationListener(null); mContentContainer.clearAnimation(); mOnOverflowClosed.onAnimationEnd(null); } } /** Loading Loading
core/java/com/android/internal/view/FloatingActionMode.java +15 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,8 @@ import com.android.internal.util.Preconditions; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.widget.FloatingToolbar; import java.util.Arrays; public class FloatingActionMode extends ActionMode { private static final int MAX_HIDE_DURATION = 3000; Loading @@ -42,7 +44,9 @@ public class FloatingActionMode extends ActionMode { private final Rect mContentRectOnWindow; private final Rect mPreviousContentRectOnWindow; private final int[] mViewPosition; private final int[] mPreviousViewPosition; private final Rect mViewRect; private final Rect mPreviousViewRect; private final Rect mScreenRect; private final View mOriginatingView; private final int mBottomAllowance; Loading Loading @@ -75,7 +79,9 @@ public class FloatingActionMode extends ActionMode { mContentRectOnWindow = new Rect(); mPreviousContentRectOnWindow = new Rect(); mViewPosition = new int[2]; mPreviousViewPosition = new int[2]; mViewRect = new Rect(); mPreviousViewRect = new Rect(); mScreenRect = new Rect(); mOriginatingView = Preconditions.checkNotNull(originatingView); mOriginatingView.getLocationInWindow(mViewPosition); Loading Loading @@ -129,9 +135,17 @@ public class FloatingActionMode extends ActionMode { public void updateViewLocationInWindow() { checkToolbarInitialized(); mOriginatingView.getLocationInWindow(mViewPosition); mOriginatingView.getGlobalVisibleRect(mViewRect); if (!Arrays.equals(mViewPosition, mPreviousViewPosition) || !mViewRect.equals(mPreviousViewRect)) { repositionToolbar(); mPreviousViewPosition[0] = mViewPosition[0]; mPreviousViewPosition[1] = mViewPosition[1]; mPreviousViewRect.set(mViewRect); } } private void repositionToolbar() { Loading
core/java/com/android/internal/widget/FloatingToolbar.java +24 −21 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ public final class FloatingToolbar { private final FloatingToolbarPopup mPopup; private final Rect mContentRect = new Rect(); private final Rect mPreviousContentRect = new Rect(); private Menu mMenu; private List<Object> mShowingMenuItems = new ArrayList<Object>(); Loading Loading @@ -178,11 +179,13 @@ public final class FloatingToolbar { mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } mPopup.updateCoordinates(mContentRect); if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); return this; } Loading Loading @@ -318,24 +321,8 @@ public final class FloatingToolbar { }; private final AnimatorSet mDismissAnimation; private final AnimatorSet mHideAnimation; private final AnimationSet mOpenOverflowAnimation = new AnimationSet(true) { @Override public void cancel() { if (hasStarted() && !hasEnded()) { super.cancel(); setOverflowPanelAsContent(); } } }; private final AnimationSet mCloseOverflowAnimation = new AnimationSet(true) { @Override public void cancel() { if (hasStarted() && !hasEnded()) { super.cancel(); setMainPanelAsContent(); } } }; private final AnimationSet mOpenOverflowAnimation = new AnimationSet(true); private final AnimationSet mCloseOverflowAnimation = new AnimationSet(true); private final Runnable mOpenOverflow = new Runnable() { @Override Loading Loading @@ -657,8 +644,24 @@ public final class FloatingToolbar { } private void cancelOverflowAnimations() { mOpenOverflowAnimation.cancel(); mCloseOverflowAnimation.cancel(); if (mOpenOverflowAnimation.hasStarted() && !mOpenOverflowAnimation.hasEnded()) { // Remove the animation listener, stop the animation, // then trigger the lister explicitly so it is not posted // to the message queue. mOpenOverflowAnimation.setAnimationListener(null); mContentContainer.clearAnimation(); mOnOverflowOpened.onAnimationEnd(null); } if (mCloseOverflowAnimation.hasStarted() && !mCloseOverflowAnimation.hasEnded()) { // Remove the animation listener, stop the animation, // then trigger the lister explicitly so it is not posted // to the message queue. mCloseOverflowAnimation.setAnimationListener(null); mContentContainer.clearAnimation(); mOnOverflowClosed.onAnimationEnd(null); } } /** Loading