Merge "This enables to slide up All Apps from anywhere in the workspace, not only over the hotseat." into ub-launcher3-master
This commit is contained in:
commit
10e0a8947c
|
@ -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>
|
||||
|
|
|
@ -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());
|
||||
|
@ -103,6 +108,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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue