Merge "Add public constructors to gesture tutorial fragments." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3a6b7360a2
@@ -72,12 +72,11 @@
|
||||
<TextView
|
||||
android:id="@+id/subtitle"
|
||||
style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle.AllSet"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/allset_subtitle_margin_top"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintWidth_max="@dimen/allset_subtitle_width_max"
|
||||
android:gravity="start"/>
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
|
||||
+5
-7
@@ -15,20 +15,18 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.launcher3.logging.StatsLogManager;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
/** Shows the Home gesture interactive tutorial. */
|
||||
public class AssistantGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
protected AssistantGestureTutorialFragment(
|
||||
SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
super(sharedPrefs, statsLogManager);
|
||||
}
|
||||
public AssistantGestureTutorialFragment() {}
|
||||
|
||||
@Override
|
||||
TutorialController createController(TutorialType type) {
|
||||
@@ -49,12 +47,12 @@ public class AssistantGestureTutorialFragment extends TutorialFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepShown() {
|
||||
void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
|
||||
// No-Op: tutorial step not currently shown to users
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepCompleted() {
|
||||
void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
|
||||
// No-Op: tutorial step not currently shown to users
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,10 @@ import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.SharedPreferences;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
@@ -34,10 +34,7 @@ import java.util.ArrayList;
|
||||
/** Shows the Back gesture interactive tutorial. */
|
||||
public class BackGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
protected BackGestureTutorialFragment(
|
||||
SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
super(sharedPrefs, statsLogManager);
|
||||
}
|
||||
public BackGestureTutorialFragment() {}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
@@ -126,14 +123,14 @@ public class BackGestureTutorialFragment extends TutorialFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepShown() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_BACK_STEP_SHOWN);
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepCompleted() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_BACK_STEP_COMPLETED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,10 +65,7 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
mTutorialSteps = getTutorialSteps(args);
|
||||
mCurrentTutorialStep = mTutorialSteps[mCurrentStep - 1];
|
||||
mFragment = TutorialFragment.newInstance(
|
||||
mCurrentTutorialStep,
|
||||
args.getBoolean(KEY_GESTURE_COMPLETE, false),
|
||||
mSharedPrefs,
|
||||
mStatsLogManager);
|
||||
mCurrentTutorialStep, args.getBoolean(KEY_GESTURE_COMPLETE, false));
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.gesture_tutorial_fragment_container, mFragment)
|
||||
.commit();
|
||||
@@ -103,6 +100,14 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
}
|
||||
|
||||
protected SharedPreferences getSharedPrefs() {
|
||||
return mSharedPrefs;
|
||||
}
|
||||
|
||||
protected StatsLogManager getStatsLogManager() {
|
||||
return mStatsLogManager;
|
||||
}
|
||||
|
||||
/** Returns true iff there aren't anymore tutorial types to display to the user. */
|
||||
public boolean isTutorialComplete() {
|
||||
return mCurrentStep >= mNumSteps;
|
||||
@@ -128,7 +133,7 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
}
|
||||
mCurrentTutorialStep = mTutorialSteps[mCurrentStep];
|
||||
mFragment = TutorialFragment.newInstance(
|
||||
mCurrentTutorialStep, /* gestureComplete= */ false, mSharedPrefs, mStatsLogManager);
|
||||
mCurrentTutorialStep, /* gestureComplete= */ false);
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.gesture_tutorial_fragment_container, mFragment)
|
||||
.runOnCommit(() -> mFragment.onAttachedToWindow())
|
||||
|
||||
@@ -18,10 +18,10 @@ package com.android.quickstep.interaction;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.content.SharedPreferences;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
@@ -33,10 +33,7 @@ import java.util.ArrayList;
|
||||
/** Shows the Home gesture interactive tutorial. */
|
||||
public class HomeGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
protected HomeGestureTutorialFragment(
|
||||
SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
super(sharedPrefs, statsLogManager);
|
||||
}
|
||||
public HomeGestureTutorialFragment() {}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
@@ -108,14 +105,14 @@ public class HomeGestureTutorialFragment extends TutorialFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepShown() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_HOME_STEP_SHOWN);
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepCompleted() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_HOME_STEP_COMPLETED);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-9
@@ -18,10 +18,10 @@ package com.android.quickstep.interaction;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.content.SharedPreferences;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
@@ -33,10 +33,7 @@ import java.util.ArrayList;
|
||||
/** Shows the Overview gesture interactive tutorial. */
|
||||
public class OverviewGestureTutorialFragment extends TutorialFragment {
|
||||
|
||||
protected OverviewGestureTutorialFragment(
|
||||
SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
super(sharedPrefs, statsLogManager);
|
||||
}
|
||||
public OverviewGestureTutorialFragment() {}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
@@ -120,14 +117,14 @@ public class OverviewGestureTutorialFragment extends TutorialFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepShown() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_OVERVIEW_STEP_SHOWN);
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepCompleted() {
|
||||
mStatsLogManager.logger().log(
|
||||
void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_OVERVIEW_STEP_COMPLETED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,20 +15,18 @@
|
||||
*/
|
||||
package com.android.quickstep.interaction;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.launcher3.logging.StatsLogManager;
|
||||
import com.android.quickstep.interaction.TutorialController.TutorialType;
|
||||
|
||||
/** Shows the general navigation gesture sandbox environment. */
|
||||
public class SandboxModeTutorialFragment extends TutorialFragment {
|
||||
|
||||
protected SandboxModeTutorialFragment(
|
||||
SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
super(sharedPrefs, statsLogManager);
|
||||
}
|
||||
public SandboxModeTutorialFragment() {}
|
||||
|
||||
@Override
|
||||
TutorialController createController(TutorialType type) {
|
||||
@@ -49,12 +47,12 @@ public class SandboxModeTutorialFragment extends TutorialFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepShown() {
|
||||
void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
|
||||
// No-Op: tutorial step not currently shown to users
|
||||
}
|
||||
|
||||
@Override
|
||||
void logTutorialStepCompleted() {
|
||||
void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
|
||||
// No-Op: tutorial step not currently shown to users
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,9 +60,6 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
private static final String COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY =
|
||||
"pref_completedTutorialSteps";
|
||||
|
||||
private final SharedPreferences mSharedPrefs;
|
||||
protected final StatsLogManager mStatsLogManager;
|
||||
|
||||
TutorialType mTutorialType;
|
||||
boolean mGestureComplete = false;
|
||||
@Nullable TutorialController mTutorialController = null;
|
||||
@@ -84,14 +81,10 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
private boolean mIsFoldable;
|
||||
|
||||
public static TutorialFragment newInstance(
|
||||
TutorialType tutorialType,
|
||||
boolean gestureComplete,
|
||||
SharedPreferences sharedPrefs,
|
||||
StatsLogManager statsLogManager) {
|
||||
TutorialFragment fragment =
|
||||
getFragmentForTutorialType(tutorialType, sharedPrefs, statsLogManager);
|
||||
TutorialType tutorialType, boolean gestureComplete) {
|
||||
TutorialFragment fragment = getFragmentForTutorialType(tutorialType);
|
||||
if (fragment == null) {
|
||||
fragment = new BackGestureTutorialFragment(sharedPrefs, statsLogManager);
|
||||
fragment = new BackGestureTutorialFragment();
|
||||
tutorialType = TutorialType.BACK_NAVIGATION;
|
||||
}
|
||||
|
||||
@@ -103,36 +96,28 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static TutorialFragment getFragmentForTutorialType(
|
||||
TutorialType tutorialType,
|
||||
SharedPreferences sharedPrefs,
|
||||
StatsLogManager statsLogManager) {
|
||||
private static TutorialFragment getFragmentForTutorialType(TutorialType tutorialType) {
|
||||
switch (tutorialType) {
|
||||
case BACK_NAVIGATION:
|
||||
case BACK_NAVIGATION_COMPLETE:
|
||||
return new BackGestureTutorialFragment(sharedPrefs, statsLogManager);
|
||||
return new BackGestureTutorialFragment();
|
||||
case HOME_NAVIGATION:
|
||||
case HOME_NAVIGATION_COMPLETE:
|
||||
return new HomeGestureTutorialFragment(sharedPrefs, statsLogManager);
|
||||
return new HomeGestureTutorialFragment();
|
||||
case OVERVIEW_NAVIGATION:
|
||||
case OVERVIEW_NAVIGATION_COMPLETE:
|
||||
return new OverviewGestureTutorialFragment(sharedPrefs, statsLogManager);
|
||||
return new OverviewGestureTutorialFragment();
|
||||
case ASSISTANT:
|
||||
case ASSISTANT_COMPLETE:
|
||||
return new AssistantGestureTutorialFragment(sharedPrefs, statsLogManager);
|
||||
return new AssistantGestureTutorialFragment();
|
||||
case SANDBOX_MODE:
|
||||
return new SandboxModeTutorialFragment(sharedPrefs, statsLogManager);
|
||||
return new SandboxModeTutorialFragment();
|
||||
default:
|
||||
Log.e(LOG_TAG, "Failed to find an appropriate fragment for " + tutorialType.name());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected TutorialFragment(SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
|
||||
mSharedPrefs = sharedPrefs;
|
||||
mStatsLogManager = statsLogManager;
|
||||
}
|
||||
|
||||
@Nullable Integer getEdgeAnimationResId() {
|
||||
return null;
|
||||
}
|
||||
@@ -340,7 +325,10 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
}
|
||||
|
||||
void onAttachedToWindow() {
|
||||
logTutorialStepShown();
|
||||
StatsLogManager statsLogManager = getStatsLogManager();
|
||||
if (statsLogManager != null) {
|
||||
logTutorialStepShown(statsLogManager);
|
||||
}
|
||||
mEdgeBackGestureHandler.setViewGroupParent(getRootView());
|
||||
}
|
||||
|
||||
@@ -374,14 +362,20 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
}
|
||||
|
||||
void continueTutorial() {
|
||||
Set<String> updatedCompletedSteps = new ArraySet<>(mSharedPrefs.getStringSet(
|
||||
COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, new ArraySet<>()));
|
||||
SharedPreferences sharedPrefs = getSharedPreferences();
|
||||
if (sharedPrefs != null) {
|
||||
Set<String> updatedCompletedSteps = new ArraySet<>(sharedPrefs.getStringSet(
|
||||
COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, new ArraySet<>()));
|
||||
|
||||
updatedCompletedSteps.add(mTutorialType.toString());
|
||||
updatedCompletedSteps.add(mTutorialType.toString());
|
||||
|
||||
mSharedPrefs.edit().putStringSet(
|
||||
COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, updatedCompletedSteps).apply();
|
||||
logTutorialStepCompleted();
|
||||
sharedPrefs.edit().putStringSet(
|
||||
COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, updatedCompletedSteps).apply();
|
||||
}
|
||||
StatsLogManager statsLogManager = getStatsLogManager();
|
||||
if (statsLogManager != null) {
|
||||
logTutorialStepCompleted(statsLogManager);
|
||||
}
|
||||
|
||||
GestureSandboxActivity gestureSandboxActivity = getGestureSandboxActivity();
|
||||
if (gestureSandboxActivity == null) {
|
||||
@@ -397,9 +391,15 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|
||||
void closeTutorial(boolean tutorialSkipped) {
|
||||
if (tutorialSkipped) {
|
||||
mSharedPrefs.edit().putBoolean(TUTORIAL_SKIPPED_PREFERENCE_KEY, true).apply();
|
||||
mStatsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_SKIPPED);
|
||||
SharedPreferences sharedPrefs = getSharedPreferences();
|
||||
if (sharedPrefs != null) {
|
||||
sharedPrefs.edit().putBoolean(TUTORIAL_SKIPPED_PREFERENCE_KEY, true).apply();
|
||||
}
|
||||
StatsLogManager statsLogManager = getStatsLogManager();
|
||||
if (statsLogManager != null) {
|
||||
statsLogManager.logger().log(
|
||||
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_SKIPPED);
|
||||
}
|
||||
}
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity != null) {
|
||||
@@ -433,9 +433,9 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|| (mTutorialController != null && mTutorialController.isGestureCompleted());
|
||||
}
|
||||
|
||||
abstract void logTutorialStepShown();
|
||||
abstract void logTutorialStepShown(@NonNull StatsLogManager statsLogManager);
|
||||
|
||||
abstract void logTutorialStepCompleted();
|
||||
abstract void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager);
|
||||
|
||||
@Nullable
|
||||
private GestureSandboxActivity getGestureSandboxActivity() {
|
||||
@@ -443,4 +443,18 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|
||||
return context instanceof GestureSandboxActivity ? (GestureSandboxActivity) context : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private StatsLogManager getStatsLogManager() {
|
||||
GestureSandboxActivity activity = getGestureSandboxActivity();
|
||||
|
||||
return activity != null ? activity.getStatsLogManager() : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private SharedPreferences getSharedPreferences() {
|
||||
GestureSandboxActivity activity = getGestureSandboxActivity();
|
||||
|
||||
return activity != null ? activity.getSharedPrefs() : null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user