Merge "Disabling OverviewActions when rotated." into ub-launcher3-rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c0c0991231
@@ -19,6 +19,7 @@ package com.android.quickstep;
|
||||
import static android.view.Surface.ROTATION_0;
|
||||
|
||||
import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;
|
||||
import static com.android.quickstep.views.OverviewActionsView.DISABLED_ROTATED;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
@@ -143,8 +144,12 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
|
||||
/**
|
||||
* Called when the current task is interactive for the user
|
||||
*/
|
||||
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix) {
|
||||
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix,
|
||||
boolean rotated) {
|
||||
final boolean isAllowedByPolicy = thumbnail.isRealSnapshot;
|
||||
|
||||
mActionsView.updateDisabledFlags(DISABLED_ROTATED, rotated);
|
||||
|
||||
getActionsView().setCallbacks(new OverlayUICallbacks() {
|
||||
@Override
|
||||
public void onShare() {
|
||||
|
||||
+32
@@ -38,6 +38,7 @@ import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
|
||||
import com.android.quickstep.SysUINavigationMode;
|
||||
import com.android.quickstep.SysUINavigationMode.Mode;
|
||||
import com.android.quickstep.TaskOverlayFactory.OverlayUICallbacks;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -67,6 +68,15 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
|
||||
public static final int HIDDEN_GESTURE_RUNNING = 1 << 4;
|
||||
public static final int HIDDEN_NO_RECENTS = 1 << 5;
|
||||
|
||||
@IntDef(flag = true, value = {
|
||||
DISABLED_SCROLLING,
|
||||
DISABLED_ROTATED})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ActionsDisabledFlags { }
|
||||
|
||||
public static final int DISABLED_SCROLLING = 1 << 0;
|
||||
public static final int DISABLED_ROTATED = 1 << 1;
|
||||
|
||||
private static final int INDEX_CONTENT_ALPHA = 0;
|
||||
private static final int INDEX_VISIBILITY_ALPHA = 1;
|
||||
private static final int INDEX_FULLSCREEN_ALPHA = 2;
|
||||
@@ -77,6 +87,9 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
|
||||
@ActionsHiddenFlags
|
||||
private int mHiddenFlags;
|
||||
|
||||
@ActionsDisabledFlags
|
||||
protected int mDisabledFlags;
|
||||
|
||||
protected T mCallbacks;
|
||||
|
||||
public OverviewActionsView(Context context) {
|
||||
@@ -156,6 +169,25 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
|
||||
setVisibility(isHidden ? INVISIBLE : VISIBLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the proper disabled flag to indicate whether OverviewActionsView should be enabled.
|
||||
* Ignores DISABLED_ROTATED flag for determining enabled. Flag is used to enable/disable
|
||||
* buttons individually, currently done for select button in subclass.
|
||||
*
|
||||
* @param disabledFlags The flag to update.
|
||||
* @param enable Whether to enable the disable flag: True will cause view to be disabled.
|
||||
*/
|
||||
public void updateDisabledFlags(@ActionsDisabledFlags int disabledFlags, boolean enable) {
|
||||
if (enable) {
|
||||
mDisabledFlags |= disabledFlags;
|
||||
} else {
|
||||
mDisabledFlags &= ~disabledFlags;
|
||||
}
|
||||
//
|
||||
boolean isEnabled = (mDisabledFlags & ~DISABLED_ROTATED) == 0;
|
||||
LayoutUtils.setViewEnabled(this, isEnabled);
|
||||
}
|
||||
|
||||
public AlphaProperty getContentAlpha() {
|
||||
return mMultiValueAlpha.getProperty(INDEX_CONTENT_ALPHA);
|
||||
}
|
||||
|
||||
@@ -623,14 +623,14 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
@Override
|
||||
protected void onPageBeginTransition() {
|
||||
super.onPageBeginTransition();
|
||||
LayoutUtils.setViewEnabled(mActionsView, false);
|
||||
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPageEndTransition() {
|
||||
super.onPageEndTransition();
|
||||
if (isClearAllHidden()) {
|
||||
LayoutUtils.setViewEnabled(mActionsView, true);
|
||||
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, false);
|
||||
}
|
||||
if (getNextPage() > 0) {
|
||||
setSwipeDownShouldLaunchApp(true);
|
||||
@@ -2217,7 +2217,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
boolean inPlaceLandscape = !mOrientationState.canLauncherRotate()
|
||||
&& mOrientationState.getTouchRotation() != ROTATION_0;
|
||||
mActionsView.updateHiddenFlags(HIDDEN_NON_ZERO_ROTATION, modalness < 1 && inPlaceLandscape);
|
||||
LayoutUtils.setViewEnabled(mActionsView, true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+3
-4
@@ -357,10 +357,9 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
}
|
||||
|
||||
private void updateOverlay() {
|
||||
// The overlay doesn't really work when the screenshot is rotated, so don't add it.
|
||||
if (mOverlayEnabled && !mPreviewPositionHelper.mIsOrientationChanged
|
||||
&& mBitmapShader != null && mThumbnailData != null) {
|
||||
mOverlay.initOverlay(mTask, mThumbnailData, mPreviewPositionHelper.mMatrix);
|
||||
if (mOverlayEnabled && mBitmapShader != null && mThumbnailData != null) {
|
||||
mOverlay.initOverlay(mTask, mThumbnailData, mPreviewPositionHelper.mMatrix,
|
||||
mPreviewPositionHelper.mIsOrientationChanged);
|
||||
} else {
|
||||
mOverlay.reset();
|
||||
}
|
||||
|
||||
@@ -74,17 +74,14 @@ public class LayoutUtils {
|
||||
|
||||
/**
|
||||
* Recursively sets view and all children enabled/disabled.
|
||||
* @param viewGroup Top most parent view to change.
|
||||
* @param view Top most parent view to change.
|
||||
* @param enabled True = enable, False = disable.
|
||||
*/
|
||||
public static void setViewEnabled(ViewGroup viewGroup, boolean enabled) {
|
||||
viewGroup.setEnabled(enabled);
|
||||
for (int i = 0; i < viewGroup.getChildCount(); i++) {
|
||||
View child = viewGroup.getChildAt(i);
|
||||
if (child instanceof ViewGroup) {
|
||||
setViewEnabled((ViewGroup) child, enabled);
|
||||
} else {
|
||||
child.setEnabled(enabled);
|
||||
public static void setViewEnabled(View view, boolean enabled) {
|
||||
view.setEnabled(enabled);
|
||||
if (view instanceof ViewGroup) {
|
||||
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
|
||||
setViewEnabled(((ViewGroup) view).getChildAt(i), enabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user