Loading quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -107,11 +107,11 @@ public class BackGestureTutorialFragment extends Fragment implements BackGesture } void onAttachedToWindow() { mEdgeBackGestureHandler.setIsEnabled(true); mEdgeBackGestureHandler.setViewGroupParent((ViewGroup) getRootView()); } void onDetachedFromWindow() { mEdgeBackGestureHandler.setIsEnabled(false); mEdgeBackGestureHandler.setViewGroupParent(null); } @Override Loading quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java +16 −56 Original line number Diff line number Diff line Loading @@ -17,21 +17,18 @@ package com.android.quickstep.interaction; import android.content.Context; import android.content.res.Resources; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.PointF; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.os.Handler; import android.os.Looper; import android.os.SystemProperties; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewConfiguration; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import androidx.annotation.Nullable; import com.android.launcher3.ResourceUtils; Loading @@ -40,7 +37,7 @@ import com.android.launcher3.ResourceUtils; * * Forked from platform/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java. */ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener { public class EdgeBackGestureHandler implements OnTouchListener { private static final String TAG = "EdgeBackGestureHandler"; private static final int MAX_LONG_PRESS_TIMEOUT = SystemProperties.getInt( Loading Loading @@ -106,29 +103,22 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener mEdgeWidth = ResourceUtils.getNavbarSize("config_backGestureInset", res); } void setIsEnabled(boolean isEnabled) { if (isEnabled == mIsEnabled) { return; } mIsEnabled = isEnabled; void setViewGroupParent(@Nullable ViewGroup parent) { mIsEnabled = parent != null; if (mEdgeBackPanel != null) { mEdgeBackPanel.onDestroy(); mEdgeBackPanel = null; } if (!mIsEnabled) { mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this); } else { updateDisplaySize(); mContext.getSystemService(DisplayManager.class).registerDisplayListener(this, new Handler(Looper.getMainLooper())); if (mIsEnabled) { // Add a nav bar panel window. mEdgeBackPanel = new EdgeBackGesturePanel(mContext); mEdgeBackPanel = new EdgeBackGesturePanel(mContext, parent, createLayoutParams()); mEdgeBackPanel.setBackCallback(mBackCallback); mEdgeBackPanel.setLayoutParams(createLayoutParams()); updateDisplaySize(); if (mContext.getDisplay() != null) { mContext.getDisplay().getRealSize(mDisplaySize); mEdgeBackPanel.setDisplaySize(mDisplaySize); } } } Loading @@ -136,21 +126,11 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener mGestureCallback = callback; } private WindowManager.LayoutParams createLayoutParams() { private LayoutParams createLayoutParams() { Resources resources = mContext.getResources(); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( return new LayoutParams( ResourceUtils.getNavbarSize("navigation_edge_panel_width", resources), ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources), LayoutParams.TYPE_APPLICATION_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); layoutParams.setTitle(TAG + mDisplayId); layoutParams.windowAnimations = 0; layoutParams.setFitInsetsTypes(0 /* types */); return layoutParams; ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources)); } @Override Loading Loading @@ -232,26 +212,6 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener } } @Override public void onDisplayAdded(int displayId) { } @Override public void onDisplayRemoved(int displayId) { } @Override public void onDisplayChanged(int displayId) { if (displayId == mDisplayId) { updateDisplaySize(); } } private void updateDisplaySize() { mContext.getDisplay().getRealSize(mDisplaySize); if (mEdgeBackPanel != null) { mEdgeBackPanel.setDisplaySize(mDisplaySize); } } void setInsets(int leftInset, int rightInset) { mLeftInset = leftInset; mRightInset = rightInset; Loading quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java +13 −21 Original line number Diff line number Diff line Loading @@ -26,11 +26,11 @@ import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.os.SystemClock; import android.view.Gravity; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.WindowManager; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; Loading Loading @@ -110,7 +110,6 @@ public class EdgeBackGesturePanel extends View { private static final Interpolator RUBBER_BAND_INTERPOLATOR_APPEAR = new PathInterpolator(1.0f / RUBBER_BAND_AMOUNT_APPEAR, 1.0f, 1.0f, 1.0f); private final WindowManager mWindowManager; private BackCallback mBackCallback; /** Loading Loading @@ -147,7 +146,6 @@ public class EdgeBackGesturePanel extends View { private VelocityTracker mVelocityTracker; private int mArrowPaddingEnd; private WindowManager.LayoutParams mLayoutParams; /** * True if the panel is currently on the left of the screen Loading Loading @@ -232,11 +230,9 @@ public class EdgeBackGesturePanel extends View { } }; public EdgeBackGesturePanel(Context context) { public EdgeBackGesturePanel(Context context, ViewGroup parent, LayoutParams layoutParams) { super(context); mWindowManager = context.getSystemService(WindowManager.class); mDensity = context.getResources().getDisplayMetrics().density; mBaseTranslation = dp(BASE_TRANSLATION_DP); Loading Loading @@ -290,11 +286,15 @@ public class EdgeBackGesturePanel extends View { mSwipeThreshold = ResourceUtils.getDimenByName( "navigation_edge_action_drag_threshold", context.getResources(), 16 /* defaultValue */); parent.addView(this, layoutParams); setVisibility(GONE); } void onDestroy() { mWindowManager.removeView(this); ViewGroup parent = (ViewGroup) getParent(); if (parent != null) { parent.removeView(this); } } @Override Loading @@ -305,9 +305,6 @@ public class EdgeBackGesturePanel extends View { @SuppressLint("RtlHardcoded") void setIsLeftPanel(boolean isLeftPanel) { mIsLeftPanel = isLeftPanel; mLayoutParams.gravity = mIsLeftPanel ? (Gravity.LEFT | Gravity.TOP) : (Gravity.RIGHT | Gravity.TOP); } boolean getIsLeftPanel() { Loading @@ -323,11 +320,6 @@ public class EdgeBackGesturePanel extends View { mBackCallback = callback; } void setLayoutParams(WindowManager.LayoutParams layoutParams) { mLayoutParams = layoutParams; mWindowManager.addView(this, mLayoutParams); } private float getCurrentAngle() { return mCurrentAngle; } Loading @@ -349,7 +341,6 @@ public class EdgeBackGesturePanel extends View { mStartY = event.getY(); setVisibility(VISIBLE); updatePosition(event.getY()); mWindowManager.updateViewLayout(this, mLayoutParams); break; case MotionEvent.ACTION_MOVE: handleMoveEvent(event); Loading Loading @@ -614,10 +605,11 @@ public class EdgeBackGesturePanel extends View { } private void updatePosition(float touchY) { float position = touchY - mFingerOffset; position = Math.max(position, mMinArrowPosition); position -= mLayoutParams.height / 2.0f; mLayoutParams.y = MathUtils.clamp((int) position, 0, mDisplaySize.y); float positionY = touchY - mFingerOffset; positionY = Math.max(positionY, mMinArrowPosition); positionY -= getLayoutParams().height / 2.0f; setX(mIsLeftPanel ? 0 : mDisplaySize.x - getLayoutParams().width); setY(MathUtils.clamp((int) positionY, 0, mDisplaySize.y)); } private void setDesiredVerticalTransition(float verticalTranslation, boolean animated) { Loading Loading
quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -107,11 +107,11 @@ public class BackGestureTutorialFragment extends Fragment implements BackGesture } void onAttachedToWindow() { mEdgeBackGestureHandler.setIsEnabled(true); mEdgeBackGestureHandler.setViewGroupParent((ViewGroup) getRootView()); } void onDetachedFromWindow() { mEdgeBackGestureHandler.setIsEnabled(false); mEdgeBackGestureHandler.setViewGroupParent(null); } @Override Loading
quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java +16 −56 Original line number Diff line number Diff line Loading @@ -17,21 +17,18 @@ package com.android.quickstep.interaction; import android.content.Context; import android.content.res.Resources; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.PointF; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.os.Handler; import android.os.Looper; import android.os.SystemProperties; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewConfiguration; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import androidx.annotation.Nullable; import com.android.launcher3.ResourceUtils; Loading @@ -40,7 +37,7 @@ import com.android.launcher3.ResourceUtils; * * Forked from platform/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java. */ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener { public class EdgeBackGestureHandler implements OnTouchListener { private static final String TAG = "EdgeBackGestureHandler"; private static final int MAX_LONG_PRESS_TIMEOUT = SystemProperties.getInt( Loading Loading @@ -106,29 +103,22 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener mEdgeWidth = ResourceUtils.getNavbarSize("config_backGestureInset", res); } void setIsEnabled(boolean isEnabled) { if (isEnabled == mIsEnabled) { return; } mIsEnabled = isEnabled; void setViewGroupParent(@Nullable ViewGroup parent) { mIsEnabled = parent != null; if (mEdgeBackPanel != null) { mEdgeBackPanel.onDestroy(); mEdgeBackPanel = null; } if (!mIsEnabled) { mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this); } else { updateDisplaySize(); mContext.getSystemService(DisplayManager.class).registerDisplayListener(this, new Handler(Looper.getMainLooper())); if (mIsEnabled) { // Add a nav bar panel window. mEdgeBackPanel = new EdgeBackGesturePanel(mContext); mEdgeBackPanel = new EdgeBackGesturePanel(mContext, parent, createLayoutParams()); mEdgeBackPanel.setBackCallback(mBackCallback); mEdgeBackPanel.setLayoutParams(createLayoutParams()); updateDisplaySize(); if (mContext.getDisplay() != null) { mContext.getDisplay().getRealSize(mDisplaySize); mEdgeBackPanel.setDisplaySize(mDisplaySize); } } } Loading @@ -136,21 +126,11 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener mGestureCallback = callback; } private WindowManager.LayoutParams createLayoutParams() { private LayoutParams createLayoutParams() { Resources resources = mContext.getResources(); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( return new LayoutParams( ResourceUtils.getNavbarSize("navigation_edge_panel_width", resources), ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources), LayoutParams.TYPE_APPLICATION_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); layoutParams.setTitle(TAG + mDisplayId); layoutParams.windowAnimations = 0; layoutParams.setFitInsetsTypes(0 /* types */); return layoutParams; ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources)); } @Override Loading Loading @@ -232,26 +212,6 @@ public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener } } @Override public void onDisplayAdded(int displayId) { } @Override public void onDisplayRemoved(int displayId) { } @Override public void onDisplayChanged(int displayId) { if (displayId == mDisplayId) { updateDisplaySize(); } } private void updateDisplaySize() { mContext.getDisplay().getRealSize(mDisplaySize); if (mEdgeBackPanel != null) { mEdgeBackPanel.setDisplaySize(mDisplaySize); } } void setInsets(int leftInset, int rightInset) { mLeftInset = leftInset; mRightInset = rightInset; Loading
quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java +13 −21 Original line number Diff line number Diff line Loading @@ -26,11 +26,11 @@ import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.os.SystemClock; import android.view.Gravity; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.WindowManager; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; Loading Loading @@ -110,7 +110,6 @@ public class EdgeBackGesturePanel extends View { private static final Interpolator RUBBER_BAND_INTERPOLATOR_APPEAR = new PathInterpolator(1.0f / RUBBER_BAND_AMOUNT_APPEAR, 1.0f, 1.0f, 1.0f); private final WindowManager mWindowManager; private BackCallback mBackCallback; /** Loading Loading @@ -147,7 +146,6 @@ public class EdgeBackGesturePanel extends View { private VelocityTracker mVelocityTracker; private int mArrowPaddingEnd; private WindowManager.LayoutParams mLayoutParams; /** * True if the panel is currently on the left of the screen Loading Loading @@ -232,11 +230,9 @@ public class EdgeBackGesturePanel extends View { } }; public EdgeBackGesturePanel(Context context) { public EdgeBackGesturePanel(Context context, ViewGroup parent, LayoutParams layoutParams) { super(context); mWindowManager = context.getSystemService(WindowManager.class); mDensity = context.getResources().getDisplayMetrics().density; mBaseTranslation = dp(BASE_TRANSLATION_DP); Loading Loading @@ -290,11 +286,15 @@ public class EdgeBackGesturePanel extends View { mSwipeThreshold = ResourceUtils.getDimenByName( "navigation_edge_action_drag_threshold", context.getResources(), 16 /* defaultValue */); parent.addView(this, layoutParams); setVisibility(GONE); } void onDestroy() { mWindowManager.removeView(this); ViewGroup parent = (ViewGroup) getParent(); if (parent != null) { parent.removeView(this); } } @Override Loading @@ -305,9 +305,6 @@ public class EdgeBackGesturePanel extends View { @SuppressLint("RtlHardcoded") void setIsLeftPanel(boolean isLeftPanel) { mIsLeftPanel = isLeftPanel; mLayoutParams.gravity = mIsLeftPanel ? (Gravity.LEFT | Gravity.TOP) : (Gravity.RIGHT | Gravity.TOP); } boolean getIsLeftPanel() { Loading @@ -323,11 +320,6 @@ public class EdgeBackGesturePanel extends View { mBackCallback = callback; } void setLayoutParams(WindowManager.LayoutParams layoutParams) { mLayoutParams = layoutParams; mWindowManager.addView(this, mLayoutParams); } private float getCurrentAngle() { return mCurrentAngle; } Loading @@ -349,7 +341,6 @@ public class EdgeBackGesturePanel extends View { mStartY = event.getY(); setVisibility(VISIBLE); updatePosition(event.getY()); mWindowManager.updateViewLayout(this, mLayoutParams); break; case MotionEvent.ACTION_MOVE: handleMoveEvent(event); Loading Loading @@ -614,10 +605,11 @@ public class EdgeBackGesturePanel extends View { } private void updatePosition(float touchY) { float position = touchY - mFingerOffset; position = Math.max(position, mMinArrowPosition); position -= mLayoutParams.height / 2.0f; mLayoutParams.y = MathUtils.clamp((int) position, 0, mDisplaySize.y); float positionY = touchY - mFingerOffset; positionY = Math.max(positionY, mMinArrowPosition); positionY -= getLayoutParams().height / 2.0f; setX(mIsLeftPanel ? 0 : mDisplaySize.x - getLayoutParams().width); setY(MathUtils.clamp((int) positionY, 0, mDisplaySize.y)); } private void setDesiredVerticalTransition(float verticalTranslation, boolean animated) { Loading