diff options
author | Mario Bertschler <bmario@google.com> | 2017-01-09 23:01:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-01-09 23:01:52 +0000 |
commit | 10e0a8947c362a596b3a67baae51ac4c7fff311c (patch) | |
tree | b34ba242e6d4b26884239b34b1fa34517f14c90d | |
parent | 49f19f0af96ccf9da78b62a4ac9f51e40b40adc5 (diff) | |
parent | cd0f67903015a9dcea098e5fdcf65040ffdbf66f (diff) | |
download | android_packages_apps_Trebuchet-10e0a8947c362a596b3a67baae51ac4c7fff311c.tar.gz android_packages_apps_Trebuchet-10e0a8947c362a596b3a67baae51ac4c7fff311c.tar.bz2 android_packages_apps_Trebuchet-10e0a8947c362a596b3a67baae51ac4c7fff311c.zip |
Merge "This enables to slide up All Apps from anywhere in the workspace, not only over the hotseat." into ub-launcher3-master
-rw-r--r-- | res/values/dimens.xml | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherAppWidgetHostView.java | 53 | ||||
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsTransitionController.java | 28 |
3 files changed, 47 insertions, 36 deletions
diff --git a/res/values/dimens.xml b/res/values/dimens.xml index a8a25af3e..1a09fa002 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -81,8 +81,6 @@ <dimen name="all_apps_divider_margin_vertical">8dp</dimen> - <dimen name="all_apps_bezel_swipe_height">24dp</dimen> - <!-- Widget tray --> <dimen name="widget_preview_label_vertical_padding">8dp</dimen> <dimen name="widget_preview_label_horizontal_padding">8dp</dimen> diff --git a/src/com/android/launcher3/LauncherAppWidgetHostView.java b/src/com/android/launcher3/LauncherAppWidgetHostView.java index 49bbfd097..1429df5d3 100644 --- a/src/com/android/launcher3/LauncherAppWidgetHostView.java +++ b/src/com/android/launcher3/LauncherAppWidgetHostView.java @@ -33,9 +33,11 @@ import android.view.ViewConfiguration; import android.view.ViewDebug; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.AdapterView; import android.widget.Advanceable; import android.widget.RemoteViews; +import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragLayer.TouchCompleteListener; import java.lang.reflect.Method; @@ -45,7 +47,8 @@ import java.util.concurrent.Executor; /** * {@inheritDoc} */ -public class LauncherAppWidgetHostView extends AppWidgetHostView implements TouchCompleteListener { +public class LauncherAppWidgetHostView extends AppWidgetHostView + implements TouchCompleteListener, View.OnLongClickListener { private static final String TAG = "LauncherWidgetHostView"; @@ -56,11 +59,12 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc // Maintains a list of widget ids which are supposed to be auto advanced. private static final SparseBooleanArray sAutoAdvanceWidgetIds = new SparseBooleanArray(); - LayoutInflater mInflater; + protected final LayoutInflater mInflater; + + private final CheckLongPressHelper mLongPressHelper; + private final StylusEventHelper mStylusEventHelper; + private final Context mContext; - private CheckLongPressHelper mLongPressHelper; - private StylusEventHelper mStylusEventHelper; - private Context mContext; @ViewDebug.ExportedProperty(category = "launcher") private int mPreviousOrientation; @@ -69,6 +73,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc @ViewDebug.ExportedProperty(category = "launcher") private boolean mChildrenFocused; + private boolean mIsScrollable; private boolean mIsAttachedToWindow; private boolean mIsAutoAdvanceRegistered; private Runnable mAutoAdvanceRunnable; @@ -86,7 +91,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc public LauncherAppWidgetHostView(Context context) { super(context); mContext = context; - mLongPressHelper = new CheckLongPressHelper(this); + mLongPressHelper = new CheckLongPressHelper(this, this); mStylusEventHelper = new StylusEventHelper(new SimpleOnStylusPressListener(this), this); mInflater = LayoutInflater.from(context); setAccessibilityDelegate(Launcher.getLauncher(context).getAccessibilityDelegate()); @@ -104,6 +109,16 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc } @Override + public boolean onLongClick(View view) { + if (mIsScrollable) { + DragLayer dragLayer = Launcher.getLauncher(getContext()).getDragLayer(); + dragLayer.requestDisallowInterceptTouchEvent(false); + } + view.performLongClick(); + return true; + } + + @Override protected View getErrorView() { return mInflater.inflate(R.layout.appwidget_error, this, false); } @@ -120,6 +135,24 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc // The provider info or the views might have changed. checkIfAutoAdvance(); + + mIsScrollable = checkScrollableRecursively(this); + } + + private boolean checkScrollableRecursively(ViewGroup viewGroup) { + if (viewGroup instanceof AdapterView) { + return true; + } else { + for (int i=0; i < viewGroup.getChildCount(); i++) { + View child = viewGroup.getChildAt(i); + if (child instanceof ViewGroup) { + if (checkScrollableRecursively((ViewGroup) child)) { + return true; + } + } + } + } + return false; } public boolean isReinflateRequired() { @@ -150,12 +183,18 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc mLongPressHelper.cancelLongPress(); return true; } + switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: { + DragLayer dragLayer = Launcher.getLauncher(getContext()).getDragLayer(); + + if (mIsScrollable) { + dragLayer.requestDisallowInterceptTouchEvent(true); + } if (!mStylusEventHelper.inStylusButtonPressed()) { mLongPressHelper.postCheckForLongPress(); } - Launcher.getLauncher(getContext()).getDragLayer().setTouchCompleteListener(this); + dragLayer.setTouchCompleteListener(this); break; } diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index c199fef09..547ab2b34 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -18,15 +18,12 @@ import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import com.android.launcher3.AbstractFloatingView; -import com.android.launcher3.DeviceProfile; import com.android.launcher3.Hotseat; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAnimUtils; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; -import com.android.launcher3.shortcuts.DeepShortcutsContainer; -import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Action; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.util.TouchController; @@ -88,7 +85,6 @@ public class AllAppsTransitionController implements TouchController, VerticalPul private static final float RECATCH_REJECTION_FRACTION = .0875f; - private int mBezelSwipeUpHeight; private long mAnimationDuration; private AnimatorSet mCurrentAnimation; @@ -104,8 +100,6 @@ public class AllAppsTransitionController implements TouchController, VerticalPul mDetector.setListener(this); mShiftRange = DEFAULT_SHIFT_RANGE; mProgress = 1f; - mBezelSwipeUpHeight = l.getResources().getDimensionPixelSize( - R.dimen.all_apps_bezel_swipe_height); mEvaluator = new ArgbEvaluator(); mAllAppsBackgroundColor = ContextCompat.getColor(l, R.color.all_apps_container_color); @@ -120,8 +114,6 @@ public class AllAppsTransitionController implements TouchController, VerticalPul } else if (mLauncher.isAllAppsVisible() && !mAppsView.shouldContainerScroll(ev)) { mNoIntercept = true; - } else if (!mLauncher.isAllAppsVisible() && !shouldPossiblyIntercept(ev)) { - mNoIntercept = true; } else if (AbstractFloatingView.getTopOpenView(mLauncher) != null) { mNoIntercept = true; } else { @@ -150,6 +142,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul ignoreSlopWhenSettling); } } + if (mNoIntercept) { return false; } @@ -160,25 +153,6 @@ public class AllAppsTransitionController implements TouchController, VerticalPul return mDetector.isDraggingOrSettling(); } - private boolean shouldPossiblyIntercept(MotionEvent ev) { - DeviceProfile grid = mLauncher.getDeviceProfile(); - if (mDetector.isIdleState()) { - if (grid.isVerticalBarLayout()) { - if (ev.getY() > mLauncher.getDeviceProfile().heightPx - mBezelSwipeUpHeight) { - return true; - } - } else { - if (mLauncher.getDragLayer().isEventOverHotseat(ev) || - mLauncher.getDragLayer().isEventOverPageIndicator(ev)) { - return true; - } - } - return false; - } else { - return true; - } - } - @Override public boolean onControllerTouchEvent(MotionEvent ev) { return mDetector.onTouchEvent(ev); |