OSDN Git Service

QS: Don't animate first state change
authorJason Monk <jmonk@google.com>
Mon, 27 Mar 2017 20:41:24 +0000 (16:41 -0400)
committerJason Monk <jmonk@google.com>
Tue, 28 Mar 2017 18:14:49 +0000 (18:14 +0000)
Test: runtest systemui
Change-Id: I151af59665c74ca04839f7d33153fb8c90ddd996
Fixes: 36076790
(cherry picked from commit 2b48aa3f71403f41f6d6b90cfe437ee4bdce160f)

packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSIconViewImplTest.java

index a567f6b..6e2add4 100644 (file)
@@ -116,7 +116,7 @@ public class QSIconViewImpl extends QSIconView {
         if (state.state != mState) {
             int color = getColor(state.state);
             mState = state.state;
-            if (iv.isShown()) {
+            if (iv.isShown() && mTint != 0) {
                 animateGrayScale(mTint, color, iv);
                 mTint = color;
             } else {
index bb4571c..59483f2 100644 (file)
 package com.android.systemui.qs.tileimpl;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.content.res.ColorStateList;
 import android.graphics.drawable.Drawable;
+import android.service.quicksettings.Tile;
 import android.testing.AndroidTestingRunner;
 import android.testing.UiThreadTest;
 import android.widget.ImageView;
@@ -32,6 +35,7 @@ import com.android.systemui.plugins.qs.QSTile.State;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatcher;
 
 @RunWith(AndroidTestingRunner.class)
 @UiThreadTest
@@ -64,4 +68,16 @@ public class QSIconViewImplTest extends SysuiTestCase {
         verify(s.icon).getDrawable(any());
         verify(s.icon, never()).getInvisibleDrawable(any());
     }
+
+    @Test
+    public void testNoFirstFade() {
+        ImageView iv = mock(ImageView.class);
+        State s = new State();
+        s.state = Tile.STATE_ACTIVE;
+        int desiredColor = mIconView.getColor(s.state);
+        when(iv.isShown()).thenReturn(true);
+
+        mIconView.setIcon(iv, s);
+        verify(iv).setImageTintList(argThat(stateList -> stateList.getColors()[0] == desiredColor));
+    }
 }