Merge "Added toggle overview custom action over home button for a11y" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dd0f6709f8
@@ -383,6 +383,8 @@
|
||||
<item type="id" name="action_split_task_to_right" />
|
||||
<item type="id" name="action_split_task_to_top" />
|
||||
|
||||
<item type="id" name="action_toggle_overview"/>
|
||||
|
||||
<!-- Whether or not the gear icon on notifications should be shown. The gear is shown when the
|
||||
the notification is not swiped enough to dismiss it. -->
|
||||
<bool name="config_showNotificationGear">true</bool>
|
||||
|
||||
@@ -862,6 +862,9 @@
|
||||
<!-- Recents: Accessibility split to the right -->
|
||||
<string name="recents_accessibility_split_screen_right">Split screen to the right</string>
|
||||
|
||||
<!-- QuickStep: Accessibility to toggle overview [CHAR LIMIT=40] -->
|
||||
<string name="quick_step_accessibility_toggle_overview">Toggle Overview</string>
|
||||
|
||||
<!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
|
||||
<string name="expanded_header_battery_charged">Charged</string>
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.view.View;
|
||||
|
||||
import android.view.View.AccessibilityDelegate;
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.plugins.statusbar.phone.NavBarButtonProvider.ButtonInterface;
|
||||
import com.android.systemui.statusbar.policy.KeyButtonDrawable;
|
||||
@@ -50,6 +51,7 @@ public class ButtonDispatcher {
|
||||
private View mCurrentView;
|
||||
private boolean mVertical;
|
||||
private ValueAnimator mFadeAnimator;
|
||||
private AccessibilityDelegate mAccessibilityDelegate;
|
||||
|
||||
private final ValueAnimator.AnimatorUpdateListener mAlphaListener = animation ->
|
||||
setAlpha((float) animation.getAnimatedValue());
|
||||
@@ -84,6 +86,9 @@ public class ButtonDispatcher {
|
||||
if (mVisibility != null && mVisibility != -1) {
|
||||
view.setVisibility(mVisibility);
|
||||
}
|
||||
if (mAccessibilityDelegate != null) {
|
||||
view.setAccessibilityDelegate(mAccessibilityDelegate);
|
||||
}
|
||||
if (view instanceof ButtonInterface) {
|
||||
final ButtonInterface button = (ButtonInterface) view;
|
||||
if (mDarkIntensity != null) {
|
||||
@@ -212,6 +217,14 @@ public class ButtonDispatcher {
|
||||
}
|
||||
}
|
||||
|
||||
public void setAccessibilityDelegate(AccessibilityDelegate delegate) {
|
||||
mAccessibilityDelegate = delegate;
|
||||
final int N = mViews.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
mViews.get(i).setAccessibilityDelegate(delegate);
|
||||
}
|
||||
}
|
||||
|
||||
public void setClickable(boolean clickable) {
|
||||
abortCurrentGesture();
|
||||
final int N = mViews.size();
|
||||
|
||||
@@ -36,8 +36,10 @@ import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.util.AttributeSet;
|
||||
@@ -51,6 +53,8 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.WindowManager;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
@@ -60,11 +64,14 @@ import com.android.systemui.DockedStackExistsListener;
|
||||
import com.android.systemui.OverviewProxyService;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.RecentsComponent;
|
||||
import com.android.systemui.SysUiServiceProvider;
|
||||
import com.android.systemui.plugins.PluginListener;
|
||||
import com.android.systemui.plugins.PluginManager;
|
||||
import com.android.systemui.plugins.statusbar.phone.NavGesture;
|
||||
import com.android.systemui.plugins.statusbar.phone.NavGesture.GestureHelper;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.RecentsOnboarding;
|
||||
import com.android.systemui.shared.recents.IOverviewProxy;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.NavigationBarCompat;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
@@ -231,6 +238,34 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
|
||||
}
|
||||
}
|
||||
|
||||
private final AccessibilityDelegate mQuickStepAccessibilityDelegate
|
||||
= new AccessibilityDelegate() {
|
||||
private AccessibilityAction mToggleOverviewAction;
|
||||
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
if (mToggleOverviewAction == null) {
|
||||
mToggleOverviewAction = new AccessibilityAction(R.id.action_toggle_overview,
|
||||
getContext().getString(R.string.quick_step_accessibility_toggle_overview));
|
||||
}
|
||||
info.addAction(mToggleOverviewAction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
||||
switch (action) {
|
||||
case R.id.action_toggle_overview:
|
||||
SysUiServiceProvider.getComponent(getContext(), Recents.class)
|
||||
.toggleRecentApps();
|
||||
break;
|
||||
default:
|
||||
return super.performAccessibilityAction(host, action, args);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
public NavigationBarView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
@@ -698,12 +733,14 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
|
||||
}
|
||||
|
||||
public void updateStates() {
|
||||
final boolean showSwipeUpUI = mOverviewProxyService.shouldShowSwipeUpUI();
|
||||
updateSlippery();
|
||||
reloadNavIcons();
|
||||
updateNavButtonIcons();
|
||||
setUpSwipeUpOnboarding(isQuickStepSwipeUpEnabled());
|
||||
WindowManagerWrapper.getInstance().setNavBarVirtualKeyHapticFeedbackEnabled(
|
||||
!mOverviewProxyService.shouldShowSwipeUpUI());
|
||||
WindowManagerWrapper.getInstance().setNavBarVirtualKeyHapticFeedbackEnabled(!showSwipeUpUI);
|
||||
getHomeButton().setAccessibilityDelegate(
|
||||
showSwipeUpUI ? mQuickStepAccessibilityDelegate : null);
|
||||
}
|
||||
|
||||
private void updateSlippery() {
|
||||
|
||||
Reference in New Issue
Block a user