Loading core/java/com/android/internal/widget/FloatingToolbar.java +33 −45 Original line number Diff line number Diff line Loading @@ -90,7 +90,6 @@ public final class FloatingToolbar { }; private final Context mContext; private final Window mWindow; private final FloatingToolbarPopup mPopup; private final Rect mContentRect = new Rect(); Loading @@ -103,31 +102,26 @@ public final class FloatingToolbar { private int mSuggestedWidth; private boolean mWidthChanged = true; private final OnLayoutChangeListener mOrientationChangeHandler = new OnLayoutChangeListener() { private final Rect mNewRect = new Rect(); private final Rect mOldRect = new Rect(); private final ComponentCallbacks mOrientationChangeHandler = new ComponentCallbacks() { @Override public void onLayoutChange( View view, int newLeft, int newRight, int newTop, int newBottom, int oldLeft, int oldRight, int oldTop, int oldBottom) { mNewRect.set(newLeft, newRight, newTop, newBottom); mOldRect.set(oldLeft, oldRight, oldTop, oldBottom); if (mPopup.isShowing() && !mNewRect.equals(mOldRect)) { public void onConfigurationChanged(Configuration newConfig) { if (mPopup.isShowing() && mPopup.viewPortHasChanged()) { mWidthChanged = true; updateLayout(); } } @Override public void onLowMemory() {} }; /** * Initializes a floating toolbar. */ public FloatingToolbar(Context context, Window window) { mContext = applyDefaultTheme(Preconditions.checkNotNull(context)); mWindow = Preconditions.checkNotNull(window); Preconditions.checkNotNull(context); Preconditions.checkNotNull(window); mContext = applyDefaultTheme(context); mPopup = new FloatingToolbarPopup(mContext, window.getDecorView()); } Loading Loading @@ -185,8 +179,21 @@ public final class FloatingToolbar { * Shows this floating toolbar. */ public FloatingToolbar show() { registerOrientationHandler(); doShow(); mContext.unregisterComponentCallbacks(mOrientationChangeHandler); mContext.registerComponentCallbacks(mOrientationChangeHandler); List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu); if (!isCurrentlyShowing(menuItems) || mWidthChanged) { mPopup.dismiss(); mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); return this; } Loading @@ -196,7 +203,8 @@ public final class FloatingToolbar { */ public FloatingToolbar updateLayout() { if (mPopup.isShowing()) { doShow(); // show() performs all the logic we need here. show(); } return this; } Loading @@ -205,7 +213,7 @@ public final class FloatingToolbar { * Dismisses this floating toolbar. */ public void dismiss() { unregisterOrientationHandler(); mContext.unregisterComponentCallbacks(mOrientationChangeHandler); mPopup.dismiss(); } Loading @@ -231,22 +239,6 @@ public final class FloatingToolbar { return mPopup.isHidden(); } private void doShow() { List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu); if (!isCurrentlyShowing(menuItems) || mWidthChanged) { mPopup.dismiss(); mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); } /** * Returns true if this floating toolbar is currently showing the specified menu items. */ Loading Loading @@ -286,15 +278,6 @@ public final class FloatingToolbar { return references; } private void registerOrientationHandler() { unregisterOrientationHandler() mWindow.getDecorView.addOnLayoutChangeListener(mOrientationChangeHandler); } private void unregisterOrientationHandler() { mWindow.getDecorView.removeOnLayoutChangeListener(mOrientationChangeHandler); } /** * A popup window used by the floating toolbar. Loading Loading @@ -1029,6 +1012,11 @@ public final class FloatingToolbar { mParent.getWindowVisibleDisplayFrame(mViewPortOnScreen); } private boolean viewPortHasChanged() { mParent.getWindowVisibleDisplayFrame(mTmpRect); return !mTmpRect.equals(mViewPortOnScreen); } private int getAdjustedToolbarWidth(int suggestedWidth) { int width = suggestedWidth; refreshViewPort(); Loading Loading
core/java/com/android/internal/widget/FloatingToolbar.java +33 −45 Original line number Diff line number Diff line Loading @@ -90,7 +90,6 @@ public final class FloatingToolbar { }; private final Context mContext; private final Window mWindow; private final FloatingToolbarPopup mPopup; private final Rect mContentRect = new Rect(); Loading @@ -103,31 +102,26 @@ public final class FloatingToolbar { private int mSuggestedWidth; private boolean mWidthChanged = true; private final OnLayoutChangeListener mOrientationChangeHandler = new OnLayoutChangeListener() { private final Rect mNewRect = new Rect(); private final Rect mOldRect = new Rect(); private final ComponentCallbacks mOrientationChangeHandler = new ComponentCallbacks() { @Override public void onLayoutChange( View view, int newLeft, int newRight, int newTop, int newBottom, int oldLeft, int oldRight, int oldTop, int oldBottom) { mNewRect.set(newLeft, newRight, newTop, newBottom); mOldRect.set(oldLeft, oldRight, oldTop, oldBottom); if (mPopup.isShowing() && !mNewRect.equals(mOldRect)) { public void onConfigurationChanged(Configuration newConfig) { if (mPopup.isShowing() && mPopup.viewPortHasChanged()) { mWidthChanged = true; updateLayout(); } } @Override public void onLowMemory() {} }; /** * Initializes a floating toolbar. */ public FloatingToolbar(Context context, Window window) { mContext = applyDefaultTheme(Preconditions.checkNotNull(context)); mWindow = Preconditions.checkNotNull(window); Preconditions.checkNotNull(context); Preconditions.checkNotNull(window); mContext = applyDefaultTheme(context); mPopup = new FloatingToolbarPopup(mContext, window.getDecorView()); } Loading Loading @@ -185,8 +179,21 @@ public final class FloatingToolbar { * Shows this floating toolbar. */ public FloatingToolbar show() { registerOrientationHandler(); doShow(); mContext.unregisterComponentCallbacks(mOrientationChangeHandler); mContext.registerComponentCallbacks(mOrientationChangeHandler); List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu); if (!isCurrentlyShowing(menuItems) || mWidthChanged) { mPopup.dismiss(); mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); return this; } Loading @@ -196,7 +203,8 @@ public final class FloatingToolbar { */ public FloatingToolbar updateLayout() { if (mPopup.isShowing()) { doShow(); // show() performs all the logic we need here. show(); } return this; } Loading @@ -205,7 +213,7 @@ public final class FloatingToolbar { * Dismisses this floating toolbar. */ public void dismiss() { unregisterOrientationHandler(); mContext.unregisterComponentCallbacks(mOrientationChangeHandler); mPopup.dismiss(); } Loading @@ -231,22 +239,6 @@ public final class FloatingToolbar { return mPopup.isHidden(); } private void doShow() { List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu); if (!isCurrentlyShowing(menuItems) || mWidthChanged) { mPopup.dismiss(); mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth); mShowingMenuItems = getShowingMenuItemsReferences(menuItems); } if (!mPopup.isShowing()) { mPopup.show(mContentRect); } else if (!mPreviousContentRect.equals(mContentRect)) { mPopup.updateCoordinates(mContentRect); } mWidthChanged = false; mPreviousContentRect.set(mContentRect); } /** * Returns true if this floating toolbar is currently showing the specified menu items. */ Loading Loading @@ -286,15 +278,6 @@ public final class FloatingToolbar { return references; } private void registerOrientationHandler() { unregisterOrientationHandler() mWindow.getDecorView.addOnLayoutChangeListener(mOrientationChangeHandler); } private void unregisterOrientationHandler() { mWindow.getDecorView.removeOnLayoutChangeListener(mOrientationChangeHandler); } /** * A popup window used by the floating toolbar. Loading Loading @@ -1029,6 +1012,11 @@ public final class FloatingToolbar { mParent.getWindowVisibleDisplayFrame(mViewPortOnScreen); } private boolean viewPortHasChanged() { mParent.getWindowVisibleDisplayFrame(mTmpRect); return !mTmpRect.equals(mViewPortOnScreen); } private int getAdjustedToolbarWidth(int suggestedWidth) { int width = suggestedWidth; refreshViewPort(); Loading