OSDN Git Service

Show mobile signal strength in QS edit panel
authorEvan Laird <evanlaird@google.com>
Tue, 12 Sep 2017 15:03:15 +0000 (11:03 -0400)
committerEvan Laird <evanlaird@google.com>
Wed, 13 Sep 2017 20:34:14 +0000 (16:34 -0400)
Apparently ImageView#setImageDrawable() will take the drawable you give
it and reset its level. Pre-empting that by setting the ImageView level
first fixes that.

Change-Id: I4233241df1e4425ad2c4f5c32599608354a10c30
Fixes: 63690824
Test: visual; runtest -x \
frameworks/base/packages/SystemUI/tests/src/com/android/systemui/qs/SlashImageViewTest.java

packages/SystemUI/src/com/android/systemui/qs/tileimpl/SlashImageView.java
packages/SystemUI/tests/src/com/android/systemui/qs/SlashImageViewTest.java

index 13912fe..97e9c3d 100644 (file)
@@ -48,6 +48,7 @@ public class SlashImageView extends ImageView {
             mSlash = null;
             super.setImageDrawable(null);
         } else if (mSlash == null) {
+            setImageLevel(drawable.getLevel());
             super.setImageDrawable(drawable);
         } else {
             mSlash.setAnimationEnabled(mAnimationEnabled);
index 9fe3e10..98ca1b4 100644 (file)
@@ -76,6 +76,19 @@ public class SlashImageViewTest extends SysuiTestCase {
         assertTrue(mSlashView.getSlashDrawable() == null);
     }
 
+    @Test
+    public void testSetImageDrawableUsesDrawableLevel() {
+        SlashImageView iv = new SlashImageView(mContext);
+        Drawable mockDrawable = mock(Drawable.class);
+        mockDrawable.setLevel(2);
+        assertTrue(mockDrawable.getLevel() == 2);
+
+        iv.setImageDrawable(mockDrawable);
+
+        // Make sure setting the drawable didn't reset its level to 0
+        assertTrue(mockDrawable.getLevel() == 2);
+    }
+
     // Expose getSlashDrawable
     private static class TestableSlashImageView extends SlashImageView {
         TestableSlashImageView(Context c) {