Loading core/java/android/app/MediaRouteActionProvider.java +0 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,6 @@ public class MediaRouteActionProvider extends ActionProvider { } mButton = new MediaRouteButton(mContext); mButton.setCheatSheetEnabled(true); mButton.setRouteTypes(mRouteTypes); mButton.setExtendedSettingsClickListener(mExtendedSettingsListener); mButton.setLayoutParams(new ViewGroup.LayoutParams( Loading core/java/android/app/MediaRouteButton.java +4 −54 Original line number Diff line number Diff line Loading @@ -24,18 +24,13 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.media.MediaRouter; import android.media.MediaRouter.RouteGroup; import android.media.MediaRouter.RouteInfo; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; import android.widget.Toast; public class MediaRouteButton extends View { private final MediaRouter mRouter; Loading @@ -47,7 +42,6 @@ public class MediaRouteButton extends View { private Drawable mRemoteIndicator; private boolean mRemoteActive; private boolean mCheatSheetEnabled; private boolean mIsConnecting; private int mMinWidth; Loading Loading @@ -98,7 +92,6 @@ public class MediaRouteButton extends View { a.recycle(); setClickable(true); setLongClickable(true); setRouteTypes(routeTypes); } Loading Loading @@ -178,12 +171,10 @@ public class MediaRouteButton extends View { throw new IllegalStateException("The MediaRouteButton's Context is not an Activity."); } /** * Sets whether to enable showing a toast with the content descriptor of the * button when the button is long pressed. */ void setCheatSheetEnabled(boolean enable) { mCheatSheetEnabled = enable; @Override public void setContentDescription(CharSequence contentDescription) { super.setContentDescription(contentDescription); setTooltip(contentDescription); } @Override Loading @@ -196,47 +187,6 @@ public class MediaRouteButton extends View { return showDialogInternal() || handled; } @Override public boolean performLongClick() { if (super.performLongClick()) { return true; } if (!mCheatSheetEnabled) { return false; } final CharSequence contentDesc = getContentDescription(); if (TextUtils.isEmpty(contentDesc)) { // Don't show the cheat sheet if we have no description return false; } final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; Toast cheatSheet = Toast.makeText(context, contentDesc, Toast.LENGTH_SHORT); if (midy < displayFrame.height()) { // Show along the top; follow action buttons cheatSheet.setGravity(Gravity.TOP | Gravity.END, screenWidth - screenPos[0] - width / 2, height); } else { // Show along the bottom center cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } cheatSheet.show(); performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); return true; } @Override protected int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); Loading core/java/com/android/internal/view/menu/ActionMenuItemView.java +4 −74 Original line number Diff line number Diff line Loading @@ -20,28 +20,22 @@ import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.widget.ActionMenuView; import android.widget.ForwardingListener; import android.widget.TextView; import android.widget.Toast; /** * @hide */ public class ActionMenuItemView extends TextView implements MenuView.ItemView, View.OnClickListener, View.OnLongClickListener, ActionMenuView.ActionMenuChildView { implements MenuView.ItemView, View.OnClickListener, ActionMenuView.ActionMenuChildView { private static final String TAG = "ActionMenuItemView"; private MenuItemImpl mItemData; Loading @@ -59,9 +53,6 @@ public class ActionMenuItemView extends TextView private static final int MAX_ICON_SIZE = 32; // dp private int mMaxIconSize; private Toast mTooltip; private Runnable mShowTooltipRunnable = () -> showTooltip(Toast.LENGTH_LONG); public ActionMenuItemView(Context context) { this(context, null); } Loading @@ -88,7 +79,6 @@ public class ActionMenuItemView extends TextView mMaxIconSize = (int) (MAX_ICON_SIZE * density + 0.5f); setOnClickListener(this); setOnLongClickListener(this); mSavedPaddingLeft = -1; setSaveEnabled(false); Loading Loading @@ -193,6 +183,9 @@ public class ActionMenuItemView extends TextView (mItemData.showsTextAsAction() && (mAllowTextWithIcon || mExpandedFormat)); setText(visible ? mTitle : null); // Show the tooltip for items that do not already show text. setTooltip(visible ? null : mTitle); } public void setIcon(Drawable icon) { Loading Loading @@ -249,7 +242,6 @@ public class ActionMenuItemView extends TextView @Override public boolean dispatchHoverEvent(MotionEvent event) { updateTooltip(event); // Don't allow children to hover; we want this to be treated as a single component. return onHoverEvent(event); } Loading @@ -266,68 +258,6 @@ public class ActionMenuItemView extends TextView return hasText(); } @Override public boolean onLongClick(View v) { return showTooltip(Toast.LENGTH_SHORT); } private boolean showTooltip(@Toast.Duration int duration) { if (hasText()) { // Don't show the cheat sheet for items that already show text. return false; } final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; int referenceX = screenPos[0] + width / 2; if (getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; referenceX = screenWidth - referenceX; // mirror } hideTooltip (); mTooltip = Toast.makeText(context, mItemData.getTitle(), duration); if (midy < displayFrame.height()) { // Show along the top; follow action buttons mTooltip.setGravity(Gravity.TOP | Gravity.END, referenceX, screenPos[1] + height - displayFrame.top); } else { // Show along the bottom center mTooltip.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } mTooltip.show(); return true; } private void hideTooltip() { if (mTooltip != null) { mTooltip.cancel(); mTooltip = null; } getHandler().removeCallbacks(mShowTooltipRunnable); } private void updateTooltip(MotionEvent event) { AccessibilityManager manager = AccessibilityManager.getInstance(mContext); if (manager.isEnabled() && manager.isTouchExplorationEnabled()) { return; } final int action = event.getAction(); if (action == MotionEvent.ACTION_HOVER_MOVE) { hideTooltip(); getHandler().postDelayed(mShowTooltipRunnable, ViewConfiguration.getLongPressTimeout()); } else if (action == MotionEvent.ACTION_HOVER_EXIT) { hideTooltip(); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final boolean textVisible = hasText(); Loading core/java/com/android/internal/widget/ScrollingTabContainerView.java +2 −28 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; /** * This widget implements the dynamic action bar tab behavior that can change Loading Loading @@ -360,7 +359,7 @@ public class ScrollingTabContainerView extends HorizontalScrollView tabView.getTab().select(); } private class TabView extends LinearLayout implements OnLongClickListener { private class TabView extends LinearLayout { private ActionBar.Tab mTab; private TextView mTextView; private ImageView mIconView; Loading Loading @@ -472,33 +471,8 @@ public class ScrollingTabContainerView extends HorizontalScrollView if (mIconView != null) { mIconView.setContentDescription(tab.getContentDescription()); } if (!hasText && !TextUtils.isEmpty(tab.getContentDescription())) { setOnLongClickListener(this); } else { setOnLongClickListener(null); setLongClickable(false); } } setTooltip(hasText? null : tab.getContentDescription()); } public boolean onLongClick(View v) { final int[] screenPos = new int[2]; getLocationOnScreen(screenPos); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; Toast cheatSheet = Toast.makeText(context, mTab.getContentDescription(), Toast.LENGTH_SHORT); // Show under the tab cheatSheet.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, (screenPos[0] + width / 2) - screenWidth / 2, height); cheatSheet.show(); return true; } public ActionBar.Tab getTab() { Loading Loading
core/java/android/app/MediaRouteActionProvider.java +0 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,6 @@ public class MediaRouteActionProvider extends ActionProvider { } mButton = new MediaRouteButton(mContext); mButton.setCheatSheetEnabled(true); mButton.setRouteTypes(mRouteTypes); mButton.setExtendedSettingsClickListener(mExtendedSettingsListener); mButton.setLayoutParams(new ViewGroup.LayoutParams( Loading
core/java/android/app/MediaRouteButton.java +4 −54 Original line number Diff line number Diff line Loading @@ -24,18 +24,13 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.media.MediaRouter; import android.media.MediaRouter.RouteGroup; import android.media.MediaRouter.RouteInfo; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; import android.widget.Toast; public class MediaRouteButton extends View { private final MediaRouter mRouter; Loading @@ -47,7 +42,6 @@ public class MediaRouteButton extends View { private Drawable mRemoteIndicator; private boolean mRemoteActive; private boolean mCheatSheetEnabled; private boolean mIsConnecting; private int mMinWidth; Loading Loading @@ -98,7 +92,6 @@ public class MediaRouteButton extends View { a.recycle(); setClickable(true); setLongClickable(true); setRouteTypes(routeTypes); } Loading Loading @@ -178,12 +171,10 @@ public class MediaRouteButton extends View { throw new IllegalStateException("The MediaRouteButton's Context is not an Activity."); } /** * Sets whether to enable showing a toast with the content descriptor of the * button when the button is long pressed. */ void setCheatSheetEnabled(boolean enable) { mCheatSheetEnabled = enable; @Override public void setContentDescription(CharSequence contentDescription) { super.setContentDescription(contentDescription); setTooltip(contentDescription); } @Override Loading @@ -196,47 +187,6 @@ public class MediaRouteButton extends View { return showDialogInternal() || handled; } @Override public boolean performLongClick() { if (super.performLongClick()) { return true; } if (!mCheatSheetEnabled) { return false; } final CharSequence contentDesc = getContentDescription(); if (TextUtils.isEmpty(contentDesc)) { // Don't show the cheat sheet if we have no description return false; } final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; Toast cheatSheet = Toast.makeText(context, contentDesc, Toast.LENGTH_SHORT); if (midy < displayFrame.height()) { // Show along the top; follow action buttons cheatSheet.setGravity(Gravity.TOP | Gravity.END, screenWidth - screenPos[0] - width / 2, height); } else { // Show along the bottom center cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } cheatSheet.show(); performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); return true; } @Override protected int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); Loading
core/java/com/android/internal/view/menu/ActionMenuItemView.java +4 −74 Original line number Diff line number Diff line Loading @@ -20,28 +20,22 @@ import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.widget.ActionMenuView; import android.widget.ForwardingListener; import android.widget.TextView; import android.widget.Toast; /** * @hide */ public class ActionMenuItemView extends TextView implements MenuView.ItemView, View.OnClickListener, View.OnLongClickListener, ActionMenuView.ActionMenuChildView { implements MenuView.ItemView, View.OnClickListener, ActionMenuView.ActionMenuChildView { private static final String TAG = "ActionMenuItemView"; private MenuItemImpl mItemData; Loading @@ -59,9 +53,6 @@ public class ActionMenuItemView extends TextView private static final int MAX_ICON_SIZE = 32; // dp private int mMaxIconSize; private Toast mTooltip; private Runnable mShowTooltipRunnable = () -> showTooltip(Toast.LENGTH_LONG); public ActionMenuItemView(Context context) { this(context, null); } Loading @@ -88,7 +79,6 @@ public class ActionMenuItemView extends TextView mMaxIconSize = (int) (MAX_ICON_SIZE * density + 0.5f); setOnClickListener(this); setOnLongClickListener(this); mSavedPaddingLeft = -1; setSaveEnabled(false); Loading Loading @@ -193,6 +183,9 @@ public class ActionMenuItemView extends TextView (mItemData.showsTextAsAction() && (mAllowTextWithIcon || mExpandedFormat)); setText(visible ? mTitle : null); // Show the tooltip for items that do not already show text. setTooltip(visible ? null : mTitle); } public void setIcon(Drawable icon) { Loading Loading @@ -249,7 +242,6 @@ public class ActionMenuItemView extends TextView @Override public boolean dispatchHoverEvent(MotionEvent event) { updateTooltip(event); // Don't allow children to hover; we want this to be treated as a single component. return onHoverEvent(event); } Loading @@ -266,68 +258,6 @@ public class ActionMenuItemView extends TextView return hasText(); } @Override public boolean onLongClick(View v) { return showTooltip(Toast.LENGTH_SHORT); } private boolean showTooltip(@Toast.Duration int duration) { if (hasText()) { // Don't show the cheat sheet for items that already show text. return false; } final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; int referenceX = screenPos[0] + width / 2; if (getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; referenceX = screenWidth - referenceX; // mirror } hideTooltip (); mTooltip = Toast.makeText(context, mItemData.getTitle(), duration); if (midy < displayFrame.height()) { // Show along the top; follow action buttons mTooltip.setGravity(Gravity.TOP | Gravity.END, referenceX, screenPos[1] + height - displayFrame.top); } else { // Show along the bottom center mTooltip.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } mTooltip.show(); return true; } private void hideTooltip() { if (mTooltip != null) { mTooltip.cancel(); mTooltip = null; } getHandler().removeCallbacks(mShowTooltipRunnable); } private void updateTooltip(MotionEvent event) { AccessibilityManager manager = AccessibilityManager.getInstance(mContext); if (manager.isEnabled() && manager.isTouchExplorationEnabled()) { return; } final int action = event.getAction(); if (action == MotionEvent.ACTION_HOVER_MOVE) { hideTooltip(); getHandler().postDelayed(mShowTooltipRunnable, ViewConfiguration.getLongPressTimeout()); } else if (action == MotionEvent.ACTION_HOVER_EXIT) { hideTooltip(); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final boolean textVisible = hasText(); Loading
core/java/com/android/internal/widget/ScrollingTabContainerView.java +2 −28 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; /** * This widget implements the dynamic action bar tab behavior that can change Loading Loading @@ -360,7 +359,7 @@ public class ScrollingTabContainerView extends HorizontalScrollView tabView.getTab().select(); } private class TabView extends LinearLayout implements OnLongClickListener { private class TabView extends LinearLayout { private ActionBar.Tab mTab; private TextView mTextView; private ImageView mIconView; Loading Loading @@ -472,33 +471,8 @@ public class ScrollingTabContainerView extends HorizontalScrollView if (mIconView != null) { mIconView.setContentDescription(tab.getContentDescription()); } if (!hasText && !TextUtils.isEmpty(tab.getContentDescription())) { setOnLongClickListener(this); } else { setOnLongClickListener(null); setLongClickable(false); } } setTooltip(hasText? null : tab.getContentDescription()); } public boolean onLongClick(View v) { final int[] screenPos = new int[2]; getLocationOnScreen(screenPos); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; Toast cheatSheet = Toast.makeText(context, mTab.getContentDescription(), Toast.LENGTH_SHORT); // Show under the tab cheatSheet.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, (screenPos[0] + width / 2) - screenWidth / 2, height); cheatSheet.show(); return true; } public ActionBar.Tab getTab() { Loading