mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-05 02:16:49 +00:00
Merge "Fix lost gesture nav progress on screen rotation." into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cc0224fe52
@@ -42,6 +42,13 @@ final class BackGestureTutorialController extends TutorialController {
|
||||
return R.string.back_gesture_intro_subtitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getSuccessFeedbackSubtitle() {
|
||||
return mTutorialFragment.isAtFinalStep()
|
||||
? R.string.back_gesture_feedback_complete_without_follow_up
|
||||
: R.string.back_gesture_feedback_complete_with_overview_follow_up;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return getMockAppTaskCurrentPageLayoutResId();
|
||||
@@ -85,10 +92,7 @@ final class BackGestureTutorialController extends TutorialController {
|
||||
case BACK_COMPLETED_FROM_RIGHT:
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
updateFakeAppTaskViewLayout(getMockAppTaskPreviousPageLayoutResId());
|
||||
int subtitleResId = mTutorialFragment.isAtFinalStep()
|
||||
? R.string.back_gesture_feedback_complete_without_follow_up
|
||||
: R.string.back_gesture_feedback_complete_with_overview_follow_up;
|
||||
showFeedback(subtitleResId, true);
|
||||
showSuccessFeedback();
|
||||
break;
|
||||
case BACK_CANCELLED_FROM_LEFT:
|
||||
case BACK_CANCELLED_FROM_RIGHT:
|
||||
|
||||
@@ -35,10 +35,9 @@ import java.util.List;
|
||||
/** Shows the gesture interactive sandbox in full screen mode. */
|
||||
public class GestureSandboxActivity extends FragmentActivity {
|
||||
|
||||
private static final String LOG_TAG = "GestureSandboxActivity";
|
||||
|
||||
private static final String KEY_TUTORIAL_STEPS = "tutorial_steps";
|
||||
private static final String KEY_CURRENT_STEP = "current_step";
|
||||
private static final String KEY_GESTURE_COMPLETE = "gesture_complete";
|
||||
|
||||
private TutorialType[] mTutorialSteps;
|
||||
private TutorialType mCurrentTutorialStep;
|
||||
@@ -56,7 +55,8 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
Bundle args = savedInstanceState == null ? getIntent().getExtras() : savedInstanceState;
|
||||
mTutorialSteps = getTutorialSteps(args);
|
||||
mCurrentTutorialStep = mTutorialSteps[mCurrentStep - 1];
|
||||
mFragment = TutorialFragment.newInstance(mCurrentTutorialStep);
|
||||
mFragment = TutorialFragment.newInstance(
|
||||
mCurrentTutorialStep, args.getBoolean(KEY_GESTURE_COMPLETE, false));
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.gesture_tutorial_fragment_container, mFragment)
|
||||
.commit();
|
||||
@@ -87,6 +87,7 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
protected void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
|
||||
savedInstanceState.putStringArray(KEY_TUTORIAL_STEPS, getTutorialStepNames());
|
||||
savedInstanceState.putInt(KEY_CURRENT_STEP, mCurrentStep);
|
||||
savedInstanceState.putBoolean(KEY_GESTURE_COMPLETE, mFragment.isGestureComplete());
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
}
|
||||
|
||||
@@ -121,7 +122,7 @@ public class GestureSandboxActivity extends FragmentActivity {
|
||||
return;
|
||||
}
|
||||
mCurrentTutorialStep = mTutorialSteps[mCurrentStep];
|
||||
mFragment = TutorialFragment.newInstance(mCurrentTutorialStep);
|
||||
mFragment = TutorialFragment.newInstance(mCurrentTutorialStep, false);
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.gesture_tutorial_fragment_container, mFragment)
|
||||
.runOnCommit(() -> mFragment.onAttachedToWindow())
|
||||
|
||||
@@ -41,6 +41,13 @@ final class HomeGestureTutorialController extends SwipeUpGestureTutorialControll
|
||||
return R.string.home_gesture_intro_subtitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getSuccessFeedbackSubtitle() {
|
||||
return mTutorialFragment.isAtFinalStep()
|
||||
? R.string.home_gesture_feedback_complete_without_follow_up
|
||||
: R.string.home_gesture_feedback_complete_with_follow_up;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return mTutorialFragment.isLargeScreen()
|
||||
@@ -84,10 +91,7 @@ final class HomeGestureTutorialController extends SwipeUpGestureTutorialControll
|
||||
case HOME_GESTURE_COMPLETED: {
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
animateFakeTaskViewHome(finalVelocity, null);
|
||||
int subtitleResId = mTutorialFragment.isAtFinalStep()
|
||||
? R.string.home_gesture_feedback_complete_without_follow_up
|
||||
: R.string.home_gesture_feedback_complete_with_follow_up;
|
||||
showFeedback(subtitleResId, true);
|
||||
showSuccessFeedback();
|
||||
break;
|
||||
}
|
||||
case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
|
||||
|
||||
@@ -51,6 +51,13 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
|
||||
return R.string.overview_gesture_intro_subtitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getSuccessFeedbackSubtitle() {
|
||||
return mTutorialFragment.getNumSteps() > 1 && mTutorialFragment.isAtFinalStep()
|
||||
? R.string.overview_gesture_feedback_complete_with_follow_up
|
||||
: R.string.overview_gesture_feedback_complete_without_follow_up;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMockAppTaskLayoutResId() {
|
||||
return mTutorialFragment.isLargeScreen()
|
||||
@@ -106,11 +113,7 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont
|
||||
mTutorialFragment.releaseFeedbackAnimation();
|
||||
animateTaskViewToOverview();
|
||||
onMotionPaused(true /*arbitrary value*/);
|
||||
int subtitleResId = mTutorialFragment.getNumSteps() > 1
|
||||
&& mTutorialFragment.isAtFinalStep()
|
||||
? R.string.overview_gesture_feedback_complete_with_follow_up
|
||||
: R.string.overview_gesture_feedback_complete_without_follow_up;
|
||||
showFeedback(subtitleResId, true);
|
||||
showSuccessFeedback();
|
||||
break;
|
||||
case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
|
||||
case HOME_OR_OVERVIEW_CANCELLED:
|
||||
|
||||
@@ -223,6 +223,11 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
return null;
|
||||
}
|
||||
|
||||
@StringRes
|
||||
public Integer getSuccessFeedbackSubtitle() {
|
||||
return null;
|
||||
}
|
||||
|
||||
void showFeedback() {
|
||||
if (mGestureCompleted) {
|
||||
mFeedbackView.setTranslationY(0);
|
||||
@@ -235,6 +240,13 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show feedback reflecting a successful gesture attempt.
|
||||
**/
|
||||
void showSuccessFeedback() {
|
||||
showFeedback(getSuccessFeedbackSubtitle(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show feedback reflecting a failed gesture attempt.
|
||||
*
|
||||
|
||||
@@ -49,8 +49,10 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|
||||
private static final String LOG_TAG = "TutorialFragment";
|
||||
static final String KEY_TUTORIAL_TYPE = "tutorial_type";
|
||||
static final String KEY_GESTURE_COMPLETE = "gesture_complete";
|
||||
|
||||
TutorialType mTutorialType;
|
||||
boolean mGestureComplete = false;
|
||||
@Nullable TutorialController mTutorialController = null;
|
||||
RootSandboxLayout mRootView;
|
||||
View mFingerDotView;
|
||||
@@ -67,7 +69,7 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|
||||
private boolean mIsLargeScreen;
|
||||
|
||||
public static TutorialFragment newInstance(TutorialType tutorialType) {
|
||||
public static TutorialFragment newInstance(TutorialType tutorialType, boolean gestureComplete) {
|
||||
TutorialFragment fragment = getFragmentForTutorialType(tutorialType);
|
||||
if (fragment == null) {
|
||||
fragment = new BackGestureTutorialFragment();
|
||||
@@ -76,6 +78,7 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(KEY_TUTORIAL_TYPE, tutorialType);
|
||||
args.putBoolean(KEY_GESTURE_COMPLETE, gestureComplete);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -132,6 +135,7 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
super.onCreate(savedInstanceState);
|
||||
Bundle args = savedInstanceState != null ? savedInstanceState : getArguments();
|
||||
mTutorialType = (TutorialType) args.getSerializable(KEY_TUTORIAL_TYPE);
|
||||
mGestureComplete = args.getBoolean(KEY_GESTURE_COMPLETE, false);
|
||||
mEdgeBackGestureHandler = new EdgeBackGestureHandler(getContext());
|
||||
mNavBarGestureHandler = new NavBarGestureHandler(getContext());
|
||||
|
||||
@@ -186,11 +190,13 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
}
|
||||
|
||||
void initializeFeedbackVideoView() {
|
||||
if (!updateFeedbackAnimation()) {
|
||||
if (!updateFeedbackAnimation() || mTutorialController == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mIntroductionShown && mTutorialController != null) {
|
||||
if (isGestureComplete()) {
|
||||
mTutorialController.showSuccessFeedback();
|
||||
} else if (!mIntroductionShown) {
|
||||
Integer introTileStringResId = mTutorialController.getIntroductionTitle();
|
||||
Integer introSubtitleResId = mTutorialController.getIntroductionSubtitle();
|
||||
if (introTileStringResId != null && introSubtitleResId != null) {
|
||||
@@ -372,6 +378,11 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|
||||
return getCurrentStep() == getNumSteps();
|
||||
}
|
||||
|
||||
boolean isGestureComplete() {
|
||||
return mGestureComplete
|
||||
|| (mTutorialController != null && mTutorialController.isGestureCompleted());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private GestureSandboxActivity getGestureSandboxActivity() {
|
||||
Context context = getContext();
|
||||
|
||||
Reference in New Issue
Block a user