Merge "Remove remote input after ime insets animation end" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-01-28 16:57:47 +00:00
committed by Android (Google) Code Review
3 changed files with 31 additions and 0 deletions

View File

@@ -131,6 +131,7 @@ public class RemoteInputController {
*/
public void removeRemoteInput(NotificationEntry entry, Object token) {
Objects.requireNonNull(entry);
if (entry.mRemoteEditImeVisible) return;
pruneWeakThenRemoveAndContains(null /* contains */, entry /* remove */, token);

View File

@@ -179,6 +179,8 @@ public final class NotificationEntry extends ListEntry {
private boolean mShelfIconVisible;
private boolean mIsAlerting;
public boolean mRemoteEditImeVisible;
/**
* @param sbn the StatusBarNotification from system server
* @param ranking also from system server

View File

@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.policy;
import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.Nullable;
@@ -50,6 +52,8 @@ import android.view.OnReceiveContentListener;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowInsetsAnimation;
import android.view.accessibility.AccessibilityEvent;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.EditorInfo;
@@ -61,6 +65,8 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.statusbar.IStatusBarService;
@@ -76,6 +82,7 @@ import com.android.systemui.statusbar.phone.LightBarController;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.function.Consumer;
/**
@@ -135,6 +142,27 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
mEditText = (RemoteEditText) getChildAt(0);
mEditText.setInnerFocusable(false);
mEditText.setWindowInsetsAnimationCallback(
new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) {
@NonNull
@Override
public WindowInsets onProgress(@NonNull WindowInsets insets,
@NonNull List<WindowInsetsAnimation> runningAnimations) {
return insets;
}
@Override
public void onEnd(@NonNull WindowInsetsAnimation animation) {
super.onEnd(animation);
if (animation.getTypeMask() == WindowInsets.Type.ime()) {
mEntry.mRemoteEditImeVisible =
mEditText.getRootWindowInsets().isVisible(WindowInsets.Type.ime());
if (!mEntry.mRemoteEditImeVisible && !mEditText.mShowImeOnInputConnection) {
mController.removeRemoteInput(mEntry, mToken);
}
}
}
});
}
protected Intent prepareRemoteInputFromText() {