mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 16:26:47 +00:00
Merge "Implementing TouchDelegate to make full chip clickable." into ub-launcher3-rvc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7d7b471a6c
@@ -79,7 +79,6 @@ import android.view.HapticFeedbackConstants;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.TouchDelegate;
|
||||
import android.view.View;
|
||||
import android.view.ViewDebug;
|
||||
import android.view.ViewGroup;
|
||||
@@ -700,12 +699,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
super.onTouchEvent(ev);
|
||||
|
||||
TaskView taskView = getCurrentPageTaskView();
|
||||
if (taskView != null) {
|
||||
TouchDelegate mChildTouchDelegate = taskView.getIconTouchDelegate(ev);
|
||||
if (mChildTouchDelegate != null && mChildTouchDelegate.onTouchEvent(ev)) {
|
||||
// Keep consuming events to pass to delegate
|
||||
return true;
|
||||
}
|
||||
if (taskView != null && taskView.offerTouchToChildren(ev)) {
|
||||
// Keep consuming events to pass to delegate
|
||||
return true;
|
||||
}
|
||||
|
||||
final int x = (int) ev.getX();
|
||||
|
||||
@@ -135,6 +135,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
* delegated bounds only to be updated.
|
||||
*/
|
||||
private TransformingTouchDelegate mIconTouchDelegate;
|
||||
private TransformingTouchDelegate mChipTouchDelegate;
|
||||
|
||||
private static final List<Rect> SYSTEM_GESTURE_EXCLUSION_RECT =
|
||||
Collections.singletonList(new Rect());
|
||||
@@ -200,6 +201,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
private View mContextualChipWrapper;
|
||||
private View mContextualChip;
|
||||
private final float[] mIconCenterCoords = new float[2];
|
||||
private final float[] mChipCenterCoords = new float[2];
|
||||
|
||||
public TaskView(Context context) {
|
||||
this(context, null);
|
||||
@@ -263,11 +265,22 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
mIconTouchDelegate = new TransformingTouchDelegate(mIconView);
|
||||
}
|
||||
|
||||
public TouchDelegate getIconTouchDelegate(MotionEvent event) {
|
||||
/**
|
||||
* Whether the taskview should take the touch event from parent. Events passed to children
|
||||
* that might require special handling.
|
||||
*/
|
||||
public boolean offerTouchToChildren(MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
computeAndSetIconTouchDelegate();
|
||||
computeAndSetChipTouchDelegate();
|
||||
}
|
||||
return mIconTouchDelegate;
|
||||
if (mIconTouchDelegate != null && mIconTouchDelegate.onTouchEvent(event)) {
|
||||
return true;
|
||||
}
|
||||
if (mChipTouchDelegate != null && mChipTouchDelegate.onTouchEvent(event)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void computeAndSetIconTouchDelegate() {
|
||||
@@ -282,6 +295,23 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
(int) (mIconCenterCoords[1] + iconHalfSize));
|
||||
}
|
||||
|
||||
private void computeAndSetChipTouchDelegate() {
|
||||
if (mContextualChipWrapper != null) {
|
||||
float chipHalfWidth = mContextualChipWrapper.getWidth() / 2f;
|
||||
float chipHalfHeight = mContextualChipWrapper.getHeight() / 2f;
|
||||
mChipCenterCoords[0] = chipHalfWidth;
|
||||
mChipCenterCoords[1] = chipHalfHeight;
|
||||
getDescendantCoordRelativeToAncestor(mContextualChipWrapper, mActivity.getDragLayer(),
|
||||
mChipCenterCoords,
|
||||
false);
|
||||
mChipTouchDelegate.setBounds(
|
||||
(int) (mChipCenterCoords[0] - chipHalfWidth),
|
||||
(int) (mChipCenterCoords[1] - chipHalfHeight),
|
||||
(int) (mChipCenterCoords[0] + chipHalfWidth),
|
||||
(int) (mChipCenterCoords[1] + chipHalfHeight));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The modalness of this view is how it should be displayed when it is shown on its own in the
|
||||
* modal state of overview.
|
||||
@@ -725,6 +755,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
mContextualChip.animate().scaleX(1f).scaleY(1f).setDuration(50);
|
||||
}
|
||||
if (mContextualChipWrapper != null) {
|
||||
mChipTouchDelegate = new TransformingTouchDelegate(mContextualChipWrapper);
|
||||
mContextualChipWrapper.animate().alpha(1f).setDuration(50);
|
||||
}
|
||||
}
|
||||
@@ -746,6 +777,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
View oldContextualChipWrapper = mContextualChipWrapper;
|
||||
mContextualChipWrapper = null;
|
||||
mContextualChip = null;
|
||||
mChipTouchDelegate = null;
|
||||
return oldContextualChipWrapper;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user