summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson Chung <winsonc@google.com> 2015-12-11 10:25:46 -0500
committer Winson Chung <winsonc@google.com> 2015-12-14 10:39:01 -0500
commitbf0be0a8030b91c7e75c23230c1f89a1536aa7eb (patch)
tree83d113713ad05643c599866f7ce27469414570fc
parentee15241aaf9e3c38d2d0966f4b59b43284622d32 (diff)
Saving the stack state when you rotate.
- Saving the focus and stack scroll, along with the history visibility on configuration change. Change-Id: I159d2f0f6c58dac46cb3b16ee4d9e17c426ffb35
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java25
2 files changed, 47 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 384b86f4cc8b..152e015f1a3d 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -87,6 +87,9 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
private final static String TAG = "RecentsActivity";
private final static boolean DEBUG = false;
+ private final static String KEY_SAVED_STATE_HISTORY_VISIBLE =
+ "saved_instance_state_history_visible";
+
public final static int EVENT_BUS_PRIORITY = Recents.EVENT_BUS_PRIORITY + 1;
private RecentsPackageMonitor mPackageMonitor;
@@ -515,6 +518,25 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
}
@Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(KEY_SAVED_STATE_HISTORY_VISIBLE,
+ (mHistoryView != null) && mHistoryView.isVisible());
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ if (savedInstanceState.getBoolean(KEY_SAVED_STATE_HISTORY_VISIBLE, false)) {
+ ReferenceCountedTrigger postHideStackAnimationTrigger =
+ Tnew ReferenceCountedTrigger(this);
+ postHideStackAnimationTrigger.increment();
+ EventBus.getDefault().send(new ShowHistoryEvent(postHideStackAnimationTrigger));
+ postHideStackAnimationTrigger.decrement();
+ }
+ }
+
+ @Override
public void onTrimMemory(int level) {
RecentsTaskLoader loader = Recents.getTaskLoader();
if (loader != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index 350bc2bc92b5..b155182c6e95 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -27,6 +27,7 @@ import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
+import android.os.Parcelable;
import android.util.IntProperty;
import android.util.Log;
import android.util.Property;
@@ -91,6 +92,12 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
private final static String TAG = "TaskStackView";
private final static boolean DEBUG = false;
+ private final static String KEY_SAVED_STATE_SUPER = "saved_instance_state_super";
+ private final static String KEY_SAVED_STATE_LAYOUT_FOCUSED_STATE =
+ "saved_instance_state_layout_focused_state";
+ private final static String KEY_SAVED_STATE_LAYOUT_STACK_SCROLL =
+ "saved_instance_state_layout_stack_scroll";
+
// The thresholds at which to show/hide the history button.
private static final float SHOW_HISTORY_BUTTON_SCROLL_THRESHOLD = 0.3f;
private static final float HIDE_HISTORY_BUTTON_SCROLL_THRESHOLD = 0.3f;
@@ -828,6 +835,24 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
}
@Override
+ protected Parcelable onSaveInstanceState() {
+ Bundle savedState = new Bundle();
+ savedState.putParcelable(KEY_SAVED_STATE_SUPER, super.onSaveInstanceState());
+ savedState.putFloat(KEY_SAVED_STATE_LAYOUT_FOCUSED_STATE, mLayoutAlgorithm.getFocusState());
+ savedState.putFloat(KEY_SAVED_STATE_LAYOUT_STACK_SCROLL, mStackScroller.getStackScroll());
+ return super.onSaveInstanceState();
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable state) {
+ Bundle savedState = (Bundle) state;
+ super.onRestoreInstanceState(savedState.getParcelable(KEY_SAVED_STATE_SUPER));
+
+ mLayoutAlgorithm.setFocusState(savedState.getFloat(KEY_SAVED_STATE_LAYOUT_FOCUSED_STATE));
+ mStackScroller.setStackScroll(savedState.getFloat(KEY_SAVED_STATE_LAYOUT_STACK_SCROLL));
+ }
+
+ @Override
public CharSequence getAccessibilityClassName() {
return TaskStackView.class.getName();
}