diff options
5 files changed, 162 insertions, 148 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 0024fe4979ed..82869caba668 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -938,7 +938,7 @@ <dimen name="rounded_corner_radius_bottom">0dp</dimen> <dimen name="rounded_corner_content_padding">0dp</dimen> <dimen name="nav_content_padding">0dp</dimen> - <dimen name="nav_quick_scrub_track_edge_padding">42dp</dimen> + <dimen name="nav_quick_scrub_track_edge_padding">24dp</dimen> <dimen name="nav_quick_scrub_track_thickness">2dp</dimen> <!-- Navigation bar shadow params. --> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/NavigationBarCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/NavigationBarCompat.java index 96ec232a7cbb..cd831d1e31f6 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/NavigationBarCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/NavigationBarCompat.java @@ -37,16 +37,12 @@ public class NavigationBarCompat { return convertDpToPixel(10); } - public static int getQuickScrubDragSlopPx() { - return convertDpToPixel(20); - } - public static int getQuickStepTouchSlopPx() { return convertDpToPixel(24); } public static int getQuickScrubTouchSlopPx() { - return convertDpToPixel(35); + return convertDpToPixel(24); } @Retention(RetentionPolicy.SOURCE) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 704e9634bb2a..6c66cabf0da8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -117,6 +117,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav private Rect mRecentsButtonBounds = new Rect(); private Rect mRotationButtonBounds = new Rect(); private int[] mTmpPosition = new int[2]; + private Rect mTmpRect = new Rect(); private KeyButtonDrawable mBackIcon; private KeyButtonDrawable mBackCarModeIcon, mBackLandCarModeIcon; @@ -876,14 +877,27 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav public boolean isRotateButtonVisible() { return mShowRotateButton; } - public void setMenuContainerVisibility(boolean visible) { - getMenuContainer().setAlpha(visible ? 1 : 0, true /* animate */); + /** + * @return the button at the given {@param x} and {@param y}. + */ + ButtonDispatcher getButtonAtPosition(int x, int y) { + for (int i = 0; i < mButtonDispatchers.size(); i++) { + ButtonDispatcher button = mButtonDispatchers.valueAt(i); + View buttonView = button.getCurrentView(); + if (buttonView != null) { + buttonView.getHitRect(mTmpRect); + offsetDescendantRectToMyCoords(buttonView, mTmpRect); + if (mTmpRect.contains(x, y)) { + return button; + } + } + } + return null; } @Override public void onFinishInflate() { - mNavigationInflaterView = (NavigationBarInflaterView) findViewById( - R.id.navigation_inflater); + mNavigationInflaterView = findViewById(R.id.navigation_inflater); mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers); getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); @@ -1176,10 +1190,11 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav + " " + visibilityToString(getWindowVisibility()) + (offscreen ? " OFFSCREEN!" : "")); - pw.println(String.format(" mCurrentView: id=%s (%dx%d) %s", + pw.println(String.format(" mCurrentView: id=%s (%dx%d) %s %f", getResourceName(getCurrentView().getId()), getCurrentView().getWidth(), getCurrentView().getHeight(), - visibilityToString(getCurrentView().getVisibility()))); + visibilityToString(getCurrentView().getVisibility()), + getCurrentView().getAlpha())); pw.println(String.format(" disabled=0x%08x vertical=%s menu=%s", mDisabledFlags, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java index d9ba3136a2f8..b55fe47f1f2d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java @@ -16,20 +16,30 @@ package com.android.systemui.statusbar.phone; +import static android.view.WindowManagerPolicyConstants.NAV_BAR_BOTTOM; +import static android.view.WindowManagerPolicyConstants.NAV_BAR_LEFT; +import static com.android.systemui.Interpolators.ALPHA_IN; +import static com.android.systemui.Interpolators.ALPHA_OUT; +import static com.android.systemui.OverviewProxyService.DEBUG_OVERVIEW_PROXY; +import static com.android.systemui.OverviewProxyService.TAG_OPS; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.content.Context; +import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; +import android.util.FloatProperty; import android.util.Log; import android.util.Slog; import android.view.MotionEvent; @@ -46,30 +56,22 @@ import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.utilities.Utilities; import com.android.systemui.shared.system.NavigationBarCompat; -import static android.view.WindowManagerPolicyConstants.NAV_BAR_LEFT; -import static android.view.WindowManagerPolicyConstants.NAV_BAR_BOTTOM; -import static com.android.systemui.OverviewProxyService.DEBUG_OVERVIEW_PROXY; -import static com.android.systemui.OverviewProxyService.TAG_OPS; -import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_HOME; - /** * Class to detect gestures on the navigation bar and implement quick scrub. */ public class QuickStepController implements GestureHelper { private static final String TAG = "QuickStepController"; - private static final int ANIM_DURATION_MS = 200; + private static final int ANIM_IN_DURATION_MS = 150; + private static final int ANIM_OUT_DURATION_MS = 100; private NavigationBarView mNavigationBarView; private boolean mQuickScrubActive; private boolean mAllowGestureDetection; private boolean mQuickStepStarted; - private float mDownOffset; - private float mTranslation; private int mTouchDownX; private int mTouchDownY; - private boolean mDragScrubActive; private boolean mDragPositive; private boolean mIsVertical; private boolean mIsRTL; @@ -77,69 +79,67 @@ public class QuickStepController implements GestureHelper { private int mLightTrackColor; private int mDarkTrackColor; private float mDarkIntensity; - private View mHomeButtonView; + private AnimatorSet mTrackAnimator; + private ButtonDispatcher mHitTarget; + private View mCurrentNavigationBarView; private final Handler mHandler = new Handler(); - private final Interpolator mQuickScrubEndInterpolator = new DecelerateInterpolator(); private final Rect mTrackRect = new Rect(); private final Paint mTrackPaint = new Paint(); private final OverviewProxyService mOverviewEventSender; private final int mTrackThickness; - private final int mTrackPadding; - private final ValueAnimator mTrackAnimator; - private final ValueAnimator mButtonAnimator; - private final AnimatorSet mQuickScrubEndAnimator; + private final int mTrackEndPadding; private final Context mContext; private final Matrix mTransformGlobalMatrix = new Matrix(); private final Matrix mTransformLocalMatrix = new Matrix(); private final ArgbEvaluator mTrackColorEvaluator = new ArgbEvaluator(); - private final AnimatorUpdateListener mTrackAnimatorListener = valueAnimator -> { - mTrackAlpha = (float) valueAnimator.getAnimatedValue(); - mNavigationBarView.invalidate(); + private final FloatProperty<QuickStepController> mTrackAlphaProperty = + new FloatProperty<QuickStepController>("TrackAlpha") { + @Override + public void setValue(QuickStepController controller, float alpha) { + mTrackAlpha = alpha; + mNavigationBarView.invalidate(); + } + + @Override + public Float get(QuickStepController controller) { + return mTrackAlpha; + } }; - private final AnimatorUpdateListener mButtonTranslationListener = animator -> { - int pos = (int) animator.getAnimatedValue(); - if (!mQuickScrubActive) { - pos = mDragPositive ? Math.min((int) mTranslation, pos) : Math.max((int) mTranslation, pos); + private final FloatProperty<QuickStepController> mNavBarAlphaProperty = + new FloatProperty<QuickStepController>("NavBarAlpha") { + @Override + public void setValue(QuickStepController controller, float alpha) { + if (mCurrentNavigationBarView != null) { + mCurrentNavigationBarView.setAlpha(alpha); + } } - if (mIsVertical) { - mHomeButtonView.setTranslationY(pos); - } else { - mHomeButtonView.setTranslationX(pos); + + @Override + public Float get(QuickStepController controller) { + if (mCurrentNavigationBarView != null) { + return mCurrentNavigationBarView.getAlpha(); + } + return 1f; } }; private AnimatorListenerAdapter mQuickScrubEndListener = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - mQuickScrubActive = false; - mDragScrubActive = false; - mTranslation = 0; - mQuickScrubEndAnimator.setCurrentPlayTime(mQuickScrubEndAnimator.getDuration()); - mHomeButtonView = null; + resetQuickScrub(); } }; public QuickStepController(Context context) { + final Resources res = context.getResources(); mContext = context; mOverviewEventSender = Dependency.get(OverviewProxyService.class); - mTrackThickness = getDimensionPixelSize(mContext, R.dimen.nav_quick_scrub_track_thickness); - mTrackPadding = getDimensionPixelSize(mContext, R.dimen.nav_quick_scrub_track_edge_padding); + mTrackThickness = res.getDimensionPixelSize(R.dimen.nav_quick_scrub_track_thickness); + mTrackEndPadding = res.getDimensionPixelSize(R.dimen.nav_quick_scrub_track_edge_padding); mTrackPaint.setAlpha(0); - - mTrackAnimator = ObjectAnimator.ofFloat(); - mTrackAnimator.addUpdateListener(mTrackAnimatorListener); - mTrackAnimator.setFloatValues(0); - mButtonAnimator = ObjectAnimator.ofInt(); - mButtonAnimator.addUpdateListener(mButtonTranslationListener); - mButtonAnimator.setIntValues(0); - mQuickScrubEndAnimator = new AnimatorSet(); - mQuickScrubEndAnimator.playTogether(mTrackAnimator, mButtonAnimator); - mQuickScrubEndAnimator.setDuration(ANIM_DURATION_MS); - mQuickScrubEndAnimator.addListener(mQuickScrubEndListener); - mQuickScrubEndAnimator.setInterpolator(mQuickScrubEndInterpolator); } public void setComponents(NavigationBarView navigationBarView) { @@ -170,24 +170,28 @@ public class QuickStepController implements GestureHelper { private boolean handleTouchEvent(MotionEvent event) { if (mOverviewEventSender.getProxy() == null || (!mNavigationBarView.isQuickScrubEnabled() && !mNavigationBarView.isQuickStepSwipeUpEnabled())) { - mNavigationBarView.getHomeButton().setDelayTouchFeedback(false /* delay */); return false; } mNavigationBarView.requestUnbufferedDispatch(event); - final ButtonDispatcher homeButton = mNavigationBarView.getHomeButton(); - final boolean homePressed = mNavigationBarView.getDownHitTarget() == HIT_TARGET_HOME; int action = event.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: { int x = (int) event.getX(); int y = (int) event.getY(); + // End any existing quickscrub animations before starting the new transition - if (mHomeButtonView != null) { - mQuickScrubEndAnimator.end(); + if (mTrackAnimator != null) { + mTrackAnimator.end(); + mTrackAnimator = null; + } + + mCurrentNavigationBarView = mNavigationBarView.getCurrentView(); + mHitTarget = mNavigationBarView.getButtonAtPosition(x, y); + if (mHitTarget != null) { + // Pre-emptively delay the touch feedback for the button that we just touched + mHitTarget.setDelayTouchFeedback(true); } - mHomeButtonView = homeButton.getCurrentView(); - homeButton.setDelayTouchFeedback(true /* delay */); mTouchDownX = x; mTouchDownY = y; mTransformGlobalMatrix.set(Matrix.IDENTITY_MATRIX); @@ -199,7 +203,7 @@ public class QuickStepController implements GestureHelper { break; } case MotionEvent.ACTION_MOVE: { - if (mQuickStepStarted || !mAllowGestureDetection || mHomeButtonView == null){ + if (mQuickStepStarted || !mAllowGestureDetection){ break; } int x = (int) event.getX(); @@ -207,7 +211,7 @@ public class QuickStepController implements GestureHelper { int xDiff = Math.abs(x - mTouchDownX); int yDiff = Math.abs(y - mTouchDownY); - boolean exceededScrubTouchSlop, exceededSwipeUpTouchSlop, exceededScrubDragSlop; + boolean exceededScrubTouchSlop, exceededSwipeUpTouchSlop; int pos, touchDown, offset, trackSize; if (mIsVertical) { @@ -215,8 +219,6 @@ public class QuickStepController implements GestureHelper { yDiff > NavigationBarCompat.getQuickScrubTouchSlopPx() && yDiff > xDiff; exceededSwipeUpTouchSlop = xDiff > NavigationBarCompat.getQuickStepTouchSlopPx() && xDiff > yDiff; - exceededScrubDragSlop = - yDiff > NavigationBarCompat.getQuickScrubDragSlopPx() && yDiff > xDiff; pos = y; touchDown = mTouchDownY; offset = pos - mTrackRect.top; @@ -226,8 +228,6 @@ public class QuickStepController implements GestureHelper { xDiff > NavigationBarCompat.getQuickScrubTouchSlopPx() && xDiff > yDiff; exceededSwipeUpTouchSlop = yDiff > NavigationBarCompat.getQuickStepTouchSlopPx() && yDiff > xDiff; - exceededScrubDragSlop = - xDiff > NavigationBarCompat.getQuickScrubDragSlopPx() && xDiff > yDiff; pos = x; touchDown = mTouchDownX; offset = pos - mTrackRect.left; @@ -242,8 +242,8 @@ public class QuickStepController implements GestureHelper { break; } - // Do not handle quick scrub if disabled or hit target is not home button - if (!homePressed || !mNavigationBarView.isQuickScrubEnabled()) { + // Do not handle quick scrub if disabled + if (!mNavigationBarView.isQuickScrubEnabled()) { break; } @@ -253,41 +253,23 @@ public class QuickStepController implements GestureHelper { final boolean allowDrag = !mDragPositive ? offset < 0 && pos < touchDown : offset >= 0 && pos > touchDown; + float scrubFraction = Utilities.clamp(Math.abs(offset) * 1f / trackSize, 0, 1); if (allowDrag) { - // Passing the drag slop is for visual feedback and will not initiate anything - if (!mDragScrubActive && exceededScrubDragSlop) { - mDownOffset = offset; - mDragScrubActive = true; - } - // Passing the drag slop then touch slop will start quick step if (!mQuickScrubActive && exceededScrubTouchSlop) { - homeButton.abortCurrentGesture(); startQuickScrub(); } } - if ((mQuickScrubActive || mDragScrubActive) && (mDragPositive && offset >= 0 + if (mQuickScrubActive && (mDragPositive && offset >= 0 || !mDragPositive && offset <= 0)) { - mTranslation = !mDragPositive - ? Utilities.clamp(offset - mDownOffset, -trackSize, 0) - : Utilities.clamp(offset - mDownOffset, 0, trackSize); - if (mQuickScrubActive) { - float scrubFraction = - Utilities.clamp(Math.abs(offset) * 1f / trackSize, 0, 1); - try { - mOverviewEventSender.getProxy().onQuickScrubProgress(scrubFraction); - if (DEBUG_OVERVIEW_PROXY) { - Log.d(TAG_OPS, "Quick Scrub Progress:" + scrubFraction); - } - } catch (RemoteException e) { - Log.e(TAG, "Failed to send progress of quick scrub.", e); + try { + mOverviewEventSender.getProxy().onQuickScrubProgress(scrubFraction); + if (DEBUG_OVERVIEW_PROXY) { + Log.d(TAG_OPS, "Quick Scrub Progress:" + scrubFraction); } - } - if (mIsVertical) { - mHomeButtonView.setTranslationY(mTranslation); - } else { - mHomeButtonView.setTranslationX(mTranslation); + } catch (RemoteException e) { + Log.e(TAG, "Failed to send progress of quick scrub.", e); } } break; @@ -321,21 +303,23 @@ public class QuickStepController implements GestureHelper { @Override public void onLayout(boolean changed, int left, int top, int right, int bottom) { - final int width = (right - left) - mNavigationBarView.getPaddingEnd() - - mNavigationBarView.getPaddingStart(); - final int height = (bottom - top) - mNavigationBarView.getPaddingBottom() - - mNavigationBarView.getPaddingTop(); + final int paddingLeft = mNavigationBarView.getPaddingLeft(); + final int paddingTop = mNavigationBarView.getPaddingTop(); + final int paddingRight = mNavigationBarView.getPaddingRight(); + final int paddingBottom = mNavigationBarView.getPaddingBottom(); + final int width = (right - left) - paddingRight - paddingLeft; + final int height = (bottom - top) - paddingBottom - paddingTop; final int x1, x2, y1, y2; if (mIsVertical) { - x1 = (width - mTrackThickness) / 2 + mNavigationBarView.getPaddingLeft(); + x1 = (width - mTrackThickness) / 2 + paddingLeft; x2 = x1 + mTrackThickness; - y1 = mDragPositive ? height / 2 : mTrackPadding; - y2 = y1 + height / 2 - mTrackPadding; + y1 = paddingTop + mTrackEndPadding; + y2 = y1 + height - 2 * mTrackEndPadding; } else { - y1 = (height - mTrackThickness) / 2 + mNavigationBarView.getPaddingTop(); + y1 = (height - mTrackThickness) / 2 + paddingTop; y2 = y1 + mTrackThickness; - x1 = mDragPositive ? width / 2 : mTrackPadding; - x2 = x1 + width / 2 - mTrackPadding; + x1 = mNavigationBarView.getPaddingStart() + mTrackEndPadding; + x2 = x1 + width - 2 * mTrackEndPadding; } mTrackRect.set(x1, y1, x2, y2); } @@ -386,24 +370,32 @@ public class QuickStepController implements GestureHelper { event.transform(mTransformLocalMatrix); } mOverviewEventSender.notifyQuickStepStarted(); - mNavigationBarView.getHomeButton().abortCurrentGesture(); mHandler.removeCallbacksAndMessages(null); - if (mDragScrubActive) { + if (mHitTarget != null) { + mHitTarget.abortCurrentGesture(); + } + + if (mQuickScrubActive) { animateEnd(); } } private void startQuickScrub() { - if (!mQuickScrubActive && mDragScrubActive) { + if (!mQuickScrubActive) { mQuickScrubActive = true; mLightTrackColor = mContext.getColor(R.color.quick_step_track_background_light); mDarkTrackColor = mContext.getColor(R.color.quick_step_track_background_dark); - mTrackAnimator.setFloatValues(0, 1); - mTrackAnimator.start(); - // Hide menu buttons on nav bar until quick scrub has ended - mNavigationBarView.setMenuContainerVisibility(false /* visible */); + ObjectAnimator trackAnimator = ObjectAnimator.ofFloat(this, mTrackAlphaProperty, 1f); + trackAnimator.setInterpolator(ALPHA_IN); + trackAnimator.setDuration(ANIM_IN_DURATION_MS); + ObjectAnimator navBarAnimator = ObjectAnimator.ofFloat(this, mNavBarAlphaProperty, 0f); + navBarAnimator.setInterpolator(ALPHA_OUT); + navBarAnimator.setDuration(ANIM_OUT_DURATION_MS); + mTrackAnimator = new AnimatorSet(); + mTrackAnimator.playTogether(trackAnimator, navBarAnimator); + mTrackAnimator.start(); try { mOverviewEventSender.getProxy().onQuickScrubStart(); @@ -414,32 +406,56 @@ public class QuickStepController implements GestureHelper { Log.e(TAG, "Failed to send start of quick scrub.", e); } mOverviewEventSender.notifyQuickScrubStarted(); + + if (mHitTarget != null) { + mHitTarget.abortCurrentGesture(); + } } } private void endQuickScrub(boolean animate) { - if (mQuickScrubActive || mDragScrubActive) { + if (mQuickScrubActive) { animateEnd(); - - // Restore the nav bar menu buttons visibility - mNavigationBarView.setMenuContainerVisibility(true /* visible */); - - if (mQuickScrubActive) { - try { - mOverviewEventSender.getProxy().onQuickScrubEnd(); - if (DEBUG_OVERVIEW_PROXY) { - Log.d(TAG_OPS, "Quick Scrub End"); - } - } catch (RemoteException e) { - Log.e(TAG, "Failed to send end of quick scrub.", e); + try { + mOverviewEventSender.getProxy().onQuickScrubEnd(); + if (DEBUG_OVERVIEW_PROXY) { + Log.d(TAG_OPS, "Quick Scrub End"); } + } catch (RemoteException e) { + Log.e(TAG, "Failed to send end of quick scrub.", e); } } - if (mHomeButtonView != null && !animate) { - mQuickScrubEndAnimator.end(); + if (!animate) { + if (mTrackAnimator != null) { + mTrackAnimator.end(); + mTrackAnimator = null; + } } } + private void animateEnd() { + if (mTrackAnimator != null) { + mTrackAnimator.cancel(); + } + + ObjectAnimator trackAnimator = ObjectAnimator.ofFloat(this, mTrackAlphaProperty, 0f); + trackAnimator.setInterpolator(ALPHA_OUT); + trackAnimator.setDuration(ANIM_OUT_DURATION_MS); + ObjectAnimator navBarAnimator = ObjectAnimator.ofFloat(this, mNavBarAlphaProperty, 1f); + navBarAnimator.setInterpolator(ALPHA_IN); + navBarAnimator.setDuration(ANIM_IN_DURATION_MS); + mTrackAnimator = new AnimatorSet(); + mTrackAnimator.playTogether(trackAnimator, navBarAnimator); + mTrackAnimator.addListener(mQuickScrubEndListener); + mTrackAnimator.start(); + } + + private void resetQuickScrub() { + mQuickScrubActive = false; + mAllowGestureDetection = false; + mCurrentNavigationBarView = null; + } + private boolean proxyMotionEvents(MotionEvent event) { final IOverviewProxy overviewProxy = mOverviewEventSender.getProxy(); event.transform(mTransformGlobalMatrix); @@ -459,15 +475,4 @@ public class QuickStepController implements GestureHelper { } return false; } - - private void animateEnd() { - mButtonAnimator.setIntValues((int) mTranslation, 0); - mTrackAnimator.setFloatValues(mTrackAlpha, 0); - mQuickScrubEndAnimator.setCurrentPlayTime(0); - mQuickScrubEndAnimator.start(); - } - - private int getDimensionPixelSize(Context context, @DimenRes int resId) { - return context.getResources().getDimensionPixelSize(resId); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index 85cfde86089e..12b6f9de61ed 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -16,6 +16,9 @@ package com.android.systemui.statusbar.policy; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; + import android.app.ActivityManager; import android.content.Context; import android.content.res.Configuration; @@ -41,20 +44,14 @@ import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.ImageView; - import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Dependency; import com.android.systemui.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.plugins.statusbar.phone.NavBarButtonProvider.ButtonInterface; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.NavigationBarCompat; -import static android.view.KeyEvent.KEYCODE_HOME; -import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; -import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; - public class KeyButtonView extends ImageView implements ButtonInterface { private static final String TAG = KeyButtonView.class.getSimpleName(); @@ -119,6 +116,7 @@ public class KeyButtonView extends ImageView implements ButtonInterface { mRipple = new KeyButtonRipple(context, this); mOverviewProxyService = Dependency.get(OverviewProxyService.class); setBackground(mRipple); + forceHasOverlappingRendering(false); } @Override |