Merge "[QS] Fix irritating animation for QS"
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java
index 18d27bb..53f7e44 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java
@@ -26,14 +26,26 @@
 @DependsOn(target = QSIconView.class)
 @DependsOn(target = QSTile.class)
 public abstract class QSTileView extends LinearLayout {
-    public static final int VERSION = 1;
+    public static final int VERSION = 2;
 
     public QSTileView(Context context) {
         super(context);
     }
 
     public abstract View updateAccessibilityOrder(View previousView);
+
+    /**
+     * Returns a {@link QSIconView} containing only the icon for this tile. Use
+     * {@link #getIconWithBackground()} to retrieve the entire tile (background & peripherals
+     * included).
+     */
     public abstract QSIconView getIcon();
+
+    /**
+     * Returns a {@link View} containing the icon for this tile along with the accompanying
+     * background circle/peripherals. To retrieve only the inner icon, use {@link #getIcon()}.
+     */
+    public abstract View getIconWithBackground();
     public abstract void init(QSTile tile);
     public abstract void onStateChanged(State state);
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
index 95185c0..001b409 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
@@ -44,7 +44,11 @@
     public static final float EXPANDED_TILE_DELAY = .86f;
 
     private final ArrayList<View> mAllViews = new ArrayList<>();
-    private final ArrayList<View> mTopFiveQs = new ArrayList<>();
+    /**
+     * List of {@link View}s representing Quick Settings that are being animated from the quick QS
+     * position to the normal QS panel.
+     */
+    private final ArrayList<View> mQuickQsViews = new ArrayList<>();
     private final QuickQSPanel mQuickQsPanel;
     private final QSPanel mQsPanel;
     private final QS mQs;
@@ -157,7 +161,7 @@
 
         clearAnimationState();
         mAllViews.clear();
-        mTopFiveQs.clear();
+        mQuickQsViews.clear();
 
         QSTileLayout tileLayout = mQsPanel.getTileLayout();
         mAllViews.add((View) tileLayout);
@@ -198,7 +202,7 @@
                 translationXBuilder.addFloat(tileView, "translationX", -xDiff, 0);
                 translationYBuilder.addFloat(tileView, "translationY", -yDiff, 0);
 
-                mTopFiveQs.add(tileView.getIcon());
+                mQuickQsViews.add(tileView.getIconWithBackground());
                 mAllViews.add(tileView.getIcon());
                 mAllViews.add(quickTileView);
             } else if (mFullRows && isIconInAnimatedRow(count)) {
@@ -322,9 +326,9 @@
     @Override
     public void onAnimationAtEnd() {
         mQuickQsPanel.setVisibility(View.INVISIBLE);
-        final int N = mTopFiveQs.size();
+        final int N = mQuickQsViews.size();
         for (int i = 0; i < N; i++) {
-            mTopFiveQs.get(i).setVisibility(View.VISIBLE);
+            mQuickQsViews.get(i).setVisibility(View.VISIBLE);
         }
     }
 
@@ -332,9 +336,9 @@
     public void onAnimationStarted() {
         mQuickQsPanel.setVisibility(mOnKeyguard ? View.INVISIBLE : View.VISIBLE);
         if (mOnFirstPage) {
-            final int N = mTopFiveQs.size();
+            final int N = mQuickQsViews.size();
             for (int i = 0; i < N; i++) {
-                mTopFiveQs.get(i).setVisibility(View.INVISIBLE);
+                mQuickQsViews.get(i).setVisibility(View.INVISIBLE);
             }
         }
     }
@@ -348,9 +352,9 @@
             v.setTranslationX(0);
             v.setTranslationY(0);
         }
-        final int N2 = mTopFiveQs.size();
+        final int N2 = mQuickQsViews.size();
         for (int i = 0; i < N2; i++) {
-            mTopFiveQs.get(i).setVisibility(View.VISIBLE);
+            mQuickQsViews.get(i).setVisibility(View.VISIBLE);
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
index b4cfda6..c9c678c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
@@ -236,6 +236,10 @@
         return mIcon;
     }
 
+    public View getIconWithBackground() {
+        return mIconFrame;
+    }
+
     @Override
     public boolean performClick() {
         mClicked = true;