OSDN Git Service

[QS] Fix irritating animation for QS
authorRohan Shah <shahrk@google.com>
Fri, 26 Jan 2018 02:22:44 +0000 (18:22 -0800)
committerRohan Shah <shahrk@google.com>
Mon, 29 Jan 2018 20:20:31 +0000 (12:20 -0800)
We're animating 2x the icons and, due to the transparent grey
background color, it looked like the icons were getting darker.

Fixed by having it exclude the full icon frame while animating.

Test: Visually
Bug: 72173914
Change-Id: Ie36973ab44a86e6e1edd99b9266420a274d9aaa2

packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java
packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java

index 18d27bb..53f7e44 100644 (file)
@@ -26,14 +26,26 @@ import com.android.systemui.plugins.qs.QSTile.State;
 @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);
 
index 95185c0..001b409 100644 (file)
@@ -44,7 +44,11 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
     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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
 
         clearAnimationState();
         mAllViews.clear();
-        mTopFiveQs.clear();
+        mQuickQsViews.clear();
 
         QSTileLayout tileLayout = mQsPanel.getTileLayout();
         mAllViews.add((View) tileLayout);
@@ -198,7 +202,7 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
                 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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
     @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 class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
     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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
             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);
         }
     }
 
index b4cfda6..c9c678c 100644 (file)
@@ -236,6 +236,10 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
         return mIcon;
     }
 
+    public View getIconWithBackground() {
+        return mIconFrame;
+    }
+
     @Override
     public boolean performClick() {
         mClicked = true;