Add tutorial dialog for gesture navigation

Add new tutorial dialog for gesture navigation in order to teach
users how to use the gesture

Fixes: 133650388
Test: Manual
Change-Id: I7cc6a950af49044b27cf7ca41e3bcf67ef40b5fd
This commit is contained in:
Kevin Chang
2019-05-31 15:14:47 +08:00
parent c212052f69
commit 0e1f39fad8
14 changed files with 769 additions and 4 deletions

View File

@@ -16,6 +16,9 @@
package com.android.settings.accessibility;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.Context;
@@ -26,6 +29,8 @@ import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.Display;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.WindowManager;
@@ -44,6 +49,10 @@ import com.android.settings.widget.SwitchBar;
public class ToggleScreenMagnificationPreferenceFragment extends
ToggleFeaturePreferenceFragment implements SwitchBar.OnSwitchChangeListener {
private static final int DIALOG_ID_GESTURE_NAVIGATION_TUTORIAL = 1;
private Dialog mDialog;
protected class VideoPreference extends Preference {
private ImageView mVideoBackgroundView;
private OnGlobalLayoutListener mLayoutListener;
@@ -161,12 +170,32 @@ public class ToggleScreenMagnificationPreferenceFragment extends
updateConfigurationWarningIfNeeded();
}
@Override
public Dialog onCreateDialog(int dialogId) {
if (dialogId == DIALOG_ID_GESTURE_NAVIGATION_TUTORIAL) {
if (isGestureNavigateEnabled()) {
mDialog = AccessibilityGestureNavigationTutorial
.showGestureNavigationTutorialDialog(getActivity());
} else {
mDialog = AccessibilityGestureNavigationTutorial
.showAccessibilityButtonTutorialDialog(getActivity());
}
}
return mDialog;
}
@Override
public int getMetricsCategory() {
// TODO: Distinguish between magnification modes
return SettingsEnums.ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION;
}
@Override
public int getDialogMetricsCategory(int dialogId) {
return SettingsEnums.ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION;
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
onPreferenceToggled(mPreferenceKey, isChecked);
@@ -174,6 +203,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends
@Override
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
if (enabled && TextUtils.equals(
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED,
preferenceKey)) {
showDialog(DIALOG_ID_GESTURE_NAVIGATION_TUTORIAL);
}
MagnificationPreferenceFragment.setChecked(getContentResolver(), preferenceKey, enabled);
updateConfigurationWarningIfNeeded();
}
@@ -224,6 +258,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends
}
}
private boolean isGestureNavigateEnabled() {
return getContext().getResources().getInteger(
com.android.internal.R.integer.config_navBarInteractionMode)
== NAV_BAR_MODE_GESTURAL;
}
private void updateConfigurationWarningIfNeeded() {
final CharSequence warningMessage =
MagnificationPreferenceFragment.getConfigurationWarningStringForSecureSettingsKey(